# version: '3.7' # services: # db: # restart: always # image: postgres:14-alpine # shm_size: 256mb # networks: # - internal_network # healthcheck: # test: ['CMD', 'pg_isready', '-U', 'postgres'] # volumes: # - ./postgres14:/var/lib/postgresql/data # environment: # - 'POSTGRES_HOST_AUTH_METHOD=trust' # redis: # restart: always # image: redis:7-alpine # networks: # - internal_network # healthcheck: # test: ['CMD', 'redis-cli', 'ping'] # volumes: # - ./redis:/data # web: # image: ghcr.io/glitch-soc/mastodon # restart: always # env_file: .env.production # command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" # networks: # - traefik # - internal_network # healthcheck: # # prettier-ignore # test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1'] # depends_on: # - db # - redis # # - es # volumes: # - ./public/system:/mastodon/public/system # labels: # - "traefik.enable=true" # # Main Web Router # - "traefik.http.routers.mstdn-web-rtr.entrypoints=websecure" # - "traefik.http.routers.mstdn-web-rtr.rule=Host(`kvist.knast.cc`)" # - "traefik.http.routers.mstdn-web-rtr.tls=true" # - "traefik.http.routers.mstdn-web-rtr.tls.certResolver=letsencr" # # Media Router # - "traefik.http.routers.mstdn-media-rtr.entrypoints=websecure" # - "traefik.http.routers.mstdn-media-rtr.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/system/media_attachments/`))" # - "traefik.http.routers.mstdn-media-rtr.tls=true" # - "traefik.http.routers.mstdn-media-rtr.tls.certResolver=letsencr" # - "traefik.http.routers.mstdn-media-rtr.middlewares=mstdn-cors-media" # # CORS Middleware # - "traefik.http.middlewares.mstdn-cors-media.headers.contentSecurityPolicy=img-src *; media-src *;" # - "traefik.http.middlewares.mstdn-cors-media.headers.accesscontrolallowheaders=*" # - "traefik.http.middlewares.mstdn-cors-media.headers.accessControlAllowOriginList=*" # # Service # - "traefik.http.services.mstdn-web-svc.loadbalancer.server.port=3000" # streaming: # image: ghcr.io/glitch-soc/mastodon # restart: always # env_file: .env.production # command: node ./streaming # networks: # - traefik # - internal_network # healthcheck: # # prettier-ignore # test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1'] # depends_on: # - db # - redis # labels: # - "traefik.enable=true" # - "traefik.http.routers.mstdn-streamer-rtr.entrypoints=websecure" # - "traefik.http.routers.mstdn-streamer-rtr.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/api/v1/streaming`))" # - "traefik.http.routers.mstdn-streamer-rtr.tls=true" # - "traefik.http.routers.mstdn-streamer-rtr.tls.certResolver=letsencr" # - "traefik.http.services.mstdn-streamer-svc.loadbalancer.server.port=4000" # sidekiq: # image: ghcr.io/glitch-soc/mastodon # restart: always # env_file: .env.production # command: bundle exec sidekiq # depends_on: # - db # - redis # networks: # - traefik # - internal_network # volumes: # - ./public/system:/mastodon/public/system # healthcheck: # test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] # networks: # traefik: # name: traefik # external: true # internal_network: # internal: true