# marcjwrigg/armoryhub-selfhost-install architecture

> Architecture diagram of the GitHub repository marcjwrigg/armoryhub-selfhost-install, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/marcjwrigg/armoryhub-selfhost-install
- Repository: https://github.com/marcjwrigg/armoryhub-selfhost-install

## Overview

ArmoryHub self-host install is a configuration-and-operations repository; the application itself runs from a container image. The principal workflow is an administrator running the installer, which prepares the Compose deployment and starts the app, database, backups, and optional network access. The README also documents a Debian/Ubuntu bootstrap path, a Caddy/reverse-proxy setup, and ongoing server management. Relationships reflect the README only; source excerpts were unavailable, so uncertain implementation details are omitted.

Main entry points: [`docker-compose.yml`](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml) (Compose deployment), [`install.sh`](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/install.sh) (Installer), [`bootstrap-debian.sh`](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/bootstrap-debian.sh) (Debian bootstrap), [`armoryhub`](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/armoryhub) (ArmoryHub CLI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Installation"]
  node_install["Installer<br/>[install.sh]"]
  node_bootstrap["Debian bootstrap"]
end

subgraph group_runtime["Runtime stack"]
  node_compose["Compose deployment<br/>[docker-compose.yml]"]
  node_env["Environment settings<br/>[env.example]"]
  node_postgres[("Postgres<br/>[docker-compose.yml]")]
  node_app["ArmoryHub app<br/>[docker-compose.yml]"]
  node_backups["Nightly backups<br/>[docker-compose.yml]"]
  node_tailscale["Tailscale access<br/>[docker-compose.yml]"]
  node_caddy["Caddy profile<br/>[docker-compose.yml]"]
end

subgraph group_operations["Server operations"]
  node_cli["ArmoryHub CLI"]
end

node_admin(("Administrator"))
node_docker["Docker Engine"]
node_browser(("User browser"))
node_proxy["Reverse proxy"]
node_hosted["Hosted ArmoryHub"]

node_admin -->|"runs"| node_install
node_install -->|"prepares"| node_compose
node_install -->|"generates"| node_env
node_admin -.->|"runs"| node_bootstrap
node_bootstrap -.->|"installs"| node_docker
node_compose -->|"starts services"| node_docker
node_compose -->|"configures"| node_postgres
node_compose -->|"configures"| node_app
node_compose -->|"configures"| node_backups
node_compose -.->|"configures"| node_tailscale
node_compose -.->|"offers profile"| node_caddy
node_browser -->|"accesses"| node_app
node_admin -->|"runs commands"| node_cli
node_cli -->|"manages deployment"| node_docker
node_proxy -.->|"forwards traffic"| node_app
node_hosted -.->|"account migration"| node_app

click node_install "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/install.sh"
click node_bootstrap "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/bootstrap-debian.sh"
click node_compose "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml"
click node_env "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/env.example"
click node_postgres "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml"
click node_app "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml"
click node_backups "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml"
click node_tailscale "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml"
click node_caddy "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml"
click node_cli "https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/armoryhub"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_install,node_bootstrap,node_browser toneBlue
class node_compose,node_env,node_postgres,node_app,node_backups,node_tailscale,node_caddy toneAmber
class node_cli toneMint
class node_admin,node_docker,node_proxy,node_hosted toneIndigo
```

## Components

### Installation

- [Installer](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/install.sh): `install.sh`
- [Debian bootstrap](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/bootstrap-debian.sh): `bootstrap-debian.sh`

### Runtime stack

- [Compose deployment](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml): `docker-compose.yml`
- [Environment settings](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/env.example): `env.example`
- [Postgres](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml): `docker-compose.yml`
- [ArmoryHub app](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml): `docker-compose.yml`
- [Nightly backups](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml): `docker-compose.yml`
- [Tailscale access](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml): `docker-compose.yml`
- [Caddy profile](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/docker-compose.yml): `docker-compose.yml`

### Server operations

- [ArmoryHub CLI](https://github.com/marcjwrigg/armoryhub-selfhost-install/blob/main/armoryhub): `armoryhub`

### Other components

- **Administrator**
- **Docker Engine**
- **User browser**
- **Reverse proxy**
- **Hosted ArmoryHub**

## Connections

- Administrator → Installer: runs
- Installer → Compose deployment: prepares
- Installer → Environment settings: generates
- Administrator → Debian bootstrap: runs
- Debian bootstrap → Docker Engine: installs
- Compose deployment → Docker Engine: starts services
- Compose deployment → Postgres: configures
- Compose deployment → ArmoryHub app: configures
- Compose deployment → Nightly backups: configures
- Compose deployment → Tailscale access: configures
- Compose deployment → Caddy profile: offers profile
- User browser → ArmoryHub app: accesses
- Administrator → ArmoryHub CLI: runs commands
- ArmoryHub CLI → Docker Engine: manages deployment
- Reverse proxy → ArmoryHub app: forwards traffic
- Hosted ArmoryHub → ArmoryHub app: account migration
