This repository has been archived on 2025-11-16. You can view files and clone it, but cannot push or open issues or pull requests.
2025-11-11 18:17:42 -05:00
2025-10-25 14:44:41 +00:00
2025-11-11 18:17:42 -05:00
2025-11-11 14:38:42 -05:00
2025-11-10 05:24:55 -05:00

swarm-production

Production Docker Swarm Infrastructure

Cluster Overview

Nodes

  • p0 (Manager/Leader) - Infrastructure services
  • p1 (Manager) - Application services
  • p2 (Manager) - Application services
  • p3 (Manager) - Application services

All nodes are managers providing a 4-node quorum (can tolerate 2 node failures while maintaining quorum).

Storage

  • GlusterFS mounted at /home/doc/swarm-data/ on all nodes
  • Shared storage enables services to run on any node without storage constraints

Directory Structure

swarm/
├── conf/              # Traefik and service configurations
├── stacks/
│   ├── apps/         # Application services
│   │   ├── adminer/      # Database management
│   │   ├── n8n/          # Workflow automation
│   │   ├── outline/      # Documentation wiki
│   │   ├── paperless/    # Document management
│   │   └── uptime/       # Uptime monitoring
│   ├── core/         # Core infrastructure
│   │   ├── authentik/    # SSO/Authentication
│   │   ├── portainer/    # Container management
│   │   └── traefik/      # Reverse proxy
│   ├── data/         # Data services
│   │   └── rsync/        # Backup service
│   └── web/          # Web services
│       └── tracker/      # Tracker site
└── README.md

Service Distribution Strategy

Pinned Services

Services that must run on specific nodes:

  • traefik (p0) - Published ports 80/443, needs stable IP for DNS
  • portainer (p0) - Management UI, stays with leader for convenience
  • rsync (manager constraint) - Backup service, needs manager access

Floating Services

Services that can run on any node (swarm auto-balances):

  • adminer
  • authentik (server, worker, redis)
  • n8n
  • outline
  • paperless (webserver, redis)
  • tracker-nginx
  • uptime-kuma

Network Configuration

All services are connected to the homelab external overlay network for inter-service communication.

Local Deployment (2025-11-07)

  • Services now use .swarm.home domains for local access
  • TLS enabled without external certificate resolvers
  • Simplified Traefik configuration for local development
  • Removed Cloudflare DNS integration

Recent Changes

Local Configuration Update (2025-11-07)

  • Migrated from external .frostlabs.me domains to local .swarm.home domains
  • Updated Traefik labels across all services for local deployment
  • Simplified .gitignore to exclude entire conf/ directory
  • Moved Authentik from apps/ to core/ directory structure
  • Removed Traefik labels from n8n and paperless for direct access
  • Updated Traefik stack configuration for simplified port bindings

Swarm Rebalancing (2025-10-30)

  • Promoted p1, p2, p3 from workers to managers
  • Removed unnecessary hostname constraints from service configs
  • Force-redeployed services to redistribute across all nodes
  • Verified GlusterFS accessibility on all nodes
  • Achieved balanced workload distribution across all 4 nodes
  • Improved high availability with 4-node manager quorum
  • Services now self-balance automatically when nodes fail/recover
Description
Production Docker Swarm Infrastructure
Readme 465 KiB
Languages
Text 100%