Coolify converts ${VAR}:/path bind mounts to named Docker volumes when
the variable is not resolved. Fixed per stack:
- adguard: -> named volumes (data already in Coolify-created volumes)
- authentik: -> named volumes (data already in Coolify-created volumes)
- gitea: -> /opt/gitea/{postgres,data,runner}
- mail-relay: -> /opt/mail-relay/{queue,opendkim,secrets/...}
- media-server: COMMON_PATH -> /opt/media (hardcoded)
- trilium: -> /opt/trilium/data
- wireguard: -> /opt/wg-easy + /lib/modules
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
46 lines
989 B
YAML
46 lines
989 B
YAML
services:
|
|
wg-easy:
|
|
image: ${WG_EASY_IMAGE}
|
|
container_name: wg-easy
|
|
pull_policy: always
|
|
restart: unless-stopped
|
|
|
|
cap_add:
|
|
- NET_ADMIN
|
|
- SYS_MODULE
|
|
|
|
sysctls:
|
|
net.ipv4.ip_forward: "1"
|
|
net.ipv4.conf.all.src_valid_mark: "1"
|
|
|
|
environment:
|
|
WG_HOST: ${WG_HOST}
|
|
WG_PORT: ${WG_PORT}
|
|
PORT: ${WG_UI_PORT}
|
|
|
|
# Arranque desatendido (solo si el volumen está vacío)
|
|
INIT_ENABLED: ${INIT_ENABLED}
|
|
INIT_USERNAME: ${INIT_USERNAME}
|
|
INIT_PASSWORD: ${INIT_PASSWORD}
|
|
|
|
# Evita reglas ip6tables (tabla nat inexistente en el host)
|
|
DISABLE_IPV6: ${DISABLE_IPV6}
|
|
|
|
volumes:
|
|
- /opt/wg-easy:/etc/wireguard:Z
|
|
- /lib/modules:/lib/modules:ro,Z
|
|
|
|
# Puerto UDP de WireGuard expuesto al mundo
|
|
ports:
|
|
- "${WG_UDP_PORT}:${WG_PORT}/udp"
|
|
|
|
networks:
|
|
- proxy
|
|
|
|
labels:
|
|
traefik.http.services.wg.loadbalancer.server.port: "${WG_UI_PORT}"
|
|
|
|
networks:
|
|
proxy:
|
|
external: true
|