Redid networking
This commit is contained in:
@@ -51,18 +51,34 @@ All services live under `zakobar.com`.
|
||||
| Jellyfin | `jellyfin.zakobar.com` | Jellyfin-native |
|
||||
| Transmission | `torrent.zakobar.com` | Authelia two_factor, admins only |
|
||||
|
||||
Internal ports (all bound to `127.0.0.1`):
|
||||
## Networking
|
||||
|
||||
| Container | Port |
|
||||
|-----------|------|
|
||||
| openldap | 389 |
|
||||
| authelia | 9091 |
|
||||
| gitea | 3000 |
|
||||
| nextcloud | 8080 |
|
||||
| nextcloud-postgres | 5432 |
|
||||
| phpldapadmin | 8081 |
|
||||
| jellyfin | 8096 |
|
||||
| transmission | 9092 (not 9091 — avoids clash with authelia) |
|
||||
All containers join a private podman network named **`homey`**, created by the
|
||||
`podman-homey-network` systemd service in `common.nix`. This provides:
|
||||
|
||||
- **DNS isolation** — containers reach each other by name (e.g. `openldap`,
|
||||
`nextcloud-postgres`) without being exposed on the host network.
|
||||
- **No port conflicts** — Caddy owns host ports 80/443; service containers map
|
||||
only to `127.0.0.1:<port>`.
|
||||
- **Defence in depth** — even if the firewall were misconfigured, services are
|
||||
not bound to `0.0.0.0`.
|
||||
|
||||
Internal ports (all mapped to `127.0.0.1` on the host):
|
||||
|
||||
| Container | Host port | Container port |
|
||||
|-----------|-----------|----------------|
|
||||
| openldap | 389 | 389 |
|
||||
| authelia | 9091 | 9091 |
|
||||
| gitea | 3000 | 3000 |
|
||||
| nextcloud | 8080 | 80 |
|
||||
| nextcloud-postgres | 5432 | 5432 |
|
||||
| phpldapadmin | 8081 | 80 |
|
||||
| jellyfin | 8096 | 8096 |
|
||||
| transmission | 9092 | 9091 |
|
||||
|
||||
Inter-container communication uses container names on the `homey` network
|
||||
(e.g. authelia → `ldap://openldap:389`, nextcloud → `nextcloud-postgres:5432`).
|
||||
Caddy (running on the host) proxies via `127.0.0.1:<host port>`.
|
||||
|
||||
## Storage Layout
|
||||
|
||||
@@ -163,8 +179,9 @@ restic password, Cloudflare tokens) can be generated fresh.
|
||||
file at `/run/<service>-secrets.env` and reference it via `EnvironmentFile`.
|
||||
Clean it up in `postStop`.
|
||||
|
||||
5. **`--network=host`** — all containers use host networking for simplicity on
|
||||
a single-node setup. Services communicate via `127.0.0.1:<port>`.
|
||||
5. **`--network=homey`** — all containers join the private `homey` podman
|
||||
network. Inter-container traffic uses container names as hostnames; host
|
||||
access is via explicit `ports` mappings to `127.0.0.1:<port>`.
|
||||
|
||||
6. **Systemd ordering** — always express `after`/`requires` dependencies
|
||||
explicitly. The external HD mount unit is `mnt-data.mount`; containers that
|
||||
|
||||
Reference in New Issue
Block a user