services: # r-proxy, log generator caddy: image: caddy:latest restart: always env_file: .env.caddy ports: - '8880:80' - '4443:443' volumes: - './Caddyfile:/etc/caddy/Caddyfile' - './data/caddy-data:/data' - './data/caddy-config:/config' ########################################## # Monitoring ##### # log collector prometheus: image: prom/prometheus:latest restart: always volumes: - ./prometheus/:/etc/prometheus/ - prometheus_storage:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' ports: - 9090:9090 # links: # - cadvisor:cadvisor depends_on: - cadvisor - caddy # log viewer grafana: image: grafana/grafana:latest user: "472" restart: always ports: - 3000:3000 volumes: - './grafana/provisioning/:/etc/grafana/provisioning/' - 'grafana_storage:/var/lib/grafana' env_file: - ./grafana/.env.grafana depends_on: - prometheus node-exporter: image: quay.io/prometheus/node-exporter:latest volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro - /:/host:ro,rslave command: - '--path.rootfs=/host' - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - --collector.filesystem.mount-points-exclude - "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)" ports: - 9100:9100 restart: always deploy: mode: global cadvisor: image: gcr.io/cadvisor/cadvisor volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro ports: - 8080:8080 restart: always deploy: mode: global ########################################## # Revolt ##### # 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 env_file: .env volumes: - './data/minio:/data' restart: always # API server (delta) api: image: ghcr.io/revoltchat/server:latest env_file: .env depends_on: - database - redis - caddy restart: always volumes: - './Revolt.toml:/Revolt.toml' # Events service (quark) events: image: ghcr.io/revoltchat/bonfire:latest env_file: .env depends_on: - database - redis - caddy restart: always volumes: - './Revolt.toml:/Revolt.toml' # 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:latest 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:latest depends_on: - caddy restart: always # Create buckets for minio. createbuckets: image: minio/mc depends_on: - minio env_file: .env entrypoint: > /bin/sh -c " /usr/bin/mc config host add minio http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD; while ! /usr/bin/mc ready minio; do echo 'Waiting minio...' && sleep 1; done; /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; " volumes: grafana_storage: {} prometheus_storage: {}