mirror of
https://github.com/tiennm99/coolify.git
synced 2026-05-12 20:58:05 +00:00
Merge branch 'next' into feature/signoz
This commit is contained in:
+123
-54
@@ -5,14 +5,17 @@
|
||||
|
||||
services:
|
||||
appwrite:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
container_name: appwrite
|
||||
volumes:
|
||||
- appwrite-uploads:/storage/uploads:rw
|
||||
- appwrite-imports:/storage/imports:rw
|
||||
- appwrite-cache:/storage/cache:rw
|
||||
- appwrite-config:/storage/config:rw
|
||||
- appwrite-certificates:/storage/certificates:rw
|
||||
- appwrite-functions:/storage/functions:rw
|
||||
- appwrite-sites:/storage/sites:rw
|
||||
- appwrite-builds:/storage/builds:rw
|
||||
depends_on:
|
||||
- appwrite-mariadb
|
||||
- appwrite-redis
|
||||
@@ -21,10 +24,12 @@ services:
|
||||
- _APP_ENV=${_APP_ENV:-production}
|
||||
- _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6}
|
||||
- _APP_LOCALE=${_APP_LOCALE:-en}
|
||||
- _APP_COMPRESSION_MIN_SIZE_BYTES=${_APP_COMPRESSION_MIN_SIZE_BYTES}
|
||||
- _APP_CONSOLE_WHITELIST_ROOT=${_APP_CONSOLE_WHITELIST_ROOT:-enabled}
|
||||
- _APP_CONSOLE_WHITELIST_EMAILS=${_APP_CONSOLE_WHITELIST_EMAILS}
|
||||
- _APP_CONSOLE_SESSION_ALERTS=${_APP_CONSOLE_SESSION_ALERTS}
|
||||
- _APP_CONSOLE_WHITELIST_IPS=${_APP_CONSOLE_WHITELIST_IPS}
|
||||
- _APP_CONSOLE_HOSTNAMES=${_APP_CONSOLE_HOSTNAMES:-localhost,appwrite.io,*.appwrite.io}
|
||||
- _APP_CONSOLE_HOSTNAMES=${_APP_CONSOLE_HOSTNAMES}
|
||||
- _APP_SYSTEM_EMAIL_NAME=${_APP_SYSTEM_EMAIL_NAME:-Appwrite}
|
||||
- _APP_SYSTEM_EMAIL_ADDRESS=${_APP_SYSTEM_EMAIL_ADDRESS:-team@appwrite.io}
|
||||
- _APP_SYSTEM_TEAM_EMAIL=${_APP_SYSTEM_TEAM_EMAIL:-team@appwrite.io}
|
||||
@@ -33,10 +38,12 @@ services:
|
||||
- _APP_OPTIONS_ABUSE=${_APP_OPTIONS_ABUSE:-enabled}
|
||||
- _APP_OPTIONS_ROUTER_PROTECTION=${_APP_OPTIONS_ROUTER_PROTECTION:-disabled}
|
||||
- _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled}
|
||||
- _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=${_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS:-disabled}
|
||||
- _APP_OPTIONS_ROUTER_FORCE_HTTPS=${_APP_OPTIONS_ROUTER_FORCE_HTTPS:-disabled}
|
||||
- _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE
|
||||
- _APP_DOMAIN=$SERVICE_URL_APPWRITE
|
||||
- _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE
|
||||
- _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME:-localhost}
|
||||
- _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA:-::1}
|
||||
- _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A:-127.0.0.1}
|
||||
- _APP_DOMAIN_FUNCTIONS=$SERVICE_URL_APPWRITE
|
||||
- _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis}
|
||||
- _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379}
|
||||
@@ -63,6 +70,7 @@ services:
|
||||
- _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET}
|
||||
- _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1}
|
||||
- _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET}
|
||||
- _APP_STORAGE_S3_ENDPOINT=${_APP_STORAGE_S3_ENDPOINT}
|
||||
- _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY}
|
||||
- _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET}
|
||||
- _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1}
|
||||
@@ -79,21 +87,26 @@ services:
|
||||
- _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET}
|
||||
- _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1}
|
||||
- _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET}
|
||||
- _APP_FUNCTIONS_SIZE_LIMIT=${_APP_FUNCTIONS_SIZE_LIMIT:-30000000}
|
||||
- _APP_COMPUTE_SIZE_LIMIT=${_APP_COMPUTE_SIZE_LIMIT:-30000000}
|
||||
- _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900}
|
||||
- _APP_FUNCTIONS_BUILD_TIMEOUT=${_APP_FUNCTIONS_BUILD_TIMEOUT:-900}
|
||||
- _APP_FUNCTIONS_CPUS=${_APP_FUNCTIONS_CPUS:-0}
|
||||
- _APP_FUNCTIONS_MEMORY=${_APP_FUNCTIONS_MEMORY:-0}
|
||||
- _APP_SITES_TIMEOUT=${_APP_SITES_TIMEOUT:-900}
|
||||
- _APP_COMPUTE_BUILD_TIMEOUT=${_APP_COMPUTE_BUILD_TIMEOUT:-900}
|
||||
- _APP_COMPUTE_CPUS=${_APP_COMPUTE_CPUS:-0}
|
||||
- _APP_COMPUTE_MEMORY=${_APP_COMPUTE_MEMORY:-0}
|
||||
- _APP_FUNCTIONS_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES:-node-20.0,php-8.2,python-3.11,ruby-3.2}
|
||||
- _APP_SITES_RUNTIMES=${_APP_SITES_RUNTIMES}
|
||||
- _APP_DOMAIN_SITES=${_APP_DOMAIN_SITES:-appwrite.network}
|
||||
- _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE
|
||||
- _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1}
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
- _APP_MAINTENANCE_INTERVAL=${_APP_MAINTENANCE_INTERVAL:-86400}
|
||||
- _APP_MAINTENANCE_DELAY=${_APP_MAINTENANCE_DELAY}
|
||||
- _APP_MAINTENANCE_START_TIME=${_APP_MAINTENANCE_START_TIME}
|
||||
- _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION:-1209600}
|
||||
- _APP_MAINTENANCE_RETENTION_CACHE=${_APP_MAINTENANCE_RETENTION_CACHE:-2592000}
|
||||
- _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400}
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600}
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE=${_APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE}
|
||||
- _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=${_APP_MAINTENANCE_RETENTION_USAGE_HOURLY:-8640000}
|
||||
- _APP_MAINTENANCE_RETENTION_SCHEDULES=${_APP_MAINTENANCE_RETENTION_SCHEDULES:-86400}
|
||||
- _APP_SMS_PROVIDER=${_APP_SMS_PROVIDER}
|
||||
@@ -112,13 +125,13 @@ services:
|
||||
- _APP_ASSISTANT_OPENAI_API_KEY=${_APP_ASSISTANT_OPENAI_API_KEY}
|
||||
|
||||
appwrite-console:
|
||||
image: appwrite/console:5.0.12
|
||||
image: appwrite/console:6.0.13
|
||||
container_name: appwrite-console
|
||||
environment:
|
||||
- SERVICE_FQDN_APPWRITE=/console
|
||||
|
||||
appwrite-realtime:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: realtime
|
||||
container_name: appwrite-realtime
|
||||
depends_on:
|
||||
@@ -129,6 +142,7 @@ services:
|
||||
- _APP_ENV=${_APP_ENV:-production}
|
||||
- _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6}
|
||||
- _APP_OPTIONS_ABUSE=${_APP_OPTIONS_ABUSE:-enabled}
|
||||
- _APP_OPTIONS_ROUTER_PROTECTION=${_APP_OPTIONS_ROUTER_PROTECTION:-disabled}
|
||||
- _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE
|
||||
- _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis}
|
||||
- _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379}
|
||||
@@ -143,7 +157,7 @@ services:
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
|
||||
appwrite-worker-audits:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-audits
|
||||
container_name: appwrite-worker-audits
|
||||
depends_on:
|
||||
@@ -165,7 +179,7 @@ services:
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
|
||||
appwrite-worker-webhooks:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-webhooks
|
||||
container_name: appwrite-worker-webhooks
|
||||
depends_on:
|
||||
@@ -189,7 +203,7 @@ services:
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
|
||||
appwrite-worker-deletes:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-deletes
|
||||
container_name: appwrite-worker-deletes
|
||||
depends_on:
|
||||
@@ -199,6 +213,7 @@ services:
|
||||
- appwrite-uploads:/storage/uploads:rw
|
||||
- appwrite-cache:/storage/cache:rw
|
||||
- appwrite-functions:/storage/functions:rw
|
||||
- appwrite-sites:/storage/sites:rw
|
||||
- appwrite-builds:/storage/builds:rw
|
||||
- appwrite-certificates:/storage/certificates:rw
|
||||
environment:
|
||||
@@ -215,10 +230,11 @@ services:
|
||||
- _APP_DB_USER=$SERVICE_USER_MARIADB
|
||||
- _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB
|
||||
- _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local}
|
||||
- _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY:-local}
|
||||
- _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY}
|
||||
- _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET}
|
||||
- _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1}
|
||||
- _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET}
|
||||
- _APP_STORAGE_S3_ENDPOINT=${_APP_STORAGE_S3_ENDPOINT}
|
||||
- _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY}
|
||||
- _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET}
|
||||
- _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1}
|
||||
@@ -240,10 +256,13 @@ services:
|
||||
- _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1}
|
||||
- _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400}
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600}
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE=${_APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE}
|
||||
- _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION:-1209600}
|
||||
- _APP_SYSTEM_SECURITY_EMAIL_ADDRESS=${_APP_SYSTEM_SECURITY_EMAIL_ADDRESS}
|
||||
- _APP_EMAIL_CERTIFICATES=${_APP_EMAIL_CERTIFICATES}
|
||||
|
||||
appwrite-worker-databases:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-databases
|
||||
container_name: appwrite-worker-databases
|
||||
depends_on:
|
||||
@@ -265,7 +284,7 @@ services:
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
|
||||
appwrite-worker-builds:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-builds
|
||||
container_name: appwrite-worker-builds
|
||||
depends_on:
|
||||
@@ -273,7 +292,9 @@ services:
|
||||
- appwrite-mariadb
|
||||
volumes:
|
||||
- appwrite-functions:/storage/functions:rw
|
||||
- appwrite-sites:/storage/sites:rw
|
||||
- appwrite-builds:/storage/builds:rw
|
||||
- appwrite-uploads:/storage/uploads:rw
|
||||
environment:
|
||||
- _APP_ENV=${_APP_ENV:-production}
|
||||
- _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6}
|
||||
@@ -294,18 +315,20 @@ services:
|
||||
- _APP_VCS_GITHUB_PRIVATE_KEY=${_APP_VCS_GITHUB_PRIVATE_KEY}
|
||||
- _APP_VCS_GITHUB_APP_ID=${_APP_VCS_GITHUB_APP_ID}
|
||||
- _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900}
|
||||
- _APP_FUNCTIONS_BUILD_TIMEOUT=${_APP_FUNCTIONS_BUILD_TIMEOUT:-900}
|
||||
- _APP_FUNCTIONS_CPUS=${_APP_FUNCTIONS_CPUS:-0}
|
||||
- _APP_FUNCTIONS_MEMORY=${_APP_FUNCTIONS_MEMORY:-0}
|
||||
- _APP_FUNCTIONS_SIZE_LIMIT=${_APP_FUNCTIONS_SIZE_LIMIT:-30000000}
|
||||
- _APP_SITES_TIMEOUT=${_APP_SITES_TIMEOUT:-900}
|
||||
- _APP_COMPUTE_BUILD_TIMEOUT=${_APP_COMPUTE_BUILD_TIMEOUT:-900}
|
||||
- _APP_COMPUTE_CPUS=${_APP_COMPUTE_CPUS:-0}
|
||||
- _APP_COMPUTE_MEMORY=${_APP_COMPUTE_MEMORY:-0}
|
||||
- _APP_COMPUTE_SIZE_LIMIT=${_APP_COMPUTE_SIZE_LIMIT:-30000000}
|
||||
- _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled}
|
||||
- _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=${_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS:-disabled}
|
||||
- _APP_OPTIONS_ROUTER_FORCE_HTTPS=${_APP_OPTIONS_ROUTER_FORCE_HTTPS:-disabled}
|
||||
- _APP_DOMAIN=$SERVICE_URL_APPWRITE
|
||||
- _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local}
|
||||
- _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY:-local}
|
||||
- _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY}
|
||||
- _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET}
|
||||
- _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1}
|
||||
- _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET}
|
||||
- _APP_STORAGE_S3_ENDPOINT=${_APP_STORAGE_S3_ENDPOINT}
|
||||
- _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY}
|
||||
- _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET}
|
||||
- _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1}
|
||||
@@ -322,9 +345,10 @@ services:
|
||||
- _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET}
|
||||
- _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1}
|
||||
- _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET}
|
||||
- _APP_DOMAIN_SITES=${_APP_DOMAIN_SITES}
|
||||
|
||||
appwrite-worker-certificates:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-certificates
|
||||
container_name: appwrite-worker-certificates
|
||||
depends_on:
|
||||
@@ -338,10 +362,11 @@ services:
|
||||
- _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6}
|
||||
- _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE
|
||||
- _APP_DOMAIN=$SERVICE_URL_APPWRITE
|
||||
- _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE
|
||||
- _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME}
|
||||
- _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA}
|
||||
- _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A}
|
||||
- _APP_DOMAIN_FUNCTIONS=$SERVICE_URL_APPWRITE
|
||||
- _APP_EMAIL_CERTIFICATES=${_APP_EMAIL_CERTIFICATES:-enabled}
|
||||
- _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io}
|
||||
- _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis}
|
||||
- _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379}
|
||||
- _APP_REDIS_USER=${_APP_REDIS_USER}
|
||||
@@ -354,7 +379,7 @@ services:
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
|
||||
appwrite-worker-functions:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-functions
|
||||
container_name: appwrite-worker-functions
|
||||
depends_on:
|
||||
@@ -377,9 +402,10 @@ services:
|
||||
- _APP_DB_USER=$SERVICE_USER_MARIADB
|
||||
- _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB
|
||||
- _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900}
|
||||
- _APP_FUNCTIONS_BUILD_TIMEOUT=${_APP_FUNCTIONS_BUILD_TIMEOUT:-900}
|
||||
- _APP_FUNCTIONS_CPUS=${_APP_FUNCTIONS_CPUS:-0}
|
||||
- _APP_FUNCTIONS_MEMORY=${_APP_FUNCTIONS_MEMORY:-0}
|
||||
- _APP_SITES_TIMEOUT=${_APP_SITES_TIMEOUT:-900}
|
||||
- _APP_COMPUTE_BUILD_TIMEOUT=${_APP_COMPUTE_BUILD_TIMEOUT:-900}
|
||||
- _APP_COMPUTE_CPUS=${_APP_COMPUTE_CPUS:-0}
|
||||
- _APP_COMPUTE_MEMORY=${_APP_COMPUTE_MEMORY:-0}
|
||||
- _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE
|
||||
- _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1}
|
||||
- _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled}
|
||||
@@ -388,7 +414,7 @@ services:
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
|
||||
appwrite-worker-mails:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-mails
|
||||
container_name: appwrite-worker-mails
|
||||
depends_on:
|
||||
@@ -415,9 +441,10 @@ services:
|
||||
- _APP_SMTP_PASSWORD=${_APP_SMTP_PASSWORD}
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
- _APP_DOMAIN=$SERVICE_URL_APPWRITE
|
||||
- _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled}
|
||||
|
||||
appwrite-worker-messaging:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-messaging
|
||||
container_name: appwrite-worker-messaging
|
||||
volumes:
|
||||
@@ -445,6 +472,7 @@ services:
|
||||
- _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET}
|
||||
- _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1}
|
||||
- _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET}
|
||||
- _APP_STORAGE_S3_ENDPOINT=${_APP_STORAGE_S3_ENDPOINT}
|
||||
- _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY}
|
||||
- _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET}
|
||||
- _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1}
|
||||
@@ -463,9 +491,11 @@ services:
|
||||
- _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET}
|
||||
|
||||
appwrite-worker-migrations:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-migrations
|
||||
container_name: appwrite-worker-migrations
|
||||
volumes:
|
||||
- appwrite-imports:/storage/imports:rw
|
||||
depends_on:
|
||||
- appwrite-mariadb
|
||||
environment:
|
||||
@@ -473,7 +503,9 @@ services:
|
||||
- _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6}
|
||||
- _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE
|
||||
- _APP_DOMAIN=$SERVICE_URL_APPWRITE
|
||||
- _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE
|
||||
- _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME}
|
||||
- _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA}
|
||||
- _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A}
|
||||
- _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io}
|
||||
- _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis}
|
||||
- _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379}
|
||||
@@ -489,7 +521,7 @@ services:
|
||||
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=${_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET}
|
||||
|
||||
appwrite-task-maintenance:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: maintenance
|
||||
container_name: appwrite-task-maintenance
|
||||
depends_on:
|
||||
@@ -498,7 +530,9 @@ services:
|
||||
- _APP_ENV=${_APP_ENV:-production}
|
||||
- _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6}
|
||||
- _APP_DOMAIN=$SERVICE_URL_APPWRITE
|
||||
- _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE
|
||||
- _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME}
|
||||
- _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA}
|
||||
- _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A}
|
||||
- _APP_DOMAIN_FUNCTIONS=$SERVICE_URL_APPWRITE
|
||||
- _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE
|
||||
- _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis}
|
||||
@@ -515,14 +549,14 @@ services:
|
||||
- _APP_MAINTENANCE_RETENTION_CACHE=${_APP_MAINTENANCE_RETENTION_CACHE:-2592000}
|
||||
- _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400}
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600}
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE=${_APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE}
|
||||
- _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=${_APP_MAINTENANCE_RETENTION_USAGE_HOURLY:-8640000}
|
||||
- _APP_MAINTENANCE_RETENTION_SCHEDULES=${_APP_MAINTENANCE_RETENTION_SCHEDULES:-86400}
|
||||
|
||||
appwrite-worker-usage:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
entrypoint: worker-usage
|
||||
container_name: appwrite-worker-usage
|
||||
restart: unless-stopped
|
||||
appwrite-task-stats-resources:
|
||||
image: appwrite/appwrite:1.7.4
|
||||
container_name: appwrite-task-stats-resources
|
||||
entrypoint: stats-resources
|
||||
depends_on:
|
||||
- appwrite-redis
|
||||
- appwrite-mariadb
|
||||
@@ -541,12 +575,37 @@ services:
|
||||
- _APP_REDIS_PASS=${_APP_REDIS_PASS}
|
||||
- _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled}
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
- _APP_USAGE_AGGREGATION_INTERVAL=${_APP_USAGE_AGGREGATION_INTERVAL:-30}
|
||||
- _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES}
|
||||
- _APP_STATS_RESOURCES_INTERVAL=${_APP_STATS_RESOURCES_INTERVAL}
|
||||
|
||||
appwrite-worker-usage-dump:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
entrypoint: worker-usage-dump
|
||||
container_name: appwrite-worker-usage-dump
|
||||
appwrite-worker-stats-resources:
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-stats-resources
|
||||
container_name: appwrite-worker-stats-resources
|
||||
depends_on:
|
||||
- appwrite-redis
|
||||
- appwrite-mariadb
|
||||
environment:
|
||||
- _APP_ENV=${_APP_ENV:-production}
|
||||
- _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6}
|
||||
- _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE
|
||||
- _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb}
|
||||
- _APP_DB_PORT=${_APP_DB_PORT:-3306}
|
||||
- _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite}
|
||||
- _APP_DB_USER=$SERVICE_USER_MARIADB
|
||||
- _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB
|
||||
- _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis}
|
||||
- _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379}
|
||||
- _APP_REDIS_USER=${_APP_REDIS_USER}
|
||||
- _APP_REDIS_PASS=${_APP_REDIS_PASS}
|
||||
- _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled}
|
||||
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
- _APP_STATS_RESOURCES_INTERVAL=${_APP_STATS_RESOURCES_INTERVAL}
|
||||
|
||||
appwrite-worker-stats-usage:
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: worker-stats-usage
|
||||
container_name: appwrite-worker-stats-usage
|
||||
depends_on:
|
||||
- appwrite-redis
|
||||
- appwrite-mariadb
|
||||
@@ -568,7 +627,7 @@ services:
|
||||
- _APP_USAGE_AGGREGATION_INTERVAL=${_APP_USAGE_AGGREGATION_INTERVAL:-30}
|
||||
|
||||
appwrite-task-scheduler-functions:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: schedule-functions
|
||||
container_name: appwrite-task-scheduler-functions
|
||||
depends_on:
|
||||
@@ -589,7 +648,7 @@ services:
|
||||
- _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB
|
||||
|
||||
appwrite-task-scheduler-executions:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: schedule-executions
|
||||
container_name: appwrite-task-scheduler-executions
|
||||
depends_on:
|
||||
@@ -610,7 +669,7 @@ services:
|
||||
- _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB
|
||||
|
||||
appwrite-task-scheduler-messages:
|
||||
image: appwrite/appwrite:1.6.0
|
||||
image: appwrite/appwrite:1.7.4
|
||||
entrypoint: schedule-messages
|
||||
container_name: appwrite-task-scheduler-messages
|
||||
depends_on:
|
||||
@@ -636,33 +695,40 @@ services:
|
||||
environment:
|
||||
- _APP_ASSISTANT_OPENAI_API_KEY=${_APP_ASSISTANT_OPENAI_API_KEY}
|
||||
|
||||
appwrite-browser:
|
||||
image: appwrite/browser:0.2.4
|
||||
container_name: appwrite-browser
|
||||
|
||||
openruntimes-executor:
|
||||
container_name: openruntimes-executor
|
||||
hostname: appwrite-executor
|
||||
stop_signal: SIGINT
|
||||
image: openruntimes/executor:0.6.11
|
||||
image: openruntimes/executor:0.7.14
|
||||
networks:
|
||||
- runtimes
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- appwrite-builds:/storage/builds:rw
|
||||
- appwrite-functions:/storage/functions:rw
|
||||
- appwrite-sites:/storage/sites:rw
|
||||
- /tmp:/tmp:rw
|
||||
environment:
|
||||
- OPR_EXECUTOR_INACTIVE_TRESHOLD=${_APP_FUNCTIONS_INACTIVE_THRESHOLD}
|
||||
- OPR_EXECUTOR_MAINTENANCE_INTERVAL=${_APP_FUNCTIONS_MAINTENANCE_INTERVAL}
|
||||
- OPR_EXECUTOR_NETWORK=${_APP_FUNCTIONS_RUNTIMES_NETWORK:-runtimes}
|
||||
- OPR_EXECUTOR_INACTIVE_TRESHOLD=${_APP_COMPUTE_INACTIVE_THRESHOLD}
|
||||
- OPR_EXECUTOR_MAINTENANCE_INTERVAL=${_APP_COMPUTE_MAINTENANCE_INTERVAL}
|
||||
- OPR_EXECUTOR_NETWORK=${_APP_COMPUTE_RUNTIMES_NETWORK:-runtimes}
|
||||
- OPR_EXECUTOR_DOCKER_HUB_USERNAME=${_APP_DOCKER_HUB_USERNAME}
|
||||
- OPR_EXECUTOR_DOCKER_HUB_PASSWORD=${_APP_DOCKER_HUB_PASSWORD}
|
||||
- OPR_EXECUTOR_ENV=${_APP_ENV:-production}
|
||||
- OPR_EXECUTOR_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES}
|
||||
- OPR_EXECUTOR_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES},${_APP_SITES_RUNTIMES}
|
||||
- OPR_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE
|
||||
- OPR_EXECUTOR_RUNTIME_VERSIONS=v5
|
||||
- OPR_EXECUTOR_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
|
||||
- OPR_EXECUTOR_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local}
|
||||
- OPR_EXECUTOR_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY:-local}
|
||||
- OPR_EXECUTOR_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY}
|
||||
- OPR_EXECUTOR_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET}
|
||||
- OPR_EXECUTOR_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION}
|
||||
- OPR_EXECUTOR_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET}
|
||||
- OPR_EXECUTOR_STORAGE_S3_ENDPOINT=${_APP_STORAGE_S3_ENDPOINT}
|
||||
- OPR_EXECUTOR_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY}
|
||||
- OPR_EXECUTOR_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET}
|
||||
- OPR_EXECUTOR_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION}
|
||||
@@ -703,6 +769,7 @@ services:
|
||||
--maxmemory-samples 5
|
||||
volumes:
|
||||
- appwrite-redis:/data:rw
|
||||
|
||||
networks:
|
||||
runtimes:
|
||||
name: runtimes
|
||||
@@ -712,7 +779,9 @@ volumes:
|
||||
appwrite-redis:
|
||||
appwrite-cache:
|
||||
appwrite-uploads:
|
||||
appwrite-imports:
|
||||
appwrite-certificates:
|
||||
appwrite-functions:
|
||||
appwrite-sites:
|
||||
appwrite-builds:
|
||||
appwrite-config:
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
services:
|
||||
authentik-server:
|
||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.4.1}
|
||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.6.4}
|
||||
restart: unless-stopped
|
||||
command: server
|
||||
environment:
|
||||
@@ -35,7 +35,7 @@ services:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
authentik-worker:
|
||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.4.1}
|
||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.6.4}
|
||||
restart: unless-stopped
|
||||
command: worker
|
||||
environment:
|
||||
|
||||
@@ -17,8 +17,9 @@ services:
|
||||
- INTERNAL_API_KEY=$SERVICE_BASE64_128_BUDIBASE
|
||||
- BUDIBASE_ENVIRONMENT=${BUDIBASE_ENVIRONMENT:-PRODUCTION}
|
||||
- PORT=4002
|
||||
- API_ENCRYPTION_KEY=$SERVICE_BASE64_64_BUDIBASE
|
||||
- JWT_SECRET=$SERVICE_BASE64_64_BUDIBASE
|
||||
- API_ENCRYPTION_KEY=$SERVICE_BASE64_64_BUDIBASEAPI
|
||||
- ENCRYPTION_KEY=$SERVICE_BASE64_64_BUDIBASE
|
||||
- JWT_SECRET=$SERVICE_BASE64_64_BUDIBASEJWT
|
||||
- LOG_LEVEL=info
|
||||
- ENABLE_ANALYTICS=${ENABLE_ANALYTICS:-true}
|
||||
- REDIS_URL=redis-service:6379
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# documentation: https://cookbook.chromadb.dev/
|
||||
# slogan: Chroma is the open-source search and retrieval database for AI applications.
|
||||
# tags: ai,vector-database,semantic-search,machine-learning,bm25,embeddings,llm
|
||||
# logo: svgs/chroma.svg
|
||||
# port: 8000
|
||||
|
||||
services:
|
||||
chromadb:
|
||||
image: chromadb/chroma:1.0.15
|
||||
volumes:
|
||||
- chroma-data:/data
|
||||
environment:
|
||||
- SERVICE_FQDN_CHROMA_8000
|
||||
- IS_PERSISTENT=TRUE
|
||||
- PERSIST_DIRECTORY=/data
|
||||
healthcheck:
|
||||
test: [ "CMD", "/bin/bash", "-c", "cat < /dev/null > /dev/tcp/localhost/8000" ]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
@@ -7,7 +7,7 @@
|
||||
version: '3.8'
|
||||
services:
|
||||
api:
|
||||
image: 'atendai/evolution-api:latest' # Change to specific version if needed.
|
||||
image: 'evoapicloud/evolution-api:latest' # Change to specific version if needed.
|
||||
restart: always
|
||||
depends_on:
|
||||
- redis
|
||||
@@ -105,10 +105,11 @@ services:
|
||||
- WEBHOOK_EVENTS_ERRORS_WEBHOOK=${WEBHOOK_EVENTS_ERRORS_WEBHOOK:-}
|
||||
- 'CONFIG_SESSION_PHONE_CLIENT=${CONFIG_SESSION_PHONE_CLIENT:-Evolution API V2}'
|
||||
- CONFIG_SESSION_PHONE_NAME=${CONFIG_SESSION_PHONE_NAME:-Chrome}
|
||||
- CONFIG_SESSION_PHONE_VERSION=${CONFIG_SESSION_PHONE_VERSION:-2.3000.1020885143}
|
||||
- QRCODE_LIMIT=${QRCODE_LIMIT:-30}
|
||||
- OPENAI_ENABLED=${OPENAI_ENABLED:-true}
|
||||
- DIFY_ENABLED=${DIFY_ENABLED:-true}
|
||||
- FLOWISE_ENABLED=${FLOWISE_ENABLED:-true}
|
||||
- N8N_ENABLED=${N8N_ENABLED:-true}
|
||||
- TYPEBOT_ENABLED=${TYPEBOT_ENABLED:-true}
|
||||
- TYPEBOT_API_VERSION=${TYPEBOT_API_VERSION:-latest}
|
||||
- CHATWOOT_ENABLED=${CHATWOOT_ENABLED:-true}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# documentation: https://docs.excalidraw.com/docs
|
||||
# slogan: Virtual whiteboard for sketching hand-drawn like diagrams
|
||||
# tags: canvas,diagrams,drawing,productivity,whiteboard
|
||||
# logo: svgs/excalidraw.svg
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
excalidraw:
|
||||
image: excalidraw/excalidraw:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_EXCALIDRAW_80
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- wget
|
||||
- '--spider'
|
||||
- '--quiet'
|
||||
- 'http://localhost'
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
@@ -0,0 +1,27 @@
|
||||
# documentation: https://github.com/myoung34/docker-github-actions-runner/wiki/Usage
|
||||
# slogan: A GitHub Actions runner for Docker
|
||||
# tags: github,actions,runner,docker
|
||||
# logo: svgs/github-runner.png
|
||||
|
||||
services:
|
||||
runner:
|
||||
image: myoung34/github-runner:latest
|
||||
environment:
|
||||
- REPO_URL=${REPO_URL}
|
||||
- RUNNER_NAME_PREFIX=${RUNNER_NAME_PREFIX:-coolify-runner}
|
||||
- RUNNER_NAME_SUFFIX=${RUNNER_NAME_SUFFIX:-false}
|
||||
- ACCESS_TOKEN=${ACCESS_TOKEN}
|
||||
- RUNNER_WORKDIR=/runner/work
|
||||
- RUNNER_SCOPE=${RUNNER_SCOPE:-repo}
|
||||
- LABELS=${LABELS:-default}
|
||||
- ORG_NAME=${ORG_NAME}
|
||||
security_opt:
|
||||
- label:disable
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- runner-data:/runner
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "ps aux | grep '[R]unner' > /dev/null || exit 1"]
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 15
|
||||
@@ -0,0 +1,21 @@
|
||||
# documentation: https://github.com/aldinokemal/go-whatsapp-web-multidevice
|
||||
# slogan: Golang WhatsApp - Built with Go for efficient memory use
|
||||
# tags: whatsapp,golang,multidevice,api,go-whatsapp
|
||||
# logo: svgs/gowa.svg
|
||||
# port: 3000
|
||||
|
||||
services:
|
||||
gowa:
|
||||
image: aldinokemal2104/go-whatsapp-web-multidevice:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_GOWA_3000
|
||||
- SERVICE_USER_GOWA
|
||||
- SERVICE_PASSWORD_GOWA
|
||||
- APP_BASIC_AUTH=${SERVICE_USER_GOWA}:${SERVICE_PASSWORD_GOWA}
|
||||
- APP_PORT=3000
|
||||
- APP_DEBUG=${APP_DEBUG:-false}
|
||||
- APP_ACCOUNT_VALIDATION=${APP_ACCOUNT_VALIDATION:-false}
|
||||
- WHATSAPP_WEBHOOK=${WHATSAPP_WEBHOOK}
|
||||
- WHATSAPP_WEBHOOK_SECRET=${WHATSAPP_WEBHOOK_SECRET}
|
||||
volumes:
|
||||
- gowa_data:/app/storages
|
||||
@@ -0,0 +1,27 @@
|
||||
# documentation: https://github.com/sysadminsmedia/homebox
|
||||
# slogan: Homebox is the inventory and organization system built for the Home User.
|
||||
# tags: inventory, home, organize
|
||||
# logo: svgs/homebox.svg
|
||||
# port: 7745
|
||||
|
||||
services:
|
||||
homebox:
|
||||
image: ghcr.io/sysadminsmedia/homebox:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_HOMEBOX_7745
|
||||
- HBOX_OPTIONS_ALLOW_REGISTRATION=${HBOX_OPTIONS_ALLOW_REGISTRATION:-false}
|
||||
- HBOX_LOG_LEVEL=${HBOX_LOG_LEVEL:-info}
|
||||
- HBOX_LOG_FORMAT=${HBOX_LOG_FORMAT:-text}
|
||||
- HBOX_WEB_MAX_UPLOAD_SIZE=${HBOX_WEB_MAX_UPLOAD_SIZE:-10}
|
||||
- HBOX_MAILER_HOST=${HBOX_MAILER_HOST}
|
||||
- HBOX_MAILER_PORT=${HBOX_MAILER_PORT:-587}
|
||||
- HBOX_MAILER_USERNAME=${HBOX_MAILER_USERNAME}
|
||||
- HBOX_MAILER_PASSWORD=${HBOX_MAILER_PASSWORD}
|
||||
- HBOX_MAILER_FROM=${HBOX_MAILER_FROM}
|
||||
volumes:
|
||||
- homebox-data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "wget --method=GET -qO- http://localhost:7745/api/v1/status > /dev/null || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
@@ -1,7 +1,7 @@
|
||||
# documentation: https://docs.karakeep.app/
|
||||
# slogan: A self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search
|
||||
# tags: media,read-it-later,pocket-alternative,omnivore-alternative,instapaper-alternative
|
||||
# logo: svgs/hoarder.svg
|
||||
# logo: svgs/karakeep.svg
|
||||
# port: 3000
|
||||
|
||||
services:
|
||||
@@ -11,13 +11,13 @@ services:
|
||||
- karakeep-data:/data
|
||||
environment:
|
||||
- SERVICE_FQDN_KARAKEEP
|
||||
- NEXTAUTH_URL=${SERVICE_FQDN_KARAKEEP}
|
||||
- NEXTAUTH_SECRET=${SERVICE_PASSWORD_KARAKEEPNEXTAUTH}
|
||||
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI}
|
||||
- NEXTAUTH_URL=${SERVICE_FQDN_KARAKEEP}
|
||||
- MEILI_ADDR=http://meilisearch:7700
|
||||
- BROWSER_WEB_URL=http://chrome:9222
|
||||
- OPENAI_API_KEY=${SERVICE_OPENAI_API_KEY}
|
||||
- DISABLE_SIGNUPS=${SERVICE_DISABLE_SIGNUPS}
|
||||
- DISABLE_SIGNUPS=${SERVICE_DISABLE_SIGNUPS:-false}
|
||||
- DATA_DIR=/data
|
||||
|
||||
chrome:
|
||||
|
||||
+107
-28
@@ -1,30 +1,76 @@
|
||||
# documentation: https://langfuse.com/docs
|
||||
# slogan: Langfuse is an open-source LLM engineering platform that helps teams collaboratively debug, analyze, and iterate on their LLM applications.
|
||||
# tags: ai, qdrant, weaviate, langchain, openai, gpt, llm, lmops, langfuse, llmops, tracing, observation, metrics
|
||||
# logo: svgs/langfuse.png
|
||||
# logo: svgs/langfuse.svg
|
||||
# port: 3000
|
||||
|
||||
x-app-env: &app-env
|
||||
- NEXTAUTH_URL=${SERVICE_FQDN_LANGFUSE}
|
||||
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse-db}
|
||||
- SALT=${SERVICE_PASSWORD_SALT}
|
||||
- ENCRYPTION_KEY=${SERVICE_PASSWORD_64_LANGFUSE}
|
||||
- TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false}
|
||||
- LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false}
|
||||
- CLICKHOUSE_MIGRATION_URL=clickhouse://clickhouse:9000
|
||||
- CLICKHOUSE_URL=http://clickhouse:8123
|
||||
- CLICKHOUSE_USER=${SERVICE_USER_CLICKHOUSE}
|
||||
- CLICKHOUSE_PASSWORD=${SERVICE_PASSWORD_CLICKHOUSE}
|
||||
- CLICKHOUSE_CLUSTER_ENABLED=false
|
||||
- LANGFUSE_USE_AZURE_BLOB=${LANGFUSE_USE_AZURE_BLOB:-false}
|
||||
- LANGFUSE_S3_EVENT_UPLOAD_BUCKET=${LANGFUSE_S3_EVENT_UPLOAD_BUCKET:-langfuse}
|
||||
- LANGFUSE_S3_EVENT_UPLOAD_REGION=${LANGFUSE_S3_EVENT_UPLOAD_REGION:-auto}
|
||||
- LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID=${LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID}
|
||||
- LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=${LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY}
|
||||
- LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT=${LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT}
|
||||
- LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE=${LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE:-true}
|
||||
- LANGFUSE_S3_EVENT_UPLOAD_PREFIX=${LANGFUSE_S3_EVENT_UPLOAD_PREFIX:-events/}
|
||||
- LANGFUSE_S3_MEDIA_UPLOAD_BUCKET=${LANGFUSE_S3_MEDIA_UPLOAD_BUCKET:-langfuse}
|
||||
- LANGFUSE_S3_MEDIA_UPLOAD_REGION=${LANGFUSE_S3_MEDIA_UPLOAD_REGION:-auto}
|
||||
- LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID=${LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID}
|
||||
- LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY=${LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY}
|
||||
- LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT=${LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT}
|
||||
- LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE=${LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE:-true}
|
||||
- LANGFUSE_S3_MEDIA_UPLOAD_PREFIX=${LANGFUSE_S3_MEDIA_UPLOAD_PREFIX:-media/}
|
||||
- LANGFUSE_S3_BATCH_EXPORT_ENABLED=${LANGFUSE_S3_BATCH_EXPORT_ENABLED:-false}
|
||||
- LANGFUSE_S3_BATCH_EXPORT_BUCKET=${LANGFUSE_S3_BATCH_EXPORT_BUCKET:-langfuse}
|
||||
- LANGFUSE_S3_BATCH_EXPORT_PREFIX=${LANGFUSE_S3_BATCH_EXPORT_PREFIX:-exports/}
|
||||
- LANGFUSE_S3_BATCH_EXPORT_REGION=${LANGFUSE_S3_BATCH_EXPORT_REGION:-auto}
|
||||
- LANGFUSE_S3_BATCH_EXPORT_ENDPOINT=${LANGFUSE_S3_BATCH_EXPORT_ENDPOINT}
|
||||
- LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT=${LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT}
|
||||
- LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID=${LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID}
|
||||
- LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY=${LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY}
|
||||
- LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE=${LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE:-true}
|
||||
- LANGFUSE_INGESTION_QUEUE_DELAY_MS=${LANGFUSE_INGESTION_QUEUE_DELAY_MS:-1}
|
||||
- LANGFUSE_INGESTION_CLICKHOUSE_WRITE_INTERVAL_MS=${LANGFUSE_INGESTION_CLICKHOUSE_WRITE_INTERVAL_MS:-1000}
|
||||
- REDIS_HOST=redis
|
||||
- REDIS_PORT=6379
|
||||
- REDIS_AUTH=${SERVICE_PASSWORD_REDIS}
|
||||
- EMAIL_FROM_ADDRESS=${EMAIL_FROM_ADDRESS:-admin@example.com}
|
||||
- SMTP_CONNECTION_URL=${SMTP_CONNECTION_URL:-}
|
||||
- NEXTAUTH_SECRET=${SERVICE_BASE64_NEXTAUTHSECRET}
|
||||
- AUTH_DISABLE_SIGNUP=${AUTH_DISABLE_SIGNUP:-true}
|
||||
- HOSTNAME=${HOSTNAME:-0.0.0.0}
|
||||
- LANGFUSE_INIT_ORG_ID=${LANGFUSE_INIT_ORG_ID:-my-org}
|
||||
- LANGFUSE_INIT_ORG_NAME=${LANGFUSE_INIT_ORG_NAME:-My Org}
|
||||
- LANGFUSE_INIT_PROJECT_ID=${LANGFUSE_INIT_PROJECT_ID:-my-project}
|
||||
- LANGFUSE_INIT_PROJECT_NAME=${LANGFUSE_INIT_PROJECT_NAME:-My Project}
|
||||
- LANGFUSE_INIT_USER_EMAIL=${LANGFUSE_INIT_USER_EMAIL:-admin@example.com}
|
||||
- LANGFUSE_INIT_USER_NAME=${SERVICE_USER_LANGFUSE}
|
||||
- LANGFUSE_INIT_USER_PASSWORD=${SERVICE_PASSWORD_LANGFUSE}
|
||||
|
||||
services:
|
||||
langfuse:
|
||||
image: langfuse/langfuse:2
|
||||
image: langfuse/langfuse:3
|
||||
depends_on: &langfuse-depends-on
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
clickhouse:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- SERVICE_FQDN_LANGFUSE_3000
|
||||
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse}
|
||||
- DIRECT_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse}
|
||||
- SALT=$SERVICE_PASSWORD_SALT
|
||||
- AUTH_DISABLE_SIGNUP=${AUTH_DISABLE_SIGNUP:-false}
|
||||
- NEXTAUTH_URL=$SERVICE_FQDN_LANGFUSE_3000
|
||||
- NEXTAUTH_SECRET=${SERVICE_BASE64_64_NEXTAUTHSECRET}
|
||||
- TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false}
|
||||
- LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false}
|
||||
- HOSTNAME=${HOSTNAME:-0.0.0.0}
|
||||
- LANGFUSE_INIT_USER_NAME=${LANGFUSE_INIT_USER_NAME:-Admin}
|
||||
- LANGFUSE_INIT_USER_EMAIL=${LANGFUSE_INIT_USER_EMAIL:-admin@example.com}
|
||||
- LANGFUSE_INIT_USER_PASSWORD=${SERVICE_PASSWORD_LANGFUSE}
|
||||
- LANGFUSE_INIT_ORG_ID=${LANGFUSE_INIT_ORG_ID:-my-org}
|
||||
- LANGFUSE_INIT_ORG_NAME=${LANGFUSE_INIT_ORG_NAME:-My Org}
|
||||
- LANGFUSE_INIT_PROJECT_ID=${LANGFUSE_INIT_PROJECT_ID:-my-project}
|
||||
- LANGFUSE_INIT_PROJECT_NAME=${LANGFUSE_INIT_PROJECT_NAME:-My Project}
|
||||
<<: *app-env
|
||||
SERVICE_FQDN_LANGFUSE_3000: ${SERVICE_FQDN_LANGFUSE_3000}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
@@ -35,17 +81,21 @@ services:
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
image: "postgres:16-alpine"
|
||||
|
||||
langfuse-worker:
|
||||
image: langfuse/langfuse-worker:3
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DB:-langfuse}
|
||||
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
||||
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
||||
<<: *app-env
|
||||
depends_on: *langfuse-depends-on
|
||||
|
||||
postgres:
|
||||
image: postgres:17-alpine
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DB:-langfuse-db}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
volumes:
|
||||
- "pg-data:/var/lib/postgresql/data"
|
||||
- langfuse_postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
@@ -53,3 +103,32 @@ services:
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:8
|
||||
command: ["sh", "-c", "redis-server --requirepass \"$SERVICE_PASSWORD_REDIS\""]
|
||||
environment:
|
||||
- REDIS_PASSWORD=${SERVICE_PASSWORD_REDIS}
|
||||
volumes:
|
||||
- langfuse_redis_data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "-a", "$SERVICE_PASSWORD_REDIS", "PING"]
|
||||
interval: 3s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
|
||||
clickhouse:
|
||||
image: clickhouse/clickhouse-server:latest
|
||||
user: "101:101"
|
||||
environment:
|
||||
- CLICKHOUSE_DB=${CLICKHOUSE_DB:-default}
|
||||
- CLICKHOUSE_USER=${SERVICE_USER_CLICKHOUSE}
|
||||
- CLICKHOUSE_PASSWORD=${SERVICE_PASSWORD_CLICKHOUSE}
|
||||
volumes:
|
||||
- langfuse_clickhouse_data:/var/lib/clickhouse
|
||||
- langfuse_clickhouse_logs:/var/log/clickhouse-server
|
||||
healthcheck:
|
||||
test: wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
# documentation: https://docs.librechat.ai/install/configuration/dotenv.html
|
||||
# slogan: Self-hosted, powerful, and privacy-focused chat UI for multiple AI models
|
||||
# tags: ai,chat,gpt,claude,palm,openai,azure,huggingface,anthropic,ollama,llm
|
||||
# logo: svgs/librechat.svg
|
||||
# port: 3080
|
||||
|
||||
services:
|
||||
librechat:
|
||||
image: ghcr.io/danny-avila/librechat-dev-api:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_LIBRECHAT_3080
|
||||
- DOMAIN_CLIENT=${SERVICE_FQDN_LIBRECHAT}
|
||||
- DOMAIN_SERVER=${SERVICE_FQDN_LIBRECHAT}
|
||||
- HOST=0.0.0.0
|
||||
- PORT=3080
|
||||
- MONGO_URI=mongodb://${SERVICE_USER_MONGO}:${SERVICE_PASSWORD_MONGO}@mongodb:27017/librechat?authSource=admin
|
||||
- MEILI_HOST=http://meilisearch:7700
|
||||
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI}
|
||||
- RAG_PORT=8000
|
||||
- RAG_API_URL=http://rag-api:8000
|
||||
- JWT_SECRET=${SERVICE_PASSWORD_JWT}
|
||||
- JWT_REFRESH_SECRET=${SERVICE_PASSWORD_64_JWT}
|
||||
- APP_TITLE=${APP_TITLE:-LibreChat}
|
||||
- ALLOW_EMAIL_LOGIN=${ALLOW_EMAIL_LOGIN:-true}
|
||||
- ALLOW_REGISTRATION=${ALLOW_REGISTRATION:-true}
|
||||
- ALLOW_SOCIAL_LOGIN=${ALLOW_SOCIAL_LOGIN:-false}
|
||||
- ALLOW_SOCIAL_REGISTRATION=${ALLOW_SOCIAL_REGISTRATION:-false}
|
||||
- ALLOW_PASSWORD_RESET=${ALLOW_PASSWORD_RESET:-false}
|
||||
- ALLOW_UNVERIFIED_EMAIL_LOGIN=${ALLOW_UNVERIFIED_EMAIL_LOGIN:-true}
|
||||
- CREDS_KEY=${SERVICE_PASSWORD_64_CREDS}
|
||||
- CREDS_IV=${SERVICE_PASSWORD_CREDS}
|
||||
- ANTHROPIC_API_KEY=${SERVICE_ANTHROPIC_API_KEY:-user_provided}
|
||||
- GOOGLE_KEY=${SERVICE_GOOGLE_API_KEY:-user_provided}
|
||||
- OPENAI_API_KEY=${SERVICE_OPENAI_API_KEY:-user_provided}
|
||||
- ASSISTANTS_API_KEY=${SERVICE_ASSISTANTS_API_KEY:-user_provided}
|
||||
- DEBUG_LOGGING=${DEBUG_LOGGING:-false}
|
||||
- DEBUG_OPENAI=${DEBUG_OPENAI:-false}
|
||||
- DEBUG_PLUGINS=${DEBUG_OPENAI:-false}
|
||||
- NO_INDEX=${NO_INDEX:-true}
|
||||
volumes:
|
||||
- librechat-images:/app/client/public/images
|
||||
- librechat-logs:/app/api/logs
|
||||
- librechat-uploads:/app/uploads
|
||||
- type: bind
|
||||
source: ./librechat.yaml
|
||||
target: /app/librechat.yaml
|
||||
content: |
|
||||
version: 1.2.8
|
||||
depends_on:
|
||||
mongodb:
|
||||
condition: service_healthy
|
||||
meilisearch:
|
||||
condition: service_healthy
|
||||
vectordb:
|
||||
condition: service_healthy
|
||||
rag-api:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"wget",
|
||||
"--no-verbose",
|
||||
"--tries=1",
|
||||
"--spider",
|
||||
"http://127.0.0.1:3080/api/health",
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
|
||||
mongodb:
|
||||
image: mongo:8
|
||||
environment:
|
||||
- MONGO_INITDB_ROOT_USERNAME=${SERVICE_USER_MONGO}
|
||||
- MONGO_INITDB_ROOT_PASSWORD=${SERVICE_PASSWORD_MONGO}
|
||||
volumes:
|
||||
- mongodb-data:/data/db
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"mongosh",
|
||||
"--eval",
|
||||
"db.runCommand('ping').ok",
|
||||
"127.0.0.1:27017/test",
|
||||
"--quiet",
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
meilisearch:
|
||||
image: getmeili/meilisearch:v1.12.3
|
||||
environment:
|
||||
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI}
|
||||
- MEILI_NO_ANALYTICS=${MEILI_NO_ANALYTICS:-false}
|
||||
- MEILI_ENV=production
|
||||
- MEILI_HOST=http://meilisearch:7700
|
||||
volumes:
|
||||
- meilisearch-data:/meili_data
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:7700/health"]
|
||||
interval: 2s
|
||||
timeout: 10s
|
||||
retries: 15
|
||||
|
||||
vectordb:
|
||||
image: ankane/pgvector:latest
|
||||
environment:
|
||||
- POSTGRES_DB=rag
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_HOST_AUTH_METHOD=trust
|
||||
volumes:
|
||||
- vectordb-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- pg_isready
|
||||
- "--username=$SERVICE_USER_POSTGRES"
|
||||
- "--host=127.0.0.1"
|
||||
- "--port=5432"
|
||||
- "--dbname=rag"
|
||||
interval: 2s
|
||||
timeout: 1m
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
rag-api:
|
||||
image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:latest
|
||||
environment:
|
||||
- POSTGRES_DB=rag
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- DB_HOST=vectordb
|
||||
- DB_USER=${SERVICE_USER_POSTGRES}
|
||||
- DB_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- DB_NAME=rag
|
||||
- RAG_PORT=8000
|
||||
- RAG_OPENAI_API_KEY=${SERVICE_OPENAI_API_KEY:-user_provided}
|
||||
depends_on:
|
||||
vectordb:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"python",
|
||||
"-c",
|
||||
"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health')",
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
@@ -0,0 +1,131 @@
|
||||
# documentation: https://matrix.org/docs/chat_basics/matrix-for-im/
|
||||
# slogan: Chat securely with your family, friends, community, or build great apps with Matrix!
|
||||
# tags: chat,slack,discord,voip,video,call
|
||||
# logo: svgs/matrix.svg
|
||||
# port: 8008
|
||||
|
||||
services:
|
||||
matrix:
|
||||
image: matrixdotorg/synapse:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_MATRIX_8008
|
||||
- SYNAPSE_SERVER_NAME=${SERVICE_URL_MATRIX}
|
||||
- SYNAPSE_REPORT_STATS=${SYNAPSE_REPORT_STATS:-no}
|
||||
- ENABLE_REGISTRATION=${ENABLE_REGISTRATION:-false}
|
||||
- RECAPTCHA_PUBLIC_KEY=${RECAPTCHA_PUBLIC_KEY}
|
||||
- RECAPTCHA_PRIVATE_KEY=${RECAPTCHA_PRIVATE_KEY}
|
||||
- _SERVER_NAME=${SERVICE_URL_MATRIX}
|
||||
- _ADMIN_NAME=${SERVICE_USER_ADMIN}
|
||||
- _ADMIN_PASS=${SERVICE_PASSWORD_ADMIN}
|
||||
volumes:
|
||||
- matrix-data:/data
|
||||
entrypoint:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
! test -f /data/homeserver.yaml && /start.py generate
|
||||
|
||||
# registration_shared_secret
|
||||
grep "registration_shared_secret" /data/homeserver.yaml \
|
||||
| awk '{print $2}' > ./registration_shared_secret
|
||||
|
||||
# macaroon_secret_key
|
||||
grep "macaroon_secret_key" /data/homeserver.yaml \
|
||||
| awk '{print $2}' > ./macaroon_secret_key
|
||||
|
||||
# form_secret
|
||||
grep "form_secret" /data/homeserver.yaml \
|
||||
| awk '{print $2}' > ./form_secret
|
||||
|
||||
##########################
|
||||
# #
|
||||
# homeserver.yaml: start #
|
||||
# #
|
||||
##########################
|
||||
cat <<EOF > /data/homeserver.yaml
|
||||
server_name: "${SERVICE_URL_MATRIX}"
|
||||
pid_file: /data/homeserver.pid
|
||||
|
||||
# server
|
||||
listeners:
|
||||
- port: 8008
|
||||
tls: false
|
||||
type: http
|
||||
x_forwarded: true
|
||||
resources:
|
||||
- names: [client, federation]
|
||||
compress: false
|
||||
|
||||
# database
|
||||
database:
|
||||
name: sqlite3
|
||||
args:
|
||||
database: /data/homeserver.db
|
||||
|
||||
# general
|
||||
log_config: "/data/${SERVICE_URL_MATRIX}.log.config"
|
||||
media_store_path: /data/media_store
|
||||
report_stats: false
|
||||
|
||||
# secrets
|
||||
registration_shared_secret: $(<./registration_shared_secret)
|
||||
macaroon_secret_key: $(<./macaroon_secret_key)
|
||||
form_secret: $(<./form_secret)
|
||||
signing_key_path: "/data/${SERVICE_URL_MATRIX}.signing.key"
|
||||
|
||||
#rooms
|
||||
auto_join_rooms:
|
||||
- "#general:${SERVICE_URL_MATRIX}"
|
||||
|
||||
# federation
|
||||
trusted_key_servers:
|
||||
- server_name: "matrix.org"
|
||||
autocreate_auto_join_rooms_federated: false
|
||||
allow_public_rooms_over_federation: false
|
||||
EOF
|
||||
########################
|
||||
# #
|
||||
# homeserver.yaml: end #
|
||||
# #
|
||||
########################
|
||||
|
||||
[ "${ENABLE_REGISTRATION}" = "true" ] && ! grep "#registration" /data/homeserver.yaml &>/dev/null \
|
||||
&& echo >> /data/homeserver.yaml \
|
||||
&& cat <<EOF >> /data/homeserver.yaml
|
||||
#registration
|
||||
enable_registration: true # Allows users to register on your server.
|
||||
EOF
|
||||
|
||||
[ -n "${RECAPTCHA_PUBLIC_KEY}" ] && ! grep "${RECAPTCHA_PUBLIC_KEY}" /data/homeserver.yaml &>/dev/null \
|
||||
&& echo >> /data/homeserver.yaml \
|
||||
&& cat <<EOF >> /data/homeserver.yaml
|
||||
# reCAPTCHA settings
|
||||
enable_registration_captcha: true # Enables CAPTCHA for registrations.
|
||||
recaptcha_public_key: "${RECAPTCHA_PUBLIC_KEY}"
|
||||
recaptcha_private_key: "${RECAPTCHA_PRIVATE_KEY}"
|
||||
recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify"
|
||||
EOF
|
||||
|
||||
register_admin(){
|
||||
while ! curl -I localhost:8008 &>/dev/null; do
|
||||
sleep 1
|
||||
done
|
||||
register_new_matrix_user \
|
||||
-a \
|
||||
-u ${SERVICE_USER_ADMIN} \
|
||||
-p ${SERVICE_PASSWORD_ADMIN} \
|
||||
-c /data/homeserver.yaml \
|
||||
http://localhost:8008 &>/dev/null
|
||||
}
|
||||
register_admin &
|
||||
|
||||
/start.py
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- curl
|
||||
- -I
|
||||
- localhost:8008
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
@@ -0,0 +1,40 @@
|
||||
# documentation: https://miniflux.app/docs/index.html
|
||||
# slogan: Miniflux is a minimalist and opinionated feed reader.
|
||||
# tags: miniflux,rss,feed,self,hosted
|
||||
# logo: svgs/miniflux.svg
|
||||
# port: 8080
|
||||
|
||||
services:
|
||||
miniflux:
|
||||
image: ghcr.io/miniflux/miniflux:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_MINIFLUX
|
||||
- BASE_URL=${SERVICE_FQDN_MINIFLUX}
|
||||
- PORT=${PORT:-8080}
|
||||
- RUN_MIGRATIONS=${RUN_MIGRATIONS:-1}
|
||||
- CREATE_ADMIN=${CREATE_ADMIN:-1}
|
||||
- ADMIN_USERNAME=${SERVICE_USER_ADMIN}
|
||||
- ADMIN_PASSWORD=${SERVICE_PASSWORD_64_ADMIN}
|
||||
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-miniflux-db}?sslmode=disable
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8080/"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
volumes:
|
||||
- miniflux-postgres-data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-miniflux-db}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
services:
|
||||
nitropage:
|
||||
image: codeberg.org/nitropage/nitropage
|
||||
image: nitropage/nitropage
|
||||
environment:
|
||||
- SERVICE_FQDN_NITROPAGE_3000
|
||||
- NP_AUTH_SALT=${SERVICE_BASE64_SALT}
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
|
||||
services:
|
||||
nitropage:
|
||||
image: codeberg.org/nitropage/nitropage:sqlite
|
||||
image: nitropage/nitropage:sqlite
|
||||
environment:
|
||||
- SERVICE_FQDN_NITROPAGE_3000
|
||||
- NP_AUTH_SALT=${SERVICE_BASE64_SALT}
|
||||
- NP_AUTH_PASSWORD=${SERVICE_PASSWORD_64_SESSION}
|
||||
- DATABASE_URL=file:../../.data/dev.db
|
||||
- DATABASE_URL=file:../.data/dev.db
|
||||
volumes:
|
||||
- nitropage-data:/app/.data
|
||||
healthcheck:
|
||||
|
||||
@@ -0,0 +1,197 @@
|
||||
# documentation: https://openpanel.dev/docs
|
||||
# slogan: Open source alternative to Mixpanel and Plausible for product analytics
|
||||
# tags: analytics, insights, privacy, mixpanel, plausible, google, alternative
|
||||
# logo: svgs/openpanel.svg
|
||||
# port: 3000
|
||||
|
||||
services:
|
||||
openpanel-dashboard:
|
||||
image: lindesvard/openpanel-dashboard:latest
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- NEXT_PUBLIC_SELF_HOSTED=true
|
||||
- SERVICE_FQDN_OPDASHBOARD_3000
|
||||
- NEXT_PUBLIC_API_URL=${SERVICE_FQDN_OPAPI}
|
||||
- NEXT_PUBLIC_DASHBOARD_URL=${SERVICE_FQDN_OPDASHBOARD}
|
||||
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
|
||||
- REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379
|
||||
- CLICKHOUSE_URL=http://clickhouse:8123/openpanel
|
||||
depends_on:
|
||||
openpanel-api:
|
||||
condition: service_healthy
|
||||
openpanel-worker:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
clickhouse:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
["CMD-SHELL", "curl -f http://localhost:3000/api/healthcheck || exit 1"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 15s
|
||||
|
||||
openpanel-api:
|
||||
image: lindesvard/openpanel-api:latest
|
||||
command: >
|
||||
sh -c "
|
||||
echo 'Running migrations...'
|
||||
CI=true pnpm -r run migrate:deploy
|
||||
|
||||
pnpm start
|
||||
"
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- NEXT_PUBLIC_SELF_HOSTED=true
|
||||
- SERVICE_FQDN_OPAPI
|
||||
- NEXT_PUBLIC_API_URL=${SERVICE_FQDN_OPAPI}
|
||||
- NEXT_PUBLIC_DASHBOARD_URL=${SERVICE_FQDN_OPDASHBOARD}
|
||||
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
|
||||
- DATABASE_URL_DIRECT=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
|
||||
- REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379
|
||||
- CLICKHOUSE_URL=http://clickhouse:8123/openpanel
|
||||
- COOKIE_SECRET=${SERVICE_BASE64_COOKIESECRET}
|
||||
- ALLOW_REGISTRATION=${OPENPANEL_ALLOW_REGISTRATION:-false}
|
||||
- ALLOW_INVITATION=${OPENPANEL_ALLOW_INVITATION:-false}
|
||||
- EMAIL_SENDER=${OPENPANEL_EMAIL_SENDER}
|
||||
- RESEND_API_KEY=${RESEND_API_KEY}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
clickhouse:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -f http://localhost:3000/healthcheck || exit 1"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
openpanel-worker:
|
||||
image: lindesvard/openpanel-worker:latest
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- NEXT_PUBLIC_SELF_HOSTED=true
|
||||
- SERVICE_FQDN_OPBULLBOARD
|
||||
- NEXT_PUBLIC_API_URL=${SERVICE_FQDN_OPAPI}
|
||||
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
|
||||
- DATABASE_URL_DIRECT=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
|
||||
- REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379
|
||||
- CLICKHOUSE_URL=http://clickhouse:8123/openpanel
|
||||
depends_on:
|
||||
openpanel-api:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
clickhouse:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -f http://localhost:3000/healthcheck || exit 1"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 5s
|
||||
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
volumes:
|
||||
- openpanel_postgres_data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_DB=${OPENPANEL_POSTGRES_DB:-openpanel-db}
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
healthcheck:
|
||||
test: [CMD-SHELL, "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
redis:
|
||||
image: redis:7.4-alpine
|
||||
volumes:
|
||||
- openpanel_redis_data:/data
|
||||
environment:
|
||||
- REDIS_PASSWORD=${SERVICE_PASSWORD_REDIS}
|
||||
command: redis-server --requirepass ${SERVICE_PASSWORD_REDIS} --maxmemory-policy noeviction
|
||||
healthcheck:
|
||||
test: [CMD, redis-cli, -a, "${SERVICE_PASSWORD_REDIS}", ping]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
clickhouse:
|
||||
image: clickhouse/clickhouse-server:24.3.2-alpine
|
||||
volumes:
|
||||
- openpanel_clickhouse_data:/var/lib/clickhouse
|
||||
- openpanel_clickhouse_logs:/var/log/clickhouse-server
|
||||
- type: bind
|
||||
source: ./clickhouse-config.xml
|
||||
target: /etc/clickhouse-server/config.d/op-config.xml
|
||||
read_only: true
|
||||
content: |
|
||||
<clickhouse>
|
||||
<logger>
|
||||
<level>warning</level>
|
||||
<console>true</console>
|
||||
</logger>
|
||||
<keep_alive_timeout>10</keep_alive_timeout>
|
||||
<!-- Stop all the unnecessary logging -->
|
||||
<query_thread_log remove="remove"/>
|
||||
<query_log remove="remove"/>
|
||||
<text_log remove="remove"/>
|
||||
<trace_log remove="remove"/>
|
||||
<metric_log remove="remove"/>
|
||||
<asynchronous_metric_log remove="remove"/>
|
||||
<session_log remove="remove"/>
|
||||
<part_log remove="remove"/>
|
||||
<listen_host>0.0.0.0</listen_host>
|
||||
<interserver_listen_host>0.0.0.0</interserver_listen_host>
|
||||
<interserver_http_host>opch</interserver_http_host>
|
||||
<!-- Disable cgroup memory observer -->
|
||||
<cgroups_memory_usage_observer_wait_time>0</cgroups_memory_usage_observer_wait_time>
|
||||
<!-- Not used anymore, but kept for backwards compatibility -->
|
||||
<macros>
|
||||
<shard>1</shard>
|
||||
<replica>replica1</replica>
|
||||
<cluster>openpanel_cluster</cluster>
|
||||
</macros>
|
||||
</clickhouse>
|
||||
- type: bind
|
||||
source: ./clickhouse-user-config.xml
|
||||
target: /etc/clickhouse-server/users.d/op-user-config.xml
|
||||
read_only: true
|
||||
content: |
|
||||
<clickhouse>
|
||||
<profiles>
|
||||
<default>
|
||||
<log_queries>0</log_queries>
|
||||
<log_query_threads>0</log_query_threads>
|
||||
</default>
|
||||
</profiles>
|
||||
</clickhouse>
|
||||
- type: bind
|
||||
source: ./init-db.sh
|
||||
target: /docker-entrypoint-initdb.d/init-db.sh
|
||||
content: |
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
clickhouse client -n <<-EOSQL
|
||||
CREATE DATABASE IF NOT EXISTS openpanel;
|
||||
EOSQL
|
||||
ulimits:
|
||||
nofile:
|
||||
soft: 262144
|
||||
hard: 262144
|
||||
healthcheck:
|
||||
test: [CMD-SHELL, 'clickhouse-client --query "SELECT 1"']
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
@@ -55,7 +55,7 @@ services:
|
||||
- PENPOT_SMTP_TLS=${PENPOT_SMTP_TLS:-false}
|
||||
- PENPOT_SMTP_SSL=${PENPOT_SMTP_SSL:-false}
|
||||
healthcheck:
|
||||
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:6060/readyz']
|
||||
test: ['CMD', 'node', '-e', "require('http').get({host:'127.0.0.1', port:6060, path:'/readyz'}, res => process.exit(res.statusCode===200 ? 0 : 1)).on('error', () => process.exit(1));"]
|
||||
interval: 10s
|
||||
timeout: 30s
|
||||
retries: 15
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# documentation: https://pi-hole.net/
|
||||
# slogan: Network-wide Ad Blocking
|
||||
# tags: ad-block,dns,sinkhole,ntp,dhcp
|
||||
# logo: svgs/pihole.svg
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
pihole:
|
||||
image: pihole/pihole:latest
|
||||
ports:
|
||||
# DNS Ports
|
||||
- "53:53/tcp"
|
||||
- "53:53/udp"
|
||||
# Uncomment the below if using Pi-hole as your DHCP Server
|
||||
- "67:67/udp"
|
||||
# Uncomment the line below if you are using Pi-hole as your NTP server
|
||||
- "123:123/udp"
|
||||
environment:
|
||||
- SERVICE_FQDN_PIHOLE_80
|
||||
- TZ=${TZ:-Europe/London}
|
||||
- FTLCONF_webserver_api_password=${SERVICE_PASSWORD_PIHOLE}
|
||||
- FTLCONF_dns_listeningMode=${FTLCONF_dns_listeningMode:-all}
|
||||
volumes:
|
||||
- pihole-data:/etc/pihole
|
||||
cap_add:
|
||||
# See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
|
||||
# Required if you are using Pi-hole as your DHCP server, else not needed
|
||||
- NET_ADMIN
|
||||
# Required if you are using Pi-hole as your NTP client to be able to set the host's system time
|
||||
- SYS_TIME
|
||||
@@ -0,0 +1,31 @@
|
||||
# documentation: https://github.com/stonith404/pingvin-share
|
||||
# slogan: A self-hosted file sharing platform that combines lightness and beauty, perfect for seamless and efficient file sharing.
|
||||
# tags: self-hosted, file-sharing, files, cloud, sharing
|
||||
# logo: svgs/pingvinshare.svg
|
||||
# port: 3000
|
||||
|
||||
services:
|
||||
pingvinshare:
|
||||
image: ghcr.io/stonith404/pingvin-share
|
||||
environment:
|
||||
- SERVICE_FQDN_PINGVINSHARE_3000
|
||||
- TRUST_PROXY=${TRUST_PROXY:-true}
|
||||
volumes:
|
||||
- pingvinshare_data:/opt/app/backend/data
|
||||
- pingvinshare_images:/opt/app/frontend/public/img
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD-SHELL",
|
||||
"wget --quiet --tries=1 --spider http://localhost:3000/api/health || exit 1",
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
depends_on:
|
||||
clamav:
|
||||
condition: service_healthy
|
||||
|
||||
clamav:
|
||||
image: clamav/clamav
|
||||
platform: linux/amd64
|
||||
@@ -0,0 +1,24 @@
|
||||
# documentation: https://github.com/stonith404/pingvin-share
|
||||
# slogan: A self-hosted file sharing platform that combines lightness and beauty, perfect for seamless and efficient file sharing.
|
||||
# tags: self-hosted, file-sharing, files, cloud, sharing
|
||||
# logo: svgs/pingvinshare.svg
|
||||
# port: 3000
|
||||
|
||||
services:
|
||||
pingvinshare:
|
||||
image: ghcr.io/stonith404/pingvin-share
|
||||
environment:
|
||||
- SERVICE_FQDN_PINGVINSHARE_3000
|
||||
- TRUST_PROXY=${TRUST_PROXY:-true}
|
||||
volumes:
|
||||
- pingvinshare_data:/opt/app/backend/data
|
||||
- pingvinshare_images:/opt/app/frontend/public/img
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD-SHELL",
|
||||
"wget --quiet --tries=1 --spider http://localhost:3000/api/health || exit 1",
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
services:
|
||||
postiz:
|
||||
image: ghcr.io/gitroomhq/postiz-app:latest
|
||||
image: ghcr.io/gitroomhq/postiz-app:v1.60.1
|
||||
environment:
|
||||
- SERVICE_FQDN_POSTIZ_5000
|
||||
- MAIN_URL=${SERVICE_FQDN_POSTIZ}
|
||||
@@ -77,6 +77,7 @@ services:
|
||||
- NEXT_PUBLIC_POLOTNO=${NEXT_PUBLIC_POLOTNO}
|
||||
- IS_GENERAL=true
|
||||
- NX_ADD_PLUGINS=${NX_ADD_PLUGINS:-false}
|
||||
- NOT_SECURED=${NOT_SECURED:-false}
|
||||
|
||||
# Payment Settings
|
||||
- FEE_AMOUNT=${FEE_AMOUNT:-0.05}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
# documentation: https://sequinstream.com/docs/
|
||||
# slogan: The fastest Postgres change data capture
|
||||
# tags: postgres, sync, data
|
||||
# logo: svgs/sequin.svg
|
||||
# port: 7376
|
||||
|
||||
services:
|
||||
sequin:
|
||||
image: sequin/sequin:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_SEQUIN_7376
|
||||
- SERVER_HOST=${SERVICE_URL_SEQUIN}
|
||||
- PG_HOSTNAME=postgres
|
||||
- PG_DATABASE=${POSTGRES_DB:-sequin-db}
|
||||
- PG_PORT=5432
|
||||
- PG_USERNAME=${SERVICE_USER_POSTGRES}
|
||||
- PG_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- PG_POOL_SIZE=20
|
||||
- SECRET_KEY_BASE=${SERVICE_REALBASE64_64_SECRETKEY}
|
||||
- VAULT_KEY=${SERVICE_REALBASE64_VAULTKEY}
|
||||
- REDIS_URL=redis://redis:6379
|
||||
- CONFIG_FILE_PATH=/config/playground.yml
|
||||
- FEATURE_ACCOUNT_SELF_SIGNUP=${FEATURE_ACCOUNT_SELF_SIGNUP:-false}
|
||||
- SEQUIN_TELEMETRY_DISABLED=${SEQUIN_TELEMETRY_DISABLED:-false}
|
||||
- CRASH_REPORTING_DISABLED=${CRASH_REPORTING_DISABLED:-false}
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "http://localhost:7376/health"]
|
||||
|
||||
postgres:
|
||||
image: postgres:16
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DB:-sequin-db}
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
command:
|
||||
- postgres
|
||||
- "-c"
|
||||
- wal_level=logical
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "pg_isready -U ${SERVICE_USER_POSTGRES} -d sequin"
|
||||
interval: 10s
|
||||
timeout: 2s
|
||||
retries: 5
|
||||
start_period: 2s
|
||||
start_interval: 1s
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
image: redis:7
|
||||
command:
|
||||
- redis-server
|
||||
- "--port"
|
||||
- "6379"
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
@@ -0,0 +1,24 @@
|
||||
# documentation: https://github.com/TriliumNext/Trilium
|
||||
# slogan: Build your personal knowledge base with TriliumNext Notes.
|
||||
# tags: self-hosted, notes, todo, organize, markdown, wiki
|
||||
# logo: svgs/triliumnext.svg
|
||||
# port: 8080
|
||||
|
||||
services:
|
||||
triliumnext:
|
||||
image: ghcr.io/triliumnext/trilium:stable
|
||||
platform: linux/amd64 # https://github.com/TriliumNext/Trilium/issues/6390
|
||||
environment:
|
||||
- SERVICE_FQDN_TRILIUMNEXT_8080
|
||||
- TZ=${TZ:-Europe/Berlin}
|
||||
volumes:
|
||||
- triliumnext_data:/home/node/trilium-data
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD-SHELL",
|
||||
"wget --quiet --tries=1 --spider http://127.0.0.1:8080/api/health-check || exit 1",
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -8,11 +8,11 @@ services:
|
||||
wg-easy:
|
||||
image: ghcr.io/wg-easy/wg-easy:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_WIREGUARDEASY_8000
|
||||
- WG_HOST=${SERVICE_FQDN_WIREGUARDEASY}
|
||||
- SERVICE_FQDN_WIREGUARDEASY_51821
|
||||
- WG_HOST=${SERVICE_URL_WIREGUARDEASY}
|
||||
- LANG=${LANG:-en}
|
||||
- PORT=8000
|
||||
- WG_PORT=51820
|
||||
- _PASSWORD=${SERVICE_PASSWORD_ADMIN}
|
||||
volumes:
|
||||
- wg-easy:/etc/wireguard
|
||||
ports:
|
||||
@@ -23,3 +23,9 @@ services:
|
||||
sysctls:
|
||||
- net.ipv4.conf.all.src_valid_mark=1
|
||||
- net.ipv4.ip_forward=1
|
||||
entrypoint:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
eval "wgpw '${SERVICE_PASSWORD_ADMIN}' > /pass-hash"
|
||||
eval "$(cat /pass-hash) dumb-init node server.js"
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user