147 lines
3.5 KiB
Django/Jinja
147 lines
3.5 KiB
Django/Jinja
services:
|
|
# ---------------------------------------------------------------------------
|
|
# NetBird core services (proven config from existing PoC)
|
|
# ---------------------------------------------------------------------------
|
|
caddy:
|
|
image: caddy:{{ caddy_version }}
|
|
restart: unless-stopped
|
|
networks:
|
|
- netbird
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./config/Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "500m"
|
|
max-file: "2"
|
|
|
|
dashboard:
|
|
image: netbirdio/dashboard:{{ dashboard_version }}
|
|
restart: unless-stopped
|
|
networks:
|
|
- netbird
|
|
env_file:
|
|
- ./config/dashboard.env
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "500m"
|
|
max-file: "2"
|
|
|
|
signal:
|
|
image: netbirdio/signal:{{ netbird_version }}
|
|
restart: unless-stopped
|
|
networks:
|
|
- netbird
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "500m"
|
|
max-file: "2"
|
|
|
|
relay:
|
|
image: netbirdio/relay:{{ netbird_version }}
|
|
restart: unless-stopped
|
|
networks:
|
|
- netbird
|
|
env_file:
|
|
- ./config/relay.env
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "500m"
|
|
max-file: "2"
|
|
|
|
management:
|
|
image: netbirdio/management:{{ netbird_version }}
|
|
restart: unless-stopped
|
|
networks:
|
|
- netbird
|
|
volumes:
|
|
- netbird_management:/var/lib/netbird
|
|
- ./config/management.json:/etc/netbird/management.json
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "500m"
|
|
max-file: "2"
|
|
|
|
coturn:
|
|
image: coturn/coturn:{{ coturn_version }}
|
|
restart: unless-stopped
|
|
networks:
|
|
- netbird
|
|
ports:
|
|
- "3478:3478/udp"
|
|
- "3478:3478/tcp"
|
|
volumes:
|
|
- ./config/turnserver.conf:/etc/coturn/turnserver.conf:ro
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "500m"
|
|
max-file: "2"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Gitea (local Git server for GitOps source-of-truth)
|
|
# ---------------------------------------------------------------------------
|
|
gitea:
|
|
image: gitea/gitea:{{ gitea_version }}
|
|
restart: unless-stopped
|
|
networks:
|
|
- netbird
|
|
environment:
|
|
- GITEA__server__DOMAIN={{ gitea_domain }}
|
|
- GITEA__server__ROOT_URL=https://{{ gitea_domain }}
|
|
- GITEA__server__SSH_DOMAIN={{ gitea_domain }}
|
|
- GITEA__database__DB_TYPE=sqlite3
|
|
- GITEA__actions__ENABLED=true
|
|
volumes:
|
|
- gitea_data:/data
|
|
ports:
|
|
- "{{ gitea_ssh_port }}:22"
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "50m"
|
|
max-file: "2"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# NetBird GitOps Reconciler
|
|
# ---------------------------------------------------------------------------
|
|
reconciler:
|
|
build:
|
|
context: {{ base_dir }}/reconciler-src
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
networks:
|
|
- netbird
|
|
env_file:
|
|
- ./config/reconciler.env
|
|
volumes:
|
|
- reconciler_data:/data
|
|
ports:
|
|
- "127.0.0.1:{{ reconciler_port }}:{{ reconciler_port }}"
|
|
depends_on:
|
|
- management
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "50m"
|
|
max-file: "2"
|
|
|
|
networks:
|
|
netbird:
|
|
|
|
volumes:
|
|
netbird_management:
|
|
caddy_data:
|
|
caddy_config:
|
|
gitea_data:
|
|
reconciler_data:
|