mirror of
https://github.com/stoatchat/self-hosted.git
synced 2026-03-03 02:27:01 +00:00
* chore: Use v0.11.1 for now as v0.11.x>1 contain emergency prod-only fix This commit was made without the use of generative AI. Signed-off-by: Jacob Schlecht <dadadah@echoha.us> * feat: add voice to the compose, caddyfile, and livekit config Web section of the compose is commented out for now Added section to readme about the name of the project changing This commit was made without the use of generative AI. Signed-off-by: Jacob Schlecht <dadadah@echoha.us> * chore: update many references to Revolt to reference Stoat Signed-off-by: Jacob Schlecht <dadadah@echoha.us> * feat: Add new dockerized web container This commit was made without the use of generative AI. Signed-off-by: Jacob Schlecht <dadadah@echoha.us> * feat: Confirm reconfiguration if Revolt.toml exists Also fix not outputing new env vars to .env.web This commit was made without the use of generative AI. Signed-off-by: Jacob Schlecht <dadadah@echoha.us> * feat: Add a migration script to make upgrading to voice easier This commit was made without the use of generative AI. Signed-off-by: Jacob Schlecht <dadadah@echoha.us> * fix: Use old referral code This commit was made without the use of generative AI. Signed-off-by: Jacob Schlecht <dadadah@echoha.us> --------- Signed-off-by: Jacob Schlecht <dadadah@echoha.us> Co-authored-by: Declan Chidlow <accounts@vale.rocks>
209 lines
4.6 KiB
YAML
209 lines
4.6 KiB
YAML
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
|
|
env_file: .env.web
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
- ./data/caddy-data:/data
|
|
- ./data/caddy-config:/config
|
|
|
|
# API server
|
|
api:
|
|
image: ghcr.io/stoatchat/api:v0.11.1
|
|
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/stoatchat/events:v0.11.1
|
|
depends_on:
|
|
database:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
volumes:
|
|
- type: bind
|
|
source: ./Revolt.toml
|
|
target: /Revolt.toml
|
|
restart: always
|
|
|
|
# File server
|
|
autumn:
|
|
image: ghcr.io/stoatchat/file-server:v0.11.1
|
|
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/stoatchat/proxy:v0.11.1
|
|
volumes:
|
|
- type: bind
|
|
source: ./Revolt.toml
|
|
target: /Revolt.toml
|
|
restart: always
|
|
|
|
# Tenor proxy
|
|
gifbox:
|
|
image: ghcr.io/stoatchat/gifbox:v0.11.1
|
|
volumes:
|
|
- type: bind
|
|
source: ./Revolt.toml
|
|
target: /Revolt.toml
|
|
restart: always
|
|
|
|
# Regular task daemon
|
|
crond:
|
|
image: ghcr.io/stoatchat/crond:v0.11.1
|
|
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/stoatchat/pushd:v0.11.1
|
|
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
|
|
|
|
# Voice ingress daemon
|
|
voice-ingress:
|
|
image: ghcr.io/stoatchat/voice-ingress:v0.11.1
|
|
restart: always
|
|
depends_on:
|
|
database:
|
|
condition: service_healthy
|
|
rabbit:
|
|
condition: service_healthy
|
|
volumes:
|
|
- type: bind
|
|
source: ./Revolt.toml
|
|
target: /Revolt.toml
|
|
|
|
livekit:
|
|
image: ghcr.io/stoatchat/livekit-server:v1.9.6
|
|
command: --config /etc/livekit.yml
|
|
volumes:
|
|
- ./livekit.yml:/etc/livekit.yml
|
|
ports:
|
|
- "7881:7881"
|
|
- "50000-50100:50000-50100/udp"
|
|
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;
|
|
"
|
|
|
|
# Web App
|
|
web:
|
|
image: ghcr.io/stoatchat/for-web:6c5970f
|
|
restart: always
|
|
env_file: .env.web |