mirror of
https://github.com/stoatchat/self-hosted.git
synced 2026-03-20 01:35:16 -05:00
Compare commits
5 Commits
main
...
c01603c51a
| Author | SHA1 | Date | |
|---|---|---|---|
| c01603c51a | |||
| d241581856 | |||
| ddcf2b3634 | |||
| bd354e4e29 | |||
| 490ff5686a |
2
.env
Normal file
2
.env
Normal file
@@ -0,0 +1,2 @@
|
||||
HOSTNAME=http://local.revolt.chat
|
||||
REVOLT_PUBLIC_URL=http://local.revolt.chat/api
|
||||
189
docker-compose.yml
Normal file
189
docker-compose.yml
Normal file
@@ -0,0 +1,189 @@
|
||||
name: stoat
|
||||
|
||||
services:
|
||||
# MongoDB: Database
|
||||
database:
|
||||
image: docker.io/mongo
|
||||
restart: always
|
||||
volumes:
|
||||
- ./data/db:/data/db
|
||||
healthcheck:
|
||||
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
# Redis: Event message broker & KV store
|
||||
redis:
|
||||
image: docker.io/eqalpha/keydb
|
||||
restart: always
|
||||
|
||||
# RabbitMQ: Internal message broker
|
||||
rabbit:
|
||||
image: docker.io/rabbitmq:4
|
||||
restart: always
|
||||
environment:
|
||||
RABBITMQ_DEFAULT_USER: rabbituser
|
||||
RABBITMQ_DEFAULT_PASS: rabbitpass
|
||||
volumes:
|
||||
- ./data/rabbit:/var/lib/rabbitmq
|
||||
healthcheck:
|
||||
test: rabbitmq-diagnostics -q ping
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 20s
|
||||
|
||||
# MinIO: S3-compatible storage server
|
||||
minio:
|
||||
image: docker.io/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: docker.io/caddy
|
||||
restart: always
|
||||
environment:
|
||||
- HOSTNAME=${HOSTNAME}
|
||||
- REVOLT_PUBLIC_URL={REVOLT_PUBLIC_URL}
|
||||
ports:
|
||||
- "8880:80"
|
||||
- "8443:443"
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile
|
||||
- ./data/caddy-data:/data
|
||||
- ./data/caddy-config:/config
|
||||
|
||||
# API server
|
||||
api:
|
||||
image: ghcr.io/revoltchat/server:20250930-2
|
||||
depends_on:
|
||||
database:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
rabbit:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./Revolt.toml
|
||||
target: /Revolt.toml
|
||||
restart: always
|
||||
|
||||
# Events service
|
||||
events:
|
||||
image: ghcr.io/revoltchat/bonfire:20250930-2
|
||||
depends_on:
|
||||
database:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./Revolt.toml
|
||||
target: /Revolt.toml
|
||||
restart: always
|
||||
|
||||
# Web App
|
||||
web:
|
||||
image: ghcr.io/revoltchat/client:master
|
||||
restart: always
|
||||
environment:
|
||||
- HOSTNAME=${HOSTNAME}
|
||||
- REVOLT_PUBLIC_URL={REVOLT_PUBLIC_URL}
|
||||
|
||||
# File server
|
||||
autumn:
|
||||
image: ghcr.io/revoltchat/autumn:20250930-2
|
||||
depends_on:
|
||||
database:
|
||||
condition: service_healthy
|
||||
createbuckets:
|
||||
condition: service_started
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./Revolt.toml
|
||||
target: /Revolt.toml
|
||||
restart: always
|
||||
|
||||
# Metadata and image proxy
|
||||
january:
|
||||
image: ghcr.io/revoltchat/january:20250930-2
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./Revolt.toml
|
||||
target: /Revolt.toml
|
||||
restart: always
|
||||
|
||||
# Tenor proxy
|
||||
gifbox:
|
||||
image: ghcr.io/revoltchat/gifbox:20250930-2
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./Revolt.toml
|
||||
target: /Revolt.toml
|
||||
restart: always
|
||||
|
||||
# Regular task daemon
|
||||
crond:
|
||||
image: ghcr.io/revoltchat/crond:20250930-2
|
||||
depends_on:
|
||||
database:
|
||||
condition: service_healthy
|
||||
minio:
|
||||
condition: service_started
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./Revolt.toml
|
||||
target: /Revolt.toml
|
||||
restart: always
|
||||
|
||||
# Push notification daemon
|
||||
pushd:
|
||||
image: ghcr.io/revoltchat/pushd:20250930-2
|
||||
depends_on:
|
||||
database:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
rabbit:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./Revolt.toml
|
||||
target: /Revolt.toml
|
||||
restart: always
|
||||
|
||||
# Create buckets for minio.
|
||||
createbuckets:
|
||||
image: docker.io/minio/mc
|
||||
depends_on:
|
||||
- minio
|
||||
entrypoint: >
|
||||
/bin/sh -c "
|
||||
while ! /usr/bin/mc ready minio; do
|
||||
/usr/bin/mc alias set minio http://minio:9000 minioautumn minioautumn;
|
||||
echo 'Waiting minio...' && sleep 1;
|
||||
done;
|
||||
/usr/bin/mc mb minio/revolt-uploads;
|
||||
exit 0;
|
||||
"
|
||||
Reference in New Issue
Block a user