AppFlowy Cloud schlanke Self-Host-Compose (Coolify/Traefik, ohne ai+search, Mem-Limits, Secrets via Env)
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
# AppFlowy Cloud — schlanke Self-Host-Variante fuer Heidrich Digital (Coolify/Traefik)
|
||||
# Abgespeckt: ohne 'ai' und 'appflowy_search'. Mem-Limits als Leitplanke (~2.3 GB).
|
||||
# Hinter Traefik: nginx ohne Host-Ports, im coolify-Netz.
|
||||
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: 12
|
||||
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://appflowy.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
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
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://appflowy.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: 12
|
||||
start_period: 40s
|
||||
|
||||
appflowy_cloud:
|
||||
image: appflowyinc/appflowy_cloud:latest
|
||||
restart: on-failure
|
||||
mem_limit: 640m
|
||||
depends_on:
|
||||
gotrue:
|
||||
condition: service_healthy
|
||||
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://appflowy.46.224.49.66.sslip.io/minio-api
|
||||
- APPFLOWY_ACCESS_CONTROL=true
|
||||
- APPFLOWY_DATABASE_MAX_CONNECTIONS=20
|
||||
- APPFLOWY_WEB_URL=https://appflowy.46.224.49.66.sslip.io
|
||||
- APPFLOWY_BASE_URL=https://appflowy.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: 12
|
||||
|
||||
appflowy_worker:
|
||||
image: appflowyinc/appflowy_worker:latest
|
||||
restart: on-failure
|
||||
mem_limit: 256m
|
||||
depends_on:
|
||||
appflowy_cloud:
|
||||
condition: service_healthy
|
||||
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
|
||||
depends_on:
|
||||
appflowy_cloud:
|
||||
condition: service_healthy
|
||||
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
|
||||
depends_on:
|
||||
appflowy_cloud:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- APPFLOWY_BASE_URL=https://appflowy.46.224.49.66.sslip.io
|
||||
- APPFLOWY_GOTRUE_BASE_URL=https://appflowy.46.224.49.66.sslip.io/gotrue
|
||||
- APPFLOWY_WS_BASE_URL=wss://appflowy.46.224.49.66.sslip.io/ws/v2
|
||||
|
||||
nginx:
|
||||
image: nginx
|
||||
restart: on-failure
|
||||
mem_limit: 96m
|
||||
depends_on:
|
||||
- appflowy_cloud
|
||||
- appflowy_web
|
||||
- gotrue
|
||||
volumes:
|
||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
|
||||
- ./nginx/ssl/certificate.crt:/etc/nginx/ssl/certificate.crt
|
||||
- ./nginx/ssl/private_key.key:/etc/nginx/ssl/private_key.key
|
||||
networks:
|
||||
- default
|
||||
- coolify
|
||||
|
||||
networks:
|
||||
coolify:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
minio_data:
|
||||
Reference in New Issue
Block a user