Merge branch 'next' into feature/signoz

This commit is contained in:
🏔️ Peak
2025-08-11 13:46:10 +02:00
committed by GitHub
253 changed files with 6686 additions and 2381 deletions
+123 -54
View File
@@ -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:
+2 -2
View File
@@ -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:
+3 -2
View File
@@ -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
+20
View File
@@ -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
+3 -2
View File
@@ -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}
+21
View File
@@ -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
+27
View File
@@ -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
+21
View File
@@ -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
+27
View File
@@ -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
+3 -3
View File
@@ -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
View File
@@ -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
+155
View File
@@ -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
+131
View File
@@ -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
+40
View File
@@ -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}
+2 -2
View File
@@ -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:
+197
View File
@@ -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
+1 -1
View File
@@ -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
+30
View File
@@ -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
+24
View File
@@ -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
+2 -1
View File
@@ -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}
+68
View File
@@ -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
+24
View File
@@ -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
+9 -3
View File
@@ -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