diff --git a/docs/13-CONTAINER-IP-ASSIGNMENTS.md b/docs/13-CONTAINER-IP-ASSIGNMENTS.md index 02c820d..0dd282b 100644 --- a/docs/13-CONTAINER-IP-ASSIGNMENTS.md +++ b/docs/13-CONTAINER-IP-ASSIGNMENTS.md @@ -3,6 +3,7 @@ **Last Updated:** 2026-01-20 This document lists all static IP assignments for Docker containers on Unraid. +Static IPs are now configured in docker-compose files and Unraid templates for persistence. --- @@ -12,58 +13,58 @@ Static IP range: 172.18.0.2 - 172.18.0.99 ### Core Infrastructure (172.18.0.2 - 172.18.0.10) -| Container | Static IP | Purpose | -|-----------|-----------|---------| -| dockersocket | 172.18.0.2 | Docker socket proxy | -| traefik | 172.18.0.3 | Reverse proxy | -| homarr | 172.18.0.4 | Dashboard | +| Container | Static IP | Purpose | Config | +|-----------|-----------|---------|--------| +| dockersocket | 172.18.0.2 | Docker socket proxy | Template | +| traefik | 172.18.0.3 | Reverse proxy | Template | +| homarr | 172.18.0.4 | Dashboard | Template | ### Security (172.18.0.11 - 172.18.0.15) -| Container | Static IP | Purpose | -|-----------|-----------|---------| -| authentik | 172.18.0.11 | Identity provider | -| authentik-worker | 172.18.0.12 | Authentik worker | -| postgresql17 | 172.18.0.13 | PostgreSQL database | -| Redis | 172.18.0.14 | Redis cache | -| vaultwarden | 172.18.0.15 | Password manager | +| Container | Static IP | Purpose | Config | +|-----------|-----------|---------|--------| +| authentik | 172.18.0.11 | Identity provider | Template | +| authentik-worker | 172.18.0.12 | Authentik worker | Template | +| postgresql17 | 172.18.0.13 | PostgreSQL database | Template | +| Redis | 172.18.0.14 | Redis cache | Template | +| vaultwarden | 172.18.0.15 | Password manager | Template | ### Productivity (172.18.0.16 - 172.18.0.30) -| Container | Static IP | Purpose | -|-----------|-----------|---------| -| actual-budget | 172.18.0.16 | Budget tracking | -| n8n | 172.18.0.17 | Workflow automation | -| Uptime-Kuma-API | 172.18.0.18 | Uptime API | -| AutoKuma | 172.18.0.19 | Auto Kuma config | -| UptimeKuma | 172.18.0.20 | Uptime monitoring | -| speedtest-tracker | 172.18.0.21 | Speed test tracking | -| DoH-Server | 172.18.0.22 | DNS over HTTPS | -| Libation | 172.18.0.23 | Audiobook manager | -| Nextcloud | 172.18.0.24 | Cloud storage | -| karakeep | 172.18.0.25 | Bookmark manager | -| transmission | 172.18.0.26 | Torrent client | +| Container | Static IP | Purpose | Config | +|-----------|-----------|---------|--------| +| actual-budget | 172.18.0.16 | Budget tracking | Template | +| n8n | 172.18.0.17 | Workflow automation | Template | +| Uptime-Kuma-API | 172.18.0.18 | Uptime API | Template | +| AutoKuma | 172.18.0.19 | Auto Kuma config | Template | +| UptimeKuma | 172.18.0.20 | Uptime monitoring | Template | +| speedtest-tracker | 172.18.0.21 | Speed test tracking | Template | +| DoH-Server | 172.18.0.22 | DNS over HTTPS | Template | +| Libation | 172.18.0.23 | Audiobook manager | Template | +| Nextcloud | 172.18.0.24 | Cloud storage | Template | +| karakeep | 172.18.0.25 | Bookmark manager | Template | +| transmission | 172.18.0.26 | Torrent client | Template | ### DevOps (172.18.0.31 - 172.18.0.40) -| Container | Static IP | Purpose | -|-----------|-----------|---------| -| gitea | 172.18.0.31 | Git server | -| woodpecker-server | 172.18.0.32 | CI/CD server | -| woodpecker-agent | 172.18.0.33 | CI/CD agent | +| Container | Static IP | Purpose | Config | +|-----------|-----------|---------|--------| +| gitea | 172.18.0.31 | Git server | Compose | +| woodpecker-server | 172.18.0.32 | CI/CD server | Compose | +| woodpecker-agent | 172.18.0.33 | CI/CD agent | Compose | ### NetDisco (172.18.0.41 - 172.18.0.50) -| Container | Static IP | Purpose | -|-----------|-----------|---------| -| netdisco-web | 172.18.0.41 | NetDisco web UI | -| netdisco-backend | 172.18.0.42 | NetDisco SNMP poller | +| Container | Static IP | Purpose | Config | +|-----------|-----------|---------|--------| +| netdisco-web | 172.18.0.41 | NetDisco web UI | Compose | +| netdisco-backend | 172.18.0.42 | NetDisco SNMP poller | Compose | ### Fossorial/Pangolin (172.18.0.51 - 172.18.0.60) -| Container | Static IP | Purpose | -|-----------|-----------|---------| -| pangolin | 172.18.0.51 | Pangolin tunnel | +| Container | Static IP | Purpose | Config | +|-----------|-----------|---------|--------| +| pangolin | 172.18.0.51 | Pangolin tunnel | Compose | --- @@ -71,14 +72,13 @@ Static IP range: 172.18.0.2 - 172.18.0.99 Static IP range: 172.24.0.2 - 172.24.0.20 -| Container | Static IP | Purpose | -|-----------|-----------|---------| -| netbox-redis | 172.24.0.2 | NetBox Redis | -| netbox-redis-cache | 172.24.0.3 | NetBox Redis cache | -| netbox-postgres | 172.24.0.4 | NetBox PostgreSQL | -| netbox | 172.24.0.5 | NetBox web UI | -| netbox-worker | 172.24.0.6 | NetBox worker | -| netbox-housekeeping | 172.24.0.7 | NetBox housekeeping | +| Container | Static IP | Purpose | Config | +|-----------|-----------|---------|--------| +| netbox-redis | 172.24.0.2 | NetBox Redis | Compose | +| netbox-redis-cache | 172.24.0.3 | NetBox Redis cache | Compose | +| netbox-postgres | 172.24.0.4 | NetBox PostgreSQL | Compose | +| netbox | 172.24.0.5 | NetBox web UI | Compose | +| netbox-worker | 172.24.0.6 | NetBox worker | Compose | --- @@ -86,11 +86,11 @@ Static IP range: 172.24.0.2 - 172.24.0.20 These containers have direct LAN access via macvlan. -| Container | Static IP | Purpose | -|-----------|-----------|---------| -| binhex-official-pihole | 192.168.31.4 | DNS sinkhole | -| unbound | 192.168.31.5 | Recursive DNS | -| TimeMachine | 192.168.31.12 | Time Machine backup | +| Container | Static IP | Purpose | Config | +|-----------|-----------|---------|--------| +| binhex-official-pihole | 192.168.31.4 | DNS sinkhole | Template | +| unbound | 192.168.31.5 | Recursive DNS | Template | +| TimeMachine | 192.168.31.12 | Time Machine backup | Template | --- @@ -123,24 +123,41 @@ These containers share the host network stack. --- -## IP Assignment Command +## Docker Compose Files -To assign a static IP to a container: +Compose-managed stacks with persistent static IPs: -```bash -# Disconnect from network -docker network disconnect +| Stack | Location | Containers | +|-------|----------|------------| +| NetBox | `/mnt/user/appdata/netbox/docker-compose.yml` | netbox, netbox-worker, netbox-postgres, netbox-redis, netbox-redis-cache | +| NetDisco | `/mnt/user/appdata/netdisco/docker-compose.yml` | netdisco-web, netdisco-backend | +| Gitea | `/mnt/user/appdata/gitea/docker-compose.yml` | gitea | +| Woodpecker | `/mnt/user/appdata/woodpecker/docker-compose.yml` | woodpecker-server, woodpecker-agent | +| Pangolin | `/mnt/user/appdata/pangolin/docker-compose.yml` | pangolin | -# Reconnect with static IP -docker network connect --ip -``` +--- -**Note:** Static IPs only work on user-defined networks (not the default `bridge`). +## Unraid Docker Templates + +Templates are stored in `/boot/config/plugins/dockerMan/templates-user/`. +Each template includes `` and `--ip=X.X.X.X` for static IP assignment. --- ## Maintenance -When recreating containers, ensure static IPs are preserved by: -1. Using `--ip` flag in `docker run` -2. Or running the disconnect/connect commands after container creation +### Recreate Compose Containers +```bash +cd /mnt/user/appdata/ +docker compose down +docker compose up -d +``` + +### Update Template Container +Use Unraid Docker UI to update/recreate - static IP is preserved in template. + +### Verify IPs +```bash +# Check all IPs on a network +docker network inspect --format '{{range .Containers}}{{.Name}}: {{.IPv4Address}}{{"\n"}}{{end}}' +```