Clone
1
Docker Swarm Architecture
WMJ Ismail edited this page 2026-07-06 10:14:19 +02:00
Docker Swarm Architecture
Cluster Overview
| Node | IP | Role | Engine |
|---|---|---|---|
| Synology NAS DS3617xs | 100.126.73.29 (Tailscale) | Docker Swarm Manager | 20.10.3 |
| Contabo VPS | 13.140.161.244 (public) / 100.64.109.105 (Tailscale) | Swarm Worker + Edge | 29.5.3 |
| Colima | — | Worker | 29.2.1 |
| Colima (2nd) | — | Worker (Down) | 29.2.1 |
Swarm Services (Production)
| Service | Stack | Purpose |
|---|---|---|
falah_traefik |
Swarm | Reverse proxy — routes HTTPS, TLS termination |
gitea_gitea |
Swarm | Git hosting — git.falahos.my (:3080) |
falah_casdoor |
Swarm | Identity provider — auth.falahos.my (:8000) |
falah_falah-mobile |
Swarm | Next.js frontend — falahos.my |
falah_falah-mobile-staging |
Swarm | Staging environment |
falah_postgres |
Swarm | Main application database |
falah_redis |
Swarm | Cache layer |
falah_casdoor-db |
Swarm | Casdoor auth database (Postgres 16) |
falah_temporal |
Swarm | Workflow orchestration engine |
falah_finance |
Swarm | Financial services |
falah_wallet |
Swarm | Wallet service |
falah_ramz |
Swarm | RAMZ service |
traefik_traefik |
Swarm | Traefik monitoring node |
falah_mocknet |
Swarm | Blockchain mock network |
falah_falah-os-app-static |
Swarm | Static app assets |
falah_falah-desktop |
Swarm | Desktop application |
falah_falah-backend |
Swarm | Backend API services |
falah_falah-ui |
Swarm | UI services |
falah_falah-tunnel |
Swarm | Tunnel services |
falah_falah-dns-healer |
Swarm | DNS auto-healer |
falah_nextcloud |
Swarm | Nextcloud file sync |
falah_nextcloud-db |
Swarm | Nextcloud database |
falah_nextcloud-redis |
Swarm | Nextcloud cache |
falah_wordpress |
Swarm | WordPress instance |
falah_vaultwarden |
Swarm | Password manager |
falah_uptime-kuma |
Swarm | Uptime monitoring |
falah_bookstack |
Swarm | Documentation wiki |
falah_listmonk |
Swarm | Email newsletter |
falah_postiz |
Swarm | Social media scheduler |
falah_garage |
Swarm | S3-compatible object storage |
falah_prometheus |
Swarm | Metrics collection |
falah_grafana |
Swarm | Dashboards & visualization |
falah_loki |
Swarm | Log aggregation |
falah_netdata |
Swarm | Real-time monitoring |
falah_komodo |
Swarm | GitOps deployment manager |
falah_faraid |
Swarm | Faraid (inheritance) service |
Traffic Flow
Users → Cloudflare (DNS proxy + WAF) → cloudflared Tunnel → Traefik (Swarm) → Services
- Cloudflare handles DNS proxying, WAF security rules, and CDN caching
- cloudflared tunnel connects Cloudflare to the Swarm's Traefik node on Contabo
- Traefik v2 on the Contabo edge node routes incoming HTTPS to the correct Swarm service
- Internal Swarm traffic uses the overlay network between Synology (manager) and Contabo (worker)
Standalone Containers (Synology)
In addition to Swarm services, Synology runs standalone containers:
| Stack | Containers | Purpose |
|---|---|---|
| Falah Umbrel | wallet, app, ramz, ummahid, istore, mocknet, carbon, faraid, halal, redis, api-gateway, postgres | Core FalahOS services |
| Halal Monitor | postgrest, postgis db, nginx gateway | Halal certification monitoring |
| Karakeep | web, meilisearch, chrome browser | Bookmarking & content keep |
| Mattermost | app, db | Team chat (internal) |
| Infrastructure | Portainer, Dockge x2, Watchtower, Garage S3 | Docker management + storage |
| CI/CD | Gitea Runners x3 (act_runner) | Gitea Actions execution |
| Falah Services | falah-desktop, falah-backend, falah-ui, falah-tunnel, falah-mobile-staging, falah-auto-healer, falah-dns-healer | Supporting services |
| Other | Linkstack, Affine, iStore, Identity-layer, Auth, Tor proxy, Faraid-anvil (Foundry) | Supporting apps |
Key Facts
- Docker Swarm manager lives on Synology NAS, not Contabo — Contabo is a worker node
- All production containers run on Synology (via Swarm + standalone)
- Gitea runs as a Swarm service on Synology (:3080), fronted by Traefik
- Casdoor (auth.falahos.my) replaced the old UmmahID service
- Garage S3 provides object storage on Synology
- Tailscale connects all nodes in a mesh VPN (100.x.x.x range)
- Cloudflare proxies DNS, WAF, and CDN — Traefik handles internal routing
- Imunify360 on cPanel blocks datacenter IPs — MacBook Air residential IP used as bypass