mirror of
https://github.com/Dokploy/templates
synced 2025-06-26 18:16:07 +00:00
refactor: remove deprecated YAML template files
- Deleted all 'template.yml' files from various blueprints as part of the transition to TOML format. - Updated the script to delete the 'template.yml' files instead of converting them to 'template.toml'.
This commit is contained in:
@@ -22,11 +22,8 @@ function processDirectory(dirPath) {
|
||||
if (stat.isDirectory()) {
|
||||
processDirectory(filePath);
|
||||
} else if (file === "template.yml") {
|
||||
console.log(`Converting ${filePath}`);
|
||||
const yamlContent = fs.readFileSync(filePath, "utf8");
|
||||
const tomlContent = convertYamlToToml(yamlContent);
|
||||
const tomlPath = path.join(dirPath, "template.toml");
|
||||
fs.writeFileSync(tomlPath, tomlContent);
|
||||
console.log(`Deleting ${filePath}`);
|
||||
fs.unlinkSync(filePath);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
api_key: ${password:32}
|
||||
encryption_key: ${password:32}
|
||||
jwt_secret: ${password:32}
|
||||
postgres_password: ${password:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: activepieces
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- AP_HOST=${main_domain}
|
||||
- AP_API_KEY=${api_key}
|
||||
- AP_ENCRYPTION_KEY=${encryption_key}
|
||||
- AP_JWT_SECRET=${jwt_secret}
|
||||
- AP_POSTGRES_PASSWORD=${postgres_password}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: actualbudget
|
||||
port: 5006
|
||||
host: ${main_domain}
|
||||
|
||||
env: []
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: alist
|
||||
port: 5244
|
||||
host: ${main_domain}
|
||||
|
||||
env: []
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
service_hash: ${hash:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: answer
|
||||
port: 9080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- ANSWER_HOST=http://${main_domain}
|
||||
- SERVICE_HASH=${service_hash}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: appsmith
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env: []
|
||||
|
||||
mounts: []
|
||||
@@ -1,139 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: appwrite
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
path: /
|
||||
- serviceName: appwrite-console
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
path: /console
|
||||
- serviceName: appwrite-realtime
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
path: /v1/realtime
|
||||
|
||||
env:
|
||||
- _APP_ENV=production
|
||||
- _APP_LOCALE=en
|
||||
- _APP_OPTIONS_ABUSE=enabled
|
||||
- _APP_OPTIONS_FORCE_HTTPS=disabled
|
||||
- _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=disabled
|
||||
- _APP_OPTIONS_ROUTER_PROTECTION=disabled
|
||||
- _APP_OPENSSL_KEY_V1=your-secret-key
|
||||
- _APP_DOMAIN=${main_domain}
|
||||
- _APP_DOMAIN_FUNCTIONS=${main_domain}
|
||||
- _APP_DOMAIN_TARGET=${main_domain}
|
||||
- _APP_CONSOLE_WHITELIST_ROOT=enabled
|
||||
- _APP_CONSOLE_WHITELIST_EMAILS=
|
||||
- _APP_CONSOLE_WHITELIST_IPS=
|
||||
- _APP_CONSOLE_HOSTNAMES=
|
||||
- _APP_SYSTEM_EMAIL_NAME=Appwrite
|
||||
- _APP_SYSTEM_EMAIL_ADDRESS=noreply@appwrite.io
|
||||
- _APP_SYSTEM_TEAM_EMAIL=team@appwrite.io
|
||||
- _APP_SYSTEM_RESPONSE_FORMAT=
|
||||
- _APP_SYSTEM_SECURITY_EMAIL_ADDRESS=certs@appwrite.io
|
||||
- _APP_EMAIL_SECURITY=
|
||||
- _APP_EMAIL_CERTIFICATES=
|
||||
- _APP_USAGE_STATS=enabled
|
||||
- _APP_LOGGING_PROVIDER=
|
||||
- _APP_LOGGING_CONFIG=
|
||||
- _APP_USAGE_AGGREGATION_INTERVAL=30
|
||||
- _APP_USAGE_TIMESERIES_INTERVAL=30
|
||||
- _APP_USAGE_DATABASE_INTERVAL=900
|
||||
- _APP_WORKER_PER_CORE=6
|
||||
- _APP_CONSOLE_SESSION_ALERTS=disabled
|
||||
- _APP_REDIS_HOST=redis
|
||||
- _APP_REDIS_PORT=6379
|
||||
- _APP_REDIS_USER=
|
||||
- _APP_REDIS_PASS=
|
||||
- _APP_DB_HOST=mariadb
|
||||
- _APP_DB_PORT=3306
|
||||
- _APP_DB_SCHEMA=appwrite
|
||||
- _APP_DB_USER=user
|
||||
- _APP_DB_PASS=password
|
||||
- _APP_DB_ROOT_PASS=rootsecretpassword
|
||||
- _APP_INFLUXDB_HOST=influxdb
|
||||
- _APP_INFLUXDB_PORT=8086
|
||||
- _APP_STATSD_HOST=telegraf
|
||||
- _APP_STATSD_PORT=8125
|
||||
- _APP_SMTP_HOST=
|
||||
- _APP_SMTP_PORT=
|
||||
- _APP_SMTP_SECURE=
|
||||
- _APP_SMTP_USERNAME=
|
||||
- _APP_SMTP_PASSWORD=
|
||||
- _APP_SMS_PROVIDER=
|
||||
- _APP_SMS_FROM=
|
||||
- _APP_STORAGE_LIMIT=30000000
|
||||
- _APP_STORAGE_PREVIEW_LIMIT=20000000
|
||||
- _APP_STORAGE_ANTIVIRUS=disabled
|
||||
- _APP_STORAGE_ANTIVIRUS_HOST=clamav
|
||||
- _APP_STORAGE_ANTIVIRUS_PORT=3310
|
||||
- _APP_STORAGE_DEVICE=local
|
||||
- _APP_STORAGE_S3_ACCESS_KEY=
|
||||
- _APP_STORAGE_S3_SECRET=
|
||||
- _APP_STORAGE_S3_REGION=us-east-1
|
||||
- _APP_STORAGE_S3_BUCKET=
|
||||
- _APP_STORAGE_DO_SPACES_ACCESS_KEY=
|
||||
- _APP_STORAGE_DO_SPACES_SECRET=
|
||||
- _APP_STORAGE_DO_SPACES_REGION=us-east-1
|
||||
- _APP_STORAGE_DO_SPACES_BUCKET=
|
||||
- _APP_STORAGE_BACKBLAZE_ACCESS_KEY=
|
||||
- _APP_STORAGE_BACKBLAZE_SECRET=
|
||||
- _APP_STORAGE_BACKBLAZE_REGION=us-west-004
|
||||
- _APP_STORAGE_BACKBLAZE_BUCKET=
|
||||
- _APP_STORAGE_LINODE_ACCESS_KEY=
|
||||
- _APP_STORAGE_LINODE_SECRET=
|
||||
- _APP_STORAGE_LINODE_REGION=eu-central-1
|
||||
- _APP_STORAGE_LINODE_BUCKET=
|
||||
- _APP_STORAGE_WASABI_ACCESS_KEY=
|
||||
- _APP_STORAGE_WASABI_SECRET=
|
||||
- _APP_STORAGE_WASABI_REGION=eu-central-1
|
||||
- _APP_STORAGE_WASABI_BUCKET=
|
||||
- _APP_FUNCTIONS_SIZE_LIMIT=30000000
|
||||
- _APP_FUNCTIONS_BUILD_SIZE_LIMIT=2000000000
|
||||
- _APP_FUNCTIONS_TIMEOUT=900
|
||||
- _APP_FUNCTIONS_BUILD_TIMEOUT=900
|
||||
- _APP_FUNCTIONS_CONTAINERS=10
|
||||
- _APP_FUNCTIONS_CPUS=0
|
||||
- _APP_FUNCTIONS_MEMORY=0
|
||||
- _APP_FUNCTIONS_MEMORY_SWAP=0
|
||||
- _APP_FUNCTIONS_RUNTIMES=node-16.0,php-8.0,python-3.9,ruby-3.0
|
||||
- _APP_EXECUTOR_SECRET=your-secret-key
|
||||
- _APP_EXECUTOR_HOST=http://exc1/v1
|
||||
- _APP_EXECUTOR_RUNTIME_NETWORK=appwrite_runtimes
|
||||
- _APP_FUNCTIONS_ENVS=node-16.0,php-7.4,python-3.9,ruby-3.0
|
||||
- _APP_FUNCTIONS_INACTIVE_THRESHOLD=60
|
||||
- DOCKERHUB_PULL_USERNAME=
|
||||
- DOCKERHUB_PULL_PASSWORD=
|
||||
- DOCKERHUB_PULL_EMAIL=
|
||||
- OPEN_RUNTIMES_NETWORK=appwrite_runtimes
|
||||
- _APP_FUNCTIONS_RUNTIMES_NETWORK=runtimes
|
||||
- _APP_DOCKER_HUB_USERNAME=
|
||||
- _APP_DOCKER_HUB_PASSWORD=
|
||||
- _APP_FUNCTIONS_MAINTENANCE_INTERVAL=3600
|
||||
- _APP_VCS_GITHUB_APP_NAME=
|
||||
- _APP_VCS_GITHUB_PRIVATE_KEY=
|
||||
- _APP_VCS_GITHUB_APP_ID=
|
||||
- _APP_VCS_GITHUB_CLIENT_ID=
|
||||
- _APP_VCS_GITHUB_CLIENT_SECRET=
|
||||
- _APP_VCS_GITHUB_WEBHOOK_SECRET=
|
||||
- _APP_MAINTENANCE_INTERVAL=86400
|
||||
- _APP_MAINTENANCE_DELAY=0
|
||||
- _APP_MAINTENANCE_RETENTION_CACHE=2592000
|
||||
- _APP_MAINTENANCE_RETENTION_EXECUTION=1209600
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT=1209600
|
||||
- _APP_MAINTENANCE_RETENTION_ABUSE=86400
|
||||
- _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000
|
||||
- _APP_MAINTENANCE_RETENTION_SCHEDULES=86400
|
||||
- _APP_GRAPHQL_MAX_BATCH_SIZE=10
|
||||
- _APP_GRAPHQL_MAX_COMPLEXITY=250
|
||||
- _APP_GRAPHQL_MAX_DEPTH=3
|
||||
- _APP_MIGRATIONS_FIREBASE_CLIENT_ID=
|
||||
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=
|
||||
- _APP_ASSISTANT_OPENAI_API_KEY=
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
auth_secret: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: aptabase
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- APTABASE_HOST=${main_domain}
|
||||
- AUTH_SECRET=${auth_secret}
|
||||
|
||||
mounts: []
|
||||
@@ -1,13 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: baserow
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- BASEROW_HOST=${main_domain}
|
||||
|
||||
mounts: []
|
||||
@@ -1,18 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: blender
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Etc/UTC
|
||||
- SUBFOLDER=/
|
||||
- NVIDIA_VISIBLE_DEVICES=all
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
browserless_token: ${password:16}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: browserless
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- BROWERLESS_HOST=${main_domain}
|
||||
- BROWSERLESS_TOKEN=${browserless_token}
|
||||
|
||||
mounts: []
|
||||
@@ -1,29 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
api_key: ${password:32}
|
||||
encryption_key: ${password:32}
|
||||
jwt_secret: ${password:32}
|
||||
couchdb_password: ${password:32}
|
||||
redis_password: ${password:32}
|
||||
minio_access_key: ${password:32}
|
||||
minio_secret_key: ${password:32}
|
||||
watchtower_password: ${password:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: proxy
|
||||
port: 10000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- BB_HOST=${main_domain}
|
||||
- BB_INTERNAL_API_KEY=${api_key}
|
||||
- BB_API_ENCRYPTION_KEY=${encryption_key}
|
||||
- BB_JWT_SECRET=${jwt_secret}
|
||||
- BB_COUCHDB_PASSWORD=${couchdb_password}
|
||||
- BB_REDIS_PASSWORD=${redis_password}
|
||||
- BB_WATCHTOWER_PASSWORD=${watchtower_password}
|
||||
- BB_MINIO_ACCESS_KEY=${minio_access_key}
|
||||
- BB_MINIO_SECRET_KEY=${minio_secret_key}
|
||||
|
||||
mounts: []
|
||||
@@ -1,17 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
calcom_encryption_key: ${base64:32}
|
||||
nextauth_secret: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: calcom
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- CALCOM_HOST=${main_domain}
|
||||
- NEXTAUTH_SECRET=${nextauth_secret}
|
||||
- CALENDSO_ENCRYPTION_KEY=${calcom_encryption_key}
|
||||
|
||||
mounts: []
|
||||
@@ -1,30 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
secret_key_base: ${base64:64}
|
||||
postgres_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: chatwoot-rails
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- FRONTEND_URL=http://${main_domain}
|
||||
- SECRET_KEY_BASE=${secret_key_base}
|
||||
- RAILS_ENV=production
|
||||
- NODE_ENV=production
|
||||
- INSTALLATION_ENV=docker
|
||||
- RAILS_LOG_TO_STDOUT=true
|
||||
- LOG_LEVEL=info
|
||||
- DEFAULT_LOCALE=en
|
||||
- POSTGRES_HOST=chatwoot-postgres
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_DATABASE=chatwoot
|
||||
- POSTGRES_USERNAME=postgres
|
||||
- POSTGRES_PASSWORD=${postgres_password}
|
||||
- REDIS_URL=redis://chatwoot-redis:6379
|
||||
- ENABLE_ACCOUNT_SIGNUP=false
|
||||
- ACTIVE_STORAGE_SERVICE=local
|
||||
|
||||
mounts: []
|
||||
@@ -1,13 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: client
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- DOMAIN=${main_domain}
|
||||
|
||||
mounts: []
|
||||
@@ -1,9 +0,0 @@
|
||||
variables: {}
|
||||
|
||||
config:
|
||||
domains: []
|
||||
|
||||
env:
|
||||
- CLOUDFLARE_TUNNEL_TOKEN="<INSERT TOKEN>"
|
||||
|
||||
mounts: []
|
||||
@@ -1,18 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: coder
|
||||
port: 7080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- CODER_ACCESS_URL=
|
||||
- CODER_HTTP_ADDRESS=0.0.0.0:7080
|
||||
- POSTGRES_DB=coder
|
||||
- POSTGRES_USER=coder
|
||||
- POSTGRES_PASSWORD=${postgres_password}
|
||||
|
||||
mounts: []
|
||||
@@ -1,13 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: homeserver
|
||||
port: 6167
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- MATRIX_SUBDOMAIN=${main_domain}
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
registration_token: ${password:20}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: homeserver
|
||||
port: 6167
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- CONDUWUIT_SERVER_NAME=${main_domain}
|
||||
- CONDUWUIT_REGISTRATION_TOKEN=${registration_token}
|
||||
|
||||
mounts: []
|
||||
@@ -1,23 +0,0 @@
|
||||
variables:
|
||||
dashboard_domain: ${domain}
|
||||
backend_domain: ${domain}
|
||||
actions_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: dashboard
|
||||
port: 6791
|
||||
host: ${dashboard_domain}
|
||||
- serviceName: backend
|
||||
port: 3210
|
||||
host: ${backend_domain}
|
||||
- serviceName: backend
|
||||
port: 3211
|
||||
host: ${actions_domain}
|
||||
|
||||
env:
|
||||
- NEXT_PUBLIC_DEPLOYMENT_URL=http://${backend_domain}
|
||||
- CONVEX_CLOUD_ORIGIN=http://${backend_domain}
|
||||
- CONVEX_SITE_ORIGIN=http://${actions_domain}
|
||||
|
||||
mounts: []
|
||||
@@ -1,16 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
username: ${password:16}
|
||||
password: ${password:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: couchdb
|
||||
port: 5984
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- COUCHDB_USER=${username}
|
||||
- COUCHDB_PASSWORD=${password}
|
||||
|
||||
mounts: []
|
||||
@@ -1,13 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: datalens
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- HC=1
|
||||
|
||||
mounts: []
|
||||
@@ -1,16 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
directus_secret: ${base64:64}
|
||||
database_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: directus
|
||||
port: 8055
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- DATABASE_PASSWORD=${database_password}
|
||||
- DIRECTUS_SECRET=${directus_secret}
|
||||
|
||||
mounts: []
|
||||
@@ -1,27 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
mysql_password: ${password}
|
||||
mysql_root_password: ${password}
|
||||
mysql_user: tickets
|
||||
mysql_database: tickets
|
||||
encryption_key: ${password:48}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: tickets-app
|
||||
port: 8169
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- TICKETS_HOST=${main_domain}
|
||||
- MYSQL_DATABASE=${mysql_database}
|
||||
- MYSQL_PASSWORD=${mysql_password}
|
||||
- MYSQL_ROOT_PASSWORD=${mysql_root_password}
|
||||
- MYSQL_USER=${mysql_user}
|
||||
- ENCRYPTION_KEY=${encryption_key}
|
||||
- "# Follow the guide at: https://discordtickets.app/self-hosting/installation/docker/#creating-the-discord-application"
|
||||
- DISCORD_SECRET=
|
||||
- DISCORD_TOKEN=
|
||||
- SUPER_USERS=YOUR_DISCORD_USER_ID
|
||||
|
||||
mounts: []
|
||||
@@ -1,22 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
redis_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: discourse-app
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- DISCOURSE_HOST=${main_domain}
|
||||
- POSTGRES_PASSWORD=${postgres_password}
|
||||
- REDIS_PASSWORD=${redis_password}
|
||||
- # Optional: Configure SMTP for email delivery
|
||||
- # SMTP_HOST=smtp.example.com
|
||||
- # SMTP_PORT=587
|
||||
- # SMTP_USER=your_smtp_user
|
||||
- # SMTP_PASSWORD=your_smtp_password
|
||||
|
||||
mounts: []
|
||||
@@ -1,19 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
app_secret: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: docmost
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- POSTGRES_DB=docmost
|
||||
- POSTGRES_USER=docmost
|
||||
- POSTGRES_PASSWORD=${postgres_password}
|
||||
- APP_URL=http://${main_domain}:3000
|
||||
- APP_SECRET=${app_secret}
|
||||
|
||||
mounts: []
|
||||
@@ -1,20 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
nextauth_secret: ${base64:32}
|
||||
encryption_key: ${password:32}
|
||||
secondary_encryption_key: ${password:64}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: documenso
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- DOCUMENSO_HOST=${main_domain}
|
||||
- DOCUMENSO_PORT=3000
|
||||
- NEXTAUTH_SECRET=${nextauth_secret}
|
||||
- NEXT_PRIVATE_ENCRYPTION_KEY=${encryption_key}
|
||||
- NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${secondary_encryption_key}
|
||||
|
||||
mounts: []
|
||||
@@ -1,21 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
secret_key_base: ${base64:64}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: doublezero
|
||||
port: 4000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- DOUBLEZERO_HOST=${main_domain}
|
||||
- DOUBLEZERO_PORT=4000
|
||||
- SECRET_KEY_BASE=${secret_key_base}
|
||||
- AWS_ACCESS_KEY_ID=your-aws-access-key
|
||||
- AWS_SECRET_ACCESS_KEY=your-aws-secret-key
|
||||
- AWS_REGION=your-aws-region
|
||||
- SQS_URL=your-aws-sqs-url
|
||||
- SYSTEM_EMAIL=
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: drawio
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- DRAWIO_HOST=${main_domain}
|
||||
- DRAWIO_BASE_URL=https://${main_domain}
|
||||
- DRAWIO_SERVER_URL=https://${main_domain}/
|
||||
|
||||
mounts: []
|
||||
@@ -1,16 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
api_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: kibana
|
||||
port: 5601
|
||||
host: ${main_domain}
|
||||
- serviceName: elasticsearch
|
||||
port: 9200
|
||||
host: ${api_domain}
|
||||
|
||||
env: []
|
||||
|
||||
mounts: []
|
||||
@@ -1,27 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_root_password: ${password:32}
|
||||
admin_password: ${password:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: frontend
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- SITE_NAME=${main_domain}
|
||||
- ADMIN_PASSWORD=${admin_password}
|
||||
- DB_ROOT_PASSWORD=${db_root_password}
|
||||
- MIGRATE=1
|
||||
- ENABLE_DB=1
|
||||
- DB_HOST=db
|
||||
- CREATE_SITE=1
|
||||
- CONFIGURE=1
|
||||
- REGENERATE_APPS_TXT=1
|
||||
- INSTALL_APP_ARGS=--install-app erpnext
|
||||
- IMAGE_NAME=docker.io/frappe/erpnext
|
||||
- VERSION=version-15
|
||||
- FRAPPE_SITE_NAME_HEADER=
|
||||
|
||||
mounts: []
|
||||
@@ -1,40 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
api_key: ${base64:64}
|
||||
postgres_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: evolution-api
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- SERVER_URL=https://${main_domain}
|
||||
- AUTHENTICATION_TYPE=apikey
|
||||
- AUTHENTICATION_API_KEY=${api_key}
|
||||
- AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=true
|
||||
- LANGUAGE=en
|
||||
- CONFIG_SESSION_PHONE_CLIENT=Evolution API
|
||||
- CONFIG_SESSION_PHONE_NAME=Chrome
|
||||
- TELEMETRY=false
|
||||
- TELEMETRY_URL=
|
||||
- POSTGRES_DATABASE=evolution
|
||||
- POSTGRES_USERNAME=postgresql
|
||||
- POSTGRES_PASSWORD=${postgres_password}
|
||||
- DATABASE_ENABLED=true
|
||||
- DATABASE_PROVIDER=postgresql
|
||||
- DATABASE_CONNECTION_URI=postgres://postgresql:${postgres_password}@evolution-postgres:5432/evolution
|
||||
- DATABASE_SAVE_DATA_INSTANCE=true
|
||||
- DATABASE_SAVE_DATA_NEW_MESSAGE=true
|
||||
- DATABASE_SAVE_MESSAGE_UPDATE=true
|
||||
- DATABASE_SAVE_DATA_CONTACTS=true
|
||||
- DATABASE_SAVE_DATA_CHATS=true
|
||||
- DATABASE_SAVE_DATA_LABELS=true
|
||||
- DATABASE_SAVE_DATA_HISTORIC=true
|
||||
- CACHE_REDIS_ENABLED=true
|
||||
- CACHE_REDIS_URI=redis://evolution-redis:6379
|
||||
- CACHE_REDIS_PREFIX_KEY=evolution
|
||||
- CACHE_REDIS_SAVE_INSTANCES=true
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: excalidraw
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env: []
|
||||
|
||||
mounts: []
|
||||
@@ -1,13 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: filebrowser
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- FB_BASEURL=/filebrowser
|
||||
|
||||
mounts: []
|
||||
@@ -1,20 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
secret_base: ${base64:64}
|
||||
encryption_key: ${base64:48}
|
||||
cron_secret: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: formbricks
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- WEBAPP_URL=http://${main_domain}
|
||||
- NEXTAUTH_URL=http://${main_domain}
|
||||
- NEXTAUTH_SECRET=${secret_base}
|
||||
- ENCRYPTION_KEY=${encryption_key}
|
||||
- CRON_SECRET=${cron_secret}
|
||||
|
||||
mounts: []
|
||||
@@ -1,27 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_root_password: ${password:32}
|
||||
admin_password: ${password:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: frontend
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- SITE_NAME=${main_domain}
|
||||
- ADMIN_PASSWORD=${admin_password}
|
||||
- DB_ROOT_PASSWORD=${db_root_password}
|
||||
- MIGRATE=1
|
||||
- ENABLE_DB=1
|
||||
- DB_HOST=db
|
||||
- CREATE_SITE=1
|
||||
- CONFIGURE=1
|
||||
- REGENERATE_APPS_TXT=1
|
||||
- INSTALL_APP_ARGS=--install-app hrms
|
||||
- IMAGE_NAME=ghcr.io/frappe/hrms
|
||||
- VERSION=version-15
|
||||
- FRAPPE_SITE_NAME_HEADER=
|
||||
|
||||
mounts: []
|
||||
@@ -1,13 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: ghost
|
||||
port: 2368
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- GHOST_HOST=${main_domain}
|
||||
|
||||
mounts: []
|
||||
@@ -1,14 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: gitea
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
|
||||
mounts: []
|
||||
@@ -1,93 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: glance
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env: []
|
||||
|
||||
mounts:
|
||||
- filePath: /app/config/glance.yml
|
||||
content: |
|
||||
branding:
|
||||
hide-footer: true
|
||||
logo-text: P
|
||||
|
||||
pages:
|
||||
- name: Home
|
||||
columns:
|
||||
- size: small
|
||||
widgets:
|
||||
- type: calendar
|
||||
|
||||
- type: releases
|
||||
show-source-icon: true
|
||||
repositories:
|
||||
- Dokploy/dokploy
|
||||
- n8n-io/n8n
|
||||
- Budibase/budibase
|
||||
- home-assistant/core
|
||||
- tidbyt/pixlet
|
||||
|
||||
- type: twitch-channels
|
||||
channels:
|
||||
- nmplol
|
||||
- extraemily
|
||||
- qtcinderella
|
||||
- ludwig
|
||||
- timthetatman
|
||||
- mizkif
|
||||
|
||||
- size: full
|
||||
widgets:
|
||||
- type: hacker-news
|
||||
|
||||
- type: videos
|
||||
style: grid-cards
|
||||
channels:
|
||||
- UC3GzdWYwUYI1ACxuP9Nm-eg
|
||||
- UCGbg3DjQdcqWwqOLHpYHXIg
|
||||
- UC24RSoLcjiNZbQcT54j5l7Q
|
||||
limit: 3
|
||||
|
||||
- type: rss
|
||||
limit: 10
|
||||
collapse-after: 3
|
||||
cache: 3h
|
||||
feeds:
|
||||
- url: https://daringfireball.net/feeds/main
|
||||
title: Daring Fireball
|
||||
|
||||
- size: small
|
||||
widgets:
|
||||
- type: weather
|
||||
location: Gansevoort, New York, United States
|
||||
show-area-name: false
|
||||
units: imperial
|
||||
hour-format: 12h
|
||||
|
||||
- type: markets
|
||||
markets:
|
||||
- symbol: SPY
|
||||
name: S&P 500
|
||||
- symbol: VOO
|
||||
name: Vanguard
|
||||
- symbol: BTC-USD
|
||||
name: Bitcoin
|
||||
- symbol: ETH-USD
|
||||
name: Etherium
|
||||
- symbol: NVDA
|
||||
name: NVIDIA
|
||||
- symbol: AAPL
|
||||
name: Apple
|
||||
- symbol: MSFT
|
||||
name: Microsoft
|
||||
- symbol: GOOGL
|
||||
name: Google
|
||||
- symbol: AMD
|
||||
name: AMD
|
||||
- symbol: TSLA
|
||||
name: Tesla
|
||||
@@ -1,16 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
secret_key: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: web
|
||||
port: 8000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- GLITCHTIP_HOST=${main_domain}
|
||||
- GLITCHTIP_PORT=8000
|
||||
- SECRET_KEY=${secret_key}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: glpi-web
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env: []
|
||||
|
||||
mounts: []
|
||||
@@ -1,16 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
username: gotenberg
|
||||
password: changethis
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: gotenberg
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- GOTENBERG_API_BASIC_AUTH_USERNAME=${username}
|
||||
- GOTENBERG_API_BASIC_AUTH_PASSWORD=${password}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: grafana
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env: []
|
||||
|
||||
mounts: []
|
||||
@@ -1,17 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
session_key: ${base64:64}
|
||||
form_encryption_key: ${base64:64}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: heyform
|
||||
port: 8000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- APP_HOMEPAGE_URL=http://${main_domain}
|
||||
- SESSION_KEY=${session_key}
|
||||
- FORM_ENCRYPTION_KEY=${form_encryption_key}
|
||||
|
||||
mounts: []
|
||||
@@ -1,27 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
jwt_secret: ${password}
|
||||
app_key: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: all-in-one
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- DOMAIN=${main_domain}
|
||||
- POSTGRES_DB=hievents
|
||||
- POSTGRES_USER=hievents
|
||||
- POSTGRES_PASSWORD=${postgres_password}
|
||||
- VITE_STRIPE_PUBLISHABLE_KEY=
|
||||
- APP_KEY=${app_key}
|
||||
- JWT_SECRET=${jwt_secret}
|
||||
- MAIL_MAILER=
|
||||
- MAIL_HOST=
|
||||
- MAIL_PORT=
|
||||
- MAIL_FROM_ADDRESS=
|
||||
- MAIL_FROM_NAME=
|
||||
|
||||
mounts: []
|
||||
@@ -1,18 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
next_secret: ${base64:32}
|
||||
meili_master_key: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: web
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- NEXTAUTH_SECRET=${next_secret}
|
||||
- MEILI_MASTER_KEY=${meili_master_key}
|
||||
- NEXTAUTH_URL=http://${main_domain}
|
||||
|
||||
mounts: []
|
||||
@@ -1,14 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
secret_key: ${password:64}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: homarr
|
||||
port: 7575
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- SECRET_ENCRYPTION_KEY=${secret_key}
|
||||
|
||||
mounts: []
|
||||
@@ -1,104 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
huly_secret: ${base64:64}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: nginx
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- HULY_VERSION=v0.6.468
|
||||
- DOCKER_NAME=huly
|
||||
- HOST_ADDRESS=${main_domain}
|
||||
- SECURE=
|
||||
- HTTP_PORT=80
|
||||
- HTTP_BIND=
|
||||
- TITLE=Huly
|
||||
- DEFAULT_LANGUAGE=en
|
||||
- LAST_NAME_FIRST=true
|
||||
- SECRET=${huly_secret}
|
||||
|
||||
mounts:
|
||||
- filePath: /volumes/nginx/.huly.nginx
|
||||
content: |
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
location / {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_pass http://front:8080;
|
||||
}
|
||||
|
||||
location /_accounts {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
rewrite ^/_accounts(/.*)$ $1 break;
|
||||
proxy_pass http://account:3000/;
|
||||
}
|
||||
|
||||
location /_collaborator {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
rewrite ^/_collaborator(/.*)$ $1 break;
|
||||
proxy_pass http://collaborator:3078/;
|
||||
}
|
||||
|
||||
location /_transactor {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
rewrite ^/_transactor(/.*)$ $1 break;
|
||||
proxy_pass http://transactor:3333/;
|
||||
}
|
||||
|
||||
location ~ ^/eyJ {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_pass http://transactor:3333;
|
||||
}
|
||||
|
||||
location /_rekoni {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
rewrite ^/_rekoni(/.*)$ $1 break;
|
||||
proxy_pass http://rekoni:4004/;
|
||||
}
|
||||
|
||||
location /_stats {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
rewrite ^/_stats(/.*)$ $1 break;
|
||||
proxy_pass http://stats:4900/;
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_password: ${password}
|
||||
db_user: immich
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: immich-server
|
||||
port: 2283
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- IMMICH_HOST=${main_domain}
|
||||
- SERVER_URL=https://${main_domain}
|
||||
- FRONT_BASE_URL=https://${main_domain}
|
||||
- DB_HOSTNAME=immich-database
|
||||
- DB_PORT=5432
|
||||
- DB_USERNAME=${db_user}
|
||||
- DB_PASSWORD=${db_password}
|
||||
- DB_DATABASE_NAME=immich
|
||||
- REDIS_HOSTNAME=immich-redis
|
||||
- REDIS_PORT=6379
|
||||
- REDIS_DBINDEX=0
|
||||
- TZ=UTC
|
||||
|
||||
mounts: []
|
||||
@@ -1,58 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
postgres_user: infisical
|
||||
postgres_db: infisical
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: backend
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
- ENCRYPTION_KEY=6c1fe4e407b8911c104518103505b218 # Sample key, not for production
|
||||
- AUTH_SECRET=5lrMXKKWCVocS/uerPsl7V+TX/aaUaI7iDkgl3tSmLE= # Sample key, not for production
|
||||
- POSTGRES_PASSWORD=${postgres_password}
|
||||
- POSTGRES_USER=${postgres_user}
|
||||
- POSTGRES_DB=${postgres_db}
|
||||
- SITE_URL=http://${main_domain}:8080
|
||||
- SMTP_HOST=
|
||||
- SMTP_PORT=
|
||||
- SMTP_NAME=
|
||||
- SMTP_USERNAME=
|
||||
- SMTP_PASSWORD=
|
||||
- CLIENT_ID_HEROKU=
|
||||
- CLIENT_ID_VERCEL=
|
||||
- CLIENT_ID_NETLIFY=
|
||||
- CLIENT_ID_GITHUB=
|
||||
- CLIENT_ID_GITHUB_APP=
|
||||
- CLIENT_SLUG_GITHUB_APP=
|
||||
- CLIENT_ID_GITLAB=
|
||||
- CLIENT_ID_BITBUCKET=
|
||||
- CLIENT_SECRET_HEROKU=
|
||||
- CLIENT_SECRET_VERCEL=
|
||||
- CLIENT_SECRET_NETLIFY=
|
||||
- CLIENT_SECRET_GITHUB=
|
||||
- CLIENT_SECRET_GITHUB_APP=
|
||||
- CLIENT_SECRET_GITLAB=
|
||||
- CLIENT_SECRET_BITBUCKET=
|
||||
- CLIENT_SLUG_VERCEL=
|
||||
- CLIENT_PRIVATE_KEY_GITHUB_APP=
|
||||
- CLIENT_APP_ID_GITHUB_APP=
|
||||
- SENTRY_DSN=
|
||||
- POSTHOG_HOST=
|
||||
- POSTHOG_PROJECT_API_KEY=
|
||||
- CLIENT_ID_GOOGLE_LOGIN=
|
||||
- CLIENT_SECRET_GOOGLE_LOGIN=
|
||||
- CLIENT_ID_GITHUB_LOGIN=
|
||||
- CLIENT_SECRET_GITHUB_LOGIN=
|
||||
- CLIENT_ID_GITLAB_LOGIN=
|
||||
- CLIENT_SECRET_GITLAB_LOGIN=
|
||||
- CAPTCHA_SECRET=
|
||||
- NEXT_PUBLIC_CAPTCHA_SITE_KEY=
|
||||
- PLAIN_API_KEY=
|
||||
- PLAIN_WISH_LABEL_IDS=
|
||||
- SSL_CLIENT_CERTIFICATE_HEADER_KEY=
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: influxdb
|
||||
port: 8086
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,19 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_password: ${password}
|
||||
db_username: "invoiceshelf"
|
||||
db_database: "invoiceshelf"
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: invoiceshelf-app
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
INVOICESHELF_HOST: ${main_domain}
|
||||
DB_PASSWORD: ${db_password}
|
||||
DB_USERNAME: ${db_username}
|
||||
DB_DATABASE: ${db_database}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: it-tools
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,13 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: jellyfin
|
||||
port: 8096
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
JELLYFIN_HOST: ${main_domain}
|
||||
|
||||
mounts: []
|
||||
@@ -1,22 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
admin_password: ${password:32}
|
||||
mysql_password: ${password:32}
|
||||
mysql_root_password: ${password:32}
|
||||
app_secret: ${password:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: app
|
||||
port: 8001
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
KI_HOST: ${main_domain}
|
||||
KI_ADMINMAIL: "admin@kimai.local"
|
||||
KI_ADMINPASS: ${admin_password}
|
||||
KI_MYSQL_ROOT_PASSWORD: ${mysql_root_password}
|
||||
KI_MYSQL_PASSWORD: ${mysql_password}
|
||||
KI_APP_SECRET: ${app_secret}
|
||||
|
||||
mounts: []
|
||||
@@ -1,16 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_password: ${password}
|
||||
db_username: "langflow"
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: langflow
|
||||
port: 7860
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
DB_PASSWORD: ${db_password}
|
||||
DB_USERNAME: ${db_username}
|
||||
|
||||
mounts: []
|
||||
@@ -1,17 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
next_secret: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: linkwarden
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
POSTGRES_PASSWORD: ${postgres_password}
|
||||
NEXTAUTH_SECRET: ${next_secret}
|
||||
NEXTAUTH_URL: http://${main_domain}/api/v1/auth
|
||||
|
||||
mounts: []
|
||||
@@ -1,32 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: app
|
||||
port: 9000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
# visit the page to setup your super admin user
|
||||
# check config.toml in Advanced / Volumes for more options
|
||||
|
||||
mounts:
|
||||
- filePath: config.toml
|
||||
content: |
|
||||
[app]
|
||||
address = "0.0.0.0:9000"
|
||||
|
||||
[db]
|
||||
host = "db"
|
||||
port = 5432
|
||||
user = "listmonk"
|
||||
password = "listmonk"
|
||||
database = "listmonk"
|
||||
|
||||
ssl_mode = "disable"
|
||||
max_open = 25
|
||||
max_idle = 25
|
||||
max_lifetime = "300s"
|
||||
|
||||
params = ""
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: lobe-chat
|
||||
port: 3210
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,20 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
admin_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: app
|
||||
port: 3001
|
||||
host: ${main_domain}
|
||||
- serviceName: app
|
||||
port: 3002
|
||||
host: ${admin_domain}
|
||||
|
||||
env:
|
||||
LOGTO_ENDPOINT: http://${admin_domain}
|
||||
LOGTO_ADMIN_ENDPOINT: http://${admin_domain}
|
||||
LOGTO_POSTGRES_PASSWORD: ${postgres_password}
|
||||
|
||||
mounts: []
|
||||
@@ -1,21 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: macos
|
||||
port: 8006
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
# https://github.com/dockur/macos?tab=readme-ov-file#how-do-i-select-the-macos-version
|
||||
VERSION: "15"
|
||||
|
||||
# Uncomment this if your PC/VM or etc does not support virtualization technology
|
||||
# KVM: "N"
|
||||
|
||||
DISK_SIZE: "64G"
|
||||
RAM_SIZE: "4G"
|
||||
CPU_CORES: "2"
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
default_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: mailpit
|
||||
port: 8025
|
||||
host: ${main_domain}
|
||||
|
||||
# Uncomment below if you want basic auth on UI and SMTP
|
||||
#MP_UI_AUTH: mailpit:${default_password}
|
||||
#MP_SMTP_AUTH: mailpit:${default_password}
|
||||
|
||||
mounts: []
|
||||
@@ -1,22 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
secret_key_base: ${base64:64}
|
||||
synth_api_key: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: app
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
SECRET_KEY_BASE: ${secret_key_base}
|
||||
SELF_HOSTED: "true"
|
||||
SYNTH_API_KEY: ${synth_api_key}
|
||||
RAILS_FORCE_SSL: "false"
|
||||
RAILS_ASSUME_SSL: "false"
|
||||
GOOD_JOB_EXECUTION_MODE: "async"
|
||||
|
||||
mounts:
|
||||
- filePath: ./uploads
|
||||
content: "This is where user uploads will be stored"
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
master_key: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: meilisearch
|
||||
port: 7700
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
MEILI_ENV: "development"
|
||||
MEILI_MASTER_KEY: ${master_key}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: metabase
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,16 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
api_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: minio
|
||||
port: 9001
|
||||
host: ${main_domain}
|
||||
- serviceName: minio
|
||||
port: 9000
|
||||
host: ${api_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: n8n
|
||||
port: 5678
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
N8N_HOST: ${main_domain}
|
||||
N8N_PORT: "5678"
|
||||
GENERIC_TIMEZONE: "Europe/Berlin"
|
||||
|
||||
mounts: []
|
||||
@@ -1,17 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_password: ${password}
|
||||
db_root_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: nextcloud
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
NEXTCLOUD_DOMAIN: ${main_domain}
|
||||
MYSQL_SECRET_PASSWORD: ${db_password}
|
||||
MYSQL_SECRET_PASSWORD_ROOT: ${db_root_password}
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
jwt_secret: ${base64:64}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: nocodb
|
||||
port: 8000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
NOCODB_PORT: "8000"
|
||||
NC_AUTH_JWT_SECRET: ${jwt_secret}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: web
|
||||
port: 8069
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: onedev
|
||||
port: 6610
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,13 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: ontime
|
||||
port: 4001
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
TZ: "UTC"
|
||||
|
||||
mounts: []
|
||||
@@ -1,14 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: open-webui
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
OLLAMA_DOCKER_TAG: "0.1.47"
|
||||
WEBUI_DOCKER_TAG: "0.3.7"
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: otterwiki
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env: []
|
||||
|
||||
mounts: []
|
||||
@@ -1,64 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
dex_domain: ${domain}
|
||||
secret_key: ${base64:32}
|
||||
utils_secret: ${base64:32}
|
||||
client_secret: ${base64:32}
|
||||
postgres_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: outline
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
- serviceName: dex
|
||||
port: 5556
|
||||
host: ${dex_domain}
|
||||
|
||||
env:
|
||||
URL: http://${main_domain}
|
||||
DEX_URL: http://${dex_domain}
|
||||
DOMAIN_NAME: ${main_domain}
|
||||
POSTGRES_PASSWORD: ${postgres_password}
|
||||
SECRET_KEY: ${secret_key}
|
||||
UTILS_SECRET: ${utils_secret}
|
||||
CLIENT_SECRET: ${client_secret}
|
||||
|
||||
mounts:
|
||||
- filePath: /etc/dex/config.yaml
|
||||
content: |
|
||||
issuer: http://${dex_domain}
|
||||
|
||||
web:
|
||||
http: 0.0.0.0:5556
|
||||
|
||||
storage:
|
||||
type: memory
|
||||
|
||||
enablePasswordDB: true
|
||||
|
||||
frontend:
|
||||
issuer: Outline
|
||||
|
||||
logger:
|
||||
level: debug
|
||||
|
||||
staticPasswords:
|
||||
- email: "admin@example.com"
|
||||
# bcrypt hash of the string "password": $(echo password | htpasswd -BinC 10 admin | cut -d: -f2)
|
||||
hash: "$2y$10$jsRWHw54uxTUIfhjgUrB9u8HSzPk7TUuQri9sXZrKzRXcScvwYor."
|
||||
username: "admin"
|
||||
userID: "1"
|
||||
|
||||
|
||||
oauth2:
|
||||
skipApprovalScreen: true
|
||||
alwaysShowLoginScreen: false
|
||||
passwordConnector: local
|
||||
|
||||
staticClients:
|
||||
- id: "outline"
|
||||
redirectURIs:
|
||||
- http://${main_domain}/auth/oidc.callback
|
||||
name: "Outline"
|
||||
secret: "${client_secret}"
|
||||
@@ -1,13 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: penpot-frontend
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
DOMAIN_NAME: ${main_domain}
|
||||
|
||||
mounts: []
|
||||
@@ -1,22 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
api_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
secret: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: peppermint-app
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
- serviceName: peppermint-app
|
||||
port: 5003
|
||||
host: ${api_domain}
|
||||
|
||||
env:
|
||||
MAIN_DOMAIN: ${main_domain}
|
||||
API_DOMAIN: ${api_domain}
|
||||
POSTGRES_PASSWORD: ${postgres_password}
|
||||
SECRET: ${secret}
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
admin_password: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: photoprism
|
||||
port: 2342
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
BASE_URL: http://${main_domain}
|
||||
ADMIN_PASSWORD: ${admin_password}
|
||||
|
||||
mounts: []
|
||||
@@ -1,18 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
root_password: ${password:32}
|
||||
user_password: ${password:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: phpmyadmin
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: ${root_password}
|
||||
MYSQL_DATABASE: "mysql"
|
||||
MYSQL_USER: "phpmyadmin"
|
||||
MYSQL_PASSWORD: ${user_password}
|
||||
|
||||
mounts: []
|
||||
@@ -1,46 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
secret_base: ${base64:64}
|
||||
totp_key: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: plausible
|
||||
port: 8000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
BASE_URL: http://${main_domain}
|
||||
SECRET_KEY_BASE: ${secret_base}
|
||||
TOTP_VAULT_KEY: ${totp_key}
|
||||
|
||||
mounts:
|
||||
- filePath: /clickhouse/clickhouse-config.xml
|
||||
content: |
|
||||
<clickhouse>
|
||||
<logger>
|
||||
<level>warning</level>
|
||||
<console>true</console>
|
||||
</logger>
|
||||
|
||||
<!-- 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"/>
|
||||
</clickhouse>
|
||||
|
||||
- filePath: /clickhouse/clickhouse-user-config.xml
|
||||
content: |
|
||||
<clickhouse>
|
||||
<profiles>
|
||||
<default>
|
||||
<log_queries>0</log_queries>
|
||||
<log_query_threads>0</log_query_threads>
|
||||
</default>
|
||||
</profiles>
|
||||
</clickhouse>
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: pocket-id
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
PUBLIC_UI_CONFIG_DISABLED: "false"
|
||||
PUBLIC_APP_URL: http://${main_domain}
|
||||
TRUST_PROXY: "true"
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: pocketbase
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: portainer
|
||||
port: 9000
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,21 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_password: ${password}
|
||||
db_user: "postiz"
|
||||
db_name: "postiz"
|
||||
jwt_secret: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: postiz-app
|
||||
port: 5000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
POSTIZ_HOST: ${main_domain}
|
||||
DB_PASSWORD: ${db_password}
|
||||
DB_USER: ${db_user}
|
||||
DB_NAME: ${db_name}
|
||||
JWT_SECRET: ${jwt_secret}
|
||||
|
||||
mounts: []
|
||||
@@ -1,18 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
registry_http_secret: ${password:30}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: registry
|
||||
port: 5000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
REGISTRY_HTTP_SECRET: ${registry_http_secret}
|
||||
|
||||
mounts:
|
||||
- filePath: /auth/registry.password
|
||||
content: |
|
||||
# from: docker run --rm --entrypoint htpasswd httpd:2 -Bbn docker password
|
||||
docker:$2y$10$qWZoWev/u5PV7WneFoRAMuoGpRcAQOgUuIIdLnU7pJXogrBSY23/2
|
||||
@@ -1,14 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: rocketchat
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
ROCKETCHAT_HOST: ${main_domain}
|
||||
ROCKETCHAT_PORT: "3000"
|
||||
|
||||
mounts: []
|
||||
@@ -1,14 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: roundcubemail
|
||||
port: 80
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
DEFAULT_HOST: "tls://mail.example.com"
|
||||
SMTP_SERVER: "tls://mail.example.com"
|
||||
|
||||
mounts: []
|
||||
@@ -1,18 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
postgres_password: ${password}
|
||||
admin_access_token: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: ryot-app
|
||||
port: 8000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
POSTGRES_PASSWORD: ${postgres_password}
|
||||
ADMIN_ACCESS_TOKEN: ${admin_access_token}
|
||||
# Optional: Uncomment and set your pro key if you have one
|
||||
# SERVER_PRO_KEY: "your_pro_key_here"
|
||||
|
||||
mounts: []
|
||||
@@ -1,18 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
initial_api_key: ${password:30}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: shlink-web
|
||||
port: 8080
|
||||
host: web-${main_domain}
|
||||
- serviceName: shlink
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
INITIAL_API_KEY: ${initial_api_key}
|
||||
DEFAULT_DOMAIN: ${main_domain}
|
||||
|
||||
mounts: []
|
||||
@@ -1,18 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_password: ${password}
|
||||
db_user: "slash"
|
||||
db_name: "slash"
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: slash-app
|
||||
port: 5231
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
DB_USER: ${db_user}
|
||||
DB_PASSWORD: ${db_password}
|
||||
DB_NAME: ${db_name}
|
||||
|
||||
mounts: []
|
||||
@@ -1,16 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
metrics_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: soketi
|
||||
port: 6001
|
||||
host: ${main_domain}
|
||||
- serviceName: soketi
|
||||
port: 9601
|
||||
host: ${metrics_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,15 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
secret_key: ${password}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: server
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
SD_USERNAME: "admin"
|
||||
SD_PASSWORD: ${secret_key}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: stirling-pdf
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,896 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
postgres_password: ${password:32}
|
||||
jwt_secret: ${base64:32}
|
||||
dashboard_password: ${password:32}
|
||||
logflare_api_key: ${password:32}
|
||||
anon_key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzQxNTAwMDAwLAogICJleHAiOiAxODk5MjY2NDAwCn0.muKe0Nrvkf5bMyLoFqAuFypRu3jHAcTYU08SYKrgRQo
|
||||
service_role_key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3NDE1MDAwMDAsCiAgImV4cCI6IDE4OTkyNjY0MDAKfQ.1KoSiJVueKJNkF59uc84BLqk7h8VdAoVp6Gozqr_vGc
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: kong
|
||||
port: 8000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
SUPABASE_HOST: ${main_domain}
|
||||
POSTGRES_PASSWORD: ${postgres_password}
|
||||
JWT_SECRET: ${jwt_secret}
|
||||
ANON_KEY: ${anon_key}
|
||||
SERVICE_ROLE_KEY: ${service_role_key}
|
||||
DASHBOARD_USERNAME: "supabase"
|
||||
DASHBOARD_PASSWORD: ${dashboard_password}
|
||||
POSTGRES_HOSTNAME: "db"
|
||||
POSTGRES_DB: "postgres"
|
||||
POSTGRES_PORT: "5432"
|
||||
KONG_HTTP_PORT: "8000"
|
||||
KONG_HTTPS_PORT: "8443"
|
||||
PGRST_DB_SCHEMAS: "public,storage,graphql_public"
|
||||
ADDITIONAL_REDIRECT_URLS: ""
|
||||
JWT_EXPIRY: "3600"
|
||||
DISABLE_SIGNUP: "false"
|
||||
MAILER_URLPATHS_CONFIRMATION: "\"/auth/v1/verify\""
|
||||
MAILER_URLPATHS_INVITE: "\"/auth/v1/verify\""
|
||||
MAILER_URLPATHS_RECOVERY: "\"/auth/v1/verify\""
|
||||
MAILER_URLPATHS_EMAIL_CHANGE: "\"/auth/v1/verify\""
|
||||
ENABLE_EMAIL_SIGNUP: "true"
|
||||
ENABLE_EMAIL_AUTOCONFIRM: "false"
|
||||
SMTP_ADMIN_EMAIL: "admin@example.com"
|
||||
SMTP_HOSTNAME: "supabase-mail"
|
||||
SMTP_PORT: "2500"
|
||||
SMTP_USER: "fake_mail_user"
|
||||
SMTP_PASS: "fake_mail_password"
|
||||
SMTP_SENDER_NAME: "fake_sender"
|
||||
ENABLE_ANONYMOUS_USERS: "false"
|
||||
ENABLE_PHONE_SIGNUP: "true"
|
||||
ENABLE_PHONE_AUTOCONFIRM: "true"
|
||||
STUDIO_DEFAULT_ORGANIZATION: "Default Organization"
|
||||
STUDIO_DEFAULT_PROJECT: "Default Project"
|
||||
STUDIO_PORT: "3000"
|
||||
IMGPROXY_ENABLE_WEBP_DETECTION: "true"
|
||||
FUNCTIONS_VERIFY_JWT: "false"
|
||||
LOGFLARE_LOGGER_BACKEND_API_KEY: ${logflare_api_key}
|
||||
LOGFLARE_API_KEY: ${logflare_api_key}
|
||||
DOCKER_SOCKET_LOCATION: "/var/run/docker.sock"
|
||||
GOOGLE_PROJECT_ID: "GOOGLE_PROJECT_ID"
|
||||
GOOGLE_PROJECT_NUMBER: "GOOGLE_PROJECT_NUMBER"
|
||||
|
||||
mounts:
|
||||
- filePath: /volumes/api/kong.yml
|
||||
content: |
|
||||
_format_version: '2.1'
|
||||
_transform: true
|
||||
|
||||
###
|
||||
### Consumers / Users
|
||||
###
|
||||
consumers:
|
||||
- username: DASHBOARD
|
||||
- username: anon
|
||||
keyauth_credentials:
|
||||
- key: $SUPABASE_ANON_KEY
|
||||
- username: service_role
|
||||
keyauth_credentials:
|
||||
- key: $SUPABASE_SERVICE_KEY
|
||||
|
||||
###
|
||||
### Access Control List
|
||||
###
|
||||
acls:
|
||||
- consumer: anon
|
||||
group: anon
|
||||
- consumer: service_role
|
||||
group: admin
|
||||
|
||||
###
|
||||
### Dashboard credentials
|
||||
###
|
||||
basicauth_credentials:
|
||||
- consumer: DASHBOARD
|
||||
username: $DASHBOARD_USERNAME
|
||||
password: $DASHBOARD_PASSWORD
|
||||
|
||||
###
|
||||
### API Routes
|
||||
###
|
||||
services:
|
||||
## Open Auth routes
|
||||
- name: auth-v1-open
|
||||
url: http://auth:9999/verify
|
||||
routes:
|
||||
- name: auth-v1-open
|
||||
strip_path: true
|
||||
paths:
|
||||
- /auth/v1/verify
|
||||
plugins:
|
||||
- name: cors
|
||||
- name: auth-v1-open-callback
|
||||
url: http://auth:9999/callback
|
||||
routes:
|
||||
- name: auth-v1-open-callback
|
||||
strip_path: true
|
||||
paths:
|
||||
- /auth/v1/callback
|
||||
plugins:
|
||||
- name: cors
|
||||
- name: auth-v1-open-authorize
|
||||
url: http://auth:9999/authorize
|
||||
routes:
|
||||
- name: auth-v1-open-authorize
|
||||
strip_path: true
|
||||
paths:
|
||||
- /auth/v1/authorize
|
||||
plugins:
|
||||
- name: cors
|
||||
|
||||
## Secure Auth routes
|
||||
- name: auth-v1
|
||||
_comment: 'GoTrue: /auth/v1/* -> http://auth:9999/*'
|
||||
url: http://auth:9999/
|
||||
routes:
|
||||
- name: auth-v1-all
|
||||
strip_path: true
|
||||
paths:
|
||||
- /auth/v1/
|
||||
plugins:
|
||||
- name: cors
|
||||
- name: key-auth
|
||||
config:
|
||||
hide_credentials: false
|
||||
- name: acl
|
||||
config:
|
||||
hide_groups_header: true
|
||||
allow:
|
||||
- admin
|
||||
- anon
|
||||
|
||||
## Secure REST routes
|
||||
- name: rest-v1
|
||||
_comment: 'PostgREST: /rest/v1/* -> http://rest:3000/*'
|
||||
url: http://rest:3000/
|
||||
routes:
|
||||
- name: rest-v1-all
|
||||
strip_path: true
|
||||
paths:
|
||||
- /rest/v1/
|
||||
plugins:
|
||||
- name: cors
|
||||
- name: key-auth
|
||||
config:
|
||||
hide_credentials: true
|
||||
- name: acl
|
||||
config:
|
||||
hide_groups_header: true
|
||||
allow:
|
||||
- admin
|
||||
- anon
|
||||
|
||||
## Secure GraphQL routes
|
||||
- name: graphql-v1
|
||||
_comment: 'PostgREST: /graphql/v1/* -> http://rest:3000/rpc/graphql'
|
||||
url: http://rest:3000/rpc/graphql
|
||||
routes:
|
||||
- name: graphql-v1-all
|
||||
strip_path: true
|
||||
paths:
|
||||
- /graphql/v1
|
||||
plugins:
|
||||
- name: cors
|
||||
- name: key-auth
|
||||
config:
|
||||
hide_credentials: true
|
||||
- name: request-transformer
|
||||
config:
|
||||
add:
|
||||
headers:
|
||||
- Content-Profile:graphql_public
|
||||
- name: acl
|
||||
config:
|
||||
hide_groups_header: true
|
||||
allow:
|
||||
- admin
|
||||
- anon
|
||||
|
||||
## Secure Realtime routes
|
||||
- name: realtime-v1-ws
|
||||
_comment: 'Realtime: /realtime/v1/* -> ws://realtime:4000/socket/*'
|
||||
url: http://realtime-dev.supabase-realtime:4000/socket
|
||||
protocol: ws
|
||||
routes:
|
||||
- name: realtime-v1-ws
|
||||
strip_path: true
|
||||
paths:
|
||||
- /realtime/v1/
|
||||
plugins:
|
||||
- name: cors
|
||||
- name: key-auth
|
||||
config:
|
||||
hide_credentials: false
|
||||
- name: acl
|
||||
config:
|
||||
hide_groups_header: true
|
||||
allow:
|
||||
- admin
|
||||
- anon
|
||||
- name: realtime-v1-rest
|
||||
_comment: 'Realtime: /realtime/v1/* -> ws://realtime:4000/socket/*'
|
||||
url: http://realtime-dev.supabase-realtime:4000/api
|
||||
protocol: http
|
||||
routes:
|
||||
- name: realtime-v1-rest
|
||||
strip_path: true
|
||||
paths:
|
||||
- /realtime/v1/api
|
||||
plugins:
|
||||
- name: cors
|
||||
- name: key-auth
|
||||
config:
|
||||
hide_credentials: false
|
||||
- name: acl
|
||||
config:
|
||||
hide_groups_header: true
|
||||
allow:
|
||||
- admin
|
||||
- anon
|
||||
## Storage routes: the storage server manages its own auth
|
||||
- name: storage-v1
|
||||
_comment: 'Storage: /storage/v1/* -> http://storage:5000/*'
|
||||
url: http://storage:5000/
|
||||
routes:
|
||||
- name: storage-v1-all
|
||||
strip_path: true
|
||||
paths:
|
||||
- /storage/v1/
|
||||
plugins:
|
||||
- name: cors
|
||||
|
||||
## Edge Functions routes
|
||||
- name: functions-v1
|
||||
_comment: 'Edge Functions: /functions/v1/* -> http://functions:9000/*'
|
||||
url: http://functions:9000/
|
||||
routes:
|
||||
- name: functions-v1-all
|
||||
strip_path: true
|
||||
paths:
|
||||
- /functions/v1/
|
||||
plugins:
|
||||
- name: cors
|
||||
|
||||
## Analytics routes
|
||||
- name: analytics-v1
|
||||
_comment: 'Analytics: /analytics/v1/* -> http://logflare:4000/*'
|
||||
url: http://analytics:4000/
|
||||
routes:
|
||||
- name: analytics-v1-all
|
||||
strip_path: true
|
||||
paths:
|
||||
- /analytics/v1/
|
||||
|
||||
## Secure Database routes
|
||||
- name: meta
|
||||
_comment: 'pg-meta: /pg/* -> http://pg-meta:8080/*'
|
||||
url: http://meta:8080/
|
||||
routes:
|
||||
- name: meta-all
|
||||
strip_path: true
|
||||
paths:
|
||||
- /pg/
|
||||
plugins:
|
||||
- name: key-auth
|
||||
config:
|
||||
hide_credentials: false
|
||||
- name: acl
|
||||
config:
|
||||
hide_groups_header: true
|
||||
allow:
|
||||
- admin
|
||||
|
||||
## Protected Dashboard - catch all remaining routes
|
||||
- name: dashboard
|
||||
_comment: 'Studio: /* -> http://studio:3000/*'
|
||||
url: http://studio:3000/
|
||||
routes:
|
||||
- name: dashboard-all
|
||||
strip_path: true
|
||||
paths:
|
||||
- /
|
||||
plugins:
|
||||
- name: cors
|
||||
- name: basic-auth
|
||||
config:
|
||||
hide_credentials: true
|
||||
- filePath: /volumes/db/init/data.sql
|
||||
content: |
|
||||
|
||||
- filePath: /volumes/db/jwt.sql
|
||||
content: |
|
||||
\set jwt_secret `echo "$JWT_SECRET"`
|
||||
\set jwt_exp `echo "$JWT_EXP"`
|
||||
|
||||
ALTER DATABASE postgres SET "app.settings.jwt_secret" TO :'jwt_secret';
|
||||
ALTER DATABASE postgres SET "app.settings.jwt_exp" TO :'jwt_exp';
|
||||
- filePath: /volumes/db/logs.sql
|
||||
content: |
|
||||
\set pguser `echo "$POSTGRES_USER"`
|
||||
|
||||
create schema if not exists _analytics;
|
||||
alter schema _analytics owner to :pguser;
|
||||
- filePath: /volumes/db/realtime.sql
|
||||
content: |
|
||||
\set pguser `echo "$POSTGRES_USER"`
|
||||
|
||||
create schema if not exists _realtime;
|
||||
alter schema _realtime owner to :pguser;
|
||||
- filePath: /volumes/db/roles.sql
|
||||
content: |
|
||||
-- NOTE: change to your own passwords for production environments
|
||||
\set pgpass `echo "$POSTGRES_PASSWORD"`
|
||||
|
||||
ALTER USER authenticator WITH PASSWORD :'pgpass';
|
||||
ALTER USER pgbouncer WITH PASSWORD :'pgpass';
|
||||
ALTER USER supabase_auth_admin WITH PASSWORD :'pgpass';
|
||||
ALTER USER supabase_functions_admin WITH PASSWORD :'pgpass';
|
||||
ALTER USER supabase_storage_admin WITH PASSWORD :'pgpass';
|
||||
- filePath: /volumes/db/webhooks.sql
|
||||
content: |
|
||||
BEGIN;
|
||||
-- Create pg_net extension
|
||||
CREATE EXTENSION IF NOT EXISTS pg_net SCHEMA extensions;
|
||||
-- Create supabase_functions schema
|
||||
CREATE SCHEMA supabase_functions AUTHORIZATION supabase_admin;
|
||||
GRANT USAGE ON SCHEMA supabase_functions TO postgres, anon, authenticated, service_role;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA supabase_functions GRANT ALL ON TABLES TO postgres, anon, authenticated, service_role;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA supabase_functions GRANT ALL ON FUNCTIONS TO postgres, anon, authenticated, service_role;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA supabase_functions GRANT ALL ON SEQUENCES TO postgres, anon, authenticated, service_role;
|
||||
-- supabase_functions.migrations definition
|
||||
CREATE TABLE supabase_functions.migrations (
|
||||
version text PRIMARY KEY,
|
||||
inserted_at timestamptz NOT NULL DEFAULT NOW()
|
||||
);
|
||||
-- Initial supabase_functions migration
|
||||
INSERT INTO supabase_functions.migrations (version) VALUES ('initial');
|
||||
-- supabase_functions.hooks definition
|
||||
CREATE TABLE supabase_functions.hooks (
|
||||
id bigserial PRIMARY KEY,
|
||||
hook_table_id integer NOT NULL,
|
||||
hook_name text NOT NULL,
|
||||
created_at timestamptz NOT NULL DEFAULT NOW(),
|
||||
request_id bigint
|
||||
);
|
||||
CREATE INDEX supabase_functions_hooks_request_id_idx ON supabase_functions.hooks USING btree (request_id);
|
||||
CREATE INDEX supabase_functions_hooks_h_table_id_h_name_idx ON supabase_functions.hooks USING btree (hook_table_id, hook_name);
|
||||
COMMENT ON TABLE supabase_functions.hooks IS 'Supabase Functions Hooks: Audit trail for triggered hooks.';
|
||||
CREATE FUNCTION supabase_functions.http_request()
|
||||
RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $function$
|
||||
DECLARE
|
||||
request_id bigint;
|
||||
payload jsonb;
|
||||
url text := TG_ARGV[0]::text;
|
||||
method text := TG_ARGV[1]::text;
|
||||
headers jsonb DEFAULT '{}'::jsonb;
|
||||
params jsonb DEFAULT '{}'::jsonb;
|
||||
timeout_ms integer DEFAULT 1000;
|
||||
BEGIN
|
||||
IF url IS NULL OR url = 'null' THEN
|
||||
RAISE EXCEPTION 'url argument is missing';
|
||||
END IF;
|
||||
|
||||
IF method IS NULL OR method = 'null' THEN
|
||||
RAISE EXCEPTION 'method argument is missing';
|
||||
END IF;
|
||||
|
||||
IF TG_ARGV[2] IS NULL OR TG_ARGV[2] = 'null' THEN
|
||||
headers = '{"Content-Type": "application/json"}'::jsonb;
|
||||
ELSE
|
||||
headers = TG_ARGV[2]::jsonb;
|
||||
END IF;
|
||||
|
||||
IF TG_ARGV[3] IS NULL OR TG_ARGV[3] = 'null' THEN
|
||||
params = '{}'::jsonb;
|
||||
ELSE
|
||||
params = TG_ARGV[3]::jsonb;
|
||||
END IF;
|
||||
|
||||
IF TG_ARGV[4] IS NULL OR TG_ARGV[4] = 'null' THEN
|
||||
timeout_ms = 1000;
|
||||
ELSE
|
||||
timeout_ms = TG_ARGV[4]::integer;
|
||||
END IF;
|
||||
|
||||
CASE
|
||||
WHEN method = 'GET' THEN
|
||||
SELECT http_get INTO request_id FROM net.http_get(
|
||||
url,
|
||||
params,
|
||||
headers,
|
||||
timeout_ms
|
||||
);
|
||||
WHEN method = 'POST' THEN
|
||||
payload = jsonb_build_object(
|
||||
'old_record', OLD,
|
||||
'record', NEW,
|
||||
'type', TG_OP,
|
||||
'table', TG_TABLE_NAME,
|
||||
'schema', TG_TABLE_SCHEMA
|
||||
);
|
||||
|
||||
SELECT http_post INTO request_id FROM net.http_post(
|
||||
url,
|
||||
payload,
|
||||
params,
|
||||
headers,
|
||||
timeout_ms
|
||||
);
|
||||
ELSE
|
||||
RAISE EXCEPTION 'method argument % is invalid', method;
|
||||
END CASE;
|
||||
|
||||
INSERT INTO supabase_functions.hooks
|
||||
(hook_table_id, hook_name, request_id)
|
||||
VALUES
|
||||
(TG_RELID, TG_NAME, request_id);
|
||||
|
||||
RETURN NEW;
|
||||
END
|
||||
$function$;
|
||||
-- Supabase super admin
|
||||
DO
|
||||
$$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_roles
|
||||
WHERE rolname = 'supabase_functions_admin'
|
||||
)
|
||||
THEN
|
||||
CREATE USER supabase_functions_admin NOINHERIT CREATEROLE LOGIN NOREPLICATION;
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
GRANT ALL PRIVILEGES ON SCHEMA supabase_functions TO supabase_functions_admin;
|
||||
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA supabase_functions TO supabase_functions_admin;
|
||||
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA supabase_functions TO supabase_functions_admin;
|
||||
ALTER USER supabase_functions_admin SET search_path = "supabase_functions";
|
||||
ALTER table "supabase_functions".migrations OWNER TO supabase_functions_admin;
|
||||
ALTER table "supabase_functions".hooks OWNER TO supabase_functions_admin;
|
||||
ALTER function "supabase_functions".http_request() OWNER TO supabase_functions_admin;
|
||||
GRANT supabase_functions_admin TO postgres;
|
||||
-- Remove unused supabase_pg_net_admin role
|
||||
DO
|
||||
$$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_roles
|
||||
WHERE rolname = 'supabase_pg_net_admin'
|
||||
)
|
||||
THEN
|
||||
REASSIGN OWNED BY supabase_pg_net_admin TO supabase_admin;
|
||||
DROP OWNED BY supabase_pg_net_admin;
|
||||
DROP ROLE supabase_pg_net_admin;
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
-- pg_net grants when extension is already enabled
|
||||
DO
|
||||
$$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_extension
|
||||
WHERE extname = 'pg_net'
|
||||
)
|
||||
THEN
|
||||
GRANT USAGE ON SCHEMA net TO supabase_functions_admin, postgres, anon, authenticated, service_role;
|
||||
ALTER function net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) SECURITY DEFINER;
|
||||
ALTER function net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) SECURITY DEFINER;
|
||||
ALTER function net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) SET search_path = net;
|
||||
ALTER function net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) SET search_path = net;
|
||||
REVOKE ALL ON FUNCTION net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) FROM PUBLIC;
|
||||
REVOKE ALL ON FUNCTION net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) FROM PUBLIC;
|
||||
GRANT EXECUTE ON FUNCTION net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) TO supabase_functions_admin, postgres, anon, authenticated, service_role;
|
||||
GRANT EXECUTE ON FUNCTION net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) TO supabase_functions_admin, postgres, anon, authenticated, service_role;
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
-- Event trigger for pg_net
|
||||
CREATE OR REPLACE FUNCTION extensions.grant_pg_net_access()
|
||||
RETURNS event_trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_event_trigger_ddl_commands() AS ev
|
||||
JOIN pg_extension AS ext
|
||||
ON ev.objid = ext.oid
|
||||
WHERE ext.extname = 'pg_net'
|
||||
)
|
||||
THEN
|
||||
GRANT USAGE ON SCHEMA net TO supabase_functions_admin, postgres, anon, authenticated, service_role;
|
||||
ALTER function net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) SECURITY DEFINER;
|
||||
ALTER function net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) SECURITY DEFINER;
|
||||
ALTER function net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) SET search_path = net;
|
||||
ALTER function net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) SET search_path = net;
|
||||
REVOKE ALL ON FUNCTION net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) FROM PUBLIC;
|
||||
REVOKE ALL ON FUNCTION net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) FROM PUBLIC;
|
||||
GRANT EXECUTE ON FUNCTION net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) TO supabase_functions_admin, postgres, anon, authenticated, service_role;
|
||||
GRANT EXECUTE ON FUNCTION net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) TO supabase_functions_admin, postgres, anon, authenticated, service_role;
|
||||
END IF;
|
||||
END;
|
||||
$$;
|
||||
COMMENT ON FUNCTION extensions.grant_pg_net_access IS 'Grants access to pg_net';
|
||||
DO
|
||||
$$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_event_trigger
|
||||
WHERE evtname = 'issue_pg_net_access'
|
||||
) THEN
|
||||
CREATE EVENT TRIGGER issue_pg_net_access ON ddl_command_end WHEN TAG IN ('CREATE EXTENSION')
|
||||
EXECUTE PROCEDURE extensions.grant_pg_net_access();
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
INSERT INTO supabase_functions.migrations (version) VALUES ('20210809183423_update_grants');
|
||||
ALTER function supabase_functions.http_request() SECURITY DEFINER;
|
||||
ALTER function supabase_functions.http_request() SET search_path = supabase_functions;
|
||||
REVOKE ALL ON FUNCTION supabase_functions.http_request() FROM PUBLIC;
|
||||
GRANT EXECUTE ON FUNCTION supabase_functions.http_request() TO postgres, anon, authenticated, service_role;
|
||||
COMMIT;
|
||||
- filePath: /volumes/functions/hello/index.ts
|
||||
content: |
|
||||
// Follow this setup guide to integrate the Deno language server with your editor:
|
||||
// https://deno.land/manual/getting_started/setup_your_environment
|
||||
// This enables autocomplete, go to definition, etc.
|
||||
|
||||
import { serve } from "https://deno.land/std@0.177.1/http/server.ts"
|
||||
|
||||
serve(async () => {
|
||||
return new Response(
|
||||
`"Hello from Edge Functions!"`,
|
||||
{ headers: { "Content-Type": "application/json" } }
|
||||
)
|
||||
})
|
||||
|
||||
// To invoke:
|
||||
// curl 'http://localhost:<KONG_HTTP_PORT>/functions/v1/hello' \
|
||||
// --header 'Authorization: Bearer <anon/service_role API key>'
|
||||
- filePath: /volumes/functions/main/index.ts
|
||||
content: |
|
||||
import { serve } from 'https://deno.land/std@0.131.0/http/server.ts'
|
||||
import * as jose from 'https://deno.land/x/jose@v4.14.4/index.ts'
|
||||
|
||||
console.log('main function started')
|
||||
|
||||
const JWT_SECRET = Deno.env.get('JWT_SECRET')
|
||||
const VERIFY_JWT = Deno.env.get('VERIFY_JWT') === 'true'
|
||||
|
||||
function getAuthToken(req: Request) {
|
||||
const authHeader = req.headers.get('authorization')
|
||||
if (!authHeader) {
|
||||
throw new Error('Missing authorization header')
|
||||
}
|
||||
const [bearer, token] = authHeader.split(' ')
|
||||
if (bearer !== 'Bearer') {
|
||||
throw new Error(`Auth header is not 'Bearer {token}'`)
|
||||
}
|
||||
return token
|
||||
}
|
||||
|
||||
async function verifyJWT(jwt: string): Promise<boolean> {
|
||||
const encoder = new TextEncoder()
|
||||
const secretKey = encoder.encode(JWT_SECRET)
|
||||
try {
|
||||
await jose.jwtVerify(jwt, secretKey)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
serve(async (req: Request) => {
|
||||
if (req.method !== 'OPTIONS' && VERIFY_JWT) {
|
||||
try {
|
||||
const token = getAuthToken(req)
|
||||
const isValidJWT = await verifyJWT(token)
|
||||
|
||||
if (!isValidJWT) {
|
||||
return new Response(JSON.stringify({ msg: 'Invalid JWT' }), {
|
||||
status: 401,
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
})
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
return new Response(JSON.stringify({ msg: e.toString() }), {
|
||||
status: 401,
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const url = new URL(req.url)
|
||||
const { pathname } = url
|
||||
const path_parts = pathname.split('/')
|
||||
const service_name = path_parts[1]
|
||||
|
||||
if (!service_name || service_name === '') {
|
||||
const error = { msg: 'missing function name in request' }
|
||||
return new Response(JSON.stringify(error), {
|
||||
status: 400,
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
})
|
||||
}
|
||||
|
||||
const servicePath = `/home/deno/functions/${service_name}`
|
||||
console.error(`serving the request with ${servicePath}`)
|
||||
|
||||
const memoryLimitMb = 150
|
||||
const workerTimeoutMs = 1 * 60 * 1000
|
||||
const noModuleCache = false
|
||||
const importMapPath = null
|
||||
const envVarsObj = Deno.env.toObject()
|
||||
const envVars = Object.keys(envVarsObj).map((k) => [k, envVarsObj[k]])
|
||||
|
||||
try {
|
||||
const worker = await EdgeRuntime.userWorkers.create({
|
||||
servicePath,
|
||||
memoryLimitMb,
|
||||
workerTimeoutMs,
|
||||
noModuleCache,
|
||||
importMapPath,
|
||||
envVars,
|
||||
})
|
||||
return await worker.fetch(req)
|
||||
} catch (e) {
|
||||
const error = { msg: e.toString() }
|
||||
return new Response(JSON.stringify(error), {
|
||||
status: 500,
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
})
|
||||
}
|
||||
})
|
||||
- filePath: /volumes/logs/vector.yml
|
||||
content: |
|
||||
|
||||
api:
|
||||
enabled: true
|
||||
address: 0.0.0.0:9001
|
||||
|
||||
sources:
|
||||
docker_host:
|
||||
type: docker_logs
|
||||
exclude_containers:
|
||||
- supabase-vector
|
||||
|
||||
transforms:
|
||||
project_logs:
|
||||
type: remap
|
||||
inputs:
|
||||
- docker_host
|
||||
source: |-
|
||||
.project = "default"
|
||||
.event_message = del(.message)
|
||||
.appname = del(.container_name)
|
||||
del(.container_created_at)
|
||||
del(.container_id)
|
||||
del(.source_type)
|
||||
del(.stream)
|
||||
del(.label)
|
||||
del(.image)
|
||||
del(.host)
|
||||
del(.stream)
|
||||
router:
|
||||
type: route
|
||||
inputs:
|
||||
- project_logs
|
||||
route:
|
||||
kong: '.appname == "supabase-kong"'
|
||||
auth: '.appname == "supabase-auth"'
|
||||
rest: '.appname == "supabase-rest"'
|
||||
realtime: '.appname == "supabase-realtime"'
|
||||
storage: '.appname == "supabase-storage"'
|
||||
functions: '.appname == "supabase-functions"'
|
||||
db: '.appname == "supabase-db"'
|
||||
# Ignores non nginx errors since they are related with kong booting up
|
||||
kong_logs:
|
||||
type: remap
|
||||
inputs:
|
||||
- router.kong
|
||||
source: |-
|
||||
req, err = parse_nginx_log(.event_message, "combined")
|
||||
if err == null {
|
||||
.timestamp = req.timestamp
|
||||
.metadata.request.headers.referer = req.referer
|
||||
.metadata.request.headers.user_agent = req.agent
|
||||
.metadata.request.headers.cf_connecting_ip = req.client
|
||||
.metadata.request.method = req.method
|
||||
.metadata.request.path = req.path
|
||||
.metadata.request.protocol = req.protocol
|
||||
.metadata.response.status_code = req.status
|
||||
}
|
||||
if err != null {
|
||||
abort
|
||||
}
|
||||
# Ignores non nginx errors since they are related with kong booting up
|
||||
kong_err:
|
||||
type: remap
|
||||
inputs:
|
||||
- router.kong
|
||||
source: |-
|
||||
.metadata.request.method = "GET"
|
||||
.metadata.response.status_code = 200
|
||||
parsed, err = parse_nginx_log(.event_message, "error")
|
||||
if err == null {
|
||||
.timestamp = parsed.timestamp
|
||||
.severity = parsed.severity
|
||||
.metadata.request.host = parsed.host
|
||||
.metadata.request.headers.cf_connecting_ip = parsed.client
|
||||
url, err = split(parsed.request, " ")
|
||||
if err == null {
|
||||
.metadata.request.method = url[0]
|
||||
.metadata.request.path = url[1]
|
||||
.metadata.request.protocol = url[2]
|
||||
}
|
||||
}
|
||||
if err != null {
|
||||
abort
|
||||
}
|
||||
# Gotrue logs are structured json strings which frontend parses directly. But we keep metadata for consistency.
|
||||
auth_logs:
|
||||
type: remap
|
||||
inputs:
|
||||
- router.auth
|
||||
source: |-
|
||||
parsed, err = parse_json(.event_message)
|
||||
if err == null {
|
||||
.metadata.timestamp = parsed.time
|
||||
.metadata = merge!(.metadata, parsed)
|
||||
}
|
||||
# PostgREST logs are structured so we separate timestamp from message using regex
|
||||
rest_logs:
|
||||
type: remap
|
||||
inputs:
|
||||
- router.rest
|
||||
source: |-
|
||||
parsed, err = parse_regex(.event_message, r'^(?P<time>.*): (?P<msg>.*)$')
|
||||
if err == null {
|
||||
.event_message = parsed.msg
|
||||
.timestamp = to_timestamp!(parsed.time)
|
||||
.metadata.host = .project
|
||||
}
|
||||
# Realtime logs are structured so we parse the severity level using regex (ignore time because it has no date)
|
||||
realtime_logs:
|
||||
type: remap
|
||||
inputs:
|
||||
- router.realtime
|
||||
source: |-
|
||||
.metadata.project = del(.project)
|
||||
.metadata.external_id = .metadata.project
|
||||
parsed, err = parse_regex(.event_message, r'^(?P<time>\d+:\d+:\d+\.\d+) \[(?P<level>\w+)\] (?P<msg>.*)$')
|
||||
if err == null {
|
||||
.event_message = parsed.msg
|
||||
.metadata.level = parsed.level
|
||||
}
|
||||
# Storage logs may contain json objects so we parse them for completeness
|
||||
storage_logs:
|
||||
type: remap
|
||||
inputs:
|
||||
- router.storage
|
||||
source: |-
|
||||
.metadata.project = del(.project)
|
||||
.metadata.tenantId = .metadata.project
|
||||
parsed, err = parse_json(.event_message)
|
||||
if err == null {
|
||||
.event_message = parsed.msg
|
||||
.metadata.level = parsed.level
|
||||
.metadata.timestamp = parsed.time
|
||||
.metadata.context[0].host = parsed.hostname
|
||||
.metadata.context[0].pid = parsed.pid
|
||||
}
|
||||
# Postgres logs some messages to stderr which we map to warning severity level
|
||||
db_logs:
|
||||
type: remap
|
||||
inputs:
|
||||
- router.db
|
||||
source: |-
|
||||
.metadata.host = "db-default"
|
||||
.metadata.parsed.timestamp = .timestamp
|
||||
|
||||
parsed, err = parse_regex(.event_message, r'.*(?P<level>INFO|NOTICE|WARNING|ERROR|LOG|FATAL|PANIC?):.*', numeric_groups: true)
|
||||
|
||||
if err != null || parsed == null {
|
||||
.metadata.parsed.error_severity = "info"
|
||||
}
|
||||
if parsed != null {
|
||||
.metadata.parsed.error_severity = parsed.level
|
||||
}
|
||||
if .metadata.parsed.error_severity == "info" {
|
||||
.metadata.parsed.error_severity = "log"
|
||||
}
|
||||
.metadata.parsed.error_severity = upcase!(.metadata.parsed.error_severity)
|
||||
|
||||
sinks:
|
||||
logflare_auth:
|
||||
type: 'http'
|
||||
inputs:
|
||||
- auth_logs
|
||||
encoding:
|
||||
codec: 'json'
|
||||
method: 'post'
|
||||
request:
|
||||
retry_max_duration_secs: 10
|
||||
uri: 'http://analytics:4000/api/logs?source_name=gotrue.logs.prod&api_key=${LOGFLARE_API_KEY?LOGFLARE_API_KEY is required}'
|
||||
logflare_realtime:
|
||||
type: 'http'
|
||||
inputs:
|
||||
- realtime_logs
|
||||
encoding:
|
||||
codec: 'json'
|
||||
method: 'post'
|
||||
request:
|
||||
retry_max_duration_secs: 10
|
||||
uri: 'http://analytics:4000/api/logs?source_name=realtime.logs.prod&api_key=${LOGFLARE_API_KEY?LOGFLARE_API_KEY is required}'
|
||||
logflare_rest:
|
||||
type: 'http'
|
||||
inputs:
|
||||
- rest_logs
|
||||
encoding:
|
||||
codec: 'json'
|
||||
method: 'post'
|
||||
request:
|
||||
retry_max_duration_secs: 10
|
||||
uri: 'http://analytics:4000/api/logs?source_name=postgREST.logs.prod&api_key=${LOGFLARE_API_KEY?LOGFLARE_API_KEY is required}'
|
||||
logflare_db:
|
||||
type: 'http'
|
||||
inputs:
|
||||
- db_logs
|
||||
encoding:
|
||||
codec: 'json'
|
||||
method: 'post'
|
||||
request:
|
||||
retry_max_duration_secs: 10
|
||||
# We must route the sink through kong because ingesting logs before logflare is fully initialised will
|
||||
# lead to broken queries from studio. This works by the assumption that containers are started in the
|
||||
# following order: vector > db > logflare > kong
|
||||
uri: 'http://kong:8000/analytics/v1/api/logs?source_name=postgres.logs&api_key=${LOGFLARE_API_KEY?LOGFLARE_API_KEY is required}'
|
||||
logflare_functions:
|
||||
type: 'http'
|
||||
inputs:
|
||||
- router.functions
|
||||
encoding:
|
||||
codec: 'json'
|
||||
method: 'post'
|
||||
request:
|
||||
retry_max_duration_secs: 10
|
||||
uri: 'http://analytics:4000/api/logs?source_name=deno-relay-logs&api_key=${LOGFLARE_API_KEY?LOGFLARE_API_KEY is required}'
|
||||
logflare_storage:
|
||||
type: 'http'
|
||||
inputs:
|
||||
- storage_logs
|
||||
encoding:
|
||||
codec: 'json'
|
||||
method: 'post'
|
||||
request:
|
||||
retry_max_duration_secs: 10
|
||||
uri: 'http://analytics:4000/api/logs?source_name=storage.logs.prod.2&api_key=${LOGFLARE_API_KEY?LOGFLARE_API_KEY is required}'
|
||||
logflare_kong:
|
||||
type: 'http'
|
||||
inputs:
|
||||
- kong_logs
|
||||
- kong_err
|
||||
encoding:
|
||||
codec: 'json'
|
||||
method: 'post'
|
||||
request:
|
||||
retry_max_duration_secs: 10
|
||||
uri: 'http://analytics:4000/api/logs?source_name=cloudflare.logs.prod&api_key=${LOGFLARE_API_KEY?LOGFLARE_API_KEY is required}'
|
||||
|
||||
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
secret_key: ${password:30}
|
||||
postgres_password: ${password:30}
|
||||
redis_password: ${password:30}
|
||||
mapbox_api_key: ""
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: superset
|
||||
port: 8088
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
SECRET_KEY: ${secret_key}
|
||||
MAPBOX_API_KEY: ${mapbox_api_key}
|
||||
POSTGRES_DB: "superset"
|
||||
POSTGRES_USER: "superset"
|
||||
POSTGRES_PASSWORD: ${postgres_password}
|
||||
REDIS_PASSWORD: ${redis_password}
|
||||
|
||||
mounts:
|
||||
- filePath: ./superset/superset_config.py
|
||||
content: |
|
||||
"""
|
||||
For more configuration options, see:
|
||||
- https://superset.apache.org/docs/configuration/configuring-superset
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
SECRET_KEY = os.getenv("SECRET_KEY")
|
||||
MAPBOX_API_KEY = os.getenv("MAPBOX_API_KEY", "")
|
||||
|
||||
CACHE_CONFIG = {
|
||||
"CACHE_TYPE": "RedisCache",
|
||||
"CACHE_DEFAULT_TIMEOUT": 300,
|
||||
"CACHE_KEY_PREFIX": "superset_",
|
||||
"CACHE_REDIS_HOST": "redis",
|
||||
"CACHE_REDIS_PORT": 6379,
|
||||
"CACHE_REDIS_DB": 1,
|
||||
"CACHE_REDIS_URL": f"redis://:{os.getenv('REDIS_PASSWORD')}@{os.getenv('REDIS_HOST')}:6379/1",
|
||||
}
|
||||
|
||||
FILTER_STATE_CACHE_CONFIG = {**CACHE_CONFIG, "CACHE_KEY_PREFIX": "superset_filter_"}
|
||||
EXPLORE_FORM_DATA_CACHE_CONFIG = {**CACHE_CONFIG, "CACHE_KEY_PREFIX": "superset_explore_form_"}
|
||||
|
||||
SQLALCHEMY_TRACK_MODIFICATIONS = True
|
||||
SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://{os.getenv('POSTGRES_USER')}:{os.getenv('POSTGRES_PASSWORD')}@{os.getenv('POSTGRES_HOST')}:5432/{os.getenv('POSTGRES_DB')}"
|
||||
|
||||
# Uncomment if you want to load example data (using "superset load_examples") at the
|
||||
# same location as your metadata postgresql instance. Otherwise, the default sqlite
|
||||
# will be used, which will not persist in volume when restarting superset by default.
|
||||
#SQLALCHEMY_EXAMPLES_URI = SQLALCHEMY_DATABASE_URI
|
||||
@@ -1,36 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_password: ${password}
|
||||
public_db_port: ${randomPort}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: teable
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
TEABLE_HOST: ${main_domain}
|
||||
TEABLE_DB_PORT: ${public_db_port}
|
||||
TIMEZONE: "UTC"
|
||||
# Postgres
|
||||
POSTGRES_HOST: "teable-db"
|
||||
POSTGRES_PORT: "5432"
|
||||
POSTGRES_DB: "teable"
|
||||
POSTGRES_USER: "teable"
|
||||
POSTGRES_PASSWORD: ${db_password}
|
||||
# App
|
||||
PUBLIC_ORIGIN: https://${main_domain}
|
||||
PRISMA_DATABASE_URL: postgresql://teable:${db_password}@teable-db:5432/teable
|
||||
PUBLIC_DATABASE_PROXY: ${TEABLE_HOST}:${TEABLE_DB_PORT}
|
||||
# Need to support sending emails to enable the following configurations
|
||||
# You need to modify the configuration according to the actual situation, otherwise it will not be able to send emails correctly.
|
||||
#BACKEND_MAIL_HOST: "smtp.teable.io"
|
||||
#BACKEND_MAIL_PORT: "465"
|
||||
#BACKEND_MAIL_SECURE: "true"
|
||||
#BACKEND_MAIL_SENDER: "noreply.teable.io"
|
||||
#BACKEND_MAIL_SENDER_NAME: "Teable"
|
||||
#BACKEND_MAIL_AUTH_USER: "username"
|
||||
#BACKEND_MAIL_AUTH_PASS: "password"
|
||||
|
||||
mounts: []
|
||||
@@ -1,26 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
jwt_secret: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: app
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
TOLGEE_HOST: ${main_domain}
|
||||
TOLGEE_AUTHENTICATION_ENABLED: "true"
|
||||
TOLGEE_AUTHENTICATION_INITIAL_PASSWORD: "admin"
|
||||
TOLGEE_AUTHENTICATION_INITIAL_USERNAME: "admin"
|
||||
TOLGEE_AUTHENTICATION_JWT_SECRET: ${jwt_secret}
|
||||
TOLGEE_MACHINE_TRANSLATION_GOOGLE_API_KEY: "my_google_api_key"
|
||||
TOLGEE_SMTP_AUTH: "true"
|
||||
TOLGEE_SMTP_FROM: "Tolgee <no-reply@mydomain.com>"
|
||||
TOLGEE_SMTPHOST: "email-smtp.regional-region.amazonaws.com"
|
||||
TOLGEE_SMTP_PASSWORD: "omg/my/password"
|
||||
TOLGEE_SMTP_PORT: "465"
|
||||
TOLGEE_SMTP_SSL_ENABLED: "true"
|
||||
TOLGEE_SMTP_USERNAME: "user@company.com"
|
||||
|
||||
mounts: []
|
||||
@@ -1,75 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
magic_link_secret: ${base64:16}
|
||||
session_secret: ${base64:16}
|
||||
encryption_key: ${base64:32}
|
||||
provider_secret: ${base64:32}
|
||||
coordinator_secret: ${base64:32}
|
||||
db_password: ${base64:24}
|
||||
db_user: "triggeruser"
|
||||
db_name: "triggerdb"
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: webapp
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
NODE_ENV: "production"
|
||||
RUNTIME_PLATFORM: "docker-compose"
|
||||
V3_ENABLED: "true"
|
||||
|
||||
# Domain configuration
|
||||
TRIGGER_DOMAIN: ${main_domain}
|
||||
TRIGGER_PROTOCOL: "http"
|
||||
|
||||
# Database configuration with secure credentials
|
||||
POSTGRES_USER: ${db_user}
|
||||
POSTGRES_PASSWORD: ${db_password}
|
||||
POSTGRES_DB: ${db_name}
|
||||
DATABASE_URL: postgresql://${db_user}:${db_password}@postgres:5432/${db_name}
|
||||
|
||||
# Secrets
|
||||
MAGIC_LINK_SECRET: ${magic_link_secret}
|
||||
SESSION_SECRET: ${session_secret}
|
||||
ENCRYPTION_KEY: ${encryption_key}
|
||||
PROVIDER_SECRET: ${provider_secret}
|
||||
COORDINATOR_SECRET: ${coordinator_secret}
|
||||
|
||||
# TRIGGER_TELEMETRY_DISABLED: "1"
|
||||
INTERNAL_OTEL_TRACE_DISABLED: "1"
|
||||
INTERNAL_OTEL_TRACE_LOGGING_ENABLED: "0"
|
||||
|
||||
DEFAULT_ORG_EXECUTION_CONCURRENCY_LIMIT: "300"
|
||||
DEFAULT_ENV_EXECUTION_CONCURRENCY_LIMIT: "100"
|
||||
|
||||
DIRECT_URL: ${DATABASE_URL}
|
||||
REDIS_HOST: "redis"
|
||||
REDIS_PORT: "6379"
|
||||
REDIS_TLS_DISABLED: "true"
|
||||
|
||||
# If this is set, emails that are not specified won't be able to log in
|
||||
# WHITELISTED_EMAILS: "authorized@yahoo.com|authorized@gmail.com"
|
||||
# Accounts with these emails will become admins when signing up and get access to the admin panel
|
||||
# ADMIN_EMAILS: "admin@example.com|another-admin@example.com"
|
||||
|
||||
# If this is set, your users will be able to log in via GitHub
|
||||
# AUTH_GITHUB_CLIENT_ID: ""
|
||||
# AUTH_GITHUB_CLIENT_SECRET: ""
|
||||
|
||||
# E-mail settings
|
||||
# Ensure the FROM_EMAIL matches what you setup with Resend.com
|
||||
# If these are not set, emails will be printed to the console
|
||||
# FROM_EMAIL: ""
|
||||
# REPLY_TO_EMAIL: ""
|
||||
# RESEND_API_KEY: ""
|
||||
|
||||
# Worker settings
|
||||
HTTP_SERVER_PORT: "9020"
|
||||
COORDINATOR_HOST: "127.0.0.1"
|
||||
COORDINATOR_PORT: ${HTTP_SERVER_PORT}
|
||||
# REGISTRY_HOST: ${DEPLOY_REGISTRY_HOST}
|
||||
# REGISTRY_NAMESPACE: ${DEPLOY_REGISTRY_NAMESPACE}
|
||||
|
||||
mounts: []
|
||||
@@ -1,12 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: trilium
|
||||
port: 8080
|
||||
host: ${main_domain}
|
||||
|
||||
env: {}
|
||||
|
||||
mounts: []
|
||||
@@ -1,21 +0,0 @@
|
||||
variables:
|
||||
main_domain: ${domain}
|
||||
db_password: ${password}
|
||||
db_user: "twenty"
|
||||
app_secret: ${base64:32}
|
||||
|
||||
config:
|
||||
domains:
|
||||
- serviceName: twenty-server
|
||||
port: 3000
|
||||
host: ${main_domain}
|
||||
|
||||
env:
|
||||
TWENTY_HOST: ${main_domain}
|
||||
DB_USER: ${db_user}
|
||||
DB_PASSWORD: ${db_password}
|
||||
APP_SECRET: ${app_secret}
|
||||
# Optional: Configure storage path
|
||||
# STORAGE_LOCAL_PATH: ".local-storage"
|
||||
|
||||
mounts: []
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user