143 lines
6.0 KiB
Markdown
143 lines
6.0 KiB
Markdown
# Docker Server
|
|
|
|
## Access
|
|
|
|
- **Hostname**: DOCKER
|
|
- **FQDN**: DOCKER.dohertylan.com
|
|
- **IP**: 10.100.0.35 (LAN_100) / 10.50.0.35 (DATA_50) / 10.200.0.35 (IOT_200)
|
|
- **OS**: Debian 13 (Trixie) 13.3, kernel 6.12.69+deb13-amd64
|
|
- **SSH**: `ssh dohertj2@10.100.0.35` (passwordless) — this is the local machine for Claude Code
|
|
- **Docker**: 29.2.1
|
|
- **Docker Compose**: v5.0.2
|
|
|
|
## Hardware (VM on ESXi)
|
|
|
|
- **CPU**: 22 vCPUs (Intel Xeon E5-2697 v4 @ 2.30GHz)
|
|
- **RAM**: 32 GB
|
|
- **Disk**: /dev/sda1 999 GB ext4 (930 GB free)
|
|
|
|
## Network
|
|
|
|
| Interface | MAC | IP | MTU | Port Group |
|
|
|-----------|-----|-----|-----|------------|
|
|
| ens192 | 00:0c:29:cf:bb:bb | 10.100.0.35/24 | 1500 | LAN_100 |
|
|
| ens256 | 00:0c:29:cf:bb:c5 | 10.50.0.35/24 | 9000 | DATA_50 |
|
|
| ens161 | 00:0c:29:cf:bb:cf | 10.200.0.35/24 | 1500 | IOT_200 |
|
|
|
|
- **Default gateway**: 10.100.0.1 (via ens192)
|
|
- **DNS**: 10.100.0.1
|
|
- **Domain**: dohertylan.com
|
|
|
|
### Docker Networks
|
|
|
|
| Network | Driver |
|
|
|---------|--------|
|
|
| traefik | bridge |
|
|
| semaphore_default | bridge |
|
|
|
|
## NFS Mounts (via TrueNAS DATA_50)
|
|
|
|
All mounts use NFS 4.2 with `nconnect=8,_netdev,nofail,x-systemd.automount`.
|
|
|
|
| Mount Point | NFS Export |
|
|
|-------------|-----------|
|
|
| /mnt/share | 10.50.0.25:/mnt/mypool/share |
|
|
| /mnt/other | 10.50.0.25:/mnt/mypool/Other |
|
|
|
|
## Reverse Proxy (Traefik)
|
|
|
|
Traefik handles HTTPS ingress on ports 80/443. All services below are accessed via `*.dohertylan.com` through Traefik, with Authelia providing SSO/2FA.
|
|
|
|
Cloudflare Companion auto-updates DNS records.
|
|
|
|
## Docker Containers
|
|
|
|
All 21 containers running. Most are on the `traefik` network.
|
|
|
|
### Infrastructure
|
|
|
|
| Container | Image | URL | Port | Purpose |
|
|
|-----------|-------|-----|------|---------|
|
|
| traefik | traefik:latest | traefik.dohertylan.com | 80, 443 | Reverse proxy |
|
|
| authelia | authelia/authelia:latest | auth.dohertylan.com | 9091 | SSO / 2FA |
|
|
| cloudflare-companion | tiredofit/traefik-cloudflare-companion:latest | — | — | Auto DNS updates |
|
|
| portainer | portainer/portainer-ce:latest | portainer.dohertylan.com | 9000, 9443 | Docker management UI |
|
|
| homepage | ghcr.io/gethomepage/homepage:latest | home.dohertylan.com | 3000 | Dashboard |
|
|
| uptime-kuma | louislam/uptime-kuma:latest | uptime.dohertylan.com | 3001 | Uptime monitoring |
|
|
|
|
### Media Management (Arr Stack)
|
|
|
|
| Container | Image | URL | Port | Purpose |
|
|
|-----------|-------|-----|------|---------|
|
|
| sonarr | lscr.io/linuxserver/sonarr:latest | sonarr.dohertylan.com | 8989 | TV show management |
|
|
| radarr | lscr.io/linuxserver/radarr:latest | radarr.dohertylan.com | 7878 | Movie management |
|
|
| whisparr | ghcr.io/hotio/whisparr:v3 | whisp.dohertylan.com | 6969 | Adult content management |
|
|
| prowlarr | lscr.io/linuxserver/prowlarr:latest | prowlarr.dohertylan.com | 9696 | Indexer manager |
|
|
| seerr | ghcr.io/seerr-team/seerr:latest | requests.dohertylan.com | 5055 | Media request UI |
|
|
| profilarr | santiagosayshey/profilarr:latest | profilarr.dohertylan.com | 6868 | Quality profile sync |
|
|
| tautulli | ghcr.io/tautulli/tautulli:latest | tautulli.dohertylan.com | 8181 | Plex analytics |
|
|
|
|
### Downloads
|
|
|
|
| Container | Image | URL | Port | Purpose |
|
|
|-----------|-------|-----|------|---------|
|
|
| nzbget | nzbgetcom/nzbget:latest | nzb.dohertylan.com | 6789 | Usenet downloader |
|
|
| gluetun | qmcgaw/gluetun:latest | — | 6881 | VPN container |
|
|
| qbittorrent | linuxserver/qbittorrent:latest | — (via gluetun) | — | Torrent client (VPN) |
|
|
|
|
### Utilities
|
|
|
|
| Container | Image | URL | Port | Purpose |
|
|
|-----------|-------|-----|------|---------|
|
|
| microbin | danielszabo99/microbin:latest | bin.dohertylan.com | 8080 | Pastebin |
|
|
| ittools | corentinth/it-tools:latest | ittools.dohertylan.com | 80 | IT utilities |
|
|
| stash | stashapp/stash:latest | stash.dohertylan.com | 9999 | Media organizer |
|
|
| ilo-fan | ilo_fan-ilo-fan | fan.dohertylan.com | 8000 | iLO fan control |
|
|
|
|
### Automation
|
|
|
|
| Container | Image | URL | Port | Purpose |
|
|
|-----------|-------|-----|------|---------|
|
|
| semaphore | semaphoreui/semaphore:latest | http://10.100.0.35:3000 | 3000 | Ansible UI |
|
|
|
|
### lmxopcua (carry `project=lmxopcua` label)
|
|
|
|
Stacks under `/opt/otopcua-*/` migrated from the Wonderware dev VM (DESKTOP-6JL3KKO) on 2026-04-28. Discoverable via `docker ps --filter label=project=lmxopcua`. Brought up on demand by the developer from WW via `lmxopcua-fix.ps1` (in `~/bin/` on WW), which SSHes here and runs compose.
|
|
|
|
| Container/Stack | Image | Port | Purpose |
|
|
|---|---|---|---|
|
|
| otopcua-mssql (always-on) | mcr.microsoft.com/mssql/server:2022-latest | 14330→1433 | Central config DB for OtOpcUa v2 |
|
|
| otopcua-pymodbus-* | otopcua-pymodbus:3.13.0 (local build) | 5020 | Modbus driver test fixture (5 profiles) |
|
|
| otopcua-ab-server-* | otopcua-ab-server:libplctag-release (local build) | 44818 | AB CIP driver test fixture (4 profiles) |
|
|
| otopcua-python-snap7-* | otopcua-python-snap7:1.0 (local build) | 1102 | S7 driver test fixture |
|
|
| otopcua-opc-plc | mcr.microsoft.com/iotedge/opc-plc:2.14.10 | 50000 | OPC UA reference simulator |
|
|
|
|
## Semaphore / Ansible
|
|
|
|
- **Semaphore UI**: http://10.100.0.35:3000
|
|
- **Data**: `/opt/semaphore/data/database.sqlite`
|
|
- **Compose file**: `/opt/semaphore/docker-compose.yml`
|
|
|
|
### Ansible Playbook
|
|
|
|
- **Location**: `/home/dohertj2/playbook/`
|
|
- **Main playbook**: `/home/dohertj2/playbook/site.yml`
|
|
- **Roles**: `/home/dohertj2/playbook/roles/`
|
|
- **Import tasks**: `/home/dohertj2/playbook/import/` (radarr, sonarr, nzbget, prowlarr, docker-compose-arr)
|
|
- **iLO fan playbook**: `/home/dohertj2/playbook/ilo_fan/`
|
|
|
|
## Docker Compose Locations
|
|
|
|
All compose files are under `/opt/<service>/docker-compose.yml`:
|
|
|
|
```
|
|
/opt/traefik/ /opt/portainer/ /opt/homepage/
|
|
/opt/sonarr/ /opt/radarr/ /opt/whisparr/
|
|
/opt/prowlarr/ /opt/seerr/ /opt/profilarr/
|
|
/opt/tautulli/ /opt/nzbget/ /opt/vpn_downloads/
|
|
/opt/uptime_kuma/ /opt/stash/ /opt/utilities/
|
|
/opt/semaphore/ /opt/ilo_fan/
|
|
/opt/otopcua-mssql/ /opt/otopcua-modbus/ /opt/otopcua-abcip/
|
|
/opt/otopcua-s7/ /opt/otopcua-opcuaclient/
|
|
```
|