Compare commits
2 Commits
340484159e
...
deploy
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
531f7924b0 | ||
|
|
f41d423936 |
@@ -1,4 +1,4 @@
|
|||||||
{$HOSTNAME} {
|
:80 {
|
||||||
route /api* {
|
route /api* {
|
||||||
uri strip_prefix /api
|
uri strip_prefix /api
|
||||||
reverse_proxy http://api:14702 {
|
reverse_proxy http://api:14702 {
|
||||||
|
|||||||
67
compose.yml
67
compose.yml
@@ -1,14 +1,19 @@
|
|||||||
name: stoat
|
name: stoat
|
||||||
|
|
||||||
|
networks:
|
||||||
|
web:
|
||||||
|
external: true
|
||||||
|
name: web
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# MongoDB: Database
|
# MongoDB: Database
|
||||||
database:
|
database:
|
||||||
image: docker.io/mongo
|
image: docker.io/mongo:4.4
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/db:/data/db
|
- ./data/db:/data/db
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
|
test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
|
||||||
interval: 10s
|
interval: 10s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 5
|
retries: 5
|
||||||
@@ -16,13 +21,13 @@ services:
|
|||||||
|
|
||||||
# Redis: Event message broker & KV store
|
# Redis: Event message broker & KV store
|
||||||
redis:
|
redis:
|
||||||
image: docker.io/eqalpha/keydb
|
image: docker.io/redis:6-alpine
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
|
||||||
# RabbitMQ: Internal message broker
|
# RabbitMQ: Internal message broker
|
||||||
rabbit:
|
rabbit:
|
||||||
image: docker.io/rabbitmq:4
|
image: docker.io/rabbitmq:4
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
RABBITMQ_DEFAULT_USER: rabbituser
|
RABBITMQ_DEFAULT_USER: rabbituser
|
||||||
RABBITMQ_DEFAULT_PASS: rabbitpass
|
RABBITMQ_DEFAULT_PASS: rabbitpass
|
||||||
@@ -37,7 +42,7 @@ services:
|
|||||||
|
|
||||||
# MinIO: S3-compatible storage server
|
# MinIO: S3-compatible storage server
|
||||||
minio:
|
minio:
|
||||||
image: docker.io/minio/minio
|
image: minio/minio:RELEASE.2022-10-24T18-35-07Z
|
||||||
command: server /data
|
command: server /data
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/minio:/data
|
- ./data/minio:/data
|
||||||
@@ -56,20 +61,42 @@ services:
|
|||||||
- icons.minio
|
- icons.minio
|
||||||
- banners.minio
|
- banners.minio
|
||||||
- emojis.minio
|
- emojis.minio
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
|
||||||
# Caddy: Web server
|
# Caddy: Web server
|
||||||
caddy:
|
caddy:
|
||||||
image: docker.io/caddy
|
image: docker.io/caddy
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
env_file: .env.web
|
env_file: .env.web
|
||||||
ports:
|
|
||||||
- "80:80"
|
|
||||||
- "443:443"
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./Caddyfile:/etc/caddy/Caddyfile
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
||||||
- ./data/caddy-data:/data
|
- ./data/caddy-data:/data
|
||||||
- ./data/caddy-config:/config
|
- ./data/caddy-config:/config
|
||||||
|
labels:
|
||||||
|
# Explicitly tell Traefik to expose this container
|
||||||
|
- traefik.enable=true
|
||||||
|
- traefik.docker.network=web
|
||||||
|
# HTTPS
|
||||||
|
- traefik.http.services.stoat-service-secure.loadbalancer.server.port=80
|
||||||
|
- traefik.http.routers.stoat-secure.service=stoat-service-secure
|
||||||
|
- traefik.http.routers.stoat-secure.entrypoints=websecure
|
||||||
|
- traefik.http.routers.stoat-secure.tls.certresolver=le
|
||||||
|
- traefik.http.routers.stoat-secure.rule=Host(`stoat.mistergeek.fr`)
|
||||||
|
- traefik.http.middlewares.stoat-secure-cache.compress=true
|
||||||
|
# HTTP
|
||||||
|
- traefik.http.services.stoat-service-insecure.loadbalancer.server.port=80
|
||||||
|
- traefik.http.routers.stoat-insecure.service=stoat-service-insecure
|
||||||
|
- traefik.http.routers.stoat-insecure.entrypoints=web
|
||||||
|
- traefik.http.routers.stoat-insecure.rule=Host(`stoat.mistergeek.fr`)
|
||||||
|
- traefik.http.middlewares.stoat-insecure-cache.compress=true
|
||||||
|
- traefik.http.routers.traefik.tls=true
|
||||||
|
- traefik.http.routers.traefik.tls.certresolver=le
|
||||||
|
# GZIP
|
||||||
|
- traefik.http.routers.traefik.middlewares=traefik-compress
|
||||||
|
- traefik.http.middlewares.traefik-compress.compress=true
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- web
|
||||||
|
|
||||||
# API server
|
# API server
|
||||||
api:
|
api:
|
||||||
@@ -85,7 +112,7 @@ services:
|
|||||||
- type: bind
|
- type: bind
|
||||||
source: ./Revolt.toml
|
source: ./Revolt.toml
|
||||||
target: /Revolt.toml
|
target: /Revolt.toml
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
|
||||||
# Events service
|
# Events service
|
||||||
events:
|
events:
|
||||||
@@ -99,12 +126,12 @@ services:
|
|||||||
- type: bind
|
- type: bind
|
||||||
source: ./Revolt.toml
|
source: ./Revolt.toml
|
||||||
target: /Revolt.toml
|
target: /Revolt.toml
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
|
||||||
# Web App
|
# Web App
|
||||||
web:
|
web:
|
||||||
image: ghcr.io/revoltchat/client:master
|
image: ghcr.io/revoltchat/client:master
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
env_file: .env.web
|
env_file: .env.web
|
||||||
|
|
||||||
# File server
|
# File server
|
||||||
@@ -119,7 +146,7 @@ services:
|
|||||||
- type: bind
|
- type: bind
|
||||||
source: ./Revolt.toml
|
source: ./Revolt.toml
|
||||||
target: /Revolt.toml
|
target: /Revolt.toml
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
|
||||||
# Metadata and image proxy
|
# Metadata and image proxy
|
||||||
january:
|
january:
|
||||||
@@ -128,7 +155,7 @@ services:
|
|||||||
- type: bind
|
- type: bind
|
||||||
source: ./Revolt.toml
|
source: ./Revolt.toml
|
||||||
target: /Revolt.toml
|
target: /Revolt.toml
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
|
||||||
# Tenor proxy
|
# Tenor proxy
|
||||||
gifbox:
|
gifbox:
|
||||||
@@ -137,7 +164,7 @@ services:
|
|||||||
- type: bind
|
- type: bind
|
||||||
source: ./Revolt.toml
|
source: ./Revolt.toml
|
||||||
target: /Revolt.toml
|
target: /Revolt.toml
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
|
||||||
# Regular task daemon
|
# Regular task daemon
|
||||||
crond:
|
crond:
|
||||||
@@ -151,7 +178,7 @@ services:
|
|||||||
- type: bind
|
- type: bind
|
||||||
source: ./Revolt.toml
|
source: ./Revolt.toml
|
||||||
target: /Revolt.toml
|
target: /Revolt.toml
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
|
||||||
# Push notification daemon
|
# Push notification daemon
|
||||||
pushd:
|
pushd:
|
||||||
@@ -167,7 +194,7 @@ services:
|
|||||||
- type: bind
|
- type: bind
|
||||||
source: ./Revolt.toml
|
source: ./Revolt.toml
|
||||||
target: /Revolt.toml
|
target: /Revolt.toml
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
|
||||||
# Create buckets for minio.
|
# Create buckets for minio.
|
||||||
createbuckets:
|
createbuckets:
|
||||||
|
|||||||
0
generate_config.sh
Normal file → Executable file
0
generate_config.sh
Normal file → Executable file
Reference in New Issue
Block a user