services: # MongoDB database database: image: mongo restart: always volumes: - ./data/db:/data/db # Redis server redis: image: eqalpha/keydb restart: always # S3-compatible storage server minio: image: minio/minio command: server /data volumes: - ./data/minio:/data environment: MINIO_ROOT_USER: minioautumn MINIO_ROOT_PASSWORD: minioautumn MINIO_DOMAIN: minio networks: default: aliases: - revolt-uploads.minio # legacy support: - attachments.minio - avatars.minio - backgrounds.minio - icons.minio - banners.minio - emojis.minio restart: always # Caddy web server caddy: image: caddy restart: always env_file: .env.web 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:20241024-1 depends_on: - database - redis volumes: - ./Revolt.toml:/Revolt.toml restart: always # Events service (quark) events: image: ghcr.io/revoltchat/bonfire:20241024-1 depends_on: - database - redis volumes: - ./Revolt.toml:/Revolt.toml restart: always # Web App (revite) web: image: ghcr.io/revoltchat/client:master restart: always env_file: .env.web # File server (autumn) autumn: image: ghcr.io/revoltchat/autumn:20241024-1 depends_on: - database - createbuckets volumes: - ./Revolt.toml:/Revolt.toml restart: always # Metadata and image proxy (january) january: image: ghcr.io/revoltchat/january:20241024-1 volumes: - ./Revolt.toml:/Revolt.toml restart: always # Create buckets for minio. createbuckets: image: minio/mc depends_on: - minio entrypoint: > /bin/sh -c " while ! /usr/bin/mc ready minio; do /usr/bin/mc config host add minio http://minio:9000 minioautumn minioautumn; echo 'Waiting minio...' && sleep 1; done; /usr/bin/mc mb minio/revolt-uploads; exit 0; "