[variables] main_domain = "${domain}" functions_domain = "functions.${main_domain}" sites_domain = "sites.${main_domain}" openssl_key = "${password:32}" db_root_pw = "${password:32}" db_user_pw = "${password:32}" executor_secret = "${password:32}" [config] env = [ "_APP_ENV=production", "_APP_EDITION=self-hosted", "_APP_LOCALE=en", "_APP_POOL_ADAPTER=stack", "_APP_WORKER_PER_CORE=6", "_APP_OPTIONS_ABUSE=enabled", "_APP_OPTIONS_FORCE_HTTPS=disabled", "_APP_OPTIONS_ROUTER_FORCE_HTTPS=disabled", "_APP_OPTIONS_ROUTER_PROTECTION=disabled", "_APP_OPENSSL_KEY_V1=${openssl_key}", "_APP_DOMAIN=${main_domain}", "_APP_CONSOLE_DOMAIN=${main_domain}", "_APP_CONSOLE_TRUSTED_PROJECTS=", "_APP_CUSTOM_DOMAIN_DENY_LIST=example.com,test.com,app.example.com", "_APP_DOMAIN_FUNCTIONS=${functions_domain}", "_APP_DOMAIN_SITES=${sites_domain}", "_APP_DOMAIN_TARGET_CNAME=localhost", "_APP_DOMAIN_TARGET_AAAA=::1", "_APP_DOMAIN_TARGET_A=127.0.0.1", "_APP_DOMAIN_TARGET_CAA=", "_APP_DNS=8.8.8.8", "_APP_TRUSTED_HEADERS=x-forwarded-for", "_APP_CONSOLE_WHITELIST_ROOT=enabled", "_APP_CONSOLE_WHITELIST_EMAILS=", "_APP_CONSOLE_WHITELIST_IPS=", "_APP_CONSOLE_HOSTNAMES=", "_APP_CONSOLE_SCHEMA=appwriteio", "_APP_CONSOLE_SESSION_ALERTS=disabled", "_APP_CONSOLE_COUNTRIES_DENYLIST=", "_APP_SYSTEM_EMAIL_NAME=Appwrite", "_APP_SYSTEM_EMAIL_ADDRESS=noreply@appwrite.io", "_APP_SYSTEM_TEAM_EMAIL=team@appwrite.io", "_APP_SYSTEM_RESPONSE_FORMAT=", "_APP_EMAIL_SECURITY=", "_APP_EMAIL_CERTIFICATES=", "_APP_COMPRESSION_ENABLED=enabled", "_APP_COMPRESSION_MIN_SIZE_BYTES=1024", "_APP_USAGE_STATS=enabled", "_APP_USAGE_AGGREGATION_INTERVAL=30", "_APP_STATS_RESOURCES_INTERVAL=30", "_APP_LOGGING_PROVIDER=", "_APP_LOGGING_CONFIG=", "_APP_LOGGING_CONFIG_REALTIME=", "_APP_EXPERIMENT_LOGGING_PROVIDER=", "_APP_EXPERIMENT_LOGGING_CONFIG=", "_APP_REDIS_HOST=redis", "_APP_REDIS_PORT=6379", "_APP_REDIS_USER=", "_APP_REDIS_PASS=", "_APP_DB_ADAPTER=mongodb", "_APP_DB_HOST=mongodb", "_APP_DB_PORT=27017", "_APP_DB_SCHEMA=appwrite", "_APP_DB_USER=user", "_APP_DB_PASS=${db_user_pw}", "_APP_DB_ROOT_PASS=${db_root_pw}", "_APP_DATABASE_SHARED_TABLES=", "_APP_DATABASE_SHARED_NAMESPACE=", "_APP_DB_ADAPTER_VECTORSDB=", "_APP_DB_HOST_VECTORSDB=", "_APP_DB_PORT_VECTORSDB=", "_APP_DB_SCHEMA_VECTORSDB=", "_APP_DB_USER_VECTORSDB=", "_APP_DB_PASS_VECTORSDB=", "_APP_SMTP_HOST=", "_APP_SMTP_PORT=", "_APP_SMTP_SECURE=", "_APP_SMTP_USERNAME=", "_APP_SMTP_PASSWORD=", "_APP_SMS_PROVIDER=", "_APP_SMS_FROM=", "_APP_SMS_PROJECTS_DENY_LIST=", "_APP_STORAGE_LIMIT=30000000", "_APP_STORAGE_PREVIEW_LIMIT=20000000", "_APP_STORAGE_ANTIVIRUS=disabled", "_APP_STORAGE_ANTIVIRUS_HOST=clamav", "_APP_STORAGE_ANTIVIRUS_PORT=3310", "_APP_STORAGE_DEVICE=local", "_APP_STORAGE_S3_ACCESS_KEY=", "_APP_STORAGE_S3_SECRET=", "_APP_STORAGE_S3_REGION=us-east-1", "_APP_STORAGE_S3_BUCKET=", "_APP_STORAGE_S3_ENDPOINT=", "_APP_STORAGE_DO_SPACES_ACCESS_KEY=", "_APP_STORAGE_DO_SPACES_SECRET=", "_APP_STORAGE_DO_SPACES_REGION=us-east-1", "_APP_STORAGE_DO_SPACES_BUCKET=", "_APP_STORAGE_BACKBLAZE_ACCESS_KEY=", "_APP_STORAGE_BACKBLAZE_SECRET=", "_APP_STORAGE_BACKBLAZE_REGION=us-west-004", "_APP_STORAGE_BACKBLAZE_BUCKET=", "_APP_STORAGE_LINODE_ACCESS_KEY=", "_APP_STORAGE_LINODE_SECRET=", "_APP_STORAGE_LINODE_REGION=eu-central-1", "_APP_STORAGE_LINODE_BUCKET=", "_APP_STORAGE_WASABI_ACCESS_KEY=", "_APP_STORAGE_WASABI_SECRET=", "_APP_STORAGE_WASABI_REGION=eu-central-1", "_APP_STORAGE_WASABI_BUCKET=", "_APP_COMPUTE_SIZE_LIMIT=30000000", "_APP_COMPUTE_BUILD_TIMEOUT=900", "_APP_COMPUTE_CPUS=0", "_APP_COMPUTE_MEMORY=0", "_APP_COMPUTE_INACTIVE_THRESHOLD=60", "_APP_COMPUTE_MAINTENANCE_INTERVAL=3600", "_APP_COMPUTE_RUNTIMES_NETWORK=dokploy-network", "_APP_FUNCTIONS_TIMEOUT=900", "_APP_FUNCTIONS_CREATION_ABUSE_LIMIT=5000", "_APP_FUNCTIONS_RUNTIMES=node-22,python-3.12,php-8.3,ruby-3.3,dart-3.5,go-1.23,rust-1.83,bun-1.1,deno-1.46,java-21.0,dotnet-8.0", "_APP_SITES_TIMEOUT=900", "_APP_SITES_RUNTIMES=static-1,node-22", "_APP_EXECUTOR_SECRET=${executor_secret}", "_APP_EXECUTOR_HOST=http://openruntimes-executor/v1", "_APP_EXECUTOR_IMAGES=openruntimes/node:v5-22,openruntimes/python:v5-3.12,openruntimes/php:v5-8.3,openruntimes/static:v5-1", "_APP_OPEN_RUNTIMES_NFT=enabled", "_APP_BROWSER_HOST=http://appwrite-browser:3000/v1", "_APP_WORKER_SCREENSHOTS_ROUTER=http://appwrite", "_APP_DOCKER_HUB_USERNAME=", "_APP_DOCKER_HUB_PASSWORD=", "_APP_MAINTENANCE_INTERVAL=86400", "_APP_MAINTENANCE_START_TIME=00:00", "_APP_MAINTENANCE_RETENTION_CACHE=2592000", "_APP_MAINTENANCE_RETENTION_EXECUTION=1209600", "_APP_MAINTENANCE_RETENTION_AUDIT=1209600", "_APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE=15778800", "_APP_MAINTENANCE_RETENTION_ABUSE=86400", "_APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000", "_APP_MAINTENANCE_RETENTION_SCHEDULES=86400", "_APP_INTERVAL_DOMAIN_VERIFICATION=120", "_APP_INTERVAL_CLEANUP_STALE_EXECUTIONS=300", "_APP_GRAPHQL_INTROSPECTION=enabled", "_APP_GRAPHQL_MAX_BATCH_SIZE=10", "_APP_GRAPHQL_MAX_COMPLEXITY=250", "_APP_GRAPHQL_MAX_DEPTH=4", "_APP_WEBHOOK_MAX_FAILED_ATTEMPTS=10", "_APP_VCS_GITHUB_APP_NAME=", "_APP_VCS_GITHUB_PRIVATE_KEY=", "_APP_VCS_GITHUB_APP_ID=", "_APP_VCS_GITHUB_CLIENT_ID=", "_APP_VCS_GITHUB_CLIENT_SECRET=", "_APP_VCS_GITHUB_WEBHOOK_SECRET=", "_APP_MIGRATION_HOST=appwrite", "_APP_MIGRATIONS_FIREBASE_CLIENT_ID=", "_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=", "_APP_ASSISTANT_OPENAI_API_KEY=", ] [[config.mounts]] filePath = "mongo-init.js" content = """// mongo-init.js // Switch to the admin database const adminDb = db.getSiblingDB('admin'); // Get username and password from environment variables const username = process.env.MONGO_INITDB_USERNAME; const password = process.env.MONGO_INITDB_PASSWORD; const database = process.env.MONGO_INITDB_DATABASE; // Create the user adminDb.createUser({ user: username, pwd: password, roles: [ { role: 'readWrite', db: database } ] }); """ [[config.mounts]] filePath = "mongo-entrypoint.sh" content = """#!/bin/bash set -e # Fix keyfile permissions if mounted from volume KEYFILE_PATH="/data/keyfile/mongo-keyfile" if [ ! -f "$KEYFILE_PATH" ]; then echo "Generating random MongoDB keyfile..." mkdir -p /data/keyfile openssl rand -base64 756 > "$KEYFILE_PATH" fi chmod 400 "$KEYFILE_PATH" chown mongodb:mongodb "$KEYFILE_PATH" 2>/dev/null || chown 999:999 "$KEYFILE_PATH" # Use MongoDB's standard entrypoint with our command exec docker-entrypoint.sh mongod --replSet rs0 --bind_ip_all --auth --keyFile "$KEYFILE_PATH" """ [[config.domains]] serviceName = "appwrite" port = 80 host = "${main_domain}" path = "/" [[config.domains]] serviceName = "appwrite" port = 80 host = "${sites_domain}" path = "/" [[config.domains]] serviceName = "appwrite" port = 80 host = "${functions_domain}" path = "/" [[config.domains]] serviceName = "appwrite-console" port = 80 host = "${main_domain}" path = "/console" [[config.domains]] serviceName = "appwrite-realtime" port = 80 host = "${main_domain}" path = "/v1/realtime"