mirror of
https://github.com/Dokploy/templates.git
synced 2026-06-15 20:25:24 +02:00
Appflowy Template (#301)
* feat: add appflowy for testing * fix: removed docker network and fixed template.toml jwt secret * Working AppFlowy config * fix: meta.json
This commit is contained in:
BIN
blueprints/appflowy/appflowy.png
Normal file
BIN
blueprints/appflowy/appflowy.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
251
blueprints/appflowy/docker-compose.yml
Normal file
251
blueprints/appflowy/docker-compose.yml
Normal file
@@ -0,0 +1,251 @@
|
||||
services:
|
||||
minio:
|
||||
restart: on-failure
|
||||
image: minio/minio
|
||||
environment:
|
||||
- MINIO_BROWSER_REDIRECT_URL=${APPFLOWY_BASE_URL}/minio
|
||||
- MINIO_ROOT_USER=${APPFLOWY_S3_ACCESS_KEY:-minioadmin}
|
||||
- MINIO_ROOT_PASSWORD=${APPFLOWY_S3_SECRET_KEY:-minioadmin}
|
||||
command: server /data --console-address ":9001"
|
||||
volumes:
|
||||
- minio_data:/data
|
||||
|
||||
postgres:
|
||||
restart: on-failure
|
||||
image: pgvector/pgvector:pg16
|
||||
environment:
|
||||
- POSTGRES_USER=${POSTGRES_USER:-postgres}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-postgres}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
|
||||
- POSTGRES_HOST=${POSTGRES_HOST:-postgres}
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready", "-U", "${POSTGRES_USER}", "-d", "${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 12
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
- ./files/volumes/postgres/:/docker-entrypoint-initdb.d/
|
||||
|
||||
redis:
|
||||
restart: on-failure
|
||||
image: redis
|
||||
|
||||
gotrue:
|
||||
restart: on-failure
|
||||
image: appflowyinc/gotrue:${GOTRUE_VERSION:-latest}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "--fail", "http://127.0.0.1:9999/health"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 12
|
||||
environment:
|
||||
# Admin Configuration
|
||||
- GOTRUE_ADMIN_EMAIL=${GOTRUE_ADMIN_EMAIL}
|
||||
- GOTRUE_ADMIN_PASSWORD=${GOTRUE_ADMIN_PASSWORD}
|
||||
- GOTRUE_DISABLE_SIGNUP=${GOTRUE_DISABLE_SIGNUP:-false}
|
||||
|
||||
# Site Configuration
|
||||
- GOTRUE_SITE_URL=appflowy-flutter://
|
||||
- GOTRUE_URI_ALLOW_LIST=${GOTRUE_URI_ALLOW_LIST:-**}
|
||||
- API_EXTERNAL_URL=${API_EXTERNAL_URL}
|
||||
|
||||
# JWT Configuration
|
||||
- GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}
|
||||
- GOTRUE_JWT_EXP=${GOTRUE_JWT_EXP:-7200}
|
||||
- GOTRUE_JWT_ADMIN_GROUP_NAME=supabase_admin
|
||||
|
||||
# Database Configuration
|
||||
- GOTRUE_DB_DRIVER=postgres
|
||||
- DATABASE_URL=${GOTRUE_DATABASE_URL}
|
||||
- PORT=9999
|
||||
|
||||
# Email Configuration
|
||||
- GOTRUE_SMTP_HOST=${GOTRUE_SMTP_HOST}
|
||||
- GOTRUE_SMTP_PORT=${GOTRUE_SMTP_PORT}
|
||||
- GOTRUE_SMTP_USER=${GOTRUE_SMTP_USER}
|
||||
- GOTRUE_SMTP_PASS=${GOTRUE_SMTP_PASS}
|
||||
- GOTRUE_SMTP_ADMIN_EMAIL=${GOTRUE_SMTP_ADMIN_EMAIL}
|
||||
- GOTRUE_SMTP_MAX_FREQUENCY=${GOTRUE_SMTP_MAX_FREQUENCY:-1ns}
|
||||
- GOTRUE_RATE_LIMIT_EMAIL_SENT=${GOTRUE_RATE_LIMIT_EMAIL_SENT:-100}
|
||||
- GOTRUE_MAILER_AUTOCONFIRM=${GOTRUE_MAILER_AUTOCONFIRM:-true}
|
||||
|
||||
# Email Templates
|
||||
- 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_TEMPLATES_MAGIC_LINK=${GOTRUE_MAILER_TEMPLATES_MAGIC_LINK}
|
||||
|
||||
# OAuth Providers
|
||||
- GOTRUE_EXTERNAL_GOOGLE_ENABLED=${GOTRUE_EXTERNAL_GOOGLE_ENABLED:-false}
|
||||
- GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=${GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID}
|
||||
- GOTRUE_EXTERNAL_GOOGLE_SECRET=${GOTRUE_EXTERNAL_GOOGLE_SECRET}
|
||||
- GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=${GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI}
|
||||
|
||||
- GOTRUE_EXTERNAL_GITHUB_ENABLED=${GOTRUE_EXTERNAL_GITHUB_ENABLED:-false}
|
||||
- GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=${GOTRUE_EXTERNAL_GITHUB_CLIENT_ID}
|
||||
- GOTRUE_EXTERNAL_GITHUB_SECRET=${GOTRUE_EXTERNAL_GITHUB_SECRET}
|
||||
- GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=${GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI}
|
||||
|
||||
- GOTRUE_EXTERNAL_DISCORD_ENABLED=${GOTRUE_EXTERNAL_DISCORD_ENABLED:-false}
|
||||
- GOTRUE_EXTERNAL_DISCORD_CLIENT_ID=${GOTRUE_EXTERNAL_DISCORD_CLIENT_ID}
|
||||
- GOTRUE_EXTERNAL_DISCORD_SECRET=${GOTRUE_EXTERNAL_DISCORD_SECRET}
|
||||
- GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI=${GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI}
|
||||
|
||||
# SAML Configuration
|
||||
- GOTRUE_SAML_ENABLED=${GOTRUE_SAML_ENABLED:-false}
|
||||
- GOTRUE_SAML_PRIVATE_KEY=${GOTRUE_SAML_PRIVATE_KEY}
|
||||
|
||||
appflowy_cloud:
|
||||
restart: on-failure
|
||||
image: appflowyinc/appflowy_cloud:${APPFLOWY_CLOUD_VERSION:-latest}
|
||||
depends_on:
|
||||
gotrue:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
# Core Configuration
|
||||
- RUST_LOG=${RUST_LOG:-info}
|
||||
- APPFLOWY_ENVIRONMENT=production
|
||||
- APPFLOWY_DATABASE_URL=${APPFLOWY_DATABASE_URL}
|
||||
- APPFLOWY_REDIS_URI=${APPFLOWY_REDIS_URI}
|
||||
- APPFLOWY_WEB_URL=${APPFLOWY_WEB_URL}
|
||||
|
||||
# Authentication Configuration
|
||||
- APPFLOWY_GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}
|
||||
- APPFLOWY_GOTRUE_JWT_EXP=${GOTRUE_JWT_EXP:-7200}
|
||||
- APPFLOWY_GOTRUE_BASE_URL=${APPFLOWY_GOTRUE_BASE_URL}
|
||||
|
||||
# File Storage Configuration
|
||||
- APPFLOWY_S3_CREATE_BUCKET=${APPFLOWY_S3_CREATE_BUCKET:-true}
|
||||
- APPFLOWY_S3_USE_MINIO=${APPFLOWY_S3_USE_MINIO:-true}
|
||||
- APPFLOWY_S3_MINIO_URL=${APPFLOWY_S3_MINIO_URL}
|
||||
- APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY}
|
||||
- APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
|
||||
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET:-appflowy}
|
||||
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION:-us-east-1}
|
||||
- APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=${APPFLOWY_S3_PRESIGNED_URL_ENDPOINT}
|
||||
|
||||
# Email Configuration
|
||||
- APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
|
||||
- APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
|
||||
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
||||
- APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL}
|
||||
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
||||
- APPFLOWY_MAILER_SMTP_TLS_KIND=${APPFLOWY_MAILER_SMTP_TLS_KIND:-wrapper}
|
||||
|
||||
# Access Control and Performance
|
||||
- APPFLOWY_ACCESS_CONTROL=${APPFLOWY_ACCESS_CONTROL:-true}
|
||||
- APPFLOWY_DATABASE_MAX_CONNECTIONS=${APPFLOWY_DATABASE_MAX_CONNECTIONS:-40}
|
||||
- APPFLOWY_WEBSOCKET_MAILBOX_SIZE=${APPFLOWY_WEBSOCKET_MAILBOX_SIZE:-6000}
|
||||
|
||||
# AI Configuration
|
||||
- AI_SERVER_HOST=${AI_SERVER_HOST:-ai}
|
||||
- AI_SERVER_PORT=${AI_SERVER_PORT:-5001}
|
||||
- AI_OPENAI_API_KEY=${AI_OPENAI_API_KEY}
|
||||
|
||||
admin_frontend:
|
||||
restart: on-failure
|
||||
image: appflowyinc/admin_frontend:${APPFLOWY_ADMIN_FRONTEND_VERSION:-latest}
|
||||
depends_on:
|
||||
gotrue:
|
||||
condition: service_healthy
|
||||
appflowy_cloud:
|
||||
condition: service_started
|
||||
environment:
|
||||
- RUST_LOG=${RUST_LOG:-info}
|
||||
- ADMIN_FRONTEND_REDIS_URL=${ADMIN_FRONTEND_REDIS_URL}
|
||||
- ADMIN_FRONTEND_GOTRUE_URL=${ADMIN_FRONTEND_GOTRUE_URL}
|
||||
- ADMIN_FRONTEND_APPFLOWY_CLOUD_URL=${ADMIN_FRONTEND_APPFLOWY_CLOUD_URL}
|
||||
- ADMIN_FRONTEND_PATH_PREFIX=${ADMIN_FRONTEND_PATH_PREFIX:-/console}
|
||||
|
||||
ai:
|
||||
restart: on-failure
|
||||
image: appflowyinc/appflowy_ai:${APPFLOWY_AI_VERSION:-latest}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
appflowy_cloud:
|
||||
condition: service_started
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:5001/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
environment:
|
||||
# Core AI Configuration
|
||||
- AI_SERVER_PORT=${AI_SERVER_PORT:-5001}
|
||||
- OPENAI_API_KEY=${AI_OPENAI_API_KEY}
|
||||
- DEFAULT_AI_MODEL=${DEFAULT_AI_MODEL:-gpt-4o-mini}
|
||||
- DEFAULT_AI_COMPLETION_MODEL=${DEFAULT_AI_COMPLETION_MODEL:-gpt-4o-mini}
|
||||
|
||||
# Azure OpenAI (optional)
|
||||
- AZURE_OPENAI_API_KEY=${AZURE_OPENAI_API_KEY}
|
||||
- AZURE_OPENAI_ENDPOINT=${AZURE_OPENAI_ENDPOINT}
|
||||
- AZURE_OPENAI_API_VERSION=${AZURE_OPENAI_API_VERSION}
|
||||
|
||||
# Database and Cache
|
||||
- AI_DATABASE_URL=${APPFLOWY_DATABASE_URL}
|
||||
- AI_REDIS_URL=${APPFLOWY_REDIS_URI}
|
||||
|
||||
# File Storage for AI
|
||||
- APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY}
|
||||
- APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
|
||||
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET:-appflowy}
|
||||
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION:-us-east-1}
|
||||
- AI_USE_MINIO=${APPFLOWY_S3_USE_MINIO:-true}
|
||||
- AI_MINIO_URL=${APPFLOWY_S3_MINIO_URL}
|
||||
|
||||
# Integration
|
||||
- AI_APPFLOWY_HOST=${APPFLOWY_BASE_URL}
|
||||
- APPFLOWY_GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}
|
||||
|
||||
appflowy_worker:
|
||||
restart: on-failure
|
||||
image: appflowyinc/appflowy_worker:${APPFLOWY_WORKER_VERSION:-latest}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
# Core Configuration
|
||||
- RUST_LOG=${RUST_LOG:-info}
|
||||
- APPFLOWY_ENVIRONMENT=production
|
||||
- APPFLOWY_WORKER_REDIS_URL=${APPFLOWY_WORKER_REDIS_URL}
|
||||
- APPFLOWY_WORKER_ENVIRONMENT=production
|
||||
- APPFLOWY_WORKER_DATABASE_URL=${APPFLOWY_WORKER_DATABASE_URL}
|
||||
- APPFLOWY_WORKER_DATABASE_NAME=${APPFLOWY_WORKER_DATABASE_NAME}
|
||||
- APPFLOWY_WORKER_IMPORT_TICK_INTERVAL=${APPFLOWY_WORKER_IMPORT_TICK_INTERVAL:-30}
|
||||
|
||||
# File Storage Configuration
|
||||
- APPFLOWY_S3_USE_MINIO=${APPFLOWY_S3_USE_MINIO:-true}
|
||||
- APPFLOWY_S3_MINIO_URL=${APPFLOWY_S3_MINIO_URL}
|
||||
- APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY}
|
||||
- APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
|
||||
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET:-appflowy}
|
||||
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION:-us-east-1}
|
||||
|
||||
# Email Configuration
|
||||
- APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
|
||||
- APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
|
||||
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
||||
- APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL}
|
||||
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
||||
- APPFLOWY_MAILER_SMTP_TLS_KIND=${APPFLOWY_MAILER_SMTP_TLS_KIND:-wrapper}
|
||||
|
||||
appflowy_web:
|
||||
restart: on-failure
|
||||
image: appflowyinc/appflowy_web:${APPFLOWY_WEB_VERSION:-latest}
|
||||
depends_on:
|
||||
- appflowy_cloud
|
||||
environment:
|
||||
- AF_BASE_URL=${APPFLOWY_BASE_URL}
|
||||
- AF_GOTRUE_URL=${APPFLOWY_BASE_URL}/gotrue
|
||||
- AF_WS_V2_URL=${APPFLOWY_WEBSOCKET_BASE_URL}
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
minio_data:
|
||||
252
blueprints/appflowy/template.toml
Normal file
252
blueprints/appflowy/template.toml
Normal file
@@ -0,0 +1,252 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
# =============================================================================
|
||||
# 🌐 CORE DOMAIN CONFIGURATION
|
||||
# =============================================================================
|
||||
"FQDN=${main_domain}",
|
||||
"SCHEME=https",
|
||||
"WS_SCHEME=wss",
|
||||
"APPFLOWY_BASE_URL=https://${main_domain}",
|
||||
"APPFLOWY_WEBSOCKET_BASE_URL=wss://${main_domain}/ws/v2",
|
||||
"APPFLOWY_WEB_URL=https://${main_domain}",
|
||||
"API_EXTERNAL_URL=https://${main_domain}/gotrue",
|
||||
"TZ=UTC",
|
||||
|
||||
# Admin Configuration
|
||||
"GOTRUE_ADMIN_EMAIL=${email}",
|
||||
"GOTRUE_ADMIN_PASSWORD=${password:16}",
|
||||
"GOTRUE_DISABLE_SIGNUP=false",
|
||||
|
||||
# =============================================================================
|
||||
# 🗄️ DATABASE & CACHE CONFIGURATION
|
||||
# =============================================================================
|
||||
"POSTGRES_HOST=postgres",
|
||||
"POSTGRES_USER=appflowy",
|
||||
"POSTGRES_PASSWORD=${password:64}",
|
||||
"POSTGRES_PORT=5432",
|
||||
"POSTGRES_DB=appflowy",
|
||||
"REDIS_HOST=redis",
|
||||
"REDIS_PORT=6379",
|
||||
|
||||
# =============================================================================
|
||||
# 🔐 GOTRUE AUTHENTICATION CONFIGURATION
|
||||
# =============================================================================
|
||||
|
||||
# JWT Configuration
|
||||
"GOTRUE_JWT_SECRET=${password:64}",
|
||||
"GOTRUE_JWT_EXP=7200",
|
||||
"GOTRUE_JWT_ADMIN_GROUP_NAME=supabase_admin",
|
||||
|
||||
# Database Configuration
|
||||
"GOTRUE_DB_DRIVER=postgres",
|
||||
"GOTRUE_DATABASE_URL=postgres://appflowy:${POSTGRES_PASSWORD}@postgres:5432/appflowy?search_path=auth",
|
||||
"PORT=9999",
|
||||
|
||||
# Site Configuration
|
||||
"GOTRUE_SITE_URL=appflowy-flutter://",
|
||||
"GOTRUE_URI_ALLOW_LIST=**",
|
||||
|
||||
# Email Configuration (SMTP - Configure for production)
|
||||
"GOTRUE_SMTP_HOST=",
|
||||
"GOTRUE_SMTP_PORT=465",
|
||||
"GOTRUE_SMTP_USER=",
|
||||
"GOTRUE_SMTP_PASS=",
|
||||
"GOTRUE_SMTP_ADMIN_EMAIL=${GOTRUE_ADMIN_EMAIL}",
|
||||
"GOTRUE_SMTP_MAX_FREQUENCY=1ns",
|
||||
"GOTRUE_RATE_LIMIT_EMAIL_SENT=100",
|
||||
"GOTRUE_MAILER_AUTOCONFIRM=true",
|
||||
|
||||
# Email Templates
|
||||
"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_TEMPLATES_MAGIC_LINK=",
|
||||
|
||||
# OAuth Providers (Configure as needed)
|
||||
"GOTRUE_EXTERNAL_GOOGLE_ENABLED=false",
|
||||
"GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=",
|
||||
"GOTRUE_EXTERNAL_GOOGLE_SECRET=",
|
||||
"GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=https://${main_domain}/gotrue/callback",
|
||||
|
||||
"GOTRUE_EXTERNAL_GITHUB_ENABLED=false",
|
||||
"GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=",
|
||||
"GOTRUE_EXTERNAL_GITHUB_SECRET=",
|
||||
"GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=https://${main_domain}/gotrue/callback",
|
||||
|
||||
"GOTRUE_EXTERNAL_DISCORD_ENABLED=false",
|
||||
"GOTRUE_EXTERNAL_DISCORD_CLIENT_ID=",
|
||||
"GOTRUE_EXTERNAL_DISCORD_SECRET=",
|
||||
"GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI=https://${main_domain}/gotrue/callback",
|
||||
|
||||
# SAML Configuration
|
||||
"GOTRUE_SAML_ENABLED=false",
|
||||
"GOTRUE_SAML_PRIVATE_KEY=",
|
||||
|
||||
# =============================================================================
|
||||
# ☁️ APPFLOWY CLOUD SERVICE CONFIGURATION
|
||||
# =============================================================================
|
||||
# Core Configuration
|
||||
"RUST_LOG=info",
|
||||
"APPFLOWY_ENVIRONMENT=production",
|
||||
"APPFLOWY_DATABASE_URL=postgres://appflowy:${POSTGRES_PASSWORD}@postgres:5432/appflowy",
|
||||
"APPFLOWY_REDIS_URI=redis://redis:6379",
|
||||
|
||||
# Authentication Integration
|
||||
"APPFLOWY_GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}",
|
||||
"APPFLOWY_GOTRUE_JWT_EXP=7200",
|
||||
"APPFLOWY_GOTRUE_BASE_URL=http://gotrue:9999",
|
||||
|
||||
# Access Control and Performance
|
||||
"APPFLOWY_ACCESS_CONTROL=true",
|
||||
"APPFLOWY_DATABASE_MAX_CONNECTIONS=40",
|
||||
"APPFLOWY_WEBSOCKET_MAILBOX_SIZE=6000",
|
||||
|
||||
# Email Configuration (SMTP)
|
||||
"APPFLOWY_MAILER_SMTP_HOST=",
|
||||
"APPFLOWY_MAILER_SMTP_PORT=465",
|
||||
"APPFLOWY_MAILER_SMTP_USERNAME=",
|
||||
"APPFLOWY_MAILER_SMTP_EMAIL=",
|
||||
"APPFLOWY_MAILER_SMTP_PASSWORD=",
|
||||
"APPFLOWY_MAILER_SMTP_TLS_KIND=wrapper",
|
||||
|
||||
# =============================================================================
|
||||
# 💾 FILE STORAGE CONFIGURATION (MinIO/S3)
|
||||
# =============================================================================
|
||||
# MinIO Configuration
|
||||
"MINIO_HOST=minio",
|
||||
"MINIO_PORT=9000",
|
||||
"APPFLOWY_S3_USE_MINIO=true",
|
||||
"APPFLOWY_S3_CREATE_BUCKET=true",
|
||||
"APPFLOWY_S3_MINIO_URL=http://minio:9000",
|
||||
|
||||
# Storage Credentials
|
||||
"APPFLOWY_S3_ACCESS_KEY=${password:16}",
|
||||
"APPFLOWY_S3_SECRET_KEY=${password:32}",
|
||||
|
||||
# Storage Configuration
|
||||
"APPFLOWY_S3_BUCKET=appflowy",
|
||||
"APPFLOWY_S3_REGION=us-east-1",
|
||||
"APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=https://${main_domain}/minio-api",
|
||||
|
||||
# AWS S3 Configuration (Alternative to MinIO)
|
||||
# "APPFLOWY_S3_USE_MINIO=false",
|
||||
# "APPFLOWY_S3_REGION=us-east-1",
|
||||
|
||||
# =============================================================================
|
||||
# 🎛️ ADMIN FRONTEND CONFIGURATION
|
||||
# =============================================================================
|
||||
"ADMIN_FRONTEND_REDIS_URL=redis://redis:6379",
|
||||
"ADMIN_FRONTEND_GOTRUE_URL=http://gotrue:9999",
|
||||
"ADMIN_FRONTEND_APPFLOWY_CLOUD_URL=http://appflowy_cloud:8000",
|
||||
"ADMIN_FRONTEND_PATH_PREFIX=/console",
|
||||
|
||||
# =============================================================================
|
||||
# 🤖 AI FEATURES CONFIGURATION (Optional)
|
||||
# =============================================================================
|
||||
# OpenAI Configuration
|
||||
"AI_OPENAI_API_KEY=",
|
||||
"DEFAULT_AI_MODEL=gpt-4o-mini",
|
||||
"DEFAULT_AI_COMPLETION_MODEL=gpt-4o-mini",
|
||||
|
||||
# Azure OpenAI (Alternative)
|
||||
"AZURE_OPENAI_API_KEY=",
|
||||
"AZURE_OPENAI_ENDPOINT=",
|
||||
"AZURE_OPENAI_API_VERSION=",
|
||||
|
||||
# AI Service Configuration
|
||||
"AI_SERVER_HOST=ai",
|
||||
"AI_SERVER_PORT=5001",
|
||||
"AI_DATABASE_URL=postgresql+psycopg://appflowy:${POSTGRES_PASSWORD}@postgres:5432/appflowy",
|
||||
"AI_REDIS_URL=redis://redis:6379",
|
||||
"AI_USE_MINIO=true",
|
||||
"AI_MINIO_URL=http://minio:9000",
|
||||
"AI_APPFLOWY_HOST=https://${main_domain}",
|
||||
|
||||
# Embedding Configuration
|
||||
"APPFLOWY_EMBEDDING_CHUNK_SIZE=2000",
|
||||
"APPFLOWY_EMBEDDING_CHUNK_OVERLAP=200",
|
||||
|
||||
# =============================================================================
|
||||
# ⚙️ WORKER SERVICES CONFIGURATION
|
||||
# =============================================================================
|
||||
# AppFlowy Worker
|
||||
"APPFLOWY_WORKER_REDIS_URL=redis://redis:6379",
|
||||
"APPFLOWY_WORKER_ENVIRONMENT=production",
|
||||
"APPFLOWY_WORKER_DATABASE_URL=postgres://appflowy:${POSTGRES_PASSWORD}@postgres:5432/appflowy",
|
||||
"APPFLOWY_WORKER_DATABASE_NAME=appflowy",
|
||||
"APPFLOWY_WORKER_IMPORT_TICK_INTERVAL=30",
|
||||
|
||||
# Indexer Configuration
|
||||
"APPFLOWY_INDEXER_ENABLED=true",
|
||||
"APPFLOWY_INDEXER_DATABASE_URL=postgres://appflowy:${POSTGRES_PASSWORD}@postgres:5432/appflowy",
|
||||
"APPFLOWY_INDEXER_REDIS_URL=redis://redis:6379",
|
||||
"APPFLOWY_INDEXER_EMBEDDING_BUFFER_SIZE=5000",
|
||||
|
||||
# Collaboration Service
|
||||
"APPFLOWY_COLLABORATE_MULTI_THREAD=false",
|
||||
"APPFLOWY_COLLABORATE_REMOVE_BATCH_SIZE=100",
|
||||
|
||||
# =============================================================================
|
||||
# 🌐 NGINX CONFIGURATION
|
||||
# =============================================================================
|
||||
"NGINX_PORT=80",
|
||||
"NGINX_TLS_PORT=443",
|
||||
|
||||
# =============================================================================
|
||||
# 🛠️ VERSION TAGS (Easily Configurable)
|
||||
# =============================================================================
|
||||
"GOTRUE_VERSION=latest",
|
||||
"APPFLOWY_CLOUD_VERSION=latest",
|
||||
"APPFLOWY_ADMIN_FRONTEND_VERSION=latest",
|
||||
"APPFLOWY_AI_VERSION=latest",
|
||||
"APPFLOWY_WORKER_VERSION=latest",
|
||||
"APPFLOWY_WEB_VERSION=latest",
|
||||
]
|
||||
|
||||
mounts = [
|
||||
"postgres_data:/var/lib/postgresql/data",
|
||||
"minio_data:/data",
|
||||
"letsencrypt:/etc/letsencrypt"
|
||||
]
|
||||
|
||||
# =============================================================================
|
||||
# 🌐 DOMAIN ROUTING CONFIGURATION
|
||||
# =============================================================================
|
||||
[[config.domains]]
|
||||
serviceName = "appflowy_web"
|
||||
port = 80
|
||||
host = "${main_domain}"
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "appflowy_cloud"
|
||||
port = 8000
|
||||
host = "${main_domain}"
|
||||
path = "/api"
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "admin_frontend"
|
||||
port = 3000
|
||||
host = "${main_domain}"
|
||||
path = "/console"
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "gotrue"
|
||||
port = 9999
|
||||
host = "${main_domain}"
|
||||
path = "/gotrue"
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "minio"
|
||||
port = 9001
|
||||
host = "${main_domain}"
|
||||
path = "/minio"
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "minio"
|
||||
port = 9000
|
||||
host = "${main_domain}"
|
||||
path = "/minio-api"
|
||||
19
meta.json
19
meta.json
@@ -203,6 +203,25 @@
|
||||
"chatbot"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "appflowy",
|
||||
"name": "App Flowy",
|
||||
"version": "0.9.3",
|
||||
"description": "AppFlowy is an open-source alternative to Notion. You are in charge of your data and customizations.",
|
||||
"links": {
|
||||
"github": "https://github.com/AppFlowy-IO/AppFlowy",
|
||||
"website": "https://appflowy.io/",
|
||||
"docs": "https://docs.appflowy.io/docs"
|
||||
},
|
||||
"logo": "appflowy.png",
|
||||
"tags": [
|
||||
"productivity",
|
||||
"self-hosted",
|
||||
"notes",
|
||||
"knowledge-base",
|
||||
"notion-alternative"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "apprise-api",
|
||||
"name": "Apprise API",
|
||||
|
||||
Reference in New Issue
Block a user