services: ergo: container_name: ergo image: ergo environment: ERGO__DATASTORE__MYSQL__PASSWORD: ${ERGO__DATASTORE__MYSQL__PASSWORD} ERGO__SERVER__IP_CLOAKING__NETNAME: ${ERGO__SERVER__IP_CLOAKING__NETNAME} ERGO__SERVER__OVERRIDE_SERVICES_HOSTNAME: ${ERGO__SERVER__OVERRIDE_SERVICES_HOSTNAME} ERGO__SERVER__NAME: ${ERGO__SERVER__NAME} ERGO__NETWORK__NAME: ${ERGO__NETWORK__NAME} ERGO__CEF__IMAGOR__URL: ${ERGO__CEF__IMAGOR__URL} ERGO__CEF__IMAGOR__SECRET: ${ERGO__CEF__IMAGOR__SECRET} IMAGOR_SECRET: ${IMAGOR_SECRET} IMAGOR_URL: ${IMAGOR_URL} networks: - cef volumes: - ergodata:/ircd/persist - ${PWD}/certs:/ircd/certs - type: bind source: ${PWD}/configs/ergo/ircd.yaml target: /ircd/ircd.yaml read_only: true - type: bind source: ${PWD}/configs/ergo/ircd.motd target: /ircd/ircd.motd depends_on: mariadb: condition: service_healthy restart: "always" 3m: container_name: 3m image: 3m environment: THREEM_MINIO_EXTERNAL_ADDR: ${THREEM_MINIO_EXTERNAL_ADDR} THREEM_MINIO_ACCESS_KEY: ${THREEM_MINIO_ACCESS_KEY} THREEM_MINIO_SECRET_KEY: ${THREEM_MINIO_SECRET_KEY} THREEM_DBURL: ${THREEM_DBURL} THREEM_MEDIAMTX_API: ${THREEM_MEDIAMTX_API} THREEM_MEDIAMTX_RTSP: ${THREEM_MEDIAMTX_RTSP} networks: - cef volumes: - type: bind source: ${PWD}/certs/3m.pub target: /3m/keys/3m.pub - type: bind source: ${PWD}/configs/3m/config.py target: /3m/config.py depends_on: - ergo restart: "always" mediamtx: container_name: mediamtx image: mediamtx command: /mediamtx/mediamtx.yaml environment: MTX_WEBRTCADDITIONALHOSTS: ${MTX_WEBRTCADDITIONALHOSTS} MTX_WEBRTCICESERVERS2_0_URL: "turn:${VIDEO_DOMAIN}:3478" MTX_WEBRTCICESERVERS2_0_USERNAME: "AUTH_SECRET" MTX_WEBRTCICESERVERS2_0_PASSWORD: ${COTURN_PASSWORD} networks: - cef ports: - "8189:8189/tcp" - "8189:8189/udp" volumes: - type: bind source: ${PWD}/configs/mediamtx/mediamtx.yaml target: /mediamtx/mediamtx.yaml restart: "always" coturn: container_name: coturn image: "ghcr.io/coturn/coturn:edge-alpine" network_mode: "host" environment: DETECT_EXTERNAL_IP: "yes" DETECT_RELAY_IP: "yes" COTURN_LOGIN: ${COTURN_LOGIN} restart: "always" ports: - "3478:3478" - "3478:3478/udp" - "5349:5349" - "5349:5349/udp" - "49152-65535:49152-65535/udp" command: "--fingerprint --use-auth-secret --static-auth-secret ${COTURN_PASSWORD} --realm cef.icu" grumble: container_name: grumble image: grumble environment: GRUMBLE_ERGO_ADDR: "ergo" networks: - cef volumes: - type: bind source: ${PWD}/certs/grumble.pub target: /data/jwtpub.pem depends_on: - ergo restart: "always" minio: container_name: minio image: docker.io/minio/minio command: server /data environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} networks: - cef volumes: - miniodata:/data restart: "always" redis: container_name: redis image: docker.io/redis:7.2.5-alpine networks: - cef restart: "always" caddy: container_name: caddy image: docker.io/caddy:2.8.4-alpine cap_add: - NET_ADMIN environment: DOMAIN: ${DOMAIN} HOST_DOMAIN: ${HOST_DOMAIN} IMAGOR_URL: ${IMAGOR_URL} ports: - "80:80" - "443:443" - "443:443/udp" networks: - cef volumes: - caddydata:/data - caddyconfig:/config - ${PWD}/www:/srv - type: bind source: ${PWD}/configs/caddy target: /etc/caddy restart: "always" mariadb: container_name: mariadb image: docker.io/mariadb:11-ubi9 restart: always environment: MARIADB_ROOT_PASSWORD: ${MYSQL_PASSWORD} networks: - cef volumes: - mariadbdata:/var/lib/mysql - ${PWD}/configs/mariadb:/docker-entrypoint-initdb.d healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] start_period: 10s interval: 10s timeout: 5s retries: 3 imagor: container_name: imagor image: git.cef.icu/cef/imagorvideoextended:latest environment: IMAGOR_SECRET: ${IMAGOR_SECRET} IMAGOR_SIGNER_TYPE: "sha256" DEBUG: "1" networks: - cef networks: cef: volumes: ergodata: external: true miniodata: external: true mariadbdata: external: true caddyconfig: caddydata: external: true