version: "3.8" services: # MongoDB database database: image: mongo restart: always ports: - "27017:27017" volumes: - ./data/db:/data/db # Redis server redis: image: eqalpha/keydb restart: always # S3-compatible storage server minio: image: minio/minio command: server /data env_file: .env volumes: - ./data/minio:/data restart: always # Caddy web server caddy: image: caddy restart: always env_file: .env ports: - "1234:80" # Change the port allocations to the following if you want to reverse proxy with this Caddy container: # ports: # - "80:80" # - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./data/caddy-data:/data - ./data/caddy-config:/config # API server (delta) api: image: ghcr.io/revoltchat/server:20230704-1 env_file: .env depends_on: - database - redis - caddy restart: always # Events service (quark) events: image: ghcr.io/revoltchat/bonfire:20230704-1 env_file: .env depends_on: - database - redis - caddy restart: always # Web App (revite) web: image: ghcr.io/revoltchat/client:master env_file: .env depends_on: - caddy restart: always # File server (autumn) autumn: image: ghcr.io/revoltchat/autumn:1.1.10 env_file: .env depends_on: - database - createbuckets - caddy environment: - AUTUMN_MONGO_URI=mongodb://database restart: always # Metadata and image proxy (january) january: image: ghcr.io/revoltchat/january:master depends_on: - caddy restart: always # Create buckets for minio. createbuckets: image: minio/mc depends_on: - minio env_file: .env entrypoint: > /bin/sh -c " while ! curl -s --output /dev/null --connect-timeout 1 http://minio:9000; do echo 'Waiting minio...' && sleep 0.1; done; /usr/bin/mc alias set minio http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD; /usr/bin/mc mb minio/attachments; /usr/bin/mc mb minio/avatars; /usr/bin/mc mb minio/backgrounds; /usr/bin/mc mb minio/icons; /usr/bin/mc mb minio/banners; /usr/bin/mc mb minio/emojis; exit 0; "