Compare commits
2 Commits
dac81b1220
...
2f3c4ce51b
| Author | SHA1 | Date | |
|---|---|---|---|
| 2f3c4ce51b | |||
| 33b72af6a0 |
51
README.md
51
README.md
@@ -16,6 +16,29 @@ All nodes are managers providing a 4-node quorum (can tolerate 2 node failures w
|
|||||||
- **GlusterFS** mounted at `/home/doc/swarm-data/` on all nodes
|
- **GlusterFS** mounted at `/home/doc/swarm-data/` on all nodes
|
||||||
- Shared storage enables services to run on any node without storage constraints
|
- 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
|
## Service Distribution Strategy
|
||||||
|
|
||||||
### Pinned Services
|
### Pinned Services
|
||||||
@@ -31,20 +54,36 @@ Services that can run on any node (swarm auto-balances):
|
|||||||
- adminer
|
- adminer
|
||||||
- authentik (server, worker, redis)
|
- authentik (server, worker, redis)
|
||||||
- n8n
|
- n8n
|
||||||
|
- outline
|
||||||
- paperless (webserver, redis)
|
- paperless (webserver, redis)
|
||||||
- tracker-nginx
|
- tracker-nginx
|
||||||
- uptime-kuma
|
- uptime-kuma
|
||||||
|
|
||||||
## Recent Changes (2025-10-30)
|
## Network Configuration
|
||||||
|
|
||||||
### Swarm Rebalancing
|
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
|
- Promoted p1, p2, p3 from workers to managers
|
||||||
- Removed unnecessary hostname constraints from service configs
|
- Removed unnecessary hostname constraints from service configs
|
||||||
- Force-redeployed services to redistribute across all nodes
|
- Force-redeployed services to redistribute across all nodes
|
||||||
- Verified GlusterFS accessibility on all nodes
|
- Verified GlusterFS accessibility on all nodes
|
||||||
|
|
||||||
### Results
|
|
||||||
- Achieved balanced workload distribution across all 4 nodes
|
- Achieved balanced workload distribution across all 4 nodes
|
||||||
- Improved high availability with 4-node manager quorum
|
- Improved high availability with 4-node manager quorum
|
||||||
- Services now self-balance automatically when nodes fail/recover
|
- Services now self-balance automatically when nodes fail/recover
|
||||||
- Fixed Portainer agent connectivity by restarting agents after manager promotion
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
services:
|
|
||||||
uptime-kuma:
|
|
||||||
image: louislam/uptime-kuma:1.23.16
|
|
||||||
volumes:
|
|
||||||
- /home/doc/projects/swarm-data/appdata/uptime:/app/data
|
|
||||||
environment:
|
|
||||||
- TZ=America/New_York
|
|
||||||
networks:
|
|
||||||
- homelab
|
|
||||||
healthcheck:
|
|
||||||
test: [ "CMD", "node", "/app/extra/healthcheck.js" ]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
start_period: 60s
|
|
||||||
deploy:
|
|
||||||
replicas: 1
|
|
||||||
labels:
|
|
||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.swarm.network=homelab"
|
|
||||||
- "traefik.http.routers.uptime-kuma.rule=Host(`status.swarm.home)"
|
|
||||||
- "traefik.http.routers.uptime-kuma.entrypoints=web,websecure"
|
|
||||||
- "traefik.http.routers.uptime-kuma.tls=true
|
|
||||||
- "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001"
|
|
||||||
|
|
||||||
networks:
|
|
||||||
homelab:
|
|
||||||
external: true
|
|
||||||
Reference in New Issue
Block a user