services: nginx-proxy: image: nginxproxy/nginx-proxy container_name: nginx-proxy restart: always ports: - 80:80 - 443:443 volumes: - ./volume/nginx-proxy/certs:/etc/nginx/certs - ./volume/nginx-proxy/vhost:/etc/nginx/vhost.d - ./volume/nginx-proxy/html:/usr/share/nginx/html - /var/run/docker.sock:/tmp/docker.sock:ro networks: - front - tubearchivist_network - umami_network - gitea_network nginx-proxy-acme: image: nginxproxy/acme-companion container_name: nginx-proxy-acme restart: always volumes: - ./volume/nginx-proxy/certs:/etc/nginx/certs - ./volume/nginx-proxy/vhost:/etc/nginx/vhost.d - ./volume/nginx-proxy/html:/usr/share/nginx/html - ./volume/nginx-proxy/acme:/etc/acme.sh - /var/run/docker.sock:/var/run/docker.sock:ro environment: - NGINX_PROXY_CONTAINER=nginx-proxy networks: - front # main flask site nginx: build: ./tubearchivist/nginx container_name: backend_nginx restart: always expose: - "8000" depends_on: - tubearchivist environment: - VIRTUAL_HOST=tubearchivist.com,www.tubearchivist.com - LETSENCRYPT_HOST=tubearchivist.com,www.tubearchivist.com networks: - tubearchivist_network tubearchivist: container_name: tubearchivist build: ./tubearchivist/web restart: always volumes: - ./volume/tubearchivist/data:/data env_file: - ./env/tubearchivist.env environment: - discord=gkWMk9Qupk expose: - "8080" networks: - tubearchivist_network docs: build: https://github.com/tubearchivist/docs.git container_name: docs restart: always expose: - "8081" environment: - NGINX_PORT=8081 - VIRTUAL_HOST=docs.tubearchivist.com - LETSENCRYPT_HOST=docs.tubearchivist.com networks: - tubearchivist_network discord-bot: container_name: discord-bot build: https://github.com/tubearchivist/discord-bot.git restart: always env_file: - ./env/discord-bot.env networks: - tubearchivist_network # backend postgres postgres: image: postgres:15 container_name: postgres restart: always volumes: - ./volume/tubearchivist/postgres15:/var/lib/postgresql/data/ env_file: - ./env/postgres.env expose: - "5432" networks: - tubearchivist_network redis: image: redislabs/rejson:latest container_name: redis restart: always ports: - "127.0.0.1:6379:6379" volumes: - ./volume/redis:/data networks: - tubearchivist_network # umami stats umami: image: ghcr.io/umami-software/umami:postgresql-latest container_name: umami expose: - "3000" env_file: - ./env/umami.env environment: - VIRTUAL_HOST=stats.tubearchivist.com - LETSENCRYPT_HOST=stats.tubearchivist.com depends_on: - umami-db restart: always networks: - umami_network umami-db: image: postgres:15 container_name: umami-db env_file: - ./env/umami.env volumes: - ./volume/umami/postgres15:/var/lib/postgresql/data restart: always networks: - umami_network # gitea gitea: image: gitea/gitea container_name: gitea hostname: gitea env_file: - ./env/gitea.env environment: - VIRTUAL_HOST=git.tubearchivist.com - LETSENCRYPT_HOST=git.tubearchivist.com restart: always volumes: - ./volume/gitea/data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro expose: - "3000" ports: - '127.0.0.1:22:22' networks: - gitea_network gitea-db: image: postgres:15 container_name: gitea-db restart: always env_file: - ./env/gitea.env volumes: - ./volume/gitea/postgres15:/var/lib/postgresql/data networks: - gitea_network redditbot: container_name: redditbot restart: unless-stopped image: bbilly1/redditbot volumes: - ./volume/redditbot/data:/data env_file: - ./env/redditbot.env networks: front: driver: bridge tubearchivist_network: driver: bridge umami_network: driver: bridge gitea_network: driver: bridge