Merge remote-tracking branch 'origin/canary' into add-jitsi-meet-template
# Conflicts: # meta.json
4
app/pnpm-workspace.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
packages:
|
||||
- .
|
||||
allowBuilds:
|
||||
esbuild: false
|
||||
@@ -13,7 +13,9 @@ const Navigation = () => {
|
||||
"https://api.github.com/repos/dokploy/dokploy"
|
||||
);
|
||||
const data = await response.json();
|
||||
setGithubStars(data.stargazers_count);
|
||||
setGithubStars(
|
||||
Number.isFinite(data.stargazers_count) ? data.stargazers_count : 0
|
||||
);
|
||||
} catch (error) {
|
||||
console.error("Error fetching GitHub stars:", error);
|
||||
}
|
||||
|
||||
1
blueprints/agent-zero/agent-zero.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="a" viewBox="0 0 3271 1440"><defs><style>.st0{fill:#dedede}</style></defs><path d="M1009.95 1209.53c-125.1-214.98-250.74-430.9-378.92-651.16-126.82 219.73-251.81 436.28-376.62 652.51H60.69c190.42-329.11 570.87-981.75 570.87-981.75s382.11 651.12 572.49 980.41h-194.1Z" class="st0"/><path d="M875.46 1210.46H383.92c32.72-56.91 64.4-111.99 95.81-166.62H781.8c30.62 54.46 61.09 108.66 93.67 166.62zm1622.92-202.23c19.52 29.84 37.9 57.94 58.46 89.39h-63.61c-18.29-24.88-38.17-51.91-57.71-78.49h-72.24v78.17h-51.11V828.44c30.03 0 58.71-.22 87.38.06 23.48.24 47.32-1.26 70.37 2.21 37.67 5.66 66.94 25.71 74.9 64.9 8.22 40.54 1.62 78.35-35.52 104.62-3.14 2.22-6.21 4.54-10.93 7.99h.01Zm-135.01-40.37c34 0 66.71 1.87 99.08-.66 21.47-1.67 30.97-17.92 31.56-39.77.61-22.88-9.01-40.56-30.99-42.73-32.8-3.23-66.15-.84-99.65-.84zM1674.39 829.9v38.37c-52.36 58.82-104.25 117.13-160.14 179.91h158.93v49.49h-227.62v-51.9c46.98-52.11 95.02-105.41 147.93-164.09h-147.28V829.9zm906.29-489.95c64.48 63.91 125.11 123.99 189.35 187.65V373.68h47.4v271.19c-64.19-62.94-125.05-122.59-190.04-186.3v162.44h-46.72V339.94h.01Zm195.02 692.31c13.79-6.85 33.51-15.76 45.41-21.65 41.44 55.26 105.07 42.53 132.33 18s35.44-59.98 25.2-95.47c-13.36-34.33-42.97-61.14-86.36-59.62-43.38 1.52-81.55 32.41-85.2 84.34h-50.32c-.57-50.11 36.27-109.35 94.12-126.75 72.77-21.89 144.89 13.23 172.07 83.77 25.18 65.37-5.74 138.6-72.21 171-60.69 29.59-140.17 6.97-175.1-53.61h.04Zm-811.82-622.07c-11.07 8.4-24.55 17.68-34.13 24.95-55.99-46.33-119.62-30.88-142.33 27.28-13.63 38.17 6.27 88.2 48.2 103.62 36.45 13.4 76.82-.61 87.32-31.48-8.66-2.61-17.29-5.23-28.25-8.54-.93-12.84-1.85-25.67-2.96-40.9h96.82c7.25 56.02-37.39 118.12-94.41 132.17-63.06 15.54-129.35-19.2-152.31-79.83-22.64-59.76 4.81-131.25 61.88-161.16 55.93-29.3 126.75-15.37 160.17 33.88Zm-531.9-55.25c48.2 92.28 93.04 178.13 139.88 267.84h-53.47c-27.89-50.55-56.47-102.34-86.73-157.13-28.93 54.29-56.1 105.29-83.82 157.31h-54.54c45.87-88.68 90.79-175.5 138.65-268.02h.01Zm1642.09 60.65h-89.98v-46.22h226.22v46.24h-86.43v205.91h-49.82V415.59zM1947.89 878.34v65.77l63.09.91s-.03 30.03-.03 50.34c-25.69.89-53.1.45-78.35-5.53-21.38-5.05-36.73-22.63-37.67-46.05-1.5-36.98-.4-75.88-.4-115.24h216.51v49.81h-163.16Zm-52.88 218.57v-68.62c14.11-.65 27.22-1.25 40.97-1.87 3.47 7 3.06 19.81 9.96 20.09 6.88.29 107.67 0 164.04 0v50.41h-214.97Zm342.4-678.53v60.83l58.36.84s-.03 27.78-.03 46.57c-23.85.41-49.12.41-72.49-5.11-19.77-4.68-33.97-20.93-34.85-42.59-1.39-34.2-.37-70.19-.37-106.6h200.29v46.07H2237.4h.01Zm-48.91 202.2v-63.49c13.05-.6 25.18-1.15 37.9-1.73 3.2 6.48 2.83 18.32 9.2 18.59s99.6 0 151.75 0v46.63h-198.87.01Z" class="st0"/></svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
14
blueprints/agent-zero/docker-compose.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
agent-zero:
|
||||
image: agent0ai/agent-zero:v1.9
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- "80"
|
||||
environment:
|
||||
- AUTH_LOGIN=${AUTH_LOGIN}
|
||||
- AUTH_PASSWORD=${AUTH_PASSWORD}
|
||||
volumes:
|
||||
- agent-zero-data:/a0/usr
|
||||
volumes:
|
||||
agent-zero-data:
|
||||
16
blueprints/agent-zero/template.toml
Normal file
@@ -0,0 +1,16 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
auth_login = "${username}"
|
||||
auth_password = "${password:32}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"AUTH_LOGIN=${auth_login}",
|
||||
"AUTH_PASSWORD=${auth_password}",
|
||||
]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "agent-zero"
|
||||
port = 80
|
||||
host = "${main_domain}"
|
||||
@@ -8,12 +8,34 @@ x-logging: &x-logging
|
||||
max-size: "10m"
|
||||
services:
|
||||
appwrite:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.constraint-label-stack=appwrite
|
||||
- 'traefik.http.routers.appwrite-sites-wildcard.rule=HostRegexp(`^.+\.${_APP_DOMAIN_SITES}$$`)'
|
||||
- traefik.http.routers.appwrite-sites-wildcard.entrypoints=web
|
||||
- traefik.http.routers.appwrite-sites-wildcard.service=appwrite-wildcard
|
||||
- 'traefik.http.routers.appwrite-sites-wildcard-secure.rule=HostRegexp(`^.+\.${_APP_DOMAIN_SITES}$$`)'
|
||||
- traefik.http.routers.appwrite-sites-wildcard-secure.entrypoints=websecure
|
||||
- traefik.http.routers.appwrite-sites-wildcard-secure.tls=true
|
||||
- traefik.http.routers.appwrite-sites-wildcard-secure.service=appwrite-wildcard
|
||||
- 'traefik.http.routers.appwrite-functions-wildcard.rule=HostRegexp(`^.+\.${_APP_DOMAIN_FUNCTIONS}$$`)'
|
||||
- traefik.http.routers.appwrite-functions-wildcard.entrypoints=web
|
||||
- traefik.http.routers.appwrite-functions-wildcard.service=appwrite-wildcard
|
||||
- 'traefik.http.routers.appwrite-functions-wildcard-secure.rule=HostRegexp(`^.+\.${_APP_DOMAIN_FUNCTIONS}$$`)'
|
||||
- traefik.http.routers.appwrite-functions-wildcard-secure.entrypoints=websecure
|
||||
- traefik.http.routers.appwrite-functions-wildcard-secure.tls=true
|
||||
- traefik.http.routers.appwrite-functions-wildcard-secure.service=appwrite-wildcard
|
||||
- traefik.http.services.appwrite-wildcard.loadbalancer.server.port=80
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- doctor
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 12
|
||||
volumes:
|
||||
- appwrite-uploads:/storage/uploads:rw
|
||||
- appwrite-imports:/storage/imports:rw
|
||||
@@ -24,21 +46,25 @@ services:
|
||||
- appwrite-sites:/storage/sites:rw
|
||||
- appwrite-builds:/storage/builds:rw
|
||||
depends_on:
|
||||
- mariadb
|
||||
- redis
|
||||
# - clamav
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_EDITION
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_LOCALE
|
||||
- _APP_COMPRESSION_ENABLED
|
||||
- _APP_COMPRESSION_MIN_SIZE_BYTES
|
||||
- _APP_CONSOLE_WHITELIST_ROOT
|
||||
- _APP_CONSOLE_WHITELIST_EMAILS
|
||||
- _APP_CONSOLE_SESSION_ALERTS
|
||||
- _APP_CONSOLE_WHITELIST_IPS
|
||||
- _APP_CONSOLE_HOSTNAMES
|
||||
- _APP_CONSOLE_SCHEMA
|
||||
- _APP_SYSTEM_EMAIL_NAME
|
||||
- _APP_SYSTEM_EMAIL_ADDRESS
|
||||
- _APP_SYSTEM_TEAM_EMAIL
|
||||
- _APP_EMAIL_SECURITY
|
||||
- _APP_SYSTEM_RESPONSE_FORMAT
|
||||
- _APP_OPTIONS_ABUSE
|
||||
@@ -47,6 +73,8 @@ services:
|
||||
- _APP_OPTIONS_ROUTER_FORCE_HTTPS
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_DOMAIN
|
||||
- _APP_CONSOLE_DOMAIN
|
||||
- _APP_CONSOLE_TRUSTED_PROJECTS
|
||||
- _APP_DOMAIN_TARGET_CNAME
|
||||
- _APP_DOMAIN_TARGET_AAAA
|
||||
- _APP_DOMAIN_TARGET_A
|
||||
@@ -57,11 +85,18 @@ services:
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_DB_ADAPTER_VECTORSDB
|
||||
- _APP_DB_HOST_VECTORSDB
|
||||
- _APP_DB_PORT_VECTORSDB
|
||||
- _APP_DB_SCHEMA_VECTORSDB
|
||||
- _APP_DB_USER_VECTORSDB
|
||||
- _APP_DB_PASS_VECTORSDB
|
||||
- _APP_SMTP_HOST
|
||||
- _APP_SMTP_PORT
|
||||
- _APP_SMTP_SECURE
|
||||
@@ -108,8 +143,6 @@ services:
|
||||
- _APP_EXECUTOR_HOST
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_MAINTENANCE_INTERVAL
|
||||
- _APP_MAINTENANCE_DELAY
|
||||
- _APP_MAINTENANCE_START_TIME
|
||||
- _APP_MAINTENANCE_RETENTION_EXECUTION
|
||||
- _APP_MAINTENANCE_RETENTION_CACHE
|
||||
- _APP_MAINTENANCE_RETENTION_ABUSE
|
||||
@@ -119,6 +152,7 @@ services:
|
||||
- _APP_MAINTENANCE_RETENTION_SCHEDULES
|
||||
- _APP_SMS_PROVIDER
|
||||
- _APP_SMS_FROM
|
||||
- _APP_GRAPHQL_INTROSPECTION
|
||||
- _APP_GRAPHQL_MAX_BATCH_SIZE
|
||||
- _APP_GRAPHQL_MAX_COMPLEXITY
|
||||
- _APP_GRAPHQL_MAX_DEPTH
|
||||
@@ -131,16 +165,26 @@ services:
|
||||
- _APP_MIGRATIONS_FIREBASE_CLIENT_ID
|
||||
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET
|
||||
- _APP_ASSISTANT_OPENAI_API_KEY
|
||||
- _APP_CONSOLE_COUNTRIES_DENYLIST
|
||||
- _APP_EXPERIMENT_LOGGING_PROVIDER
|
||||
- _APP_EXPERIMENT_LOGGING_CONFIG
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
- _APP_DATABASE_SHARED_NAMESPACE
|
||||
- _APP_FUNCTIONS_CREATION_ABUSE_LIMIT
|
||||
- _APP_CUSTOM_DOMAIN_DENY_LIST
|
||||
- _APP_TRUSTED_HEADERS
|
||||
- _APP_MIGRATION_HOST
|
||||
|
||||
appwrite-console:
|
||||
<<: *x-logging
|
||||
image: appwrite/console:7.4.7
|
||||
image: appwrite/console:8.7.5
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.constraint-label-stack=appwrite"
|
||||
|
||||
appwrite-realtime:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: realtime
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
@@ -148,7 +192,7 @@ services:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.constraint-label-stack=appwrite"
|
||||
depends_on:
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
- redis
|
||||
environment:
|
||||
- _APP_ENV
|
||||
@@ -160,51 +204,69 @@ services:
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_DB_ADAPTER_VECTORSDB
|
||||
- _APP_DB_HOST_VECTORSDB
|
||||
- _APP_DB_PORT_VECTORSDB
|
||||
- _APP_DB_SCHEMA_VECTORSDB
|
||||
- _APP_DB_USER_VECTORSDB
|
||||
- _APP_DB_PASS_VECTORSDB
|
||||
- _APP_USAGE_STATS
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_LOGGING_CONFIG_REALTIME
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
- _APP_POOL_ADAPTER=swoole
|
||||
|
||||
appwrite-worker-audits:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-audits
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=1
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-worker-webhooks:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-webhooks
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=8
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_EMAIL_SECURITY
|
||||
- _APP_SYSTEM_SECURITY_EMAIL_ADDRESS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
@@ -215,15 +277,17 @@ services:
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_WEBHOOK_MAX_FAILED_ATTEMPTS
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-worker-deletes:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-deletes
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
volumes:
|
||||
- appwrite-uploads:/storage/uploads:rw
|
||||
- appwrite-cache:/storage/cache:rw
|
||||
@@ -233,12 +297,16 @@ services:
|
||||
- appwrite-certificates:/storage/certificates:rw
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=8
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
@@ -269,52 +337,64 @@ services:
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_EXECUTOR_SECRET
|
||||
- _APP_EXECUTOR_HOST
|
||||
- _APP_MAINTENANCE_RETENTION_ABUSE
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
- _APP_EMAIL_CERTIFICATES
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE
|
||||
- _APP_MAINTENANCE_RETENTION_EXECUTION
|
||||
- _APP_SYSTEM_SECURITY_EMAIL_ADDRESS
|
||||
- _APP_EMAIL_CERTIFICATES
|
||||
|
||||
appwrite-worker-databases:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-databases
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=1
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_DB_ADAPTER_VECTORSDB
|
||||
- _APP_DB_HOST_VECTORSDB
|
||||
- _APP_DB_PORT_VECTORSDB
|
||||
- _APP_DB_SCHEMA_VECTORSDB
|
||||
- _APP_DB_USER_VECTORSDB
|
||||
- _APP_DB_PASS_VECTORSDB
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_QUEUE_NAME
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-worker-builds:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-builds
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
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_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=8
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_EXECUTOR_SECRET
|
||||
- _APP_EXECUTOR_HOST
|
||||
@@ -322,6 +402,7 @@ services:
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
@@ -336,10 +417,13 @@ services:
|
||||
- _APP_COMPUTE_BUILD_TIMEOUT
|
||||
- _APP_COMPUTE_CPUS
|
||||
- _APP_COMPUTE_MEMORY
|
||||
- _APP_OPEN_RUNTIMES_NFT
|
||||
- _APP_COMPUTE_SIZE_LIMIT
|
||||
- _APP_OPTIONS_FORCE_HTTPS
|
||||
- _APP_OPTIONS_ROUTER_FORCE_HTTPS
|
||||
- _APP_DOMAIN
|
||||
- _APP_CONSOLE_DOMAIN
|
||||
- _APP_CONSOLE_TRUSTED_PROJECTS
|
||||
- _APP_STORAGE_DEVICE
|
||||
- _APP_STORAGE_S3_ACCESS_KEY
|
||||
- _APP_STORAGE_S3_SECRET
|
||||
@@ -362,22 +446,85 @@ services:
|
||||
- _APP_STORAGE_WASABI_SECRET
|
||||
- _APP_STORAGE_WASABI_REGION
|
||||
- _APP_STORAGE_WASABI_BUCKET
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
- _APP_DOMAIN_SITES
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
appwrite-worker-screenshots:
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-screenshots
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
volumes:
|
||||
- appwrite-uploads:/storage/uploads:rw
|
||||
environment:
|
||||
- _APP_BROWSER_HOST
|
||||
- _APP_WORKER_SCREENSHOTS_ROUTER
|
||||
- _APP_OPTIONS_FORCE_HTTPS
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=8
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
- _APP_STORAGE_DEVICE
|
||||
- _APP_STORAGE_S3_ACCESS_KEY
|
||||
- _APP_STORAGE_S3_SECRET
|
||||
- _APP_STORAGE_S3_REGION
|
||||
- _APP_STORAGE_S3_BUCKET
|
||||
- _APP_STORAGE_S3_ENDPOINT
|
||||
- _APP_STORAGE_DO_SPACES_ACCESS_KEY
|
||||
- _APP_STORAGE_DO_SPACES_SECRET
|
||||
- _APP_STORAGE_DO_SPACES_REGION
|
||||
- _APP_STORAGE_DO_SPACES_BUCKET
|
||||
- _APP_STORAGE_BACKBLAZE_ACCESS_KEY
|
||||
- _APP_STORAGE_BACKBLAZE_SECRET
|
||||
- _APP_STORAGE_BACKBLAZE_REGION
|
||||
- _APP_STORAGE_BACKBLAZE_BUCKET
|
||||
- _APP_STORAGE_LINODE_ACCESS_KEY
|
||||
- _APP_STORAGE_LINODE_SECRET
|
||||
- _APP_STORAGE_LINODE_REGION
|
||||
- _APP_STORAGE_LINODE_BUCKET
|
||||
- _APP_STORAGE_WASABI_ACCESS_KEY
|
||||
- _APP_STORAGE_WASABI_SECRET
|
||||
- _APP_STORAGE_WASABI_REGION
|
||||
- _APP_STORAGE_WASABI_BUCKET
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
appwrite-worker-certificates:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-certificates
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
volumes:
|
||||
- appwrite-config:/storage/config:rw
|
||||
- appwrite-certificates:/storage/certificates:rw
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=8
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_DOMAIN
|
||||
- _APP_DOMAIN_TARGET_CNAME
|
||||
@@ -386,30 +533,64 @@ services:
|
||||
- _APP_DOMAIN_TARGET_CAA
|
||||
- _APP_DNS
|
||||
- _APP_DOMAIN_FUNCTIONS
|
||||
- _APP_DOMAIN_SITES
|
||||
- _APP_EMAIL_CERTIFICATES
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-worker-functions:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
entrypoint: worker-functions
|
||||
appwrite-worker-executions:
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-executions
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=8
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-worker-functions:
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-functions
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
- redis
|
||||
- openruntimes-executor
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=8
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_DOMAIN
|
||||
- _APP_OPTIONS_FORCE_HTTPS
|
||||
@@ -417,6 +598,7 @@ services:
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
@@ -433,9 +615,11 @@ services:
|
||||
- _APP_DOCKER_HUB_USERNAME
|
||||
- _APP_DOCKER_HUB_PASSWORD
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_LOGGING_PROVIDER
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-worker-mails:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-mails
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
@@ -443,19 +627,23 @@ services:
|
||||
- redis
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=1
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_SYSTEM_EMAIL_NAME
|
||||
- _APP_SYSTEM_EMAIL_ADDRESS
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_SMTP_HOST
|
||||
- _APP_SMTP_PORT
|
||||
- _APP_SMTP_SECURE
|
||||
@@ -464,9 +652,10 @@ services:
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_DOMAIN
|
||||
- _APP_OPTIONS_FORCE_HTTPS
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-worker-messaging:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-messaging
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
@@ -476,12 +665,16 @@ services:
|
||||
- redis
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=1
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
@@ -490,6 +683,7 @@ services:
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_SMS_FROM
|
||||
- _APP_SMS_PROVIDER
|
||||
- _APP_SMS_PROJECTS_DENY_LIST
|
||||
- _APP_STORAGE_DEVICE
|
||||
- _APP_STORAGE_S3_ACCESS_KEY
|
||||
- _APP_STORAGE_S3_SECRET
|
||||
@@ -512,19 +706,24 @@ services:
|
||||
- _APP_STORAGE_WASABI_SECRET
|
||||
- _APP_STORAGE_WASABI_REGION
|
||||
- _APP_STORAGE_WASABI_BUCKET
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-worker-migrations:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-migrations
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- appwrite-imports:/storage/imports:rw
|
||||
- appwrite-uploads:/storage/uploads:rw
|
||||
depends_on:
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=1
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_DOMAIN
|
||||
- _APP_DOMAIN_TARGET_CNAME
|
||||
@@ -537,6 +736,7 @@ services:
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
@@ -545,17 +745,22 @@ services:
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_MIGRATIONS_FIREBASE_CLIENT_ID
|
||||
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
- _APP_OPTIONS_FORCE_HTTPS
|
||||
- _APP_MIGRATION_HOST
|
||||
|
||||
appwrite-task-maintenance:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: maintenance
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
- redis
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_DOMAIN
|
||||
- _APP_DOMAIN_TARGET_CNAME
|
||||
- _APP_DOMAIN_TARGET_AAAA
|
||||
@@ -568,6 +773,7 @@ services:
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
@@ -581,19 +787,58 @@ services:
|
||||
- _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE
|
||||
- _APP_MAINTENANCE_RETENTION_USAGE_HOURLY
|
||||
- _APP_MAINTENANCE_RETENTION_SCHEDULES
|
||||
- _APP_MAINTENANCE_START_TIME
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-task-interval:
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: interval
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
- redis
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_DOMAIN
|
||||
- _APP_DOMAIN_TARGET_CNAME
|
||||
- _APP_DOMAIN_TARGET_AAAA
|
||||
- _APP_DOMAIN_TARGET_A
|
||||
- _APP_DOMAIN_TARGET_CAA
|
||||
- _APP_DNS
|
||||
- _APP_DOMAIN_FUNCTIONS
|
||||
- _APP_DOMAIN_SITES
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
- _APP_INTERVAL_DOMAIN_VERIFICATION
|
||||
- _APP_INTERVAL_CLEANUP_STALE_EXECUTIONS
|
||||
|
||||
appwrite-task-stats-resources:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: stats-resources
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
@@ -609,42 +854,21 @@ services:
|
||||
- _APP_STATS_RESOURCES_INTERVAL
|
||||
|
||||
appwrite-worker-stats-resources:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-stats-resources
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_USAGE_STATS
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_STATS_RESOURCES_INTERVAL
|
||||
|
||||
appwrite-worker-stats-usage:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
entrypoint: worker-stats-usage
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=1
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
@@ -657,91 +881,145 @@ services:
|
||||
- _APP_USAGE_STATS
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_USAGE_AGGREGATION_INTERVAL
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-worker-stats-usage:
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: worker-stats-usage
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKERS_NUM=1
|
||||
- _APP_WORKER_MAX_COROUTINES=1
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_USAGE_STATS
|
||||
- _APP_LOGGING_CONFIG
|
||||
- _APP_USAGE_AGGREGATION_INTERVAL
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-task-scheduler-functions:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: schedule-functions
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
- redis
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_OPTIONS_FORCE_HTTPS
|
||||
- _APP_DOMAIN
|
||||
- _APP_CONSOLE_DOMAIN
|
||||
- _APP_DOMAIN_FUNCTIONS
|
||||
- _APP_DOMAIN_SITES
|
||||
- _APP_MIGRATION_HOST
|
||||
- _APP_CONSOLE_SCHEMA
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-task-scheduler-executions:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: schedule-executions
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
- redis
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_OPTIONS_FORCE_HTTPS
|
||||
- _APP_DOMAIN
|
||||
- _APP_CONSOLE_DOMAIN
|
||||
- _APP_DOMAIN_FUNCTIONS
|
||||
- _APP_DOMAIN_SITES
|
||||
- _APP_MIGRATION_HOST
|
||||
- _APP_CONSOLE_SCHEMA
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-task-scheduler-messages:
|
||||
image: appwrite/appwrite:1.8.0
|
||||
image: appwrite/appwrite:1.9.5
|
||||
entrypoint: schedule-messages
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- mariadb
|
||||
- ${_APP_DB_HOST:-mongodb}
|
||||
- redis
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKER_PER_CORE
|
||||
- _APP_POOL_ADAPTER
|
||||
- _APP_OPENSSL_KEY_V1
|
||||
- _APP_REDIS_HOST
|
||||
- _APP_REDIS_PORT
|
||||
- _APP_REDIS_USER
|
||||
- _APP_REDIS_PASS
|
||||
- _APP_DB_ADAPTER
|
||||
- _APP_DB_HOST
|
||||
- _APP_DB_PORT
|
||||
- _APP_DB_SCHEMA
|
||||
- _APP_DB_USER
|
||||
- _APP_DB_PASS
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
|
||||
appwrite-assistant:
|
||||
image: appwrite/assistant:0.8.3
|
||||
image: appwrite/assistant:0.8.4
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- _APP_ASSISTANT_OPENAI_API_KEY
|
||||
|
||||
appwrite-browser:
|
||||
image: appwrite/browser:0.2.4
|
||||
image: appwrite/browser:0.3.2
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
|
||||
openruntimes-executor:
|
||||
hostname: exc1
|
||||
hostname: openruntimes-executor
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
stop_signal: SIGINT
|
||||
image: openruntimes/executor:0.7.22
|
||||
image: openruntimes/executor:0.25.1
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- appwrite-builds:/storage/builds:rw
|
||||
@@ -751,7 +1029,10 @@ services:
|
||||
# It's not possible to share mount file between 2 containers without host mount (copying is too slow)
|
||||
- /tmp:/tmp:rw
|
||||
environment:
|
||||
- OPR_EXECUTOR_INACTIVE_TRESHOLD=$_APP_COMPUTE_INACTIVE_THRESHOLD
|
||||
- OPR_EXECUTOR_CONNECTION_STORAGE=local://localhost
|
||||
- OPR_EXECUTOR_CONNECTION_BUILD_CACHE_STORAGE=
|
||||
- OPR_EXECUTOR_IMAGES=$_APP_EXECUTOR_IMAGES
|
||||
- OPR_EXECUTOR_INACTIVE_THRESHOLD=$_APP_COMPUTE_INACTIVE_THRESHOLD
|
||||
- OPR_EXECUTOR_MAINTENANCE_INTERVAL=$_APP_COMPUTE_MAINTENANCE_INTERVAL
|
||||
- OPR_EXECUTOR_NETWORK=$_APP_COMPUTE_RUNTIMES_NETWORK
|
||||
- OPR_EXECUTOR_DOCKER_HUB_USERNAME=$_APP_DOCKER_HUB_USERNAME
|
||||
@@ -760,6 +1041,7 @@ services:
|
||||
- OPR_EXECUTOR_RUNTIMES=$_APP_FUNCTIONS_RUNTIMES,$_APP_SITES_RUNTIMES
|
||||
- OPR_EXECUTOR_SECRET=$_APP_EXECUTOR_SECRET
|
||||
- OPR_EXECUTOR_RUNTIME_VERSIONS=v5
|
||||
- OPEN_RUNTIMES_NFT=$_APP_OPEN_RUNTIMES_NFT
|
||||
- OPR_EXECUTOR_LOGGING_CONFIG=$_APP_LOGGING_CONFIG
|
||||
- OPR_EXECUTOR_STORAGE_DEVICE=$_APP_STORAGE_DEVICE
|
||||
- OPR_EXECUTOR_STORAGE_S3_ACCESS_KEY=$_APP_STORAGE_S3_ACCESS_KEY
|
||||
@@ -783,6 +1065,55 @@ services:
|
||||
- OPR_EXECUTOR_STORAGE_WASABI_SECRET=$_APP_STORAGE_WASABI_SECRET
|
||||
- OPR_EXECUTOR_STORAGE_WASABI_REGION=$_APP_STORAGE_WASABI_REGION
|
||||
- OPR_EXECUTOR_STORAGE_WASABI_BUCKET=$_APP_STORAGE_WASABI_BUCKET
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- 'curl -fsS -H "Authorization: Bearer $$OPR_EXECUTOR_SECRET" http://localhost/v1/health >/dev/null'
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 20
|
||||
start_period: 5s
|
||||
|
||||
mongodb:
|
||||
image: mongo:8.2.5
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- appwrite-mongodb:/data/db
|
||||
- appwrite-mongodb-keyfile:/data/keyfile
|
||||
- ../files/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
|
||||
- ../files/mongo-entrypoint.sh:/mongo-entrypoint.sh:ro
|
||||
environment:
|
||||
- MONGO_INITDB_ROOT_USERNAME=root
|
||||
- MONGO_INITDB_ROOT_PASSWORD=${_APP_DB_ROOT_PASS}
|
||||
- MONGO_INITDB_DATABASE=${_APP_DB_SCHEMA}
|
||||
- MONGO_INITDB_USERNAME=${_APP_DB_USER}
|
||||
- MONGO_INITDB_PASSWORD=${_APP_DB_PASS}
|
||||
entrypoint:
|
||||
- /bin/bash
|
||||
- /mongo-entrypoint.sh
|
||||
healthcheck:
|
||||
test: |
|
||||
bash -c "
|
||||
mongosh -u root -p \"$$MONGO_INITDB_ROOT_PASSWORD\" --authenticationDatabase admin --quiet --eval \"
|
||||
try {
|
||||
const hello = db.adminCommand({hello: 1});
|
||||
if (hello.isWritablePrimary) {
|
||||
quit(0);
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
try {
|
||||
rs.initiate({_id: 'rs0', members: [{_id: 0, host: 'mongodb:27017'}]});
|
||||
} catch (e) {}
|
||||
|
||||
quit(1);
|
||||
\" 2>/dev/null
|
||||
"
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
start_period: 30s
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.11 # fix issues when upgrading using: mysql_upgrade -u root -p
|
||||
@@ -799,7 +1130,7 @@ services:
|
||||
command: "mysqld --innodb-flush-method=fsync"
|
||||
|
||||
redis:
|
||||
image: redis:7.2.4-alpine
|
||||
image: redis:7.4.7-alpine
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
command: >
|
||||
@@ -818,6 +1149,8 @@ services:
|
||||
|
||||
volumes:
|
||||
appwrite-mariadb:
|
||||
appwrite-mongodb:
|
||||
appwrite-mongodb-keyfile:
|
||||
appwrite-redis:
|
||||
appwrite-cache:
|
||||
appwrite-uploads:
|
||||
|
||||
@@ -10,58 +10,69 @@ executor_secret = "${password:32}"
|
||||
[config]
|
||||
env = [
|
||||
"_APP_ENV=production",
|
||||
"_APP_EDITION=self-hosted",
|
||||
"_APP_LOCALE=en",
|
||||
"_APP_POOL_ADAPTER=stack",
|
||||
"_APP_WORKER_PER_CORE=6",
|
||||
"_APP_OPTIONS_ABUSE=enabled",
|
||||
"_APP_OPTIONS_FORCE_HTTPS=disabled",
|
||||
"_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=disabled",
|
||||
"_APP_OPTIONS_ROUTER_FORCE_HTTPS=disabled",
|
||||
"_APP_OPTIONS_ROUTER_PROTECTION=disabled",
|
||||
"_APP_OPENSSL_KEY_V1=${openssl_key}",
|
||||
"_APP_DOMAIN=${main_domain}",
|
||||
"_APP_CONSOLE_DOMAIN=${main_domain}",
|
||||
"_APP_CONSOLE_TRUSTED_PROJECTS=",
|
||||
"_APP_CUSTOM_DOMAIN_DENY_LIST=example.com,test.com,app.example.com",
|
||||
"_APP_DOMAIN_FUNCTIONS=${functions_domain}",
|
||||
"_APP_DOMAIN_SITES=${sites_domain}",
|
||||
"_APP_DOMAIN_TARGET=localhost",
|
||||
"_APP_DOMAIN_TARGET_CNAME=localhost",
|
||||
"_APP_DOMAIN_TARGET_AAAA=::1",
|
||||
"_APP_DOMAIN_TARGET_A=127.0.0.1",
|
||||
"_APP_DOMAIN_TARGET_CAA=",
|
||||
"_APP_DNS=8.8.8.8",
|
||||
"_APP_TRUSTED_HEADERS=x-forwarded-for",
|
||||
"_APP_CONSOLE_WHITELIST_ROOT=enabled",
|
||||
"_APP_CONSOLE_WHITELIST_EMAILS=",
|
||||
"_APP_CONSOLE_WHITELIST_IPS=",
|
||||
"_APP_CONSOLE_HOSTNAMES=",
|
||||
"_APP_CONSOLE_SCHEMA=appwriteio",
|
||||
"_APP_CONSOLE_SESSION_ALERTS=disabled",
|
||||
"_APP_CONSOLE_COUNTRIES_DENYLIST=",
|
||||
"_APP_SYSTEM_EMAIL_NAME=Appwrite",
|
||||
"_APP_SYSTEM_EMAIL_ADDRESS=noreply@appwrite.io",
|
||||
"_APP_SYSTEM_TEAM_EMAIL=team@appwrite.io",
|
||||
"_APP_SYSTEM_RESPONSE_FORMAT=",
|
||||
"_APP_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_COMPRESSION_ENABLED=enabled",
|
||||
"_APP_COMPRESSION_MIN_SIZE_BYTES=1024",
|
||||
"_APP_USAGE_STATS=enabled",
|
||||
"_APP_USAGE_AGGREGATION_INTERVAL=30",
|
||||
"_APP_STATS_RESOURCES_INTERVAL=30",
|
||||
"_APP_LOGGING_PROVIDER=",
|
||||
"_APP_LOGGING_CONFIG=",
|
||||
"_APP_LOGGING_CONFIG_REALTIME=",
|
||||
"_APP_EXPERIMENT_LOGGING_PROVIDER=",
|
||||
"_APP_EXPERIMENT_LOGGING_CONFIG=",
|
||||
"_APP_REDIS_HOST=redis",
|
||||
"_APP_REDIS_PORT=6379",
|
||||
"_APP_REDIS_USER=",
|
||||
"_APP_REDIS_PASS=",
|
||||
"_APP_DB_HOST=mariadb",
|
||||
"_APP_DB_PORT=3306",
|
||||
"_APP_DB_ADAPTER=mongodb",
|
||||
"_APP_DB_HOST=mongodb",
|
||||
"_APP_DB_PORT=27017",
|
||||
"_APP_DB_SCHEMA=appwrite",
|
||||
"_APP_DB_USER=user",
|
||||
"_APP_DB_PASS=${db_user_pw}",
|
||||
"_APP_DB_ROOT_PASS=${db_root_pw}",
|
||||
"_APP_INFLUXDB_HOST=influxdb",
|
||||
"_APP_INFLUXDB_PORT=8086",
|
||||
"_APP_STATSD_HOST=telegraf",
|
||||
"_APP_STATSD_PORT=8125",
|
||||
"_APP_DATABASE_SHARED_TABLES=",
|
||||
"_APP_DATABASE_SHARED_NAMESPACE=",
|
||||
"_APP_DB_ADAPTER_VECTORSDB=",
|
||||
"_APP_DB_HOST_VECTORSDB=",
|
||||
"_APP_DB_PORT_VECTORSDB=",
|
||||
"_APP_DB_SCHEMA_VECTORSDB=",
|
||||
"_APP_DB_USER_VECTORSDB=",
|
||||
"_APP_DB_PASS_VECTORSDB=",
|
||||
"_APP_SMTP_HOST=",
|
||||
"_APP_SMTP_PORT=",
|
||||
"_APP_SMTP_SECURE=",
|
||||
@@ -69,6 +80,7 @@ env = [
|
||||
"_APP_SMTP_PASSWORD=",
|
||||
"_APP_SMS_PROVIDER=",
|
||||
"_APP_SMS_FROM=",
|
||||
"_APP_SMS_PROJECTS_DENY_LIST=",
|
||||
"_APP_STORAGE_LIMIT=30000000",
|
||||
"_APP_STORAGE_PREVIEW_LIMIT=20000000",
|
||||
"_APP_STORAGE_ANTIVIRUS=disabled",
|
||||
@@ -96,45 +108,27 @@ env = [
|
||||
"_APP_STORAGE_WASABI_SECRET=",
|
||||
"_APP_STORAGE_WASABI_REGION=eu-central-1",
|
||||
"_APP_STORAGE_WASABI_BUCKET=",
|
||||
"_APP_FUNCTIONS_SIZE_LIMIT=30000000",
|
||||
"_APP_COMPUTE_SIZE_LIMIT=30000000",
|
||||
"_APP_FUNCTIONS_BUILD_SIZE_LIMIT=2000000000",
|
||||
"_APP_FUNCTIONS_TIMEOUT=900",
|
||||
"_APP_FUNCTIONS_BUILD_TIMEOUT=900",
|
||||
"_APP_COMPUTE_BUILD_TIMEOUT=900",
|
||||
"_APP_FUNCTIONS_CONTAINERS=10",
|
||||
"_APP_FUNCTIONS_CPUS=0",
|
||||
"_APP_COMPUTE_CPUS=0",
|
||||
"_APP_FUNCTIONS_MEMORY=0",
|
||||
"_APP_COMPUTE_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=${executor_secret}",
|
||||
"_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",
|
||||
"_APP_COMPUTE_INACTIVE_THRESHOLD=60",
|
||||
"DOCKERHUB_PULL_USERNAME=",
|
||||
"DOCKERHUB_PULL_PASSWORD=",
|
||||
"DOCKERHUB_PULL_EMAIL=",
|
||||
"OPEN_RUNTIMES_NETWORK=appwrite_runtimes",
|
||||
"_APP_FUNCTIONS_RUNTIMES_NETWORK=dokploy-network",
|
||||
"_APP_COMPUTE_MAINTENANCE_INTERVAL=3600",
|
||||
"_APP_COMPUTE_RUNTIMES_NETWORK=dokploy-network",
|
||||
"_APP_FUNCTIONS_TIMEOUT=900",
|
||||
"_APP_FUNCTIONS_CREATION_ABUSE_LIMIT=5000",
|
||||
"_APP_FUNCTIONS_RUNTIMES=node-22,python-3.12,php-8.3,ruby-3.3,dart-3.5,go-1.23,rust-1.83,bun-1.1,deno-1.46,java-21.0,dotnet-8.0",
|
||||
"_APP_SITES_TIMEOUT=900",
|
||||
"_APP_SITES_RUNTIMES=static-1,node-22",
|
||||
"_APP_EXECUTOR_SECRET=${executor_secret}",
|
||||
"_APP_EXECUTOR_HOST=http://openruntimes-executor/v1",
|
||||
"_APP_EXECUTOR_IMAGES=openruntimes/node:v5-22,openruntimes/python:v5-3.12,openruntimes/php:v5-8.3,openruntimes/static:v5-1",
|
||||
"_APP_OPEN_RUNTIMES_NFT=enabled",
|
||||
"_APP_BROWSER_HOST=http://appwrite-browser:3000/v1",
|
||||
"_APP_WORKER_SCREENSHOTS_ROUTER=http://appwrite",
|
||||
"_APP_DOCKER_HUB_USERNAME=",
|
||||
"_APP_DOCKER_HUB_PASSWORD=",
|
||||
"_APP_FUNCTIONS_MAINTENANCE_INTERVAL=3600",
|
||||
"_APP_COMPUTE_MAINTENANCE_INTERVAL=3600",
|
||||
"_APP_SITES_TIMEOUT=900",
|
||||
"_APP_SITES_RUNTIMES=static-1,node-22,flutter-3.29",
|
||||
"_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_START_TIME=00:00",
|
||||
"_APP_MAINTENANCE_RETENTION_CACHE=2592000",
|
||||
"_APP_MAINTENANCE_RETENTION_EXECUTION=1209600",
|
||||
@@ -143,14 +137,67 @@ env = [
|
||||
"_APP_MAINTENANCE_RETENTION_ABUSE=86400",
|
||||
"_APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000",
|
||||
"_APP_MAINTENANCE_RETENTION_SCHEDULES=86400",
|
||||
"_APP_INTERVAL_DOMAIN_VERIFICATION=120",
|
||||
"_APP_INTERVAL_CLEANUP_STALE_EXECUTIONS=300",
|
||||
"_APP_GRAPHQL_INTROSPECTION=enabled",
|
||||
"_APP_GRAPHQL_MAX_BATCH_SIZE=10",
|
||||
"_APP_GRAPHQL_MAX_COMPLEXITY=250",
|
||||
"_APP_GRAPHQL_MAX_DEPTH=3",
|
||||
"_APP_GRAPHQL_MAX_DEPTH=4",
|
||||
"_APP_WEBHOOK_MAX_FAILED_ATTEMPTS=10",
|
||||
"_APP_VCS_GITHUB_APP_NAME=",
|
||||
"_APP_VCS_GITHUB_PRIVATE_KEY=",
|
||||
"_APP_VCS_GITHUB_APP_ID=",
|
||||
"_APP_VCS_GITHUB_CLIENT_ID=",
|
||||
"_APP_VCS_GITHUB_CLIENT_SECRET=",
|
||||
"_APP_VCS_GITHUB_WEBHOOK_SECRET=",
|
||||
"_APP_MIGRATION_HOST=appwrite",
|
||||
"_APP_MIGRATIONS_FIREBASE_CLIENT_ID=",
|
||||
"_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=",
|
||||
"_APP_ASSISTANT_OPENAI_API_KEY=",
|
||||
]
|
||||
mounts = []
|
||||
|
||||
[[config.mounts]]
|
||||
filePath = "mongo-init.js"
|
||||
content = """// mongo-init.js
|
||||
|
||||
// Switch to the admin database
|
||||
const adminDb = db.getSiblingDB('admin');
|
||||
|
||||
// Get username and password from environment variables
|
||||
const username = process.env.MONGO_INITDB_USERNAME;
|
||||
const password = process.env.MONGO_INITDB_PASSWORD;
|
||||
const database = process.env.MONGO_INITDB_DATABASE;
|
||||
|
||||
// Create the user
|
||||
adminDb.createUser({
|
||||
user: username,
|
||||
pwd: password,
|
||||
roles: [
|
||||
{ role: 'readWrite', db: database }
|
||||
]
|
||||
});
|
||||
"""
|
||||
|
||||
[[config.mounts]]
|
||||
filePath = "mongo-entrypoint.sh"
|
||||
content = """#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Fix keyfile permissions if mounted from volume
|
||||
KEYFILE_PATH="/data/keyfile/mongo-keyfile"
|
||||
|
||||
if [ ! -f "$KEYFILE_PATH" ]; then
|
||||
echo "Generating random MongoDB keyfile..."
|
||||
mkdir -p /data/keyfile
|
||||
openssl rand -base64 756 > "$KEYFILE_PATH"
|
||||
fi
|
||||
|
||||
chmod 400 "$KEYFILE_PATH"
|
||||
chown mongodb:mongodb "$KEYFILE_PATH" 2>/dev/null || chown 999:999 "$KEYFILE_PATH"
|
||||
|
||||
# Use MongoDB's standard entrypoint with our command
|
||||
exec docker-entrypoint.sh mongod --replSet rs0 --bind_ip_all --auth --keyFile "$KEYFILE_PATH"
|
||||
"""
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "appwrite"
|
||||
|
||||
1
blueprints/arche/arche.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000" height="1000"><g clip-path="url(#SvgjsClipPath1152)"><rect width="1000" height="1000" fill="#000000"></rect><g transform="matrix(3.401360544217687,0,0,3.401360544217687,250.00000000000003,265.30612244897964)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="147" height="138" viewBox="0 0 147 138"><image width="147" height="138" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJMAAACKCAYAAACuPHhGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAZgSURBVHgB7Z3rddNAEIVHVBA6MB1AB04H6QCnAuiAQwehgogOoALUAXSAO0g6MBqzCvip1+zundX9zvEJIfkRS1efVrM760oCu91u0355FELGUVdVda//eCWEGMEwETMYJmIGw0TMYJiIGQwTMYNhImYwTMQMhomYwTARMxgmYgbDRMxgmIgZDBMxg2EiZjBMxAyGiZjBMBEzGCZiBsNEzGCYiBkMEzGDYSJmMEzEDIaJmMEwETMYJmIGw0TMYJiIGQwTMYNhImZUUgi73W7VfvktvnhuX2+qqnqWAijJTB/EHzft66MUQhFmClb60b5W4o9i7FSKmd6LzyApxdjJvZlaK+nJ+Cl+w6QUYacSzHQnvoOkFGGnEsykT3Ar8Y97O7k2U9hueiVl4N5Ors1UkJU6nlszvRanuDVTYVbquAnvyyVuzVSglTq2rZ3eiENcmqlQK3WsvNrJpZkKtlJH09rpVpzhzkyFW6lj3b7PtTjDnZkWYKUOd3ZyZaaFWKnDnZ283ebey7L4JI5wE6Zwla5lWbiykyczubpKDXHzvl2EaaFW6nBjJy9mWtpY6RgXdoIvDThtFIjBbVsqaAQYD2Za6ljpGPjjAG0mWukEXTy3FVDQzUQrHQJ9PGDNRCtdBNZOyGailc4Du7QX0ky00lVgGw9QzUQrXQa28QDOTLTSICDthGgmWqkfSDtBmcn5BhSpgbMTmplQN6D4JnjA2QnGTOBW0tajR8FbuQBlJyQzrQUzSHUoEn4VPKDshGQm1EaBfcU5bN2jf+ONYAFjJwgzATcKdFaScLK+CB4wdoIwE7qVum9op+tkNxOwlZrjCVVwO91JZrKbCdhKZ1c2Alfos294kdVMwFbaXloiG2zVCB7ZN7zIfZtDnTr5PPPnuci6F3q2MIFbqb72C8FajeDxNmdbVE4zebXS2N9LTbbjmiVMyFaSgfNwwU6/BI9sTZu5zITaVNmMrNUgTrEoWeyUvDQQrpofgsmoxfrARUzltkrctJnDTKhjpboa2fUBXMRUkh/npGYqyUodtNM/UpsJdaxUVxN70YKdOHaShGYCbxSYdQWX/N7GkNJMqGOlZu7BBp5iUZId9yRhClfuRjCxukWhFjGT1Z1SmQnVSr1TJ0MBnmJRkoxVo4+ZwMcT91ZhUkp8Wh1DCjMVb6WOYKetYBL9PEQNE/hYKVaxEbWIuQk1sWjENhNyq3esxspa/q7JRiRq40G0MIFbqY41fgCfYvkQ004xzYRspdiP8Q+CaaeobVFRwhSstBZM6thPNeBTLNHsFMtMqBtQKKmKi7VgEs1O5nUm8A0okn6GW3ss9DisBY8oTZsxzKTNgCvBJPWUB+oUSxQ7xTATalNllibFJdnJ1Ezgn1SZyxKoZQJzO5maiVY6T3tcngRzJaapnczMRCtdBdlOGzHCzEzIVmpf76qM282ArxM3s7aJmcCt1FSZ9y0Cn2Ix2/DCxEzAVlKir+MZwhLsNNtM4FaqEYKkBDt9F0xWFkt7Z5uJVhoO+ErM2bMDs8xEK40DfJ347MaDube5rJtL9YA6a486xaLMWjY0OUwhxW8Fk9m9cLEo2U5zzIS8+A3VSh3If9/k8zppAA4+kMy+6+wQgKdYlEkt5VPNhDxWQh6T/A9qEVOZZKfRZgJvqnRhJQW8iKmMttMUMyGPlZCv9gPAp1iU0ed5lJkcfH4uVJGyj2CnJ8FllJ3GmgnZSnBFyj7Au1iUURteDDYTrRQH8CdjZfBxHWMmWikC4EVMZfB5H2QmWikuDuz0esiasKFmQrZS4zlIigM7DWo86DWTAytNqtaiEVZgPAomgxoPhpgJ2UrbEoIU+Ca4W/EMaou6GibwbXEUL1MnvTgoYvZueNFnpiQba07EfBtBAB7EsZ0uholWSo93O10zE/K2OFvBfvqZw4PgctVO18K0EVzclwMuEezUCC4X7XQ2TOCNAkpxt7gjkN/fRTudrTOBty/p1Mm9FA7wVjzK2brTiZloJRjQ7bQ5/s8TM9FKOLTn4qfgdgCdrGo9MJMDK6F3nViD/H5PNrw4MBO4lZJuboqAg3XiB3Z6MROthIeDIqba6a775sVM4FZy03VijQM7vdwx9mbiExwuDtaJv7SU781EK2HjYE3Z3k6vQqpWgsvixkrHgH+gtLK3UwVeaVVcr++2wsE68eYPiYOoQetKl74AAAAASUVORK5CYII="></image></svg></g></g><defs><clipPath id="SvgjsClipPath1152"><rect width="1000" height="1000" x="0" y="0" rx="350" ry="350"></rect></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
102
blueprints/arche/docker-compose.yml
Normal file
@@ -0,0 +1,102 @@
|
||||
version: "3.8"
|
||||
|
||||
# Arche — AI workspace platform that spawns per-user OpenCode containers
|
||||
# via a Docker socket proxy.
|
||||
#
|
||||
# PRE-REQUISITES (run once on the VPS before deploying):
|
||||
# mkdir -p /opt/arche/kb-content /opt/arche/kb-config /opt/arche/users
|
||||
#
|
||||
# Optional (only needed to seed the Knowledge Base):
|
||||
# git init --bare --initial-branch=main /opt/arche/kb-content
|
||||
# git init --bare --initial-branch=main /opt/arche/kb-config
|
||||
#
|
||||
# POST-DEPLOY (set in Dokploy → Environment, then redeploy):
|
||||
# 1. Deploy this template once. Dokploy auto-creates a network for the
|
||||
# compose stack.
|
||||
# 2. SSH into the host and find the network name:
|
||||
# docker network ls --format '{{.Name}}' | grep arche
|
||||
# It looks like `<stack-name>_default` or similar.
|
||||
# 3. Add the env var OPENCODE_NETWORK=<that-network-name> and redeploy.
|
||||
# Without it, spawned user workspaces will fail to start.
|
||||
#
|
||||
# IMAGE ARCHITECTURE:
|
||||
# Default tags target linux/amd64. For ARM64 hosts (Apple Silicon,
|
||||
# Ampere, Graviton), override both images to the `-arm64` variants in
|
||||
# Dokploy → Environment:
|
||||
# ARCHE_WEB_IMAGE=ghcr.io/peaberry-studio/arche/web:latest-arm64
|
||||
# ARCHE_WORKSPACE_IMAGE=ghcr.io/peaberry-studio/arche/workspace:latest-arm64
|
||||
|
||||
services:
|
||||
web:
|
||||
image: ${ARCHE_WEB_IMAGE:-ghcr.io/peaberry-studio/arche/web:latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
docker-socket-proxy:
|
||||
condition: service_started
|
||||
environment:
|
||||
ARCHE_DOMAIN: ${ARCHE_DOMAIN}
|
||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/arche?schema=public
|
||||
|
||||
ARCHE_SESSION_PEPPER: ${ARCHE_SESSION_PEPPER}
|
||||
ARCHE_ENCRYPTION_KEY: ${ARCHE_ENCRYPTION_KEY}
|
||||
ARCHE_INTERNAL_TOKEN: ${ARCHE_INTERNAL_TOKEN}
|
||||
ARCHE_GATEWAY_TOKEN_SECRET: ${ARCHE_GATEWAY_TOKEN_SECRET}
|
||||
ARCHE_CONNECTOR_OAUTH_STATE_SECRET: ${ARCHE_CONNECTOR_OAUTH_STATE_SECRET}
|
||||
|
||||
ARCHE_GATEWAY_TOKEN_TTL_SECONDS: "86400"
|
||||
ARCHE_GATEWAY_BASE_URL: http://web:3000
|
||||
ARCHE_PUBLIC_BASE_URL: https://${ARCHE_DOMAIN}
|
||||
ARCHE_SESSION_TTL_DAYS: "7"
|
||||
ARCHE_COOKIE_SECURE: "true"
|
||||
|
||||
ARCHE_SEED_ADMIN_EMAIL: ${ARCHE_SEED_ADMIN_EMAIL}
|
||||
ARCHE_SEED_ADMIN_PASSWORD: ${ARCHE_SEED_ADMIN_PASSWORD}
|
||||
ARCHE_SEED_ADMIN_SLUG: ${ARCHE_SEED_ADMIN_SLUG:-admin}
|
||||
|
||||
CONTAINER_PROXY_HOST: docker-socket-proxy
|
||||
CONTAINER_PROXY_PORT: "2375"
|
||||
OPENCODE_IMAGE: ${ARCHE_WORKSPACE_IMAGE:-ghcr.io/peaberry-studio/arche/workspace:latest}
|
||||
OPENCODE_NETWORK: ${OPENCODE_NETWORK}
|
||||
|
||||
KB_CONTENT_HOST_PATH: /opt/arche/kb-content
|
||||
KB_CONFIG_HOST_PATH: /opt/arche/kb-config
|
||||
ARCHE_USERS_PATH: /opt/arche/users
|
||||
expose:
|
||||
- "3000"
|
||||
volumes:
|
||||
- /opt/arche/kb-content:/kb-content
|
||||
- /opt/arche/kb-config:/kb-config
|
||||
- /opt/arche/users:/opt/arche/users
|
||||
|
||||
postgres:
|
||||
image: postgres:16
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: arche
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
docker-socket-proxy:
|
||||
image: ghcr.io/tecnativa/docker-socket-proxy:master
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
CONTAINERS: 1
|
||||
NETWORKS: 1
|
||||
IMAGES: 1
|
||||
INFO: 1
|
||||
POST: 1
|
||||
VOLUMES: 1
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
33
blueprints/arche/template.toml
Normal file
@@ -0,0 +1,33 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
postgres_password = "${password:32}"
|
||||
session_pepper = "${base64:32}"
|
||||
encryption_key = "${base64:32}"
|
||||
internal_token = "${base64:32}"
|
||||
gateway_token_secret = "${base64:32}"
|
||||
connector_oauth_state_secret = "${base64:32}"
|
||||
seed_admin_email = "${email}"
|
||||
seed_admin_password = "${password:16}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"ARCHE_DOMAIN=${main_domain}",
|
||||
"POSTGRES_PASSWORD=${postgres_password}",
|
||||
"ARCHE_SESSION_PEPPER=${session_pepper}",
|
||||
"ARCHE_ENCRYPTION_KEY=${encryption_key}",
|
||||
"ARCHE_INTERNAL_TOKEN=${internal_token}",
|
||||
"ARCHE_GATEWAY_TOKEN_SECRET=${gateway_token_secret}",
|
||||
"ARCHE_CONNECTOR_OAUTH_STATE_SECRET=${connector_oauth_state_secret}",
|
||||
"ARCHE_SEED_ADMIN_EMAIL=${seed_admin_email}",
|
||||
"ARCHE_SEED_ADMIN_PASSWORD=${seed_admin_password}",
|
||||
"ARCHE_SEED_ADMIN_SLUG=admin",
|
||||
"ARCHE_WEB_IMAGE=ghcr.io/peaberry-studio/arche/web:latest",
|
||||
"ARCHE_WORKSPACE_IMAGE=ghcr.io/peaberry-studio/arche/workspace:latest",
|
||||
"OPENCODE_NETWORK=",
|
||||
]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "web"
|
||||
port = 3000
|
||||
host = "${main_domain}"
|
||||
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
autobase-console:
|
||||
image: autobase/console:2.5.2
|
||||
image: autobase/console:2.7.2
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80"
|
||||
@@ -10,8 +10,10 @@ services:
|
||||
- PG_CONSOLE_AUTHORIZATION_TOKEN=${PG_CONSOLE_AUTHORIZATION_TOKEN}
|
||||
volumes:
|
||||
- console_postgres:/var/lib/postgresql
|
||||
- dbdesk_studio_data:/opt/dbdesk-studio
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /tmp/ansible:/tmp/ansible
|
||||
|
||||
volumes:
|
||||
console_postgres:
|
||||
dbdesk_studio_data:
|
||||
|
||||
16
blueprints/billmora/billmora.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #7267ef;
|
||||
stroke-width: 0px;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="cls-1" d="m384,35H53v367h75v75h156c96.65,0,175-78.35,175-175V110h-75V35Zm0,266.98c0,55.23-44.77,100-100,100h-156V110.02h256v191.96Z"/>
|
||||
<rect class="cls-1" x="153" y="160" width="100" height="20"/>
|
||||
<rect class="cls-1" x="153" y="295" width="75" height="20"/>
|
||||
<rect class="cls-1" x="153" y="205" width="180" height="20"/>
|
||||
<rect class="cls-1" x="153" y="250" width="140" height="20"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 663 B |
130
blueprints/billmora/docker-compose.yml
Normal file
@@ -0,0 +1,130 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
billmora-app:
|
||||
image: ghcr.io/billmora/billmora:latest
|
||||
restart: always
|
||||
environment:
|
||||
- APP_NAME=${APP_NAME}
|
||||
- APP_ENV=${APP_ENV}
|
||||
- APP_KEY=${APP_KEY}
|
||||
- APP_URL=${APP_URL}
|
||||
- DB_CONNECTION=${DB_CONNECTION}
|
||||
- DB_HOST=${DB_HOST}
|
||||
- DB_PORT=${DB_PORT}
|
||||
- DB_DATABASE=${DB_DATABASE}
|
||||
- DB_USERNAME=${DB_USERNAME}
|
||||
- DB_PASSWORD=${DB_PASSWORD}
|
||||
- REDIS_HOST=${REDIS_HOST}
|
||||
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
||||
- REDIS_PORT=${REDIS_PORT}
|
||||
- SESSION_DRIVER=${SESSION_DRIVER}
|
||||
- CACHE_STORE=${CACHE_STORE}
|
||||
- QUEUE_CONNECTION=${QUEUE_CONNECTION}
|
||||
- AUTORUN_ENABLED=true
|
||||
- AUTORUN_LARAVEL_MIGRATION=true
|
||||
- AUTORUN_LARAVEL_MIGRATION_FORCE=true
|
||||
- AUTORUN_LARAVEL_MIGRATION_SEED=true
|
||||
- AUTORUN_LARAVEL_STORAGE_LINK=true
|
||||
volumes:
|
||||
- billmora-storage:/var/www/html/storage
|
||||
depends_on:
|
||||
billmora-db:
|
||||
condition: service_healthy
|
||||
billmora-redis:
|
||||
condition: service_healthy
|
||||
|
||||
billmora-worker:
|
||||
image: ghcr.io/billmora/billmora:latest
|
||||
restart: always
|
||||
command: ["php", "artisan", "queue:work", "--sleep=3", "--tries=3", "--max-time=3600"]
|
||||
environment:
|
||||
- APP_NAME=${APP_NAME}
|
||||
- APP_ENV=${APP_ENV}
|
||||
- APP_KEY=${APP_KEY}
|
||||
- APP_URL=${APP_URL}
|
||||
- DB_CONNECTION=${DB_CONNECTION}
|
||||
- DB_HOST=${DB_HOST}
|
||||
- DB_PORT=${DB_PORT}
|
||||
- DB_DATABASE=${DB_DATABASE}
|
||||
- DB_USERNAME=${DB_USERNAME}
|
||||
- DB_PASSWORD=${DB_PASSWORD}
|
||||
- REDIS_HOST=${REDIS_HOST}
|
||||
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
||||
- REDIS_PORT=${REDIS_PORT}
|
||||
- SESSION_DRIVER=${SESSION_DRIVER}
|
||||
- CACHE_STORE=${CACHE_STORE}
|
||||
- QUEUE_CONNECTION=${QUEUE_CONNECTION}
|
||||
- AUTORUN_ENABLED=false
|
||||
volumes:
|
||||
- billmora-storage:/var/www/html/storage
|
||||
depends_on:
|
||||
billmora-db:
|
||||
condition: service_healthy
|
||||
billmora-redis:
|
||||
condition: service_healthy
|
||||
|
||||
billmora-scheduler:
|
||||
image: ghcr.io/billmora/billmora:latest
|
||||
restart: always
|
||||
command: ["/bin/sh", "-c", "while true; do php artisan schedule:run >> /dev/null 2>&1; sleep 60; done"]
|
||||
environment:
|
||||
- APP_NAME=${APP_NAME}
|
||||
- APP_ENV=${APP_ENV}
|
||||
- APP_KEY=${APP_KEY}
|
||||
- APP_URL=${APP_URL}
|
||||
- DB_CONNECTION=${DB_CONNECTION}
|
||||
- DB_HOST=${DB_HOST}
|
||||
- DB_PORT=${DB_PORT}
|
||||
- DB_DATABASE=${DB_DATABASE}
|
||||
- DB_USERNAME=${DB_USERNAME}
|
||||
- DB_PASSWORD=${DB_PASSWORD}
|
||||
- REDIS_HOST=${REDIS_HOST}
|
||||
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
||||
- REDIS_PORT=${REDIS_PORT}
|
||||
- SESSION_DRIVER=${SESSION_DRIVER}
|
||||
- CACHE_STORE=${CACHE_STORE}
|
||||
- QUEUE_CONNECTION=${QUEUE_CONNECTION}
|
||||
- AUTORUN_ENABLED=false
|
||||
volumes:
|
||||
- billmora-storage:/var/www/html/storage
|
||||
depends_on:
|
||||
billmora-db:
|
||||
condition: service_healthy
|
||||
billmora-redis:
|
||||
condition: service_healthy
|
||||
|
||||
billmora-db:
|
||||
image: mariadb:11
|
||||
restart: always
|
||||
environment:
|
||||
- MARIADB_DATABASE=${DB_DATABASE}
|
||||
- MARIADB_USER=${DB_USERNAME}
|
||||
- MARIADB_PASSWORD=${DB_PASSWORD}
|
||||
- MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
|
||||
volumes:
|
||||
- billmora-db-data:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
|
||||
billmora-redis:
|
||||
image: redis:7-alpine
|
||||
restart: always
|
||||
command: redis-server --requirepass ${REDIS_PASSWORD}
|
||||
volumes:
|
||||
- billmora-redis-data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "--no-auth-warning", "-a", "${REDIS_PASSWORD}", "ping"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
volumes:
|
||||
billmora-storage:
|
||||
billmora-db-data:
|
||||
billmora-redis-data:
|
||||
31
blueprints/billmora/template.toml
Normal file
@@ -0,0 +1,31 @@
|
||||
[variables]
|
||||
APP_KEY = "base64:${base64:32}"
|
||||
APP_URL = "https://${domain}"
|
||||
DB_PASSWORD = "${password:16}"
|
||||
DB_ROOT_PASSWORD = "${password:16}"
|
||||
REDIS_PASSWORD = "${password:16}"
|
||||
|
||||
[config]
|
||||
[[config.domains]]
|
||||
serviceName = "billmora-app"
|
||||
port = 8080
|
||||
host = "${domain}"
|
||||
|
||||
[config.env]
|
||||
APP_NAME = "Billmora"
|
||||
APP_ENV = "production"
|
||||
APP_KEY = "${APP_KEY}"
|
||||
APP_URL = "${APP_URL}"
|
||||
DB_CONNECTION = "mariadb"
|
||||
DB_HOST = "billmora-db"
|
||||
DB_PORT = "3306"
|
||||
DB_DATABASE = "billmora"
|
||||
DB_USERNAME = "billmora"
|
||||
DB_PASSWORD = "${DB_PASSWORD}"
|
||||
DB_ROOT_PASSWORD = "${DB_ROOT_PASSWORD}"
|
||||
REDIS_HOST = "billmora-redis"
|
||||
REDIS_PASSWORD = "${REDIS_PASSWORD}"
|
||||
REDIS_PORT = "6379"
|
||||
SESSION_DRIVER = "redis"
|
||||
CACHE_STORE = "redis"
|
||||
QUEUE_CONNECTION = "redis"
|
||||
BIN
blueprints/crawlab-master/crawlab.jpeg
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
41
blueprints/crawlab-master/docker-compose.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
crawlab-master:
|
||||
image: crawlabteam/crawlab:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- CRAWLAB_NODE_MASTER=Y
|
||||
- CRAWLAB_MONGO_HOST=mongo
|
||||
- CRAWLAB_MONGO_PORT=27017
|
||||
- CRAWLAB_MONGO_DB=crawlab
|
||||
- CRAWLAB_MONGO_USERNAME=${MONGO_USERNAME}
|
||||
- CRAWLAB_MONGO_PASSWORD=${MONGO_PASSWORD}
|
||||
- CRAWLAB_MONGO_AUTHSOURCE=admin
|
||||
volumes:
|
||||
- crawlab-master-data:/root/.crawlab
|
||||
- crawlab-app-data:/data
|
||||
- crawlab-logs:/var/log/crawlab
|
||||
expose:
|
||||
- "8080"
|
||||
- "9666"
|
||||
depends_on:
|
||||
- mongo
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "${CPU_LIMIT:-0.8}" # 0.8 will limit to 80% of CPU if one core. If 2 cores, you need to put 0.8*2=1.6
|
||||
|
||||
mongo:
|
||||
image: mongo:4.2
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- MONGO_INITDB_ROOT_USERNAME=${MONGO_USERNAME}
|
||||
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD}
|
||||
volumes:
|
||||
- mongo-data:/data/db
|
||||
|
||||
volumes:
|
||||
crawlab-master-data:
|
||||
crawlab-app-data:
|
||||
crawlab-logs:
|
||||
mongo-data:
|
||||
12
blueprints/crawlab-master/template.toml
Normal file
@@ -0,0 +1,12 @@
|
||||
[variables]
|
||||
MONGO_USERNAME = "crawlab"
|
||||
MONGO_PASSWORD = "${password:24}"
|
||||
CPU_LIMIT = "0.8"
|
||||
|
||||
[config]
|
||||
env = ["MONGO_USERNAME=${MONGO_USERNAME}", "MONGO_PASSWORD=${MONGO_PASSWORD}", "CPU_LIMIT=${CPU_LIMIT}"]
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "crawlab-master"
|
||||
port = 8080
|
||||
host = "${domain}"
|
||||
BIN
blueprints/crawlab-worker/crawlab.jpeg
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
20
blueprints/crawlab-worker/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
crawlab-worker:
|
||||
image: crawlabteam/crawlab:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- CRAWLAB_NODE_MASTER=N
|
||||
- CRAWLAB_GRPC_ADDRESS=${MASTER_GRPC_ADDRESS}
|
||||
- CRAWLAB_FS_FILER_URL=${MASTER_FILER_URL}
|
||||
volumes:
|
||||
- crawlab-worker-data:/root/.crawlab
|
||||
- crawlab-worker-app:/data
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "${CPU_LIMIT:-0.8}" # 0.8 will limit to 80% of CPU if one core. If 2 cores, you need to put 0.8*2=1.6
|
||||
|
||||
volumes:
|
||||
crawlab-worker-data:
|
||||
crawlab-worker-app:
|
||||
7
blueprints/crawlab-worker/template.toml
Normal file
@@ -0,0 +1,7 @@
|
||||
[variables]
|
||||
MASTER_GRPC_ADDRESS = "<master_node_ip>:9666"
|
||||
MASTER_FILER_URL = "http://<master_node_ip>:8080/api/filer"
|
||||
CPU_LIMIT = "0.8"
|
||||
|
||||
[config]
|
||||
env = ["MASTER_GRPC_ADDRESS=${MASTER_GRPC_ADDRESS}", "MASTER_FILER_URL=${MASTER_FILER_URL}", "CPU_LIMIT=${CPU_LIMIT}"]
|
||||
10
blueprints/cut/cut.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Cut logo">
|
||||
<rect width="64" height="64" rx="16" fill="#059669"/>
|
||||
<g transform="translate(14 14) scale(1.5)" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<circle cx="6" cy="6" r="3"/>
|
||||
<path d="M8.12 8.12 12 12"/>
|
||||
<path d="M20 4 8.12 15.88"/>
|
||||
<circle cx="6" cy="18" r="3"/>
|
||||
<path d="M14.8 14.8 20 20"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 494 B |
37
blueprints/cut/docker-compose.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
services:
|
||||
cut:
|
||||
image: ghcr.io/mendylanda/cut:latest
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
# Injected by Dokploy from template.toml (generated strong password).
|
||||
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
|
||||
# Bundled Redis below, private to the project network.
|
||||
- REDIS_URL=redis://redis:6379
|
||||
# Expose the container port only; Dokploy maps the domain to it.
|
||||
ports:
|
||||
- 3000
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
restart: unless-stopped
|
||||
# appendonly = durable across restarts; noeviction because this is Cut's
|
||||
# primary datastore, not a cache (don't drop links under memory pressure).
|
||||
command: redis-server --appendonly yes --maxmemory-policy noeviction
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 10
|
||||
|
||||
volumes:
|
||||
redis-data:
|
||||
14
blueprints/cut/template.toml
Normal file
@@ -0,0 +1,14 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
admin_password = "${password:24}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"ADMIN_PASSWORD=${admin_password}",
|
||||
]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "cut"
|
||||
port = 3000
|
||||
host = "${main_domain}"
|
||||
@@ -1,29 +1,24 @@
|
||||
version: '3.7'
|
||||
|
||||
services:
|
||||
discourse-db:
|
||||
image: docker.io/bitnami/postgresql:17
|
||||
|
||||
image: pgvector/pgvector:pg16
|
||||
volumes:
|
||||
- discourse-postgresql-data:/bitnami/postgresql
|
||||
- discourse-postgresql-data:/var/lib/postgresql/data
|
||||
environment:
|
||||
POSTGRESQL_USERNAME: bn_discourse
|
||||
POSTGRESQL_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
POSTGRESQL_DATABASE: bitnami_discourse
|
||||
POSTGRES_USER: discourse
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
POSTGRES_DB: discourse
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U bn_discourse -d bitnami_discourse"]
|
||||
test: ["CMD-SHELL", "pg_isready -U discourse -d discourse"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
restart: unless-stopped
|
||||
|
||||
discourse-redis:
|
||||
image: docker.io/bitnami/redis:7.4
|
||||
|
||||
image: redis:7-alpine
|
||||
volumes:
|
||||
- discourse-redis-data:/bitnami/redis
|
||||
environment:
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
- discourse-redis-data:/data
|
||||
command: redis-server --requirepass ${REDIS_PASSWORD}
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
|
||||
interval: 10s
|
||||
@@ -32,59 +27,38 @@ services:
|
||||
restart: unless-stopped
|
||||
|
||||
discourse-app:
|
||||
image: docker.io/bitnamilegacy/discourse:3.5.0
|
||||
|
||||
image: discourse/discourse:2026.1.4
|
||||
volumes:
|
||||
- discourse-data:/bitnami/discourse
|
||||
- discourse-data:/shared
|
||||
depends_on:
|
||||
discourse-db:
|
||||
condition: service_healthy
|
||||
discourse-redis:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
DISCOURSE_HOST: ${DISCOURSE_HOST}
|
||||
DISCOURSE_DATABASE_HOST: discourse-db
|
||||
DISCOURSE_DATABASE_PORT_NUMBER: 5432
|
||||
DISCOURSE_DATABASE_USER: bn_discourse
|
||||
DISCOURSE_DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
DISCOURSE_DATABASE_NAME: bitnami_discourse
|
||||
DISCOURSE_HOSTNAME: ${DISCOURSE_HOST}
|
||||
DISCOURSE_DB_HOST: discourse-db
|
||||
DISCOURSE_DB_PORT: 5432
|
||||
DISCOURSE_DB_USERNAME: discourse
|
||||
DISCOURSE_DB_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
DISCOURSE_DB_NAME: discourse
|
||||
DISCOURSE_REDIS_HOST: discourse-redis
|
||||
DISCOURSE_REDIS_PORT_NUMBER: 6379
|
||||
DISCOURSE_REDIS_PORT: 6379
|
||||
DISCOURSE_REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
# Optional: Configure SMTP for email delivery
|
||||
# DISCOURSE_SMTP_HOST: ${SMTP_HOST}
|
||||
DISCOURSE_DEVELOPER_EMAILS: ${DISCOURSE_ADMIN_EMAIL}
|
||||
# Required for email delivery - Discourse will not function correctly without SMTP
|
||||
# DISCOURSE_SMTP_ADDRESS: ${SMTP_HOST}
|
||||
# DISCOURSE_SMTP_PORT: ${SMTP_PORT}
|
||||
# DISCOURSE_SMTP_USER: ${SMTP_USER}
|
||||
# DISCOURSE_SMTP_PASSWORD: ${SMTP_PASSWORD}
|
||||
restart: unless-stopped
|
||||
|
||||
discourse-sidekiq:
|
||||
image: docker.io/bitnamilegacy/discourse:3.5.0
|
||||
|
||||
volumes:
|
||||
- discourse-sidekiq-data:/bitnami/discourse
|
||||
depends_on:
|
||||
- discourse-app
|
||||
command: /opt/bitnami/scripts/discourse-sidekiq/run.sh
|
||||
environment:
|
||||
DISCOURSE_HOST: ${DISCOURSE_HOST}
|
||||
DISCOURSE_DATABASE_HOST: discourse-db
|
||||
DISCOURSE_DATABASE_PORT_NUMBER: 5432
|
||||
DISCOURSE_DATABASE_USER: bn_discourse
|
||||
DISCOURSE_DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
DISCOURSE_DATABASE_NAME: bitnami_discourse
|
||||
DISCOURSE_REDIS_HOST: discourse-redis
|
||||
DISCOURSE_REDIS_PORT_NUMBER: 6379
|
||||
DISCOURSE_REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
# Optional: Configure SMTP for email delivery
|
||||
# DISCOURSE_SMTP_HOST: ${SMTP_HOST}
|
||||
# DISCOURSE_SMTP_PORT: ${SMTP_PORT}
|
||||
# DISCOURSE_SMTP_USER: ${SMTP_USER}
|
||||
# DISCOURSE_SMTP_USER_NAME: ${SMTP_USER}
|
||||
# DISCOURSE_SMTP_PASSWORD: ${SMTP_PASSWORD}
|
||||
# DISCOURSE_SMTP_ENABLE_START_TLS: "true"
|
||||
# DISCOURSE_NOTIFICATION_EMAIL: [email protected]
|
||||
# DISCOURSE_DEVELOPER_EMAILS: [email protected]
|
||||
ports:
|
||||
- 80
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
discourse-postgresql-data:
|
||||
discourse-redis-data:
|
||||
discourse-data:
|
||||
discourse-sidekiq-data:
|
||||
@@ -1,11 +1,13 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
admin_email = "${email}"
|
||||
postgres_password = "${password}"
|
||||
redis_password = "${password}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"DISCOURSE_HOST=${main_domain}",
|
||||
"DISCOURSE_ADMIN_EMAIL=${admin_email}",
|
||||
"POSTGRES_PASSWORD=${postgres_password}",
|
||||
"REDIS_PASSWORD=${redis_password}",
|
||||
]
|
||||
@@ -13,5 +15,5 @@ mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "discourse-app"
|
||||
port = 3_000
|
||||
host = "${main_domain}"
|
||||
port = 80
|
||||
host = "${main_domain}"
|
||||
37
blueprints/fider/docker-compose.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
db:
|
||||
image: postgres:17
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- fiderPostgresData:/var/lib/postgresql/data
|
||||
environment:
|
||||
POSTGRES_USER: ${POSTGRES_USER}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
POSTGRES_DB: ${POSTGRES_DB}
|
||||
|
||||
fider:
|
||||
image: getfider/fider:0.21.1
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- db
|
||||
- mailhog
|
||||
environment:
|
||||
BASE_URL: ${BASE_URL}
|
||||
DATABASE_URL: ${DATABASE_URL}
|
||||
JWT_SECRET: ${JWT_SECRET}
|
||||
EMAIL: ${EMAIL}
|
||||
EMAIL_NOREPLY: ${EMAIL_NOREPLY}
|
||||
EMAIL_SMTP_HOST: ${EMAIL_SMTP_HOST}
|
||||
EMAIL_SMTP_PORT: ${EMAIL_SMTP_PORT}
|
||||
EMAIL_SMTP_USERNAME: ${EMAIL_SMTP_USERNAME}
|
||||
EMAIL_SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD}
|
||||
EMAIL_SMTP_ENABLE_STARTTLS: ${EMAIL_SMTP_ENABLE_STARTTLS}
|
||||
|
||||
mailhog:
|
||||
image: mailhog/mailhog:v1.0.1
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
fiderPostgresData:
|
||||
9
blueprints/fider/fider.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Fider</title>
|
||||
<desc id="desc">Fider template logo</desc>
|
||||
<rect width="256" height="256" rx="54" fill="#0f766e"/>
|
||||
<path d="M65 74c0-12 10-22 22-22h82c12 0 22 10 22 22v58c0 12-10 22-22 22h-39l-40 36c-6 5-15 1-15-7v-29h-8c-12 0-22-10-22-22V74z" fill="#ecfeff"/>
|
||||
<circle cx="96" cy="103" r="10" fill="#0f766e"/>
|
||||
<circle cx="128" cy="103" r="10" fill="#0f766e"/>
|
||||
<circle cx="160" cy="103" r="10" fill="#0f766e"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 549 B |
27
blueprints/fider/template.toml
Normal file
@@ -0,0 +1,27 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
postgres_password = "${password:32}"
|
||||
jwt_secret = "${password:64}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"POSTGRES_USER=fider",
|
||||
"POSTGRES_PASSWORD=${postgres_password}",
|
||||
"POSTGRES_DB=fider",
|
||||
"BASE_URL=https://${main_domain}",
|
||||
"DATABASE_URL=postgres://fider:${postgres_password}@db:5432/fider?sslmode=disable",
|
||||
"JWT_SECRET=${jwt_secret}",
|
||||
"EMAIL_NOREPLY=noreply@${main_domain}",
|
||||
"EMAIL=smtp",
|
||||
"EMAIL_SMTP_HOST=mailhog",
|
||||
"EMAIL_SMTP_PORT=1025",
|
||||
"EMAIL_SMTP_USERNAME=",
|
||||
"EMAIL_SMTP_PASSWORD=",
|
||||
"EMAIL_SMTP_ENABLE_STARTTLS=true",
|
||||
]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "fider"
|
||||
port = 3000
|
||||
host = "${main_domain}"
|
||||
27
blueprints/geoserver/docker-compose.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
services:
|
||||
geoserver:
|
||||
image: kartoza/geoserver:2.24.1
|
||||
depends_on:
|
||||
- db
|
||||
environment:
|
||||
- GEOSERVER_ADMIN_USER=${GEOSERVER_ADMIN_USER}
|
||||
- GEOSERVER_ADMIN_PASSWORD=${GEOSERVER_ADMIN_PASSWORD}
|
||||
- INITIAL_MEMORY=${INITIAL_MEMORY}
|
||||
- MAXIMUM_MEMORY=${MAXIMUM_MEMORY}
|
||||
volumes:
|
||||
- geoserver-data:/opt/geoserver/data_dir
|
||||
restart: unless-stopped
|
||||
|
||||
db:
|
||||
image: postgis/postgis:17-3.4
|
||||
environment:
|
||||
- POSTGRES_USER=${POSTGRES_USER}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DB=${POSTGRES_DB}
|
||||
volumes:
|
||||
- postgis-data:/var/lib/postgresql/data
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
geoserver-data:
|
||||
postgis-data:
|
||||
BIN
blueprints/geoserver/logo.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
21
blueprints/geoserver/logo.svg
Normal file
|
After Width: | Height: | Size: 25 KiB |
18
blueprints/geoserver/template.toml
Normal file
@@ -0,0 +1,18 @@
|
||||
[info]
|
||||
name = "GeoServer & PostGIS"
|
||||
description = "An open-source server for sharing geospatial data, paired with a PostGIS database. Template created and maintained by OpenGeoCity Tanzania (info@ogctz.org). For further assistance contact +255759968919 or visit https://opengeocity.org or github: https://github.com/ShabaniMagawila or linkedin: https://www.linkedin.com/in/shabani-magawila/"
|
||||
version = "2.24.1"
|
||||
|
||||
[variables]
|
||||
GEOSERVER_ADMIN_USER = "admin"
|
||||
GEOSERVER_ADMIN_PASSWORD = "geoserver_secure"
|
||||
INITIAL_MEMORY = "2G"
|
||||
MAXIMUM_MEMORY = "4G"
|
||||
POSTGRES_USER = "postgres"
|
||||
POSTGRES_PASSWORD = "postgres_secure"
|
||||
POSTGRES_DB = "gis"
|
||||
|
||||
[config]
|
||||
[[config.domains]]
|
||||
serviceName = "geoserver"
|
||||
port = 8080
|
||||
@@ -1,55 +1,52 @@
|
||||
version: "3.8"
|
||||
|
||||
x-environment: &default-environment
|
||||
DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres
|
||||
VALKEY_URL: redis://valkey:6379
|
||||
SECRET_KEY: ${SECRET_KEY}
|
||||
PORT: ${GLITCHTIP_PORT}
|
||||
EMAIL_URL: consolemail://
|
||||
GLITCHTIP_DOMAIN: http://${GLITCHTIP_HOST}
|
||||
DEFAULT_FROM_EMAIL: email@glitchtip.com
|
||||
CELERY_WORKER_AUTOSCALE: "1,3"
|
||||
CELERY_WORKER_MAX_TASKS_PER_CHILD: "10000"
|
||||
GLITCHTIP_DOMAIN: ${GLITCHTIP_DOMAIN}
|
||||
DEFAULT_FROM_EMAIL: ${DEFAULT_FROM_EMAIL}
|
||||
|
||||
x-depends_on: &default-depends_on
|
||||
- postgres
|
||||
- redis
|
||||
- valkey
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:16
|
||||
image: postgres:18
|
||||
environment:
|
||||
POSTGRES_HOST_AUTH_METHOD: "trust"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- pg-data:/var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
valkey:
|
||||
image: valkey/valkey:9
|
||||
restart: unless-stopped
|
||||
|
||||
web:
|
||||
image: glitchtip/glitchtip:v4.0
|
||||
image: glitchtip/glitchtip:6.1.0
|
||||
depends_on: *default-depends_on
|
||||
ports:
|
||||
expose:
|
||||
- ${GLITCHTIP_PORT}
|
||||
environment: *default-environment
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- uploads:/code/uploads
|
||||
worker:
|
||||
image: glitchtip/glitchtip:v4.0
|
||||
command: ./bin/run-celery-with-beat.sh
|
||||
image: glitchtip/glitchtip:6.1.0
|
||||
command: ./bin/run-worker.sh
|
||||
depends_on: *default-depends_on
|
||||
environment: *default-environment
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- uploads:/code/uploads
|
||||
|
||||
migrate:
|
||||
image: glitchtip/glitchtip:v4.0
|
||||
image: glitchtip/glitchtip:6.1.0
|
||||
depends_on: *default-depends_on
|
||||
command: "./manage.py migrate"
|
||||
command: ./bin/run-migrate.sh
|
||||
environment: *default-environment
|
||||
|
||||
|
||||
volumes:
|
||||
pg-data:
|
||||
uploads:
|
||||
|
||||
@@ -4,7 +4,8 @@ secret_key = "${base64:32}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"GLITCHTIP_HOST=${main_domain}",
|
||||
"DEFAULT_FROM_EMAIL=${email}",
|
||||
"GLITCHTIP_DOMAIN=https://${main_domain}",
|
||||
"GLITCHTIP_PORT=8000",
|
||||
"SECRET_KEY=${secret_key}",
|
||||
]
|
||||
@@ -12,5 +13,5 @@ mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "web"
|
||||
port = 8_000
|
||||
port = 8000
|
||||
host = "${main_domain}"
|
||||
|
||||
37
blueprints/hedgedoc/docker-compose.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
hedgedoc:
|
||||
image: quay.io/hedgedoc/hedgedoc:1.10.8
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
database:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- CMD_DB_URL=${CMD_DB_URL}
|
||||
- CMD_DOMAIN=${CMD_DOMAIN}
|
||||
- CMD_PROTOCOL_USESSL=${CMD_PROTOCOL_USESSL}
|
||||
- CMD_URL_ADDPORT=${CMD_URL_ADDPORT}
|
||||
volumes:
|
||||
- hedgedoc_uploads:/hedgedoc/public/uploads
|
||||
expose:
|
||||
- "3000"
|
||||
|
||||
database:
|
||||
image: postgres:17.7-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_USER=hedgedoc
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DB=hedgedoc
|
||||
volumes:
|
||||
- hedgedoc_database:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U hedgedoc -d hedgedoc"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
volumes:
|
||||
hedgedoc_uploads:
|
||||
hedgedoc_database:
|
||||
32
blueprints/hedgedoc/hedgedoc.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
||||
|
||||
SPDX-License-Identifier: LicenseRef-HedgeDoc-Icon-Usage-Guidelines
|
||||
-->
|
||||
<svg clip-rule="evenodd" fill-rule="evenodd" height="512" stroke-linejoin="round" stroke-miterlimit="2" width="512"
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<linearGradient id="a" gradientTransform="matrix(200 -420 420 200 660 1340)" gradientUnits="userSpaceOnUse" x1="0"
|
||||
x2="1" y1="0" y2="0">
|
||||
<stop offset="0" stop-color="#fcca8c"/>
|
||||
<stop offset="1" stop-color="#dca055"/>
|
||||
</linearGradient>
|
||||
<g fill-rule="nonzero">
|
||||
<path d="M486.075 281.925 512 255.998l-25.925-25.923 19.503-31.04-31.04-19.505 12.11-34.605-34.604-12.106 4.103-36.431-36.428-4.104-4.107-36.433-36.429 4.104-12.11-34.604-34.599 12.108-19.51-31.041-31.043 19.505L256 0l-25.922 25.925L199.035 6.42l-19.503 31.04-34.604-12.11-12.107 34.603-36.432-4.105-4.104 36.429-36.43 4.104 4.106 36.43-34.608 12.109 12.108 34.602-31.04 19.504 19.506 31.046L0 255.998l25.925 25.927L6.42 312.968l31.04 19.503-12.108 34.603 34.607 12.11-4.104 36.425 36.43 4.107 4.103 36.429 36.432-4.103 12.107 34.6 34.602-12.104 19.505 31.041 31.04-19.506 25.924 25.683 25.925-25.677 31.04 19.503 19.503-31.044 34.607 12.11 12.106-34.603 36.432 4.103 4.103-36.432 36.432-4.103-4.106-36.43 34.606-12.109-12.11-34.606 31.041-19.503z"
|
||||
fill="#b51f08"/>
|
||||
<path d="M433.585 296.98c0-50.105-40.618-90.725-90.724-90.725-24.888 0-47.432 10.03-63.822 26.26l-.011-.011-23.116 23.117-18.9-18.901c-16.629-18.971-41.022-30.965-68.228-30.965-50.107 0-90.725 40.62-90.725 90.725 0 26.183 11.103 49.758 28.843 66.315L256 511.815l145.804-145.898c18.218-17.147 31.781-41.342 31.781-68.937"
|
||||
fill="#fcca8c"/>
|
||||
<path d="m885.579 884.73-54.862-54.862c-48.267-55.067-119.071-89.879-198.042-89.879-145.442 0-263.342 117.904-263.342 263.341 0 76 32.23 144.43 83.721 192.49l432.779 432.55"
|
||||
fill="url(#a)" transform="translate(-49.181 -49.18) scale(.34451)" style="fill:url(#a)"/>
|
||||
</g>
|
||||
<path d="m256 511.815-.088-256.194" fill="none" style="stroke-width:.344513"/>
|
||||
<g fill-rule="nonzero">
|
||||
<path d="M281.9 486.052c-6.642-6.666-15.82-10.787-25.95-10.787-10.135 0-19.31 4.12-25.952 10.787.106 14.242 11.681 25.756 25.95 25.756 14.268 0 25.845-11.517 25.952-25.756M225.64 329.17c0 10.955-8.878 19.833-19.835 19.833-10.95 0-19.83-8.878-19.83-19.833 0-10.956 8.88-19.834 19.83-19.834 10.957 0 19.834 8.878 19.834 19.834"
|
||||
fill="#010007"/>
|
||||
<path d="M218.837 326.198a5.49 5.49 0 0 1-5.495 5.491 5.492 5.492 0 0 1-5.498-5.491 5.5 5.5 0 0 1 5.498-5.499 5.499 5.499 0 0 1 5.495 5.499"
|
||||
fill="#fffffa"/>
|
||||
<path d="M326.218 329.17c0 10.956-8.878 19.834-19.834 19.834-10.952 0-19.833-8.878-19.833-19.833 0-10.956 8.881-19.834 19.833-19.834 10.956 0 19.834 8.878 19.834 19.834"
|
||||
fill="#010007"/>
|
||||
<path d="M319.414 326.198a5.492 5.492 0 0 1-5.495 5.491 5.492 5.492 0 0 1-5.499-5.491 5.5 5.5 0 0 1 5.499-5.499 5.5 5.5 0 0 1 5.495 5.499"
|
||||
fill="#fffffa"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
16
blueprints/hedgedoc/template.toml
Normal file
@@ -0,0 +1,16 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
database_password = "${password:32}"
|
||||
|
||||
[config]
|
||||
[[config.domains]]
|
||||
serviceName = "hedgedoc"
|
||||
port = 3000
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
POSTGRES_PASSWORD = "${database_password}"
|
||||
CMD_DB_URL = "postgres://hedgedoc:${database_password}@database:5432/hedgedoc"
|
||||
CMD_DOMAIN = "${main_domain}"
|
||||
CMD_PROTOCOL_USESSL = "true"
|
||||
CMD_URL_ADDPORT = "false"
|
||||
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
all-in-one:
|
||||
image: daveearley/hi.events-all-in-one:v0.8.0-beta.1
|
||||
image: daveearley/hi.events-all-in-one:v1.9.0-beta
|
||||
restart: always
|
||||
environment:
|
||||
- VITE_FRONTEND_URL=https://${DOMAIN}
|
||||
@@ -20,6 +20,8 @@ services:
|
||||
- MAIL_MAILER
|
||||
- MAIL_HOST
|
||||
- MAIL_PORT
|
||||
- MAIL_USERNAME
|
||||
- MAIL_PASSWORD
|
||||
- MAIL_FROM_ADDRESS
|
||||
- MAIL_FROM_NAME
|
||||
depends_on:
|
||||
|
||||
@@ -16,6 +16,8 @@ env = [
|
||||
"MAIL_MAILER=",
|
||||
"MAIL_HOST=",
|
||||
"MAIL_PORT=",
|
||||
"MAIL_USERNAME=",
|
||||
"MAIL_PASSWORD=",
|
||||
"MAIL_FROM_ADDRESS=",
|
||||
"MAIL_FROM_NAME=",
|
||||
]
|
||||
|
||||
9
blueprints/homepage/docker-compose.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
homepage:
|
||||
image: ghcr.io/gethomepage/homepage:v1.13.1
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 3000
|
||||
volumes:
|
||||
- ../files/homepage-config:/app/config
|
||||
BIN
blueprints/homepage/homepage.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
13
blueprints/homepage/template.toml
Normal file
@@ -0,0 +1,13 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
|
||||
[config]
|
||||
[[config.domains]]
|
||||
serviceName = "homepage"
|
||||
port = 3000
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
HOMEPAGE_ALLOWED_HOSTS = "${main_domain}"
|
||||
PUID = "1000"
|
||||
PGID = "1000"
|
||||
@@ -3,6 +3,8 @@ services:
|
||||
imgproxy:
|
||||
image: darthsim/imgproxy:v3.30.1
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 8080
|
||||
environment:
|
||||
IMGPROXY_KEY: ${IMGPROXY_KEY}
|
||||
IMGPROXY_SALT: ${IMGPROXY_SALT}
|
||||
|
||||
@@ -28,7 +28,7 @@ services:
|
||||
REDIS_DBINDEX: ${REDIS_DBINDEX}
|
||||
# Server Configuration
|
||||
TZ: ${TZ}
|
||||
restart: always
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:2283/server-info/ping"]
|
||||
interval: 30s
|
||||
@@ -44,7 +44,7 @@ services:
|
||||
REDIS_HOSTNAME: ${REDIS_HOSTNAME}
|
||||
REDIS_PORT: ${REDIS_PORT}
|
||||
REDIS_DBINDEX: ${REDIS_DBINDEX}
|
||||
restart: always
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3003/ping"]
|
||||
interval: 30s
|
||||
@@ -61,7 +61,7 @@ services:
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
restart: always
|
||||
restart: unless-stopped
|
||||
|
||||
immich-database:
|
||||
image: tensorchord/pgvecto-rs:pg14-v0.3.0
|
||||
@@ -94,10 +94,10 @@ services:
|
||||
'-c',
|
||||
'wal_compression=on',
|
||||
]
|
||||
restart: always
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
immich-model-cache:
|
||||
immich-postgres:
|
||||
immich-library:
|
||||
immich-redis-data:
|
||||
immich-redis-data:
|
||||
|
||||
44
blueprints/joomla/docker-compose.yml
Normal file
@@ -0,0 +1,44 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
joomla:
|
||||
image: joomla:6.1.0-apache
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
joomla-db:
|
||||
condition: service_healthy
|
||||
expose:
|
||||
- "80"
|
||||
environment:
|
||||
JOOMLA_DB_HOST: joomla-db
|
||||
JOOMLA_DB_USER: ${JOOMLA_DB_USER}
|
||||
JOOMLA_DB_PASSWORD: ${JOOMLA_DB_PASSWORD}
|
||||
JOOMLA_DB_NAME: ${JOOMLA_DB_NAME}
|
||||
JOOMLA_SITE_NAME: ${JOOMLA_SITE_NAME}
|
||||
JOOMLA_ADMIN_USER: ${JOOMLA_ADMIN_USER}
|
||||
JOOMLA_ADMIN_USERNAME: ${JOOMLA_ADMIN_USERNAME}
|
||||
JOOMLA_ADMIN_PASSWORD: ${JOOMLA_ADMIN_PASSWORD}
|
||||
JOOMLA_ADMIN_EMAIL: ${JOOMLA_ADMIN_EMAIL}
|
||||
volumes:
|
||||
- joomla-data:/var/www/html
|
||||
|
||||
joomla-db:
|
||||
image: mariadb:11.4
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MARIADB_DATABASE: ${JOOMLA_DB_NAME}
|
||||
MARIADB_USER: ${JOOMLA_DB_USER}
|
||||
MARIADB_PASSWORD: ${JOOMLA_DB_PASSWORD}
|
||||
MARIADB_RANDOM_ROOT_PASSWORD: "1"
|
||||
volumes:
|
||||
- joomla-db:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "healthcheck.sh --connect --innodb_initialized"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
|
||||
volumes:
|
||||
joomla-data:
|
||||
joomla-db:
|
||||
5
blueprints/joomla/joomla.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Joomla">
|
||||
<rect width="128" height="128" rx="24" fill="#1a3867"/>
|
||||
<path fill="#fff" d="M61 29a10 10 0 0 1 16-8l10 10-9 9-9-9a3 3 0 0 0-5 2v16H50V33a17 17 0 0 1 11-4Zm38 32a10 10 0 0 1 8 16L97 87l-9-9 9-9a3 3 0 0 0-2-5H79V50h16a17 17 0 0 1 4 11ZM67 99a10 10 0 0 1-16 8L41 97l9-9 9 9a3 3 0 0 0 5-2V79h14v16a17 17 0 0 1-11 4ZM29 67a10 10 0 0 1-8-16l10-10 9 9-9 9a3 3 0 0 0 2 5h16v14H33a17 17 0 0 1-4-11Z"/>
|
||||
<rect x="51" y="51" width="26" height="26" rx="6" fill="#f9a03f"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 568 B |
51
blueprints/joomla/template.toml
Normal file
@@ -0,0 +1,51 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
site_name = "Joomla"
|
||||
admin_name = "Joomla Administrator"
|
||||
admin_username = "${username}"
|
||||
admin_password = "${password:24}"
|
||||
admin_email = "${email}"
|
||||
db_user = "joomla"
|
||||
db_password = "${password:32}"
|
||||
db_name = "joomla"
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "joomla"
|
||||
port = 80
|
||||
host = "${main_domain}"
|
||||
path = "/"
|
||||
|
||||
[[config.mounts]]
|
||||
filePath = "README.md"
|
||||
content = """# Joomla
|
||||
|
||||
This template deploys Joomla CMS with MariaDB using the official Joomla Apache image.
|
||||
|
||||
## Access
|
||||
|
||||
- URL: `http://${main_domain}`
|
||||
- Administrator username: the configured `admin_username` value
|
||||
- Administrator password: the generated `admin_password` value
|
||||
- Administrator email: the configured `admin_email` value
|
||||
|
||||
The template uses Joomla's auto-deployment environment variables so the site and administrator account are initialized on first start.
|
||||
|
||||
## Storage
|
||||
|
||||
The template creates persistent volumes for:
|
||||
|
||||
- Joomla application files at `/var/www/html`
|
||||
- MariaDB data at `/var/lib/mysql`
|
||||
|
||||
Back up both volumes together before upgrades or migrations.
|
||||
"""
|
||||
|
||||
[config.env]
|
||||
JOOMLA_SITE_NAME = "${site_name}"
|
||||
JOOMLA_ADMIN_USER = "${admin_name}"
|
||||
JOOMLA_ADMIN_USERNAME = "${admin_username}"
|
||||
JOOMLA_ADMIN_PASSWORD = "${admin_password}"
|
||||
JOOMLA_ADMIN_EMAIL = "${admin_email}"
|
||||
JOOMLA_DB_USER = "${db_user}"
|
||||
JOOMLA_DB_PASSWORD = "${db_password}"
|
||||
JOOMLA_DB_NAME = "${db_name}"
|
||||
@@ -1,31 +1,44 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
langflow:
|
||||
image: langflowai/langflow:v1.1.1
|
||||
image: langflowai/langflow:latest
|
||||
user: root
|
||||
restart: always
|
||||
pull_policy: always
|
||||
ports:
|
||||
- 7860
|
||||
depends_on:
|
||||
- postgres-langflow
|
||||
environment:
|
||||
- LANGFLOW_DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres-langflow:5432/langflow
|
||||
# This variable defines where the logs, file storage, monitor data and secret keys are stored.
|
||||
- LANGFLOW_CONFIG_DIR=/app/config
|
||||
- LANGFLOW_SUPERUSER=email@domain.com
|
||||
- LANGFLOW_SUPERUSER_PASSWORD=changepassword
|
||||
- LANGFLOW_SECRET_KEY=PP_G4Gwm1lOkyG8r8N0LrdlpWXZ7Tyq5CVyfBquuj6g=
|
||||
- DO_NOT_TRACK=True
|
||||
- LANGFLOW_AUTO_SAVING=True
|
||||
- LANGFLOW_AUTO_LOGIN=False
|
||||
- LANGFLOW_NEW_USER_IS_ACTIVE=False
|
||||
- LANGFLOW_ENABLE_SUPERUSER_CLI=False
|
||||
volumes:
|
||||
- langflow-data:/app/langflow
|
||||
|
||||
|
||||
- app-data:/app/langflow
|
||||
- app-config:/app/config
|
||||
|
||||
postgres-langflow:
|
||||
image: postgres:16
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME} -d langflow"]
|
||||
interval: 3s
|
||||
timeout: 3s
|
||||
retries: 10
|
||||
environment:
|
||||
POSTGRES_USER: ${DB_USERNAME}
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_DB: langflow
|
||||
ports:
|
||||
- 5432
|
||||
volumes:
|
||||
- langflow-postgres:/var/lib/postgresql/data
|
||||
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
langflow-postgres:
|
||||
langflow-data:
|
||||
postgres-data:
|
||||
app-data:
|
||||
app-config:
|
||||
|
||||
17
blueprints/libredb-studio/docker-compose.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
libredb-studio:
|
||||
image: ghcr.io/libredb/libredb-studio:0.9.27
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- ADMIN_EMAIL=admin@libredb.org
|
||||
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
|
||||
- USER_EMAIL=user@libredb.org
|
||||
- USER_PASSWORD=${USER_PASSWORD}
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
- STORAGE_PROVIDER=sqlite
|
||||
- STORAGE_SQLITE_PATH=/app/data/libredb-storage.db
|
||||
volumes:
|
||||
- libredb-data:/app/data
|
||||
volumes:
|
||||
libredb-data:
|
||||
32
blueprints/libredb-studio/libredb-studio.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="logo-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#4F46E5" />
|
||||
<stop offset="100%" stop-color="#9333EA" />
|
||||
</linearGradient>
|
||||
<linearGradient id="code-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#10B981" />
|
||||
<stop offset="100%" stop-color="#3B82F6" />
|
||||
</linearGradient>
|
||||
<filter id="glow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="3" result="blur" />
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over" />
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<!-- Background Shape -->
|
||||
<path d="M100 20L169.282 60V140L100 180L30.718 140V60L100 20Z" fill="url(#logo-gradient)" fill-opacity="0.05" stroke="url(#logo-gradient)" stroke-width="1.5"/>
|
||||
|
||||
<!-- Database Layers (De-emphasized) -->
|
||||
<g opacity="0.3">
|
||||
<rect x="70" y="80" width="60" height="10" rx="2" fill="url(#logo-gradient)" />
|
||||
<rect x="70" y="95" width="60" height="10" rx="2" fill="url(#logo-gradient)" />
|
||||
<rect x="70" y="110" width="60" height="10" rx="2" fill="url(#logo-gradient)" />
|
||||
</g>
|
||||
|
||||
<!-- Coding Brackets (Emphasized) -->
|
||||
<g filter="url(#glow)">
|
||||
<path d="M55 70L35 100L55 130" stroke="url(#code-gradient)" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M145 70L165 100L145 130" stroke="url(#code-gradient)" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
18
blueprints/libredb-studio/template.toml
Normal file
@@ -0,0 +1,18 @@
|
||||
[variables]
|
||||
admin_password = "${password:32}"
|
||||
user_password = "${password:32}"
|
||||
jwt_secret = "${password:64}"
|
||||
|
||||
[config]
|
||||
[[config.domains]]
|
||||
serviceName = "libredb-studio"
|
||||
port = 3000
|
||||
|
||||
[[config.env]]
|
||||
ADMIN_PASSWORD = "${admin_password}"
|
||||
|
||||
[[config.env]]
|
||||
USER_PASSWORD = "${user_password}"
|
||||
|
||||
[[config.env]]
|
||||
JWT_SECRET = "${jwt_secret}"
|
||||
20
blueprints/librespeed/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
librespeed:
|
||||
image: lscr.io/linuxserver/librespeed:latest
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 80
|
||||
volumes:
|
||||
- librespeed-config:/config
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
- PASSWORD=${PASSWORD}
|
||||
- CUSTOM_RESULTS=${CUSTOM_RESULTS}
|
||||
- DB_TYPE=sqlite
|
||||
|
||||
volumes:
|
||||
librespeed-config:
|
||||
1
blueprints/librespeed/librespeed.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><circle cx="256" cy="256" r="256" style="fill:#d1d3d4"/><path d="M468.6 246.7C463.3 129.7 364.1 39 247.1 44 129.8 49 39 148.2 44.4 265.5c5.3 117 104.5 207.7 221.5 202.7 117-5.3 207.7-104.5 202.7-221.5m-32.2-32.8-28.2 6.3c-2.8-13.2-7.5-26-14.1-38.6l25.7-13.1c7.5 14.4 13.2 29.8 16.6 45.4m-344.8-45c.2-.1.2-.3.3-.4l25.7 13.1c-6.3 12.2-10.9 25-14.1 38.2h-.1c-.1.3-.1.5-.2.8L75 214.3c3.5-15.7 9.1-31 16.6-45.4m-20.7 85c0-2.1 0-4.3.1-6.4.2-5.9.7-11.9 1.5-17.8l28.5 3.8v.1c-.9 6.7-1.4 13.5-1.4 20.3s.5 13.6 1.4 20.3v.1L72.5 278c-1.1-8-1.7-16-1.6-24.1m21.3 85.5c-.1-.1-.1-.2-.2-.3l-.4.2C84.1 325 78.5 309.6 75 294l28.2-6.3c0 .2.1.4.1.6l.8-.2c2.9 13.2 7.5 26 13.8 38.2zM141 148.9c-6.3 6.9-11.9 14.1-16.6 21.6L100 155.2c.1-.1.2-.3.3-.4l-.3-.2c5.6-9.1 12.2-17.6 19.7-25.7 3.5-3.8 7.2-7.9 11.3-11.3l.3.3 5.4 5.9 13.7 15 .3.4c-3.4 3.1-6.6 6.3-9.7 9.7m19.6-18.9-17.4-22.8c13.1-10 27.2-18.1 41.9-24.1h.1l10.9 26.6c-12.5 5-24.1 11.9-35.3 20.3l-.1-.1zm41.1 259.4h-21.6v-21.6h21.6zm7.2-284.6-8.7-27.3c15.3-4.7 31.3-7.5 47.6-8.4v.3h.2l.6 17.2-1.5 11.8c-12.9.6-25.4 3.1-37.9 6.9l-.2-.5zm36.3 284.6h-21.9v-21.6h21.9zm10.9-95.4c-15 0-27.2-17.5-27.2-39.1l2.6-16 24.7-168.6 24.6 168.6 2.5 16c0 21.6-12.2 39.1-27.2 39.1m32.3 95.4h-21.6v-21.6h21.6zm-23.5-291L263 86.3l1-16.6v-.5c16 .6 32.3 3.4 47.6 8.4l-.1.2h.1l-8.8 27.5c-12.2-3.8-25-6.3-37.9-6.9m67 291H310v-21.6h21.9zm-16.3-279.7 11.3-26.6c14.4 6 28.5 14.1 41.6 24.1L351 130c-11-8.4-22.9-15.3-35.4-20.3m45.6 29.5 19.4-21.3c12.2 11.2 22.6 23.4 31 36.9l-24.1 15.3c-7.1-11.2-15.9-21.9-26.3-30.9m58.6 200.2-25.7-13.5c6.6-12.2 11.3-25.1 14.1-38.2l28.2 6.3c-3.5 15.7-9.1 31-16.6 45.4m19.4-61.3-28.5-3.8c1.9-13.5 1.9-27.2 0-40.7l28.5-3.7c2.2 16 2.2 32.2 0 48.2"/><path d="m439.2 278-28.5-3.8c1.9-13.5 1.9-27.2 0-40.7l28.5-3.8c1.8 16.1 1.8 32.4 0 48.3" style="fill:#ed1c24"/><path d="M419.8 168.5c7.5 14.4 13.1 29.7 16.6 45.4l-28.2 6.3c-2.8-13.1-7.5-26-13.8-38.2z" style="fill:#ef4136"/><path d="m419.8 339.4-25.7-13.1c6.3-12.2 10.9-25 14.1-38.2l28.2 6.3c-3.5 15.2-9.1 30.6-16.6 45" style="fill:#be1e2d"/><path d="m411.6 154.8-24.1 15.3c-7.2-11.3-16-21.9-26.3-31.3l19.4-21.3c12.3 11.3 22.6 23.8 31 37.3" style="fill:#f15a29"/><path d="M368.5 107.2 351 130c-10.9-8.4-22.8-15.3-35.4-20.3l10.9-26.6c14.7 6.3 28.8 14.1 42 24.1" style="fill:#f7941d"/><path d="M255.8 245.2c6.6 0 12.2 5.3 12.2 12.2 0 6.6-5.3 12.2-12.2 12.2-6.6 0-12.2-5.3-12.2-12.2.4-6.9 5.7-12.2 12.2-12.2" style="fill:#e6e7e8"/><linearGradient id="librespeed_svg__a" x1="255.9" x2="255.9" y1="-135.873" y2="-81.648" gradientTransform="matrix(1 0 0 -1 0 46.44)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#1b75bc"/><stop offset="1" style="stop-color:#00aeef"/><stop offset="1" style="stop-color:#000"/></linearGradient><path d="M283.1 254.9c0 21.6-12.2 39.1-27.2 39.1s-27.2-17.5-27.2-39.1l2.2-16 24.7-168.6 24.7 168.6zm-15.1 2.2c0-6.6-5.3-12.2-12.2-12.2-6.6 0-12.2 5.3-12.2 12.2 0 6.6 5.3 12.2 12.2 12.2S268 264 268 257.1" style="fill:url(#librespeed_svg__a)"/></svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
14
blueprints/librespeed/template.toml
Normal file
@@ -0,0 +1,14 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
password = "${password:32}"
|
||||
|
||||
[config]
|
||||
[[config.domains]]
|
||||
serviceName = "librespeed"
|
||||
port = 80
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
PASSWORD = "${password}"
|
||||
TZ = "UTC"
|
||||
CUSTOM_RESULTS = "false"
|
||||
40
blueprints/limesurvey/docker-compose.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
db:
|
||||
image: mariadb:10.11
|
||||
restart: always
|
||||
volumes:
|
||||
- db_data:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||
- MYSQL_DATABASE=limesurvey
|
||||
- MYSQL_USER=limesurvey
|
||||
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
||||
|
||||
limesurvey:
|
||||
image: martialblog/limesurvey:latest
|
||||
restart: always
|
||||
volumes:
|
||||
- limesurvey_upload:/var/www/html/upload
|
||||
environment:
|
||||
- ADMIN_EMAIL=${ADMIN_EMAIL}
|
||||
- ADMIN_NAME=Admin
|
||||
- ADMIN_USER=admin
|
||||
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
|
||||
- DB_HOST=db
|
||||
- DB_MYSQL_ENGINE=InnoDB
|
||||
- DB_NAME=limesurvey
|
||||
- DB_PASSWORD=${MYSQL_PASSWORD}
|
||||
- DB_USERNAME=limesurvey
|
||||
- DEBUG=0
|
||||
- DEBUG_SQL=0
|
||||
- PUBLIC_URL=${PUBLIC_URL}
|
||||
- SHOW_SCRIPT_NAME=false
|
||||
- URL_FORMAT=path
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
volumes:
|
||||
db_data:
|
||||
limesurvey_upload:
|
||||
38
blueprints/limesurvey/limesurvey.svg
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 159.9 43.5" style="enable-background:new 0 0 159.9 43.5;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#14AE5C;}
|
||||
</style>
|
||||
<path class="st0" d="M41.8,36.4h10.1v-3h-6.3V23.1h-3.8V36.4z M55.1,25c1.1,0.1,2.1-0.7,2.2-1.8c0-0.1,0-0.1,0-0.2
|
||||
c0-1.1-1-1.9-2-1.9c-0.1,0-0.1,0-0.2,0C54,21,53,21.8,52.9,22.9c0,0,0,0.1,0,0.1c0,1.1,1,2,2.1,1.9C55,25,55,25,55.1,25z M53.2,36.4
|
||||
h3.6V26.1h-3.6V36.4z M72.6,25.9c-1.4,0-2.7,0.6-3.6,1.6c-0.8-1.1-2-1.7-3.3-1.6c-1.2,0-2.3,0.4-3.1,1.3v-1.1h-3.4v10.3h3.6v-5.1
|
||||
c0-1.6,0.8-2.3,1.8-2.3c1,0,1.6,0.6,1.6,2.1v5.3h3.6v-5.1c0-1.6,0.8-2.3,1.8-2.3c0.9,0,1.6,0.6,1.6,2.1v5.3h3.6v-5.9
|
||||
C76.8,27.3,75,25.9,72.6,25.9z M89.7,31.3c0.1-2.8-2.1-5.2-5-5.3c-0.2,0-0.4,0-0.5,0c-3.2,0-5.7,2.2-5.7,5.3c0,3.1,2.4,5.3,6,5.3
|
||||
c1.6,0.1,3.2-0.5,4.4-1.7l-1.9-2c-0.6,0.6-1.5,0.9-2.4,0.9c-1.1,0.1-2.2-0.6-2.5-1.7h7.5C89.7,31.9,89.7,31.5,89.7,31.3z M84.2,28.5
|
||||
c1.1,0,2,0.7,2.1,1.8h-4.2C82.3,29.2,83.2,28.5,84.2,28.5z M96.2,36.7c4,0,5.9-2,5.9-4.3c0-4.9-7.5-3.4-7.5-5.4
|
||||
c0-0.7,0.6-1.2,2.1-1.2c1.3,0,2.6,0.4,3.7,1l1.2-2.8c-1.5-0.8-3.1-1.2-4.8-1.2c-4,0-5.9,1.9-5.9,4.3c0,4.9,7.6,3.4,7.6,5.5
|
||||
c0,0.6-0.6,1.1-2.2,1.1c-1.6,0-3.1-0.5-4.4-1.3l-1.2,2.8C92.3,36.2,94.3,36.7,96.2,36.7z M110.9,26.1v5c0,1.7-0.9,2.4-1.9,2.4
|
||||
c-1.1,0-1.7-0.6-1.7-2.2v-5.2h-3.6v5.8c0,3.3,1.8,4.7,4.4,4.7c1.2,0,2.3-0.4,3.1-1.3v1.1h3.4V26.1H110.9z M120.3,27.3v-1.2h-3.4
|
||||
v10.3h3.6v-4.7c-0.2-1.2,0.7-2.4,1.9-2.5c0.2,0,0.4,0,0.6,0c0.3,0,0.5,0,0.8,0.1v-3.2C122.4,25.8,121.2,26.4,120.3,27.3L120.3,27.3z
|
||||
M133,26.1l-2.6,6.3l-2.5-6.3h-3.7l4.2,10.3h3.7l4.3-10.3H133z M147.6,31.3c0.1-2.8-2.1-5.2-5-5.3c-0.2,0-0.4,0-0.5,0
|
||||
c-3.2,0-5.7,2.2-5.7,5.3c0,3.1,2.4,5.3,6,5.3c1.6,0.1,3.2-0.5,4.4-1.7l-1.9-2c-0.6,0.6-1.5,0.9-2.4,0.9c-1.1,0.1-2.2-0.6-2.5-1.7
|
||||
h7.5C147.5,31.9,147.6,31.5,147.6,31.3z M142.1,28.5c1.1,0,2,0.7,2.1,1.8H140C140.1,29.2,141,28.5,142.1,28.5z M156.5,26.1l-2.5,6.3
|
||||
l-2.5-6.3h-3.7l4.4,10.4c-0.2,0.6-0.8,0.9-1.4,0.9c-0.6,0-1.2-0.2-1.6-0.6l-1.3,2.5c0.9,0.6,1.9,0.9,3,0.9c2,0,3.6-0.8,4.6-3.4
|
||||
l4.5-10.7H156.5z"/>
|
||||
<path class="st0" d="M5.4,4.2c1.3,0,2.6,0.3,3.9,0.7c1.2,0.4,2.4,1,3.6,1.6c1.1,0.6,2.2,1.3,3.3,2.1c0.5,0.4,1,0.8,1.5,1.2
|
||||
c0.3,0.2,0.5,0.4,0.7,0.6c0.1,0.1,0.2,0.2,0.4,0.3L19,11l0.2,0.2l-3.6,0l0.3-0.4l0.3-0.3c0.2-0.2,0.4-0.4,0.6-0.6
|
||||
C17.2,9.4,17.6,9,18,8.6c0.4-0.4,0.9-0.8,1.3-1.1c0.2-0.2,0.5-0.4,0.7-0.5l0.3-0.3l0.3-0.3c0.9-0.7,1.9-1.3,2.9-1.9s2-1.1,3.1-1.6
|
||||
c2.1-1,4.3-1.7,6.5-2.2c1.1-0.2,2.3-0.4,3.4-0.5C37.7,0,38.9,0,40,0.1c-0.5,0.3-1,0.6-1.5,0.9c-0.2,0.1-0.5,0.3-0.7,0.4
|
||||
c-0.1,0.1-0.2,0.1-0.4,0.2l-0.4,0.2c-0.9,0.6-1.9,1.1-2.8,1.7C32.5,4.7,30.8,5.8,29,7s-3.4,2.4-5.1,3.6c-0.4,0.3-0.8,0.6-1.2,0.9
|
||||
s-0.8,0.6-1.2,1s-0.8,0.7-1.2,1c-0.2,0.2-0.4,0.3-0.6,0.5l-0.5,0.5L17,16.4l-1.4-1.9c0,0-0.1-0.1-0.1-0.1l-0.1-0.2L15,13.9l-0.6-0.7
|
||||
c-0.4-0.5-0.8-0.9-1.2-1.3c-0.8-0.9-1.6-1.8-2.4-2.7S9.2,7.4,8.3,6.6C7.4,5.7,6.4,4.9,5.4,4.2z"/>
|
||||
<g transform="translate(0 11.509)">
|
||||
<path class="st0" d="M17.5,25.1c-4,0-7.7-2.3-9.5-5.9l-6.3,2.7c3.9,8.3,13.6,12.2,22.2,8.9l-2.7-6.3C20,24.9,18.8,25.1,17.5,25.1z"
|
||||
/>
|
||||
<path class="st0" d="M6.9,14.4c0-3.7,2-7.2,5.1-9.1L7.6,0C1,4.5-1.7,13,1.1,20.5l6.4-2.7C7.1,16.7,6.9,15.5,6.9,14.4z"/>
|
||||
<path class="st0" d="M28.1,0.4l-6,4.4c2,1,3.7,2.6,4.7,4.5l6.3-2.7C32,4.2,30.3,2.1,28.1,0.4z"/>
|
||||
<path class="st0" d="M35.1,14.4c0-2.2-0.4-4.4-1.2-6.4l-6.3,2.7c1.8,5-0.3,10.6-5,13.1l2.7,6.3C31.3,27.2,35.1,21.1,35.1,14.4z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
19
blueprints/limesurvey/template.toml
Normal file
@@ -0,0 +1,19 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
mysql_root_password = "${password:32}"
|
||||
mysql_user_password = "${password:32}"
|
||||
admin_email = "${email}"
|
||||
admin_password = "${password:32}"
|
||||
|
||||
[config]
|
||||
[[config.domains]]
|
||||
serviceName = "limesurvey"
|
||||
port = 8080
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
PUBLIC_URL = "http://${main_domain}"
|
||||
ADMIN_EMAIL = "${admin_email}"
|
||||
ADMIN_PASSWORD = "${admin_password}"
|
||||
MYSQL_PASSWORD = "${mysql_user_password}"
|
||||
MYSQL_ROOT_PASSWORD = "${mysql_root_password}"
|
||||
20
blueprints/lubelogger/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
lubelogger:
|
||||
image: ghcr.io/hargata/lubelogger:v1.6.5
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- LC_ALL=${LUBELOGGER_LOCALE}
|
||||
- LANG=${LUBELOGGER_LOCALE}
|
||||
- LUBELOGGER_DOMAIN=${LUBELOGGER_DOMAIN}
|
||||
- EnableAuth=${LUBELOGGER_ENABLE_AUTH}
|
||||
volumes:
|
||||
- lubelogger-data:/App/data
|
||||
- lubelogger-keys:/root/.aspnet/DataProtection-Keys
|
||||
expose:
|
||||
- 8080
|
||||
|
||||
volumes:
|
||||
lubelogger-data: {}
|
||||
lubelogger-keys: {}
|
||||
BIN
blueprints/lubelogger/lubelogger.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
18
blueprints/lubelogger/template.toml
Normal file
@@ -0,0 +1,18 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
lubelogger_locale = "en_US.UTF-8"
|
||||
lubelogger_enable_auth = "false"
|
||||
lubelogger_domain = "https://${main_domain}"
|
||||
|
||||
[config]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "lubelogger"
|
||||
port = 8080
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
LUBELOGGER_LOCALE = "${lubelogger_locale}"
|
||||
LUBELOGGER_ENABLE_AUTH = "${lubelogger_enable_auth}"
|
||||
LUBELOGGER_DOMAIN = "${lubelogger_domain}"
|
||||
47
blueprints/marketing-dashboard/docker-compose.yml
Normal file
@@ -0,0 +1,47 @@
|
||||
services:
|
||||
marketing-dashboard:
|
||||
image: ghcr.io/abel-yelin/marketing-dashboard:latest
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
DATABASE_URL: ${DATABASE_URL}
|
||||
DIRECT_URL: ${DIRECT_URL}
|
||||
MARKETING_APP_URL: ${MARKETING_APP_URL}
|
||||
MARKETING_COLLECTOR_UPSTREAM_URL: ${MARKETING_COLLECTOR_UPSTREAM_URL}
|
||||
MARKETING_SESSION_TIMEOUT_MINUTES: ${MARKETING_SESSION_TIMEOUT_MINUTES}
|
||||
MARKETING_PROXY_TIMEOUT_MS: ${MARKETING_PROXY_TIMEOUT_MS}
|
||||
MARKETING_INGEST_MAX_BODY_BYTES: ${MARKETING_INGEST_MAX_BODY_BYTES}
|
||||
MARKETING_INGEST_IP_RATE_LIMIT: ${MARKETING_INGEST_IP_RATE_LIMIT}
|
||||
MARKETING_INGEST_CLIENT_RATE_LIMIT: ${MARKETING_INGEST_CLIENT_RATE_LIMIT}
|
||||
MARKETING_INGEST_RATE_LIMIT_WINDOW_MS: ${MARKETING_INGEST_RATE_LIMIT_WINDOW_MS}
|
||||
MARKETING_ENABLE_PILOT_API: ${MARKETING_ENABLE_PILOT_API}
|
||||
MARKETING_DASHBOARD_ADMIN_USER: ${MARKETING_DASHBOARD_ADMIN_USER}
|
||||
MARKETING_DASHBOARD_ADMIN_PASSWORD: ${MARKETING_DASHBOARD_ADMIN_PASSWORD}
|
||||
ports:
|
||||
- 3000
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -fsS http://localhost:3000/api/health > /dev/null || exit 1"]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 30s
|
||||
|
||||
postgres:
|
||||
image: postgres:16
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB}
|
||||
POSTGRES_USER: ${POSTGRES_USER}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
volumes:
|
||||
- marketing-dashboard-postgres:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
volumes:
|
||||
marketing-dashboard-postgres:
|
||||
8
blueprints/marketing-dashboard/logo.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Marketing Dashboard">
|
||||
<rect width="128" height="128" rx="24" fill="#111827"/>
|
||||
<path d="M28 86h72" stroke="#f8fafc" stroke-width="8" stroke-linecap="round"/>
|
||||
<path d="M36 76V54" stroke="#22c55e" stroke-width="10" stroke-linecap="round"/>
|
||||
<path d="M58 76V34" stroke="#38bdf8" stroke-width="10" stroke-linecap="round"/>
|
||||
<path d="M80 76V46" stroke="#f59e0b" stroke-width="10" stroke-linecap="round"/>
|
||||
<path d="M34 39l20-10 24 9 18-16" fill="none" stroke="#f8fafc" stroke-width="7" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 630 B |
30
blueprints/marketing-dashboard/template.toml
Normal file
@@ -0,0 +1,30 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
postgres_password = "${password:32}"
|
||||
admin_password = "${password:32}"
|
||||
|
||||
[config]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "marketing-dashboard"
|
||||
port = 3000
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
POSTGRES_DB = "marketing_dashboard"
|
||||
POSTGRES_USER = "marketing_dashboard"
|
||||
POSTGRES_PASSWORD = "${postgres_password}"
|
||||
DATABASE_URL = "postgresql://marketing_dashboard:${postgres_password}@postgres:5432/marketing_dashboard?schema=public"
|
||||
DIRECT_URL = "postgresql://marketing_dashboard:${postgres_password}@postgres:5432/marketing_dashboard?schema=public"
|
||||
MARKETING_APP_URL = "https://${main_domain}"
|
||||
MARKETING_COLLECTOR_UPSTREAM_URL = "https://${main_domain}/api/ingest/browser"
|
||||
MARKETING_SESSION_TIMEOUT_MINUTES = "30"
|
||||
MARKETING_PROXY_TIMEOUT_MS = "4000"
|
||||
MARKETING_INGEST_MAX_BODY_BYTES = "65536"
|
||||
MARKETING_INGEST_IP_RATE_LIMIT = "300"
|
||||
MARKETING_INGEST_CLIENT_RATE_LIMIT = "1200"
|
||||
MARKETING_INGEST_RATE_LIMIT_WINDOW_MS = "60000"
|
||||
MARKETING_ENABLE_PILOT_API = "false"
|
||||
MARKETING_DASHBOARD_ADMIN_USER = "admin"
|
||||
MARKETING_DASHBOARD_ADMIN_PASSWORD = "${admin_password}"
|
||||
15
blueprints/maxio/docker-compose.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
maxio:
|
||||
image: ghcr.io/coollabsio/maxio:0.2.1
|
||||
expose:
|
||||
- 9000
|
||||
volumes:
|
||||
- maxio-data:/data
|
||||
environment:
|
||||
- MAXIO_ACCESS_KEY=${MAXIO_ACCESS_KEY}
|
||||
- MAXIO_SECRET_KEY=${MAXIO_SECRET_KEY}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
maxio-data:
|
||||
8
blueprints/maxio/maxio.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="128" height="128">
|
||||
<path d="M0 0 C7.92 0 15.84 0 24 0 C24 2.64 24 5.28 24 8 C29.28 8 34.56 8 40 8 C40 13.28 40 18.56 40 24 C47.92 24 55.84 24 64 24 C64 18.72 64 13.44 64 8 C69.28 8 74.56 8 80 8 C80 5.36 80 2.72 80 0 C87.92 0 95.84 0 104 0 C104 2.64 104 5.28 104 8 C106.64 8 109.28 8 112 8 C112 37.04 112 66.08 112 96 C104.08 96 96.16 96 88 96 C88 93.36 88 90.72 88 88 C85.36 88 82.72 88 80 88 C80 72.16 80 56.32 80 40 C77.36 40 74.72 40 72 40 C72 47.92 72 55.84 72 64 C64.08 64 56.16 64 48 64 C48 61.36 48 58.72 48 56 C45.36 56 42.72 56 40 56 C40 50.72 40 45.44 40 40 C37.36 40 34.72 40 32 40 C32 58.48 32 76.96 32 96 C24.08 96 16.16 96 8 96 C8 93.36 8 90.72 8 88 C5.36 88 2.72 88 0 88 C0 58.96 0 29.92 0 0 Z " fill="#844CFB" transform="translate(8,8)"/>
|
||||
<path d="M0 0 C2.64 0 5.28 0 8 0 C8 29.04 8 58.08 8 88 C0.08 88 -7.84 88 -16 88 C-16 85.36 -16 82.72 -16 80 C-10.72 80 -5.44 80 0 80 C0 53.6 0 27.2 0 0 Z " fill="#432F72" transform="translate(112,16)"/>
|
||||
<path d="M0 0 C2.64 0 5.28 0 8 0 C8 21.12 8 42.24 8 64 C0.08 64 -7.84 64 -16 64 C-16 61.36 -16 58.72 -16 56 C-10.72 56 -5.44 56 0 56 C0 37.52 0 19.04 0 0 Z " fill="#432F71" transform="translate(32,40)"/>
|
||||
<path d="M0 0 C2.64 0 5.28 0 8 0 C8 7.92 8 15.84 8 24 C0.08 24 -7.84 24 -16 24 C-16 21.36 -16 18.72 -16 16 C-10.72 16 -5.44 16 0 16 C0 10.72 0 5.44 0 0 Z " fill="#41306E" transform="translate(72,48)"/>
|
||||
<path d="M0 0 C2.64 0 5.28 0 8 0 C8 2.64 8 5.28 8 8 C5.36 8 2.72 8 0 8 C0 5.36 0 2.72 0 0 Z " fill="#402F6D" transform="translate(80,40)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
10
blueprints/maxio/template.toml
Normal file
@@ -0,0 +1,10 @@
|
||||
[[config.domains]]
|
||||
serviceName = "maxio"
|
||||
port = 9000
|
||||
host = "${domain}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"MAXIO_ACCESS_KEY=${password:20}",
|
||||
"MAXIO_SECRET_KEY=${password:20}",
|
||||
]
|
||||
@@ -1,7 +1,7 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
mediafetch:
|
||||
image: lukedunsmoto/mediafetch:latest
|
||||
image: lukedunsmoto/mediafetch:1.3.5
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- "3002"
|
||||
@@ -11,8 +11,11 @@ services:
|
||||
- PORT=3002
|
||||
- BASIC_AUTH_USER=${BASIC_AUTH_USER}
|
||||
- BASIC_AUTH_PASS=${BASIC_AUTH_PASS}
|
||||
- PUBLIC_BASE_URL=https://${DOMAIN}
|
||||
- OUTPUT_DIR=/data/downloads
|
||||
- PUBLIC_BASE_URL=${PUBLIC_BASE_URL}
|
||||
- OUTPUT_DIR=${OUTPUT_DIR}
|
||||
- MAX_CONCURRENT_JOBS=${MAX_CONCURRENT_JOBS}
|
||||
- JOB_TIMEOUT_MS=${JOB_TIMEOUT_MS}
|
||||
- VERSION_CHECK_TTL_MS=${VERSION_CHECK_TTL_MS}
|
||||
|
||||
volumes:
|
||||
mediafetch_data:
|
||||
@@ -1,13 +1,21 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
PORT="3002"
|
||||
PUBLIC_BASE_URL="https://${main_domain}"
|
||||
OUTPUT_DIR="/data/downloads"
|
||||
BASIC_AUTH_USER = "admin"
|
||||
BASIC_AUTH_PASS = "${password:12}"
|
||||
BASIC_AUTH_PASS = "changeme"
|
||||
MAX_CONCURRENT_JOBS="2"
|
||||
JOB_TIMEOUT_MS="600000"
|
||||
VERSION_CHECK_TTL_MS="21600000"
|
||||
|
||||
[config]
|
||||
|
||||
[[config.domains]]
|
||||
name = "Domain"
|
||||
variable = "DOMAIN"
|
||||
serviceName = "mediafetch"
|
||||
port = 3002
|
||||
port = "3002"
|
||||
host = "${main_domain}"
|
||||
|
||||
[[config.mounts]]
|
||||
name = "Downloads"
|
||||
|
||||
45
blueprints/miniflux/docker-compose.yml
Normal file
@@ -0,0 +1,45 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
miniflux:
|
||||
image: miniflux/miniflux:2.2.19
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
DATABASE_URL: user=miniflux password=${POSTGRES_PASSWORD} dbname=miniflux host=db sslmode=disable
|
||||
RUN_MIGRATIONS: "1"
|
||||
CREATE_ADMIN: "1"
|
||||
ADMIN_USERNAME: ${ADMIN_USERNAME}
|
||||
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
|
||||
BASE_URL: https://${MINIFLUX_DOMAIN}
|
||||
expose:
|
||||
- "8080"
|
||||
healthcheck:
|
||||
test: ["CMD", "/usr/bin/miniflux", "-healthcheck", "auto"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
db:
|
||||
image: postgres:18-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: miniflux
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
POSTGRES_DB: miniflux
|
||||
expose:
|
||||
- "5432"
|
||||
volumes:
|
||||
- miniflux-db:/var/lib/postgresql
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U miniflux -d miniflux"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
|
||||
volumes:
|
||||
miniflux-db:
|
||||
1
blueprints/miniflux/miniflux.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 78.9 512 354.1"><path d="M166.8 96.2c16.6-8.8 35.2-13.2 54-13.1 39.9 0 65.2 17.3 76.2 52 12.6-14.8 27.7-27.3 44.6-36.9 17.5-10.1 37-15.1 58.6-15.1 29.9 0 51.3 9.1 64.1 27.4s19.3 45.7 19.2 82.3v206.6c0 5.2.7 8.7 2.2 10.5 1.4 1.9 4.6 3.6 9.4 4.9l16.9 5.6V433H411.7c-8.7 0-15-3.3-18.8-9.8-3.8-6.6-5.8-16.4-5.8-29.5V180.1c0-21.1-2.3-36.1-7-45s-12.5-13.3-23.4-13.4c-17.4 0-35.8 10.3-55.4 30.9 2.1 13.3 3 26.7 2.9 40.1v206.6c0 5.2.7 8.7 2.2 10.5s4.6 3.6 9.4 4.9l16.9 5.6v12.6H232.4c-8.7 0-15-3.3-18.8-9.8s-5.8-16.4-5.8-29.5V180.1c0-21.1-2.3-36.1-7-45s-12.4-13.3-23.4-13.4c-17 0-34.6 9.4-52.5 28.1v249.4c0 5.2.7 8.8 2.2 10.9 1.4 2.1 4.4 3.9 8.9 5.3l16.4 4.9v12.6H0v-12.6l16.9-5.6c4.8-1.4 8-3 9.4-4.9s2.2-5.4 2.2-10.5V133.7c0-5.2-.7-8.7-2.2-10.5-1.4-1.9-4.6-3.5-9.4-4.9L0 112.7V100l115.7-21.1h8.2v49.2c12.5-12.8 27-23.6 42.9-31.9"/></svg>
|
||||
|
After Width: | Height: | Size: 882 B |
17
blueprints/miniflux/template.toml
Normal file
@@ -0,0 +1,17 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
postgres_password = "${password:32}"
|
||||
admin_username = "admin"
|
||||
admin_password = "${password:32}"
|
||||
|
||||
[config]
|
||||
[[config.domains]]
|
||||
serviceName = "miniflux"
|
||||
port = 8080
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
MINIFLUX_DOMAIN = "${main_domain}"
|
||||
POSTGRES_PASSWORD = "${postgres_password}"
|
||||
ADMIN_USERNAME = "${admin_username}"
|
||||
ADMIN_PASSWORD = "${admin_password}"
|
||||
@@ -14,6 +14,21 @@ services:
|
||||
- nextcloud_db
|
||||
- nextcloud_redis
|
||||
|
||||
nextcloud_cron:
|
||||
image: nextcloud:stable
|
||||
restart: always
|
||||
volumes:
|
||||
- nextcloud_data:/var/www/html
|
||||
environment:
|
||||
- MYSQL_HOST=nextcloud_db
|
||||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
||||
entrypoint: /cron.sh
|
||||
depends_on:
|
||||
- nextcloud_db
|
||||
- nextcloud_redis
|
||||
|
||||
nextcloud_db:
|
||||
image: mariadb:10.11
|
||||
restart: always
|
||||
@@ -31,4 +46,4 @@ services:
|
||||
|
||||
volumes:
|
||||
nextcloud_data:
|
||||
nextcloud_db_data:
|
||||
nextcloud_db_data:
|
||||
|
||||
40
blueprints/omniroute/docker-compose.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
services:
|
||||
omniroute:
|
||||
image: diegosouzapw/omniroute:3.8.17
|
||||
restart: unless-stopped
|
||||
|
||||
expose:
|
||||
- "20128"
|
||||
- "20129"
|
||||
|
||||
volumes:
|
||||
- omniroute-prod-data:/app/data
|
||||
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- PORT=${PORT:-20128}
|
||||
- DASHBOARD_PORT=${DASHBOARD_PORT:-${PORT:-20128}}
|
||||
- API_PORT=${API_PORT:-20129}
|
||||
- API_HOST=${API_HOST:-0.0.0.0}
|
||||
- HOSTNAME=0.0.0.0
|
||||
- DATA_DIR=/app/data
|
||||
- PATH=/home/node/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
|
||||
redis:
|
||||
image: redis:8.6.2-alpine
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- redis-prod-data:/data
|
||||
command: redis-server --save 60 1 --loglevel warning
|
||||
healthcheck:
|
||||
test: [ "CMD", "redis-cli", "ping" ]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
|
||||
volumes:
|
||||
omniroute-prod-data:
|
||||
|
||||
redis-prod-data:
|
||||
|
||||
|
||||
BIN
blueprints/omniroute/omniroute.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
31
blueprints/omniroute/template.toml
Normal file
@@ -0,0 +1,31 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
|
||||
[config]
|
||||
[[config.domains]]
|
||||
serviceName = "omniroute"
|
||||
port = 20128
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
JWT_SECRET = "${base64:64}"
|
||||
API_KEY_SECRET = "${base64:64}"
|
||||
INITIAL_PASSWORD = "${base64:64}"
|
||||
STORAGE_ENCRYPTION_KEY = "${base64:64}"
|
||||
STORAGE_ENCRYPTION_KEY_VERSION = "v1"
|
||||
DISABLE_SQLITE_AUTO_BACKUP = false
|
||||
PORT = 20128
|
||||
API_PORT = 20129
|
||||
OMNIROUTE_USE_TURBOPACK = 1
|
||||
NODE_ENV = "production"
|
||||
MACHINE_ID_SALT = "endpoint-proxy-salt"
|
||||
AUTH_COOKIE_SECURE = false
|
||||
REQUIRE_API_KEY = false
|
||||
ALLOW_API_KEY_REVEAL = false
|
||||
BASE_URL = "http://localhost:20128"
|
||||
CLOUD_URL = ""
|
||||
NEXT_PUBLIC_BASE_URL = "http://localhost:20128"
|
||||
ENABLE_SOCKS5_PROXY = true
|
||||
NEXT_PUBLIC_ENABLE_SOCKS5_PROXY = true
|
||||
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES = 70
|
||||
APP_LOG_TO_FILE = true
|
||||
18
blueprints/openobserve/docker-compose.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
openobserve:
|
||||
image: public.ecr.aws/zinclabs/openobserve:v0.70.0
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
ZO_ROOT_USER_EMAIL: ${ZO_ROOT_USER_EMAIL}
|
||||
ZO_ROOT_USER_PASSWORD: ${ZO_ROOT_USER_PASSWORD}
|
||||
ZO_DATA_DIR: ${ZO_DATA_DIR}
|
||||
expose:
|
||||
- 5080
|
||||
- 5081
|
||||
volumes:
|
||||
- data:${ZO_DATA_DIR}
|
||||
|
||||
volumes:
|
||||
data:
|
||||
14
blueprints/openobserve/openobserve.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg width="60" height="84" viewBox="0 0 60 84" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_36_1282)">
|
||||
<path d="M47.3676 25.2808C45.6634 27.959 42.0935 28.799 39.3381 27.1963C39.3237 27.1893 39.3094 27.1787 39.295 27.1717C39.2484 27.1436 39.2017 27.1155 39.1551 27.0873C30.8386 22.1036 19.9604 24.5955 14.7653 32.6897C16.3905 29.9939 15.533 26.5039 12.8027 24.838C10.0437 23.1509 6.41643 23.9663 4.67993 26.655C4.68711 26.641 4.69787 26.6304 4.70505 26.6164C13.3552 13.0358 31.5812 8.87796 45.4624 17.299C45.4696 17.299 45.4732 17.3061 45.4804 17.3096C45.4804 17.3096 45.484 17.3096 45.4876 17.3131C48.2502 19.0072 49.0933 22.5745 47.3676 25.2843V25.2808Z" fill="#6B76E3"/>
|
||||
<path d="M12.3502 58.6929C10.6281 61.3957 11.4604 64.949 14.2051 66.6501C14.1907 66.6431 14.18 66.6325 14.1656 66.6255C0.359754 58.1868 -3.90974 40.4344 4.5539 26.8608C4.58978 26.8011 4.62565 26.7413 4.66512 26.6816C4.67229 26.671 4.67588 26.6605 4.68306 26.6499C6.41956 23.9612 10.0468 23.1458 12.8059 24.8329C15.5326 26.4988 16.3937 29.9888 14.7684 32.6846C14.7684 32.6881 14.7684 32.6916 14.7612 32.6951C14.754 32.7092 14.7433 32.7232 14.7361 32.7373C14.7074 32.783 14.6787 32.8287 14.65 32.8744C14.65 32.8814 14.6428 32.8849 14.6392 32.8919C9.56965 41.0424 12.117 51.6883 20.3833 56.7704C17.6314 55.1678 14.0616 56.0113 12.3574 58.6859L12.3502 58.6929Z" fill="#F45B49"/>
|
||||
<path d="M55.0521 57.2985C55.0377 57.3196 55.027 57.3407 55.0126 57.3618C46.3983 70.8861 28.2763 75.0686 14.4203 66.7775C14.3594 66.7424 14.2984 66.7072 14.2374 66.6686C14.2266 66.6615 14.2158 66.658 14.2051 66.651C11.4604 64.9499 10.628 61.3966 12.3502 58.6938C14.0544 56.0192 17.6243 55.1757 20.3761 56.7783C20.3905 56.7854 20.4048 56.7959 20.4192 56.8029C20.4658 56.8311 20.5124 56.8592 20.5591 56.8873C20.5591 56.8873 20.5663 56.8873 20.5663 56.8943C28.8862 61.8711 39.7645 59.3757 44.956 51.2744C43.32 53.9701 44.1775 57.4707 46.9078 59.1402C49.674 60.8307 53.3192 60.0083 55.0485 57.2985H55.0521Z" fill="#5ACA7A"/>
|
||||
<path d="M55.0632 57.2746C55.0632 57.2746 55.056 57.2851 55.0524 57.2922C55.0524 57.2922 55.0524 57.2957 55.0488 57.2992C53.3195 60.0055 49.6779 60.8314 46.9081 59.1409C44.1778 57.4714 43.3203 53.9743 44.9563 51.2751C44.9635 51.261 44.9743 51.247 44.9814 51.2329C45.0101 51.1872 45.0388 51.1415 45.0675 51.0959C50.155 42.9419 47.6113 32.282 39.3342 27.1963C42.0861 28.7989 45.6595 27.9589 47.3637 25.2808C49.0895 22.571 48.2499 19.0036 45.4837 17.3096C45.5053 17.3236 45.5268 17.3342 45.5483 17.3482C59.4116 25.822 63.656 43.6764 55.0596 57.2746H55.0632Z" fill="#45A4F3"/>
|
||||
<path d="M32.1478 54.937L26.9204 38.5587L23.7452 50.2133L20.4767 43.5917C20.4229 43.4792 20.3045 43.4089 20.179 43.4089H13.8572C13.215 43.4089 12.6804 42.9134 12.6661 42.2842C12.6661 42.2702 12.6661 42.2526 12.6661 42.2385C12.6589 41.5989 13.2043 41.0857 13.8572 41.0857H20.179C21.2158 41.0857 22.1594 41.6657 22.6115 42.5795L23.103 43.5741L26.741 30.2148L32.1442 47.1415L36.1948 34.3938L38.8821 40.5621C38.9503 40.7202 39.1117 40.8257 39.2875 40.8257H46.0398C46.682 40.8257 47.2202 41.3283 47.2166 41.9574C47.2166 41.9785 47.2166 41.9995 47.2166 42.0206C47.2094 42.6462 46.6784 43.1488 46.0362 43.1488H38.8319C37.978 43.1488 37.2102 42.6498 36.8729 41.8836L36.5357 41.1139L32.1406 54.937H32.1478Z" fill="#333333"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_36_1282">
|
||||
<rect width="60" height="84" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
17
blueprints/openobserve/template.toml
Normal file
@@ -0,0 +1,17 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
root_email = "${email}"
|
||||
root_password = "${password:32}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"ZO_ROOT_USER_EMAIL=${root_email}",
|
||||
"ZO_ROOT_USER_PASSWORD=${root_password}",
|
||||
"ZO_DATA_DIR=/data",
|
||||
]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "openobserve"
|
||||
port = 5080
|
||||
host = "${main_domain}"
|
||||
45
blueprints/opensourcepos/docker-compose.yml
Normal file
@@ -0,0 +1,45 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
opensourcepos:
|
||||
image: jekkos/opensourcepos:master
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
opensourcepos-db:
|
||||
condition: service_healthy
|
||||
expose:
|
||||
- "80"
|
||||
environment:
|
||||
CI_ENVIRONMENT: production
|
||||
ALLOWED_HOSTNAMES: ${ALLOWED_HOSTNAMES}
|
||||
FORCE_HTTPS: ${FORCE_HTTPS}
|
||||
PHP_TIMEZONE: ${PHP_TIMEZONE}
|
||||
MYSQL_USERNAME: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
MYSQL_DB_NAME: ${MYSQL_DATABASE}
|
||||
MYSQL_HOST_NAME: opensourcepos-db
|
||||
volumes:
|
||||
- opensourcepos-uploads:/app/public/uploads
|
||||
- opensourcepos-logs:/app/writable/logs
|
||||
|
||||
opensourcepos-db:
|
||||
image: mariadb:10.11
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
volumes:
|
||||
- opensourcepos-db:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "healthcheck.sh --connect --innodb_initialized"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
|
||||
volumes:
|
||||
opensourcepos-db:
|
||||
opensourcepos-uploads:
|
||||
opensourcepos-logs:
|
||||
9
blueprints/opensourcepos/opensourcepos.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="OpenSourcePOS">
|
||||
<rect width="128" height="128" rx="24" fill="#177245"/>
|
||||
<path fill="#fff" d="M30 34h68l-6 44H40L30 34Z"/>
|
||||
<path fill="#d8f3dc" d="M42 45h44l-3 22H45l-3-22Z"/>
|
||||
<path fill="#fff" d="M42 83h44a10 10 0 0 1 10 10v3H32v-3a10 10 0 0 1 10-10Z"/>
|
||||
<path fill="#177245" d="M50 51h28v8H50zM49 88h30v5H49z"/>
|
||||
<circle cx="48" cy="75" r="4" fill="#177245"/>
|
||||
<circle cx="80" cy="75" r="4" fill="#177245"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 512 B |
51
blueprints/opensourcepos/template.toml
Normal file
@@ -0,0 +1,51 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
mysql_root_password = "${password:32}"
|
||||
mysql_password = "${password:32}"
|
||||
php_timezone = "UTC"
|
||||
force_https = "false"
|
||||
allowed_hostnames = "${main_domain}"
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "opensourcepos"
|
||||
port = 80
|
||||
host = "${main_domain}"
|
||||
path = "/"
|
||||
|
||||
[[config.mounts]]
|
||||
filePath = "README.md"
|
||||
content = """# OpenSourcePOS
|
||||
|
||||
This template deploys Open Source Point of Sale with MariaDB using the upstream Docker image and persistent storage for uploads, logs, and database data.
|
||||
|
||||
## Access
|
||||
|
||||
- URL: `http://${main_domain}`
|
||||
- Default application user: `admin`
|
||||
- Default application password: `pointofsale`
|
||||
|
||||
Change the default application password immediately after the first login.
|
||||
|
||||
## Hostnames and HTTPS
|
||||
|
||||
OpenSourcePOS validates incoming host headers in production. The `allowed_hostnames` variable defaults to `${main_domain}` and can be set to a comma-separated list such as `pos.example.com,www.pos.example.com`.
|
||||
|
||||
The template defaults `force_https` to `false` because Dokploy terminates TLS outside the container. Set it to `true` only when your deployment always reaches OpenSourcePOS through HTTPS and the reverse proxy sends the expected headers.
|
||||
|
||||
## Storage
|
||||
|
||||
The template creates persistent volumes for:
|
||||
|
||||
- MariaDB data
|
||||
- uploaded files
|
||||
- application logs
|
||||
"""
|
||||
|
||||
[config.env]
|
||||
MYSQL_ROOT_PASSWORD = "${mysql_root_password}"
|
||||
MYSQL_DATABASE = "ospos"
|
||||
MYSQL_USER = "admin"
|
||||
MYSQL_PASSWORD = "${mysql_password}"
|
||||
PHP_TIMEZONE = "${php_timezone}"
|
||||
FORCE_HTTPS = "${force_https}"
|
||||
ALLOWED_HOSTNAMES = "${allowed_hostnames}"
|
||||
@@ -12,18 +12,36 @@ services:
|
||||
NODE_ENV: production
|
||||
URL: ${URL}
|
||||
FORCE_HTTPS: 'false'
|
||||
PROXY_HEADERS_TRUSTED: 'true'
|
||||
SECRET_KEY: ${SECRET_KEY}
|
||||
UTILS_SECRET: ${UTILS_SECRET}
|
||||
DATABASE_URL: postgres://outline:${POSTGRES_PASSWORD}@postgres:5432/outline
|
||||
PGSSLMODE: disable
|
||||
REDIS_URL: redis://redis:6379
|
||||
FILE_STORAGE: local
|
||||
FILE_STORAGE_LOCAL_ROOT_DIR: /var/lib/outline/data
|
||||
OIDC_CLIENT_ID: outline
|
||||
OIDC_CLIENT_SECRET: ${CLIENT_SECRET}
|
||||
OIDC_AUTH_URI: ${DEX_URL}/auth
|
||||
OIDC_TOKEN_URI: ${DEX_URL}/token
|
||||
OIDC_USERINFO_URI: ${DEX_URL}/userinfo
|
||||
OIDC_USERNAME_CLAIM: preferred_username
|
||||
OIDC_DISPLAY_NAME: OpenID Connect
|
||||
OIDC_SCOPES: openid profile email
|
||||
volumes:
|
||||
- outline_data-test-outline-khufpx:/var/lib/outline/data
|
||||
|
||||
dex:
|
||||
image: nginx:1.27-alpine
|
||||
restart: always
|
||||
depends_on:
|
||||
- dex-server
|
||||
volumes:
|
||||
- ../files/etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
|
||||
ports:
|
||||
- 5556
|
||||
|
||||
dex-server:
|
||||
image: ghcr.io/dexidp/dex:v2.37.0
|
||||
restart: always
|
||||
volumes:
|
||||
@@ -32,8 +50,6 @@ services:
|
||||
- dex
|
||||
- serve
|
||||
- /etc/dex/config.yaml
|
||||
ports:
|
||||
- 5556
|
||||
|
||||
postgres:
|
||||
image: postgres:15
|
||||
@@ -53,5 +69,6 @@ services:
|
||||
- redis_data-test-outline-khufpx:/data
|
||||
|
||||
volumes:
|
||||
outline_data-test-outline-khufpx:
|
||||
postgres_data-test-outline-khufpx:
|
||||
redis_data-test-outline-khufpx:
|
||||
redis_data-test-outline-khufpx:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
dex_domain = "${domain}"
|
||||
dex_domain = "dex-${domain}"
|
||||
secret_key = "${hash:64}"
|
||||
utils_secret = "${base64:32}"
|
||||
client_secret = "${base64:32}"
|
||||
@@ -17,8 +17,8 @@ port = 5_556
|
||||
host = "${dex_domain}"
|
||||
|
||||
[config.env]
|
||||
URL = "http://${main_domain}"
|
||||
DEX_URL = "http://${dex_domain}"
|
||||
URL = "https://${main_domain}"
|
||||
DEX_URL = "https://${dex_domain}"
|
||||
DOMAIN_NAME = "${main_domain}"
|
||||
POSTGRES_PASSWORD = "${postgres_password}"
|
||||
SECRET_KEY = "${secret_key}"
|
||||
@@ -28,7 +28,7 @@ CLIENT_SECRET = "${client_secret}"
|
||||
[[config.mounts]]
|
||||
filePath = "/etc/dex/config.yaml"
|
||||
content = """
|
||||
issuer: http://${dex_domain}
|
||||
issuer: https://${dex_domain}
|
||||
|
||||
web:
|
||||
http: 0.0.0.0:5556
|
||||
@@ -60,7 +60,28 @@ oauth2:
|
||||
staticClients:
|
||||
- id: "outline"
|
||||
redirectURIs:
|
||||
- http://${main_domain}/auth/oidc.callback
|
||||
- https://${main_domain}/auth/oidc.callback
|
||||
name: "Outline"
|
||||
secret: "${client_secret}"
|
||||
"""
|
||||
|
||||
[[config.mounts]]
|
||||
filePath = "/etc/nginx/conf.d/default.conf"
|
||||
content = """
|
||||
server {
|
||||
listen 5556;
|
||||
|
||||
location = / {
|
||||
add_header Content-Type text/plain;
|
||||
return 200 "Dex ready\n";
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://dex-server:5556;
|
||||
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;
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
15
blueprints/paperclip/README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Paperclip
|
||||
|
||||
Paperclip is an open-source control plane for managing teams of AI agents, goals, budgets, tickets, and recurring work.
|
||||
|
||||
This Dokploy template includes:
|
||||
|
||||
- Paperclip web/API service using the official GHCR image
|
||||
- PostgreSQL 17 database with health check
|
||||
- Generated `BETTER_AUTH_SECRET`
|
||||
- Generated database password
|
||||
- Persistent `/paperclip` storage for instance data
|
||||
- Public URL configured from the Dokploy domain
|
||||
- Dokploy domain routing to Paperclip on port 3100
|
||||
|
||||
After deployment, check the Paperclip container logs for first-run setup or invite information.
|
||||
44
blueprints/paperclip/docker-compose.yml
Normal file
@@ -0,0 +1,44 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:17-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: paperclip
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
POSTGRES_DB: paperclip
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U paperclip -d paperclip"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
|
||||
paperclip:
|
||||
image: ghcr.io/paperclipai/paperclip:latest
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
HOST: 0.0.0.0
|
||||
PORT: "3100"
|
||||
SERVE_UI: "true"
|
||||
DATABASE_URL: ${DATABASE_URL}
|
||||
BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET}
|
||||
PAPERCLIP_HOME: /paperclip
|
||||
PAPERCLIP_INSTANCE_ID: default
|
||||
PAPERCLIP_CONFIG: /paperclip/instances/default/config.json
|
||||
PAPERCLIP_DEPLOYMENT_MODE: ${PAPERCLIP_DEPLOYMENT_MODE}
|
||||
PAPERCLIP_DEPLOYMENT_EXPOSURE: ${PAPERCLIP_DEPLOYMENT_EXPOSURE}
|
||||
PAPERCLIP_PUBLIC_URL: ${PAPERCLIP_PUBLIC_URL}
|
||||
expose:
|
||||
- "3100"
|
||||
volumes:
|
||||
- paperclip-data:/paperclip
|
||||
|
||||
volumes:
|
||||
postgres-data: {}
|
||||
paperclip-data: {}
|
||||
5
blueprints/paperclip/logo.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Paperclip logo">
|
||||
<rect width="128" height="128" rx="28" fill="#111827"/>
|
||||
<path d="M43 70.5 76.5 37c10.4-10.4 27.3-3 27.3 11.8 0 4.4-1.8 8.7-4.9 11.8L58.4 101.1c-13 13-34.2 3.8-34.2-14.6 0-5.5 2.2-10.7 6.1-14.6l43.9-43.9" fill="none" stroke="#f8fafc" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M46.6 78.8 83.3 42.1c4.8-4.8 12.9-1.4 12.9 5.4 0 2-.8 4-2.2 5.4L55.2 91.7c-6.3 6.3-17.2 1.9-17.2-7 0-2.6 1-5.1 2.9-7l36.4-36.4" fill="none" stroke="#38bdf8" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 646 B |
20
blueprints/paperclip/template.toml
Normal file
@@ -0,0 +1,20 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
postgres_password = "${password:32}"
|
||||
better_auth_secret = "${password:64}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"POSTGRES_PASSWORD=${postgres_password}",
|
||||
"DATABASE_URL=postgres://paperclip:${postgres_password}@postgres:5432/paperclip",
|
||||
"BETTER_AUTH_SECRET=${better_auth_secret}",
|
||||
"PAPERCLIP_DEPLOYMENT_MODE=authenticated",
|
||||
"PAPERCLIP_DEPLOYMENT_EXPOSURE=private",
|
||||
"PAPERCLIP_PUBLIC_URL=https://${main_domain}"
|
||||
]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "paperclip"
|
||||
port = 3100
|
||||
host = "${main_domain}"
|
||||
@@ -2,8 +2,8 @@ version: "3.8"
|
||||
|
||||
services:
|
||||
web:
|
||||
image: makeplane/plane-frontend:${APP_RELEASE:-v0.27.1}
|
||||
command: node web/server.js web
|
||||
image: makeplane/plane-frontend:${APP_RELEASE:-v1.2.3}
|
||||
restart: always
|
||||
depends_on:
|
||||
- api
|
||||
- worker
|
||||
@@ -11,8 +11,8 @@ services:
|
||||
- .env
|
||||
|
||||
space:
|
||||
image: makeplane/plane-space:${APP_RELEASE:-v0.27.1}
|
||||
command: node space/server.js space
|
||||
image: makeplane/plane-space:${APP_RELEASE:-v1.2.3}
|
||||
restart: always
|
||||
depends_on:
|
||||
- api
|
||||
- worker
|
||||
@@ -21,8 +21,8 @@ services:
|
||||
- .env
|
||||
|
||||
admin:
|
||||
image: makeplane/plane-admin:${APP_RELEASE:-v0.27.1}
|
||||
command: node admin/server.js admin
|
||||
image: makeplane/plane-admin:${APP_RELEASE:-v1.2.3}
|
||||
restart: always
|
||||
depends_on:
|
||||
- api
|
||||
- web
|
||||
@@ -30,8 +30,8 @@ services:
|
||||
- .env
|
||||
|
||||
live:
|
||||
image: makeplane/plane-live:${APP_RELEASE:-v0.27.1}
|
||||
command: node live/dist/server.js live
|
||||
image: makeplane/plane-live:${APP_RELEASE:-v1.2.3}
|
||||
restart: always
|
||||
depends_on:
|
||||
- api
|
||||
- web
|
||||
@@ -39,7 +39,8 @@ services:
|
||||
- .env
|
||||
|
||||
api:
|
||||
image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1}
|
||||
image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3}
|
||||
restart: always
|
||||
command: ./bin/docker-entrypoint-api.sh
|
||||
volumes:
|
||||
- logs_api:/code/plane/logs
|
||||
@@ -51,7 +52,8 @@ services:
|
||||
- .env
|
||||
|
||||
worker:
|
||||
image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1}
|
||||
image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3}
|
||||
restart: always
|
||||
command: ./bin/docker-entrypoint-worker.sh
|
||||
volumes:
|
||||
- logs_worker:/code/plane/logs
|
||||
@@ -64,7 +66,8 @@ services:
|
||||
- .env
|
||||
|
||||
beat-worker:
|
||||
image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1}
|
||||
image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3}
|
||||
restart: always
|
||||
command: ./bin/docker-entrypoint-beat.sh
|
||||
volumes:
|
||||
- logs_beat-worker:/code/plane/logs
|
||||
@@ -77,7 +80,8 @@ services:
|
||||
- .env
|
||||
|
||||
migrator:
|
||||
image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1}
|
||||
image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3}
|
||||
restart: on-failure
|
||||
command: ./bin/docker-entrypoint-migrator.sh
|
||||
volumes:
|
||||
- logs_migrator:/code/plane/logs
|
||||
@@ -88,7 +92,8 @@ services:
|
||||
- .env
|
||||
|
||||
plane-db:
|
||||
image: postgres:17-alpine
|
||||
image: postgres:15.7-alpine
|
||||
restart: always
|
||||
command: postgres -c 'max_connections=1000'
|
||||
volumes:
|
||||
- pgdata:/var/lib/postgresql/data
|
||||
@@ -96,33 +101,39 @@ services:
|
||||
- .env
|
||||
|
||||
plane-redis:
|
||||
image: valkey/valkey:7.2.5-alpine
|
||||
image: valkey/valkey:7.2.11-alpine
|
||||
restart: always
|
||||
volumes:
|
||||
- redisdata:/data
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
plane-mq:
|
||||
image: rabbitmq:3.13.6-management-alpine
|
||||
restart: always
|
||||
volumes:
|
||||
- rabbitmq_data:/var/lib/rabbitmq
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
plane-minio:
|
||||
image: minio/minio:latest
|
||||
command: server /export --console-address ":9090"
|
||||
plane-storage:
|
||||
image: rustfs/rustfs:1.0.0-alpha.90
|
||||
restart: always
|
||||
volumes:
|
||||
- uploads:/export
|
||||
- uploads:/data
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
proxy:
|
||||
image: makeplane/plane-proxy:${APP_RELEASE:-v0.27.1}
|
||||
image: makeplane/plane-proxy:${APP_RELEASE:-v1.2.3}
|
||||
restart: always
|
||||
depends_on:
|
||||
- web
|
||||
- api
|
||||
- space
|
||||
- admin
|
||||
- live
|
||||
volumes:
|
||||
- proxy_config:/config
|
||||
- proxy_data:/data
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
@@ -135,3 +146,5 @@ volumes:
|
||||
logs_beat-worker:
|
||||
logs_migrator:
|
||||
rabbitmq_data:
|
||||
proxy_config:
|
||||
proxy_data:
|
||||
|
||||
@@ -1,53 +1,59 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
postgres_user = "${username}"
|
||||
db_password = "${password:32}"
|
||||
minio_password = "${password:32}"
|
||||
storage_password = "${password:32}"
|
||||
rabbitmq_user = "${username}"
|
||||
rabbitmq_pass = "${password:32}"
|
||||
secret_key = "${base64:48}"
|
||||
live_secret_key = "${base64:32}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"Domain=${domain}",
|
||||
"WEB_URL=${Domain}",
|
||||
"APP_DOMAIN=${main_domain}",
|
||||
"WEB_URL=http://${main_domain}",
|
||||
"PGHOST=plane-db",
|
||||
"PGDATABASE=plane",
|
||||
"POSTGRES_USER=${username}",
|
||||
"POSTGRES_USER=${postgres_user}",
|
||||
"POSTGRES_PASSWORD=${db_password}",
|
||||
"POSTGRES_DB=plane",
|
||||
"POSTGRES_PORT=5432",
|
||||
"PGDATA=/var/lib/postgresql/data",
|
||||
"DATABASE_URL=postgresql://${postgres_user}:${db_password}@plane-db/plane",
|
||||
"REDIS_HOST=plane-redis",
|
||||
"REDIS_PORT=6379",
|
||||
"REDIS_URL=redis://plane-redis:6379/",
|
||||
"MINIO_ROOT_USER=access-key",
|
||||
"MINIO_ROOT_PASSWORD=${minio_password}",
|
||||
"RUSTFS_ACCESS_KEY=access-key",
|
||||
"RUSTFS_SECRET_KEY=${storage_password}",
|
||||
"RUSTFS_VOLUMES=/data",
|
||||
"RUSTFS_ADDRESS=0.0.0.0:9000",
|
||||
"RUSTFS_CONSOLE_ENABLE=false",
|
||||
"AWS_REGION=",
|
||||
"AWS_ACCESS_KEY_ID=${MINIO_ROOT_USER}",
|
||||
"AWS_SECRET_ACCESS_KEY=${minio_password}",
|
||||
"AWS_S3_ENDPOINT_URL=http://plane-minio:9000",
|
||||
"AWS_ACCESS_KEY_ID=access-key",
|
||||
"AWS_SECRET_ACCESS_KEY=${storage_password}",
|
||||
"AWS_S3_ENDPOINT_URL=http://plane-storage:9000",
|
||||
"AWS_S3_BUCKET_NAME=uploads",
|
||||
"NGINX_PORT=80",
|
||||
"BUCKET_NAME=uploads",
|
||||
"FILE_SIZE_LIMIT=5242880",
|
||||
"RABBITMQ_HOST=plane-mq",
|
||||
"RABBITMQ_PORT=5672",
|
||||
"RABBITMQ_DEFAULT_USER=rabbitmq_user",
|
||||
"RABBITMQ_USER=${rabbitmq_user}",
|
||||
"RABBITMQ_PASSWORD=${rabbitmq_pass}",
|
||||
"RABBITMQ_VHOST=plane",
|
||||
"RABBITMQ_DEFAULT_USER=${rabbitmq_user}",
|
||||
"RABBITMQ_DEFAULT_PASS=${rabbitmq_pass}",
|
||||
"RABBITMQ_DEFAULT_VHOST=plane",
|
||||
"RABBITMQ_VHOST=plane",
|
||||
"AMQP_URL=amqp://${rabbitmq_user}:${rabbitmq_pass}@plane-mq:5672/plane",
|
||||
"API_BASE_URL=http://api:8000",
|
||||
"DEBUG=0",
|
||||
"SENTRY_DSN=",
|
||||
"SENTRY_ENVIRONMENT=production",
|
||||
"CORS_ALLOWED_ORIGINS=https://${Domain}",
|
||||
"CORS_ALLOWED_ORIGINS=http://${main_domain}",
|
||||
"GUNICORN_WORKERS=1",
|
||||
"USE_MINIO=1",
|
||||
"DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@plane-db/plane",
|
||||
"SECRET_KEY=${secret_key}",
|
||||
"AMQP_URL=amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@plane-mq:5672/plane",
|
||||
"API_KEY_RATE_LIMIT=60/minute",
|
||||
"MINIO_ENDPOINT_SSL=0"
|
||||
"MINIO_ENDPOINT_SSL=0",
|
||||
"SITE_ADDRESS=:80",
|
||||
"LIVE_SERVER_SECRET_KEY=${live_secret_key}"
|
||||
]
|
||||
mounts = []
|
||||
|
||||
|
||||
@@ -13,10 +13,25 @@ services:
|
||||
DATABASE_URL: "postgresql://${DB_USER}:${DB_PASSWORD}@postiz-postgres:5432/${DB_NAME}"
|
||||
REDIS_URL: "redis://postiz-redis:6379"
|
||||
BACKEND_INTERNAL_URL: "http://localhost:3000"
|
||||
TEMPORAL_ADDRESS: "temporal:7233"
|
||||
IS_GENERAL: "true"
|
||||
DISABLE_REGISTRATION: "false"
|
||||
RUN_CRON: "true"
|
||||
NOT_SECURED: "true"
|
||||
STORAGE_PROVIDER: "local"
|
||||
UPLOAD_DIRECTORY: "/uploads"
|
||||
NEXT_PUBLIC_UPLOAD_DIRECTORY: "/uploads"
|
||||
|
||||
# === Social Media API Settings ===
|
||||
# These variables should be defined in the Dokploy Environment tab.
|
||||
# For more configuration options and details, please refer to the official documentation.
|
||||
FACEBOOK_APP_ID: ${FACEBOOK_APP_ID}
|
||||
FACEBOOK_APP_SECRET: ${FACEBOOK_APP_SECRET}
|
||||
LINKEDIN_CLIENT_ID: ${LINKEDIN_CLIENT_ID}
|
||||
LINKEDIN_CLIENT_SECRET: ${LINKEDIN_CLIENT_SECRET}
|
||||
X_API_KEY: ${X_API_KEY}
|
||||
X_API_SECRET: ${X_API_SECRET}
|
||||
|
||||
volumes:
|
||||
- postiz-config:/config/
|
||||
- postiz-uploads:/uploads/
|
||||
@@ -25,6 +40,8 @@ services:
|
||||
condition: service_healthy
|
||||
postiz-redis:
|
||||
condition: service_healthy
|
||||
temporal:
|
||||
condition: service_started
|
||||
|
||||
postiz-postgres:
|
||||
image: postgres:17-alpine
|
||||
@@ -35,27 +52,80 @@ services:
|
||||
POSTGRES_USER: ${DB_USER}
|
||||
POSTGRES_DB: ${DB_NAME}
|
||||
volumes:
|
||||
- postiz-postgres-data:/var/lib/postgresql/data
|
||||
- postgres-volume:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: pg_isready -U ${DB_USER} -d ${DB_NAME}
|
||||
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
postiz-redis:
|
||||
image: redis:7.2
|
||||
restart: always
|
||||
|
||||
healthcheck:
|
||||
test: redis-cli ping
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
volumes:
|
||||
- postiz-redis-data:/data
|
||||
|
||||
temporal-elasticsearch:
|
||||
image: elasticsearch:7.17.27
|
||||
environment:
|
||||
- cluster.routing.allocation.disk.threshold_enabled=true
|
||||
- cluster.routing.allocation.disk.watermark.low=512mb
|
||||
- cluster.routing.allocation.disk.watermark.high=256mb
|
||||
- cluster.routing.allocation.disk.watermark.flood_stage=128mb
|
||||
- discovery.type=single-node
|
||||
- ES_JAVA_OPTS=-Xms256m -Xmx256m
|
||||
- xpack.security.enabled=false
|
||||
volumes:
|
||||
- temporal-es-data:/usr/share/elasticsearch/data
|
||||
|
||||
temporal-postgresql:
|
||||
image: postgres:16
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${TEMPORAL_PASSWORD}
|
||||
POSTGRES_USER: ${TEMPORAL_USER}
|
||||
volumes:
|
||||
- temporal-pg-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${TEMPORAL_USER}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
temporal:
|
||||
image: temporalio/auto-setup:1.28.1
|
||||
depends_on:
|
||||
temporal-postgresql:
|
||||
condition: service_healthy
|
||||
temporal-elasticsearch:
|
||||
condition: service_started
|
||||
environment:
|
||||
- DB=postgres12
|
||||
- DB_PORT=5432
|
||||
- POSTGRES_USER=${TEMPORAL_USER}
|
||||
- POSTGRES_PWD=${TEMPORAL_PASSWORD}
|
||||
- POSTGRES_SEEDS=temporal-postgresql
|
||||
- ENABLE_ES=true
|
||||
- ES_SEEDS=temporal-elasticsearch
|
||||
- ES_VERSION=v7
|
||||
- TEMPORAL_NAMESPACE=default
|
||||
healthcheck:
|
||||
test: ["CMD", "tctl", "--address", "127.0.0.1:7233", "workflow", "list"]
|
||||
interval: 15s
|
||||
timeout: 10s
|
||||
retries: 30
|
||||
start_period: 120s
|
||||
|
||||
volumes:
|
||||
postiz-postgres-data:
|
||||
postgres-volume:
|
||||
postiz-redis-data:
|
||||
postiz-config:
|
||||
postiz-uploads:
|
||||
postiz-uploads:
|
||||
temporal-es-data:
|
||||
temporal-pg-data:
|
||||
@@ -3,19 +3,29 @@ main_domain = "${domain}"
|
||||
db_password = "${password}"
|
||||
db_user = "postiz"
|
||||
db_name = "postiz"
|
||||
temporal_password = "${password}"
|
||||
temporal_user = "temporal"
|
||||
jwt_secret = "${base64:32}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"POSTIZ_HOST=${main_domain}",
|
||||
"JWT_SECRET=${jwt_secret}",
|
||||
"DB_USER=${db_user}",
|
||||
"DB_PASSWORD=${db_password}",
|
||||
"DB_NAME=${db_name}",
|
||||
"TEMPORAL_USER=${temporal_user}",
|
||||
"TEMPORAL_PASSWORD=${temporal_password}",
|
||||
"FACEBOOK_APP_ID=",
|
||||
"FACEBOOK_APP_SECRET=",
|
||||
"LINKEDIN_CLIENT_ID=",
|
||||
"LINKEDIN_CLIENT_SECRET=",
|
||||
"X_API_KEY=",
|
||||
"X_API_SECRET="
|
||||
]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "postiz-app"
|
||||
port = 5_000
|
||||
port = 5000
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
POSTIZ_HOST = "${main_domain}"
|
||||
DB_PASSWORD = "${db_password}"
|
||||
DB_USER = "${db_user}"
|
||||
DB_NAME = "${db_name}"
|
||||
JWT_SECRET = "${jwt_secret}"
|
||||
|
||||
90
blueprints/prefect/docker-compose.yml
Normal file
@@ -0,0 +1,90 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
prefect:
|
||||
image: prefecthq/prefect:3.7.5-python3.12
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
prefect-postgres:
|
||||
condition: service_healthy
|
||||
prefect-redis:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- PREFECT_API_DATABASE_CONNECTION_URL=postgresql+asyncpg://prefect:${POSTGRES_PASSWORD}@prefect-postgres:5432/prefect
|
||||
- PREFECT_SERVER_API_HOST=0.0.0.0
|
||||
- PREFECT_SERVER_UI_API_URL=https://${PREFECT_DOMAIN}/api
|
||||
- PREFECT_MESSAGING_BROKER=prefect_redis.messaging
|
||||
- PREFECT_MESSAGING_CACHE=prefect_redis.messaging
|
||||
- PREFECT_REDIS_MESSAGING_HOST=prefect-redis
|
||||
- PREFECT_REDIS_MESSAGING_PORT=6379
|
||||
- PREFECT_REDIS_MESSAGING_DB=0
|
||||
command: prefect server start --no-services
|
||||
expose:
|
||||
- 4200
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"python",
|
||||
"-c",
|
||||
"import urllib.request as u; u.urlopen('http://localhost:4200/api/health', timeout=1)",
|
||||
]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 60s
|
||||
|
||||
prefect-services:
|
||||
image: prefecthq/prefect:3.7.5-python3.12
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
prefect:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- PREFECT_API_DATABASE_CONNECTION_URL=postgresql+asyncpg://prefect:${POSTGRES_PASSWORD}@prefect-postgres:5432/prefect
|
||||
- PREFECT_MESSAGING_BROKER=prefect_redis.messaging
|
||||
- PREFECT_MESSAGING_CACHE=prefect_redis.messaging
|
||||
- PREFECT_REDIS_MESSAGING_HOST=prefect-redis
|
||||
- PREFECT_REDIS_MESSAGING_PORT=6379
|
||||
- PREFECT_REDIS_MESSAGING_DB=0
|
||||
command: prefect server services start
|
||||
|
||||
prefect-worker:
|
||||
image: prefecthq/prefect:3.7.5-python3.12
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
prefect:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- PREFECT_API_URL=http://prefect:4200/api
|
||||
command: prefect worker start --pool local-pool
|
||||
|
||||
prefect-postgres:
|
||||
image: postgres:14-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_USER=prefect
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DB=prefect
|
||||
volumes:
|
||||
- prefect-postgres-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U prefect -d prefect"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
prefect-redis:
|
||||
image: redis:7.2-alpine
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- prefect-redis-data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
volumes:
|
||||
prefect-postgres-data:
|
||||
prefect-redis-data:
|
||||
7
blueprints/prefect/prefect.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Prefect</title>
|
||||
<desc id="desc">Prefect template icon</desc>
|
||||
<rect width="256" height="256" rx="56" fill="#070f2b"/>
|
||||
<path d="M64 61h74c32 0 56 22 56 52s-24 53-56 53H98v45H64V61Zm34 31v43h36c15 0 25-9 25-22s-10-21-25-21H98Z" fill="#3d73ff"/>
|
||||
<path d="M101 135h37c15 0 25-9 25-22 0-6-2-11-6-15 17 6 28 21 28 40 0 26-21 46-51 46h-33v-49Z" fill="#16d6ff" opacity="0.88"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 507 B |
15
blueprints/prefect/template.toml
Normal file
@@ -0,0 +1,15 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
postgres_password = "${password:32}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"PREFECT_DOMAIN=${main_domain}",
|
||||
"POSTGRES_PASSWORD=${postgres_password}",
|
||||
]
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "prefect"
|
||||
port = 4200
|
||||
host = "${main_domain}"
|
||||
11
blueprints/privatebin/docker-compose.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
services:
|
||||
privatebin:
|
||||
image: privatebin/nginx-fpm-alpine:2.0.4
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- privatebin_data:/srv/data
|
||||
ports:
|
||||
- "8080"
|
||||
|
||||
volumes:
|
||||
privatebin_data:
|
||||
5
blueprints/privatebin/privatebin.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<rect width="128" height="128" rx="28" fill="#101828"/>
|
||||
<circle cx="64" cy="64" r="34" fill="#38bdf8" opacity="0.92"/>
|
||||
<text x="64" y="74" text-anchor="middle" font-family="Arial, sans-serif" font-size="30" font-weight="700" fill="#ffffff">P</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 325 B |
11
blueprints/privatebin/template.toml
Normal file
@@ -0,0 +1,11 @@
|
||||
[variables]
|
||||
main_domain = "${domain}"
|
||||
|
||||
[config]
|
||||
env = {}
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "privatebin"
|
||||
port = 8080
|
||||
host = "${main_domain}"
|
||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 1.6 KiB |
13
blueprints/qui/docker-compose.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
qui:
|
||||
image: ghcr.io/autobrr/qui:latest
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- "7476"
|
||||
volumes:
|
||||
- qui-config:/config
|
||||
|
||||
volumes:
|
||||
qui-config:
|
||||
BIN
blueprints/qui/qui.png
Normal file
|
After Width: | Height: | Size: 12 KiB |