Update multi-server deployment docs for simplified architecture
Changes: - Remove references to local Traefik on additional servers - Update architecture diagram to show direct port exposure - Clarify that additional servers are 'headless' (no local reverse proxy) - Update traffic flow to show direct routing from core to services - Update performance metrics (50MB vs 100MB, 2min vs 5-10min deployment) - Rename 'Remote Server' to 'Additional Server' for consistency The docs now accurately reflect the current simplified architecture where additional servers only run Sablier and expose ports directly.
This commit is contained in:
@@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
This guide explains the **current multi-server architecture** where:
|
This guide explains the **current multi-server architecture** where:
|
||||||
- **Core Server**: Handles external traffic (ports 80/443); runs DuckDNS, Traefik (multi-provider), Authelia
|
- **Core Server**: Handles external traffic (ports 80/443); runs DuckDNS, Traefik (multi-provider), Authelia
|
||||||
- **Remote Servers**: Run their own Traefik (local-only) and Sablier (local containers)
|
- **Additional Servers**: Run Sablier (lazy loading) with direct port exposure; no local Traefik
|
||||||
- **No Docker API**: Servers communicate via HTTP/HTTPS; no TLS Docker API connections needed
|
- **Manual Routing**: Core Traefik routes to IP:PORT combinations via YAML configuration files
|
||||||
- **Independent Management**: Each server manages its own containers with lazy loading
|
- **Independent Management**: Each server manages its own containers with lazy loading
|
||||||
|
|
||||||
> **Note**: This document describes the current simplified architecture. For the legacy centralized Sablier approach, see the git history.
|
> **Note**: This document describes the current simplified architecture. Additional servers are "headless" - they expose ports directly without local reverse proxy.
|
||||||
|
|
||||||
## Architecture Diagram
|
## Architecture Diagram
|
||||||
|
|
||||||
@@ -31,12 +31,16 @@ This guide explains the **current multi-server architecture** where:
|
|||||||
80/443 │ │ │
|
80/443 │ │ │
|
||||||
▼ ▼ ▼
|
▼ ▼ ▼
|
||||||
┌─────────────────────────────────────────┐
|
┌─────────────────────────────────────────┐
|
||||||
│ REMOTE SERVER (e.g., Pi) │
|
│ ADDITIONAL SERVER (e.g., Pi) │
|
||||||
│ ┌──────────┐ ┌──────────┐ ┌───────┐ │
|
│ ┌──────────┐ ┌───────┐ ┌──────────┐ │
|
||||||
│ │ Traefik │ │ Sablier │ │ Media │ │
|
│ │ Sablier │ │ Media │ │ Exposed │ │
|
||||||
│ │ (local) │ │ (local) │ │ Apps │ │
|
│ │ (lazy │ │ Apps │ │ Ports │ │
|
||||||
│ └──────────┘ └──────────┘ └───────┘ │
|
│ │ loading) │ │ │ │ 5001, │ │
|
||||||
└─────────────────────────────────────────┘
|
│ └──────────┘ └───────┘ │ 8085... │ │
|
||||||
|
└────────────────────────────┼──────────┘
|
||||||
|
│
|
||||||
|
Direct port access
|
||||||
|
(no local reverse proxy)
|
||||||
```
|
```
|
||||||
|
|
||||||
# Deployment Process
|
# Deployment Process
|
||||||
@@ -44,10 +48,10 @@ This guide explains the **current multi-server architecture** where:
|
|||||||
## Step 1: Deploy Core Server
|
## Step 1: Deploy Core Server
|
||||||
|
|
||||||
On the core server, run `ez-homelab.sh`
|
On the core server, run `ez-homelab.sh`
|
||||||
* Use Option 1 to Install Prerequesites
|
* Use Option 1 to Install Prerequisites
|
||||||
* Then Option 2 to Deploy Core Server
|
* Then Option 2 to Deploy Core Server
|
||||||
|
|
||||||
This deploys: DuckDNS, Traefik(core), Authelia, Dashboards & Infrastructure
|
This deploys: DuckDNS, Traefik(core), Authelia, Dashboards & Infrastructure
|
||||||
|
|
||||||
From Dockge you can start/stop any of the stacks or containers.
|
From Dockge you can start/stop any of the stacks or containers.
|
||||||
|
|
||||||
@@ -55,16 +59,20 @@ From Dockge you can start/stop any of the stacks or containers.
|
|||||||
- Forward ports 80 & 443 from your router
|
- Forward ports 80 & 443 from your router
|
||||||
- Only this server requires port forwarding
|
- Only this server requires port forwarding
|
||||||
|
|
||||||
## Step 2: Deploy Remote Server
|
## Step 2: Deploy Additional Server
|
||||||
|
|
||||||
On the remote server, run `ez-homelab.sh`
|
On the additional server, run `ez-homelab.sh`
|
||||||
* Use Option 1 to Install Prerequesites
|
* Use Option 1 to Install Prerequisites
|
||||||
* Then Option 3 to Deploy Remote Server
|
* Then Option 3 to Deploy Additional Server
|
||||||
|
|
||||||
This deploys: Traefik(local), Dashboards & Infrastructure
|
This deploys: Sablier (lazy loading), Dashboards & Infrastructure
|
||||||
|
|
||||||
From Dockge you can start/stop any of the stacks or containers.
|
From Dockge you can start/stop any of the stacks or containers.
|
||||||
|
|
||||||
|
**No Port Forwarding Required**:
|
||||||
|
- Services are accessed through core server
|
||||||
|
- Additional servers are "headless" - no external ports needed
|
||||||
|
|
||||||
## How It Works
|
## How It Works
|
||||||
|
|
||||||
### Traffic Flow
|
### Traffic Flow
|
||||||
@@ -72,27 +80,34 @@ From Dockge you can start/stop any of the stacks or containers.
|
|||||||
1. **User accesses** `https://sonarr.yourdomain.duckdns.org`
|
1. **User accesses** `https://sonarr.yourdomain.duckdns.org`
|
||||||
2. **Core Traefik** receives request:
|
2. **Core Traefik** receives request:
|
||||||
- Checks Authelia for authentication (SSO)
|
- Checks Authelia for authentication (SSO)
|
||||||
- Routes to remote server: `http://192.168.1.100:8989`
|
- Routes to additional server: `http://192.168.1.100:8989` (via YAML config)
|
||||||
3. **Remote Traefik** receives forwarded request:
|
3. **Additional server** receives direct HTTP request:
|
||||||
- Discovers service is stopped (lazy loaded)
|
- Service container receives request on exposed port
|
||||||
- Forwards to local Sablier
|
- If stopped, Sablier starts the container
|
||||||
4. **Remote Sablier**:
|
- Shows loading page while container starts
|
||||||
- Starts Sonarr container
|
4. **Service responds** directly back to core Traefik, then to user
|
||||||
- Shows loading page
|
|
||||||
- Redirects to service when ready
|
### Service Registration
|
||||||
5. **Service responds** through the chain back to user
|
|
||||||
|
When you deploy an additional server:
|
||||||
|
1. Services are deployed with exposed ports (no Traefik labels)
|
||||||
|
2. Core server creates YAML route files pointing to IP:PORT
|
||||||
|
3. Core Traefik loads routes automatically
|
||||||
|
4. Services become accessible at `https://servicename.hostname.yourdomain.duckdns.org`
|
||||||
|
|
||||||
### Key Benefits
|
### Key Benefits
|
||||||
|
|
||||||
- **Independent Management**: Each server controls its own containers
|
- **Simplified Architecture**: No local Traefik on additional servers
|
||||||
|
- **Direct Port Access**: Services expose ports directly (no reverse proxy overhead)
|
||||||
- **Centralized Access**: All services accessed through one domain
|
- **Centralized Access**: All services accessed through one domain
|
||||||
- **Unified SSO**: Authelia on core server protects all services
|
- **Unified SSO**: Authelia on core server protects all services
|
||||||
- **Local Lazy Loading**: Sablier manages containers on the same server
|
- **Local Lazy Loading**: Sablier manages containers on each server independently
|
||||||
|
|
||||||
## Performance Considerations
|
## Performance Considerations
|
||||||
|
|
||||||
- **Latency**: One additional hop (core → remote) adds minimal latency
|
- **Latency**: Direct routing (core → service) minimizes hops
|
||||||
- **Resource Usage**: Each server runs lightweight Traefik + Sablier (~100MB combined)
|
- **Resource Usage**: Additional servers run only Sablier (~50MB) - no Traefik needed
|
||||||
- **Scalability**: Can add unlimited remote servers without complexity
|
- **Scalability**: Can add unlimited additional servers without complexity
|
||||||
- **Network**: Internal 1Gbps+ recommended between servers
|
- **Network**: Internal 1Gbps+ recommended between servers
|
||||||
|
- **Deployment Speed**: Additional servers deploy in ~2 minutes (vs 5-10 with local Traefik)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user