151 lines
5.0 KiB
YAML
151 lines
5.0 KiB
YAML
# AppFlowy Cloud — schlanke Self-Host-Variante fuer Heidrich Digital (Coolify/Traefik)
|
|
# Ohne 'ai' + 'appflowy_search'. Mem-Limits ~2.3 GB. nginx aus eigenem Image (kein Mount).
|
|
# depends_on entkoppelt -> alle Container starten sofort, pendeln per restart:on-failure ein.
|
|
services:
|
|
postgres:
|
|
image: pgvector/pgvector:pg16
|
|
restart: on-failure
|
|
mem_limit: 512m
|
|
environment:
|
|
- POSTGRES_USER=postgres
|
|
- POSTGRES_DB=postgres
|
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
|
healthcheck:
|
|
test: ["CMD","pg_isready","-U","postgres","-d","postgres"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
|
|
redis:
|
|
image: redis
|
|
restart: on-failure
|
|
mem_limit: 128m
|
|
|
|
minio:
|
|
image: minio/minio
|
|
restart: on-failure
|
|
mem_limit: 256m
|
|
environment:
|
|
- MINIO_BROWSER_REDIRECT_URL=https://o14i2dg0el8grbbbcm1u20u1.46.224.49.66.sslip.io/minio
|
|
- MINIO_ROOT_USER=${MINIO_KEY}
|
|
- MINIO_ROOT_PASSWORD=${MINIO_SECRET}
|
|
command: server /data --console-address ":9001"
|
|
volumes:
|
|
- minio_data:/data
|
|
|
|
gotrue:
|
|
image: appflowyinc/gotrue:latest
|
|
restart: on-failure
|
|
mem_limit: 192m
|
|
environment:
|
|
- GOTRUE_ADMIN_EMAIL=mail@heidrich-digital.de
|
|
- GOTRUE_ADMIN_PASSWORD=${GOTRUE_ADMIN_PASSWORD}
|
|
- GOTRUE_DISABLE_SIGNUP=false
|
|
- GOTRUE_SITE_URL=appflowy-flutter://
|
|
- GOTRUE_URI_ALLOW_LIST=**
|
|
- GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}
|
|
- GOTRUE_JWT_EXP=604800
|
|
- GOTRUE_JWT_ADMIN_GROUP_NAME=supabase_admin
|
|
- GOTRUE_DB_DRIVER=postgres
|
|
- API_EXTERNAL_URL=https://o14i2dg0el8grbbbcm1u20u1.46.224.49.66.sslip.io/gotrue
|
|
- DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres?search_path=auth
|
|
- PORT=9999
|
|
- GOTRUE_MAILER_URLPATHS_CONFIRMATION=/gotrue/verify
|
|
- GOTRUE_MAILER_URLPATHS_INVITE=/gotrue/verify
|
|
- GOTRUE_MAILER_URLPATHS_RECOVERY=/gotrue/verify
|
|
- GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE=/gotrue/verify
|
|
- GOTRUE_MAILER_AUTOCONFIRM=true
|
|
- GOTRUE_SMTP_MAX_FREQUENCY=1ns
|
|
- GOTRUE_RATE_LIMIT_EMAIL_SENT=100
|
|
healthcheck:
|
|
test: "curl --fail http://127.0.0.1:9999/health || exit 1"
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
start_period: 60s
|
|
|
|
appflowy_cloud:
|
|
image: appflowyinc/appflowy_cloud:latest
|
|
restart: on-failure
|
|
mem_limit: 640m
|
|
environment:
|
|
- RUST_LOG=info
|
|
- APPFLOWY_ENVIRONMENT=production
|
|
- APPFLOWY_DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres
|
|
- APPFLOWY_REDIS_URI=redis://redis:6379
|
|
- APPFLOWY_GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}
|
|
- APPFLOWY_GOTRUE_BASE_URL=http://gotrue:9999
|
|
- APPFLOWY_S3_CREATE_BUCKET=true
|
|
- APPFLOWY_S3_USE_MINIO=true
|
|
- APPFLOWY_S3_MINIO_URL=http://minio:9000
|
|
- APPFLOWY_S3_ACCESS_KEY=${MINIO_KEY}
|
|
- APPFLOWY_S3_SECRET_KEY=${MINIO_SECRET}
|
|
- APPFLOWY_S3_BUCKET=appflowy
|
|
- APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=https://o14i2dg0el8grbbbcm1u20u1.46.224.49.66.sslip.io/minio-api
|
|
- APPFLOWY_ACCESS_CONTROL=true
|
|
- APPFLOWY_DATABASE_MAX_CONNECTIONS=20
|
|
- APPFLOWY_WEB_URL=https://o14i2dg0el8grbbbcm1u20u1.46.224.49.66.sslip.io
|
|
- APPFLOWY_BASE_URL=https://o14i2dg0el8grbbbcm1u20u1.46.224.49.66.sslip.io
|
|
- AI_ENABLED=false
|
|
- APPFLOWY_SEARCH_SERVICE_URL=
|
|
healthcheck:
|
|
test: "curl --fail http://127.0.0.1:8000/api/health || exit 1"
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
appflowy_worker:
|
|
image: appflowyinc/appflowy_worker:latest
|
|
restart: on-failure
|
|
mem_limit: 256m
|
|
environment:
|
|
- RUST_LOG=info
|
|
- APPFLOWY_ENVIRONMENT=production
|
|
- APPFLOWY_WORKER_REDIS_URL=redis://redis:6379
|
|
- APPFLOWY_WORKER_ENVIRONMENT=production
|
|
- APPFLOWY_WORKER_DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres
|
|
- APPFLOWY_WORKER_DATABASE_NAME=postgres
|
|
- APPFLOWY_WORKER_IMPORT_TICK_INTERVAL=30
|
|
- APPFLOWY_S3_USE_MINIO=true
|
|
- APPFLOWY_S3_MINIO_URL=http://minio:9000
|
|
- APPFLOWY_S3_ACCESS_KEY=${MINIO_KEY}
|
|
- APPFLOWY_S3_SECRET_KEY=${MINIO_SECRET}
|
|
- APPFLOWY_S3_BUCKET=appflowy
|
|
|
|
admin_frontend:
|
|
image: appflowyinc/admin_frontend:latest
|
|
restart: on-failure
|
|
mem_limit: 96m
|
|
environment:
|
|
- APPFLOWY_GOTRUE_BASE_URL=http://gotrue:9999
|
|
- APPFLOWY_BASE_URL=http://appflowy_cloud:8000
|
|
|
|
appflowy_web:
|
|
image: appflowyinc/appflowy_web:latest
|
|
restart: on-failure
|
|
mem_limit: 256m
|
|
environment:
|
|
- APPFLOWY_BASE_URL=https://o14i2dg0el8grbbbcm1u20u1.46.224.49.66.sslip.io
|
|
- APPFLOWY_GOTRUE_BASE_URL=https://o14i2dg0el8grbbbcm1u20u1.46.224.49.66.sslip.io/gotrue
|
|
- APPFLOWY_WS_BASE_URL=wss://o14i2dg0el8grbbbcm1u20u1.46.224.49.66.sslip.io/ws/v2
|
|
|
|
nginx:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.nginx
|
|
restart: on-failure
|
|
mem_limit: 96m
|
|
networks:
|
|
- default
|
|
- coolify
|
|
|
|
networks:
|
|
coolify:
|
|
external: true
|
|
|
|
volumes:
|
|
postgres_data:
|
|
minio_data:
|