Installation¶
The Quick Start terminal session covers the full deployment flow interactively. This page documents the commands for reference.
Deploy¶
# First time on a new machine
bash setup.sh
# Configure .env and ansible/inventory/02-hosts.yml, then:
task ansible:ssh:generate # Create SSH key pair
task ansible:ssh:distribute # Push to all nodes
task ansible:ping # Verify connectivity
task ansible:bootstrap # Install Docker, harden nodes
task ansible:deploy # Init swarm, deploy all stacks
What Deploys¶
- Docker Swarm — multi-node cluster initialized
- traefik-public network — shared overlay for service routing
- Traefik — reverse proxy with automatic Let's Encrypt SSL
- Technitium — internal DNS with auto-registration
- Monitoring — Prometheus + Grafana + Loki + Promtail
- 41 application stacks — deployed in parallel with DNS records
Multi-Node¶
Add workers to ansible/inventory/02-hosts.yml:
workers:
hosts:
worker-01:
ansible_host: 192.168.1.101
ansible_user: ubuntu
node_labels:
gpu: true
database: true
worker-02:
ansible_host: 192.168.1.102
ansible_user: ubuntu
node_labels:
storage: true
Workers join the swarm automatically on task ansible:deploy.
Teardown¶
task ansible:teardown # Remove services (keeps data)
task ansible:teardown:with-volumes # Remove everything (destructive)
Troubleshooting¶
SSH permission denied: task ansible:ssh:distribute or debug with ssh -v user@node
Service stuck pending: docker service ps <service> — check placement constraints
SSL issues: docker service logs reverse-proxy_traefik | grep acme
Full troubleshooting: Troubleshooting Guide