mirror of
https://github.com/tiennm99/coolify.git
synced 2026-10-19 18:15:31 +00:00
Merge branch 'next' into feature/signoz
This commit is contained in:
275 files changed
+13127
-2777
No files matched your search
@@ -7,10 +7,6 @@
|
||||
services:
|
||||
affine:
|
||||
image: ghcr.io/toeverything/affine-graphql:stable
|
||||
command:
|
||||
- sh
|
||||
- '-c'
|
||||
- 'node ./scripts/self-host-predeploy && node ./dist/index.js'
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -25,7 +21,6 @@ services:
|
||||
max-size: 1000m
|
||||
environment:
|
||||
- SERVICE_FQDN_AFFINE_3010
|
||||
- NODE_OPTIONS=--import=./scripts/register.js
|
||||
- AFFINE_CONFIG_PATH=/root/.affine/config
|
||||
- REDIS_SERVER_HOST=redis
|
||||
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-affine}
|
||||
@@ -46,6 +41,24 @@ services:
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
|
||||
affine_migration:
|
||||
exclude_from_hc: true
|
||||
image: ghcr.io/toeverything/affine-graphql:${AFFINE_REVISION:-stable}
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- affine-storage:/root/.affine/storage
|
||||
- affine-config:/root/.affine/config
|
||||
command: ['sh', '-c', 'node ./scripts/self-host-predeploy.js']
|
||||
environment:
|
||||
- REDIS_SERVER_HOST=redis
|
||||
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-affine}
|
||||
- AFFINE_INDEXER_ENABLED=false
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
volumes:
|
||||
|
||||
@@ -16,7 +16,7 @@ services:
|
||||
- audiobookshelf-config:/config
|
||||
- audiobookshelf-metadata:/metadata
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -f http://localhost:80/ping || exit 1"]
|
||||
test: ["CMD-SHELL", "wget --quiet --tries=1 --timeout=5 http://localhost:80/ping -O /dev/null || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
services:
|
||||
authentik-server:
|
||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.2.3}
|
||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.4.1}
|
||||
restart: unless-stopped
|
||||
command: server
|
||||
environment:
|
||||
@@ -35,7 +35,7 @@ services:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
authentik-worker:
|
||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.2.3}
|
||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.4.1}
|
||||
restart: unless-stopped
|
||||
command: worker
|
||||
environment:
|
||||
|
||||
@@ -11,31 +11,36 @@ services:
|
||||
- changedetection-data:/datastore
|
||||
environment:
|
||||
- SERVICE_FQDN_CHANGEDETECTION_5000
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- BASE_URL=$SERVICE_FQDN_CHANGEDETECTION
|
||||
- PLAYWRIGHT_DRIVER_URL=ws://playwright-chrome:3000/?stealth=1&--disable-web-security=true
|
||||
# Hides the `Referer` header so that monitored websites can't see the changedetection.io hostname.
|
||||
- HIDE_REFERER=true
|
||||
- BASE_URL=${SERVICE_FQDN_CHANGEDETECTION}
|
||||
- PUID=${PUID:-1000}
|
||||
- PGID=${PGID:-1000}
|
||||
- PLAYWRIGHT_DRIVER_URL=${PLAYWRIGHT_DRIVER_URL:-ws://browser-sockpuppet-chrome:3000}
|
||||
- HIDE_REFERER=${HIDE_REFERER:-true}
|
||||
- FETCH_WORKERS=${FETCH_WORKERS:-10}
|
||||
- MINIMUM_SECONDS_RECHECK_TIME=${MINIMUM_SECONDS_RECHECK_TIME:-3}
|
||||
- DISABLE_VERSION_CHECK=${DISABLE_VERSION_CHECK:-true}
|
||||
- SCREENSHOT_MAX_HEIGHT=${SCREENSHOT_MAX_HEIGHT:-16000}
|
||||
- TZ=${TZ:-UTC}
|
||||
- LOGGER_LEVEL=${LOGGER_LEVEL:-DEBUG}
|
||||
healthcheck:
|
||||
test: ["CMD", "echo", "ok"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
depends_on:
|
||||
playwright-chrome:
|
||||
browser-sockpuppet-chrome:
|
||||
condition: service_started
|
||||
healthcheck:
|
||||
test: ["CMD", "echo", "ok"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
playwright-chrome:
|
||||
|
||||
browser-sockpuppet-chrome:
|
||||
hostname: browser-sockpuppet-chrome
|
||||
image: dgtlmoon/sockpuppetbrowser:latest
|
||||
# cap_add:
|
||||
# - SYS_ADMIN
|
||||
# SYS_ADMIN might be too much, but it can be needed on your platform https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#running-puppeteer-on-gitlabci
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
environment:
|
||||
- SCREEN_WIDTH=1920
|
||||
- SCREEN_HEIGHT=1024
|
||||
- SCREEN_DEPTH=16
|
||||
- MAX_CONCURRENT_CHROME_PROCESSES=10
|
||||
- SCREEN_WIDTH=${SCREEN_WIDTH:-1920}
|
||||
- SCREEN_HEIGHT=${SCREEN_HEIGHT:-1024}
|
||||
- SCREEN_DEPTH=${SCREEN_DEPTH:-16}
|
||||
- MAX_CONCURRENT_CHROME_PROCESSES=${MAX_CONCURRENT_CHROME_PROCESSES:-10}
|
||||
healthcheck:
|
||||
test: ["CMD", "echo", "ok"]
|
||||
interval: 5s
|
||||
|
||||
@@ -80,7 +80,7 @@ services:
|
||||
- ACTIVE_STORAGE_SERVICE=${ACTIVE_STORAGE_SERVICE:-local}
|
||||
command: ['bundle', 'exec', 'sidekiq', '-C', 'config/sidekiq.yml']
|
||||
volumes:
|
||||
- sidekiq-data:/app/storage
|
||||
- rails-data:/app/storage
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "bundle exec rails runner 'puts Sidekiq.redis(&:info)' > /dev/null 2>&1"]
|
||||
interval: 30s
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
# documentation: https://hackmd.io/c/codimd-documentation
|
||||
# slogan: Realtime collaborative markdown notes on all platforms
|
||||
# tags: markdown, md, editor, opensource, collaborative, realtime-collaboration, notes
|
||||
# logo: svgs/codimd.png
|
||||
# port: 3000
|
||||
|
||||
services:
|
||||
codimd:
|
||||
image: nabo.codimd.dev/hackmdio/hackmd:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_CODIMD_3000
|
||||
- CMD_DOMAIN=${SERVICE_URL_CODIMD}
|
||||
- CMD_PROTOCOL_USESSL=${CMD_PROTOCOL_USESSL:-false}
|
||||
- CMD_SESSION_SECRET=${SERVICE_PASSWORD_SESSIONSECRET}
|
||||
- CMD_USECDN=${CMD_USECDN:-false}
|
||||
- CMD_DB_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-codimd-db}
|
||||
- CMD_EMAIL=${CMD_EMAIL:-true}
|
||||
- CMD_ALLOW_EMAIL_REGISTER=${CMD_ALLOW_EMAIL_REGISTER:-true}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "curl -f http://localhost:3000/ || exit 1"
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 5
|
||||
volumes:
|
||||
- uploads_data:/home/hackmd/app/public/uploads
|
||||
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
volumes:
|
||||
- codimd_postgres_data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-codimd-db}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
services:
|
||||
backend:
|
||||
image: ghcr.io/get-convex/convex-backend:4499dd4fd7f2148687a7774599c613d052950f46
|
||||
image: ghcr.io/get-convex/convex-backend:5143fec81f146ca67495c12c6b7a15c5802c37e2
|
||||
volumes:
|
||||
- data:/convex/data
|
||||
environment:
|
||||
@@ -15,8 +15,8 @@ services:
|
||||
- INSTANCE_SECRET=${SERVICE_HEX_32_SECRET}
|
||||
- CONVEX_RELEASE_VERSION_DEV=${CONVEX_RELEASE_VERSION_DEV:-}
|
||||
- ACTIONS_USER_TIMEOUT_SECS=${ACTIONS_USER_TIMEOUT_SECS:-}
|
||||
- CONVEX_CLOUD_ORIGIN=${SERVICE_FQDN_CONVEX_6791}
|
||||
- CONVEX_SITE_ORIGIN=${SERVICE_FQDN_CONVEX_6791}/http
|
||||
- CONVEX_CLOUD_ORIGIN=${SERVICE_FQDN_CONVEX_3210}
|
||||
- CONVEX_SITE_ORIGIN=${SERVICE_FQDN_CONVEX_3211}
|
||||
- DATABASE_URL=${DATABASE_URL:-}
|
||||
- DISABLE_BEACON=${DISABLE_BEACON:-}
|
||||
- REDACT_LOGS_TO_CLIENT=${REDACT_LOGS_TO_CLIENT:-}
|
||||
@@ -27,7 +27,7 @@ services:
|
||||
start_period: 5s
|
||||
|
||||
dashboard:
|
||||
image: ghcr.io/get-convex/convex-dashboard:4499dd4fd7f2148687a7774599c613d052950f46
|
||||
image: ghcr.io/get-convex/convex-dashboard:5143fec81f146ca67495c12c6b7a15c5802c37e2
|
||||
environment:
|
||||
- SERVICE_FQDN_CONVEX_6791
|
||||
- NEXT_PUBLIC_DEPLOYMENT_URL=$SERVICE_FQDN_BACKEND_3210
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# documentation: https://crazymax.dev/diun/
|
||||
# slogan: Docker Image Update Notifier is a CLI application to receive notifications when a Docker image is updated on a Docker registry.
|
||||
# tags: docker, notifier, slack
|
||||
# logo: svgs/diun.svg
|
||||
|
||||
services:
|
||||
diun:
|
||||
image: crazymax/diun:latest
|
||||
command: serve
|
||||
volumes:
|
||||
- "diun_data:/data"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
environment:
|
||||
- TZ=${TIME_ZONE:-Europe/Vienna}
|
||||
- LOG_LEVEL=${LOG_LEVEL:-info}
|
||||
- LOG_JSON=${LOG_JSON:-false}
|
||||
- DIUN_WATCH_WORKERS=${DIUN_WATCH_WORKERS:-20}
|
||||
- DIUN_WATCH_SCHEDULE=${DIUN_WATCH_SCHEDULE:- * */6 * * *}
|
||||
- DIUN_WATCH_JITTER=${DIUN_WATCH_JITTER:-30s}
|
||||
- DIUN_PROVIDERS_DOCKER=${DIUN_PROVIDERS_DOCKER:-true}
|
||||
- DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT=${DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT:-true}
|
||||
- DIUN_NOTIF_SLACK_WEBHOOKURL=${SERVICE_WEBHOOK_URL_SLACK}
|
||||
healthcheck:
|
||||
test: ["CMD", "diun", "--version"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
@@ -105,7 +105,7 @@ services:
|
||||
- WEBHOOK_EVENTS_ERRORS_WEBHOOK=${WEBHOOK_EVENTS_ERRORS_WEBHOOK:-}
|
||||
- 'CONFIG_SESSION_PHONE_CLIENT=${CONFIG_SESSION_PHONE_CLIENT:-Evolution API V2}'
|
||||
- CONFIG_SESSION_PHONE_NAME=${CONFIG_SESSION_PHONE_NAME:-Chrome}
|
||||
- CONFIG_SESSION_PHONE_VERSION=${CONFIG_SESSION_PHONE_VERSION:-2.3000.1015901307}
|
||||
- CONFIG_SESSION_PHONE_VERSION=${CONFIG_SESSION_PHONE_VERSION:-2.3000.1020885143}
|
||||
- QRCODE_LIMIT=${QRCODE_LIMIT:-30}
|
||||
- OPENAI_ENABLED=${OPENAI_ENABLED:-true}
|
||||
- DIFY_ENABLED=${DIFY_ENABLED:-true}
|
||||
|
||||
@@ -12,13 +12,15 @@ services:
|
||||
# NOTE: requires the --api-enable-basic-auth option in "command"
|
||||
- GOTENBERG_API_BASIC_AUTH_USERNAME=${SERVICE_USER_GOTENBERG}
|
||||
- GOTENBERG_API_BASIC_AUTH_PASSWORD=${SERVICE_PASSWORD_GOTENBERG}
|
||||
command: [
|
||||
"gotenberg",
|
||||
command:
|
||||
- gotenberg
|
||||
# See the full list of options at https://gotenberg.dev/docs/configuration
|
||||
"--api-enable-basic-auth"
|
||||
#"--api-timeout=60s",
|
||||
#"--chromium-auto-start"
|
||||
]
|
||||
|
||||
# Examples:
|
||||
# - --api-timeout=60s
|
||||
# - --chromium-auto-start
|
||||
- --api-enable-basic-auth
|
||||
- --api-disable-health-check-logging
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000/health"]
|
||||
interval: 5s
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
# documentation: https://support.getgrist.com/
|
||||
# slogan: Grist is a modern relational spreadsheet. It combines the flexibility of a spreadsheet with the robustness of a database.
|
||||
# tags: lowcode, nocode, spreadsheet, database, relational
|
||||
# logo: svgs/grist.svg
|
||||
# port: 443
|
||||
|
||||
services:
|
||||
grist:
|
||||
image: gristlabs/grist:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_GRIST_443
|
||||
- APP_HOME_URL=${SERVICE_FQDN_GRIST}
|
||||
- APP_DOC_URL=${SERVICE_FQDN_GRIST}
|
||||
- GRIST_DOMAIN=${SERVICE_URL_GRIST}
|
||||
- TZ=${TZ:-UTC}
|
||||
- GRIST_SUPPORT_ANON=${SUPPORT_ANON:-false}
|
||||
- GRIST_FORCE_LOGIN=${FORCE_LOGIN:-true}
|
||||
- COOKIE_MAX_AGE=${COOKIE_MAX_AGE:-86400000}
|
||||
- GRIST_PAGE_TITLE_SUFFIX=${PAGE_TITLE_SUFFIX:- - Suffix}
|
||||
- GRIST_HIDE_UI_ELEMENTS=${HIDE_UI_ELEMENTS:-billing,sendToDrive,supportGrist,multiAccounts,tutorials}
|
||||
- GRIST_UI_FEATURES=${UI_FEATURES:-helpCenter,billing,templates,createSite,multiSite,sendToDrive,tutorials,supportGrist}
|
||||
- GRIST_DEFAULT_EMAIL=${DEFAULT_EMAIL:-test@example.com}
|
||||
- GRIST_ORG_IN_PATH=${ORG_IN_PATH:-true}
|
||||
- GRIST_OIDC_SP_HOST=${SERVICE_FQDN_GRIST}
|
||||
- GRIST_OIDC_IDP_SCOPES=${OIDC_IDP_SCOPES:-openid profile email}
|
||||
- GRIST_OIDC_IDP_SKIP_END_SESSION_ENDPOINT=${OIDC_IDP_SKIP_END_SESSION_ENDPOINT:-false}
|
||||
- GRIST_OIDC_IDP_ISSUER=${OIDC_IDP_ISSUER:?}
|
||||
- GRIST_OIDC_IDP_CLIENT_ID=${OIDC_IDP_CLIENT_ID:?}
|
||||
- GRIST_OIDC_IDP_CLIENT_SECRET=${OIDC_IDP_CLIENT_SECRET:?}
|
||||
- GRIST_SESSION_SECRET=${SERVICE_REALBASE64_128}
|
||||
- GRIST_HOME_INCLUDE_STATIC=${HOME_INCLUDE_STATIC:-true}
|
||||
- GRIST_SANDBOX_FLAVOR=${SANDBOX_FLAVOR:-gvisor}
|
||||
- ALLOWED_WEBHOOK_DOMAINS=${ALLOWED_WEBHOOK_DOMAINS}
|
||||
- COMMENTS=${COMMENTS:-true}
|
||||
- TYPEORM_TYPE=${TYPEORM_TYPE:-postgres}
|
||||
- TYPEORM_DATABASE=${POSTGRES_DATABASE:-grist-db}
|
||||
- TYPEORM_USERNAME=${SERVICE_USER_POSTGRES}
|
||||
- TYPEORM_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- TYPEORM_HOST=${TYPEORM_HOST}
|
||||
- TYPEORM_PORT=${TYPEORM_PORT:-5432}
|
||||
- TYPEORM_LOGGING=${TYPEORM_LOGGING:-false}
|
||||
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
|
||||
- GRIST_HELP_CENTER=${SERVICE_FQDN_GRIST}/help
|
||||
- GRIST_TERMS_OF_SERVICE_URL=${SERVICE_FQDN_GRIST}/terms
|
||||
- FREE_COACHING_CALL_URL=${FREE_COACHING_CALL_URL}
|
||||
- GRIST_CONTACT_SUPPORT_URL=${CONTACT_SUPPORT_URL}
|
||||
volumes:
|
||||
- grist-data:/persist
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- node
|
||||
- "-e"
|
||||
- "require('http').get('http://localhost:8484/status', res => process.exit(res.statusCode === 200 ? 0 : 1))"
|
||||
- "> /dev/null 2>&1"
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
postgres:
|
||||
image: postgres:16
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DATABASE:-grist-db}
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
volumes:
|
||||
- grist_postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 20
|
||||
|
||||
redis:
|
||||
image: redis:7
|
||||
volumes:
|
||||
- grist_redis_data:/data
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- redis-cli
|
||||
- PING
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 20
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
services:
|
||||
immich:
|
||||
image: ghcr.io/immich-app/immich-server:release
|
||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||
# extends:
|
||||
# file: hwaccel.transcoding.yml
|
||||
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
|
||||
@@ -33,7 +33,7 @@ services:
|
||||
container_name: immich_machine_learning
|
||||
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
|
||||
# Example tag: ${IMMICH_VERSION:-release}-cuda
|
||||
image: ghcr.io/immich-app/immich-machine-learning:release
|
||||
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
|
||||
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
|
||||
# file: hwaccel.ml.yml
|
||||
# service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
|
||||
@@ -61,12 +61,14 @@ services:
|
||||
retries: 20
|
||||
|
||||
database:
|
||||
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${SERVICE_PASSWORD_POSTGRES}
|
||||
POSTGRES_USER: ${SERVICE_USER_POSTGRES}
|
||||
POSTGRES_DB: ${DB_DATABASE_NAME:-immich}
|
||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||
POSTGRES_INITDB_ARGS: "--data-checksums"
|
||||
# Use 'HDD' if your database isn't stored on SSDs
|
||||
DB_STORAGE_TYPE: ${DB_STORAGE_TYPE:-SSD}
|
||||
volumes:
|
||||
- immich-postgres-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
|
||||
@@ -8,7 +8,7 @@ services:
|
||||
postgres:
|
||||
image: 'postgres:16'
|
||||
volumes:
|
||||
- joplin-postgresql-data:/var/lib/postgresql/data'
|
||||
- joplin-postgresql-data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_64_POSTGRES}
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
# documentation: https://docs.hoarder.app/
|
||||
# slogan: an open source "Bookmark Everything" app that uses AI for automatically tagging the content you throw at it.
|
||||
# documentation: https://docs.karakeep.app/
|
||||
# slogan: A self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search
|
||||
# tags: media,read-it-later,pocket-alternative,omnivore-alternative,instapaper-alternative
|
||||
# logo: svgs/hoarder.svg
|
||||
# port: 3000
|
||||
|
||||
services:
|
||||
web:
|
||||
image: ghcr.io/hoarder-app/hoarder:release
|
||||
image: ghcr.io/karakeep-app/karakeep:release
|
||||
volumes:
|
||||
- hoarder-data:/data
|
||||
- karakeep-data:/data
|
||||
environment:
|
||||
- SERVICE_FQDN_HOARDER
|
||||
- NEXTAUTH_SECRET=${SERVICE_PASSWORD_HOARDERNEXTAUTH}
|
||||
- SERVICE_FQDN_KARAKEEP
|
||||
- NEXTAUTH_SECRET=${SERVICE_PASSWORD_KARAKEEPNEXTAUTH}
|
||||
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI}
|
||||
- NEXTAUTH_URL=${SERVICE_FQDN_HOARDER}
|
||||
- NEXTAUTH_URL=${SERVICE_FQDN_KARAKEEP}
|
||||
- MEILI_ADDR=http://meilisearch:7700
|
||||
- BROWSER_WEB_URL=http://chrome:9222
|
||||
- OPENAI_API_KEY=${SERVICE_OPENAI_API_KEY}
|
||||
@@ -31,14 +31,14 @@ services:
|
||||
- '--hide-scrollbars'
|
||||
|
||||
meilisearch:
|
||||
image: getmeili/meilisearch:v1.6
|
||||
image: getmeili/meilisearch:v1.13.3
|
||||
environment:
|
||||
- MEILI_NO_ANALYTICS=${MEILI_NO_ANALYTICS:-true}
|
||||
- NEXTAUTH_SECRET=${SERVICE_PASSWORD_HOARDERNEXTAUTH}
|
||||
- NEXTAUTH_SECRET=${SERVICE_PASSWORD_KARAKEEPNEXTAUTH}
|
||||
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI}
|
||||
- NEXTAUTH_URL=${SERVICE_FQDN_HOARDER}
|
||||
- NEXTAUTH_URL=${SERVICE_FQDN_KARAKEEP}
|
||||
volumes:
|
||||
- hoarder-meilisearch:/meili_data
|
||||
- karakeep-meilisearch:/meili_data
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:7700/health"]
|
||||
interval: 2s
|
||||
@@ -0,0 +1,63 @@
|
||||
# documentation: https://leantime.io
|
||||
# slogan: Leantime is a goals focused project management system for non-project managers.
|
||||
# tags: project management,productivity,php,mysql,laravel,open source
|
||||
# logo: svgs/leantime.svg
|
||||
# port: 8080
|
||||
|
||||
services:
|
||||
leantime:
|
||||
image: leantime/leantime:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_LEANTIME_8080
|
||||
- LEAN_APP_URL=${SERVICE_FQDN_LEANTIME}
|
||||
- LEAN_DB_HOST=mysql
|
||||
- LEAN_DB_USER=${SERVICE_USER_MYSQLDB}
|
||||
- LEAN_DB_PASSWORD=${SERVICE_PASSWORD_MYSQLDB}
|
||||
- LEAN_DB_DATABASE=${DB_NAME:-leantime-db}
|
||||
- LEAN_SESSION_PASSWORD=${SERVICE_PASSWORD_64_SALT}
|
||||
- LEAN_SESSION_EXPIRATION=${SESSION_EXPIRATION:-28800}
|
||||
- LEAN_USE_REDIS=${USE_REDIS:-true}
|
||||
- LEAN_REDIS_HOST=redis
|
||||
- LEAN_REDIS_PORT=${REDIS_PORT:-6379}
|
||||
- LEAN_REDIS_SCHEME=${REDIS_SCHEME:-tcp}
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
volumes:
|
||||
- public-userfiles:/var/www/html/public/userfiles
|
||||
- userfiles:/var/www/html/userfiles
|
||||
- plugins:/var/www/html/app/Plugins
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:8080"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
mysql:
|
||||
image: mysql:8.4
|
||||
volumes:
|
||||
- leantime_mysql_data:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||
- MYSQL_USER=${SERVICE_USER_MYSQLDB}
|
||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQLDB}
|
||||
- MYSQL_DATABASE=${DB_NAME:-leantime-db}
|
||||
command: --character-set-server=UTF8MB4 --collation-server=UTF8MB4_unicode_ci
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
command: redis-server --appendonly yes
|
||||
volumes:
|
||||
- leantime_redis_data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
@@ -0,0 +1,76 @@
|
||||
# documentation: https://www.limesurvey.org/manual/
|
||||
# slogan: Simple, quick and anonymous online survey tool that's bursting with juicy insights.
|
||||
# tags: online survey, forms, no code, open source
|
||||
# logo: svgs/limesurvey.svg
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
limesurvey:
|
||||
image: adamzammit/limesurvey:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_LIMESURVEY_80
|
||||
- LIMESURVEY_DB_HOST=mariadb
|
||||
- LIMESURVEY_DB_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
- LIMESURVEY_DB_USER=${SERVICE_USER_MYSQL}
|
||||
- LIMESURVEY_DB_NAME=${MYSQL_DATABASE:-limesurvey-db}
|
||||
- LIMESURVEY_ADMIN_USER=${LIMESURVEY_ADMIN_USER:-admin}
|
||||
- LIMESURVEY_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
|
||||
- LIMESURVEY_ADMIN_NAME=${LIMESURVEY_ADMIN_NAME:-Admin}
|
||||
- LIMESURVEY_ADMIN_EMAIL=${LIMESURVEY_ADMIN_EMAIL:-admin@example.com}
|
||||
- LIMESURVEY_FROM_EMAIL=${LIMESURVEY_FROM_EMAIL}
|
||||
- LIMESURVEY_SMTP_HOST=${LIMESURVEY_SMTP_HOST}
|
||||
- LIMESURVEY_SMTP_USER=${LIMESURVEY_SMTP_USER}
|
||||
- LIMESURVEY_SMTP_PASSWORD=${LIMESURVEY_SMTP_PASSWORD}
|
||||
- LIMESURVEY_SMTP_SSL=${LIMESURVEY_SMTP_SSL}
|
||||
- LIMESURVEY_PHP_SESSION_SAVE_HANDLER=redis
|
||||
- LIMESURVEY_PHP_SESSION_SAVE_PATH=tcp://redis:6379
|
||||
- TZ=${TZ:-America/Jamaica}
|
||||
volumes:
|
||||
- limesurvey_plugins_data:/var/www/html/plugins
|
||||
- limesurvey_upload_data:/var/www/html/upload
|
||||
- limesurvey_config_data:/var/www/html/application/config
|
||||
- limesurvey_sessions_data:/var/lime/sessions
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- curl
|
||||
- "-f"
|
||||
- "http://127.0.0.1"
|
||||
interval: 2s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
|
||||
mariadb:
|
||||
image: mariadb:11
|
||||
environment:
|
||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-limesurvey-db}
|
||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||
volumes:
|
||||
- limesurvey_mariadb_data:/var/lib/mysql
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- healthcheck.sh
|
||||
- "--connect"
|
||||
- "--innodb_initialized"
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- redis-cli
|
||||
- ping
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
@@ -0,0 +1,34 @@
|
||||
# documentation: https://marimo.io/
|
||||
# slogan: An open-source reactive notebook for Python — reproducible, git-friendly, SQL built-in, executable as a script, and shareable as an app.
|
||||
# tags: notebook, python, data, analysis
|
||||
# logo: svgs/marimo.svg
|
||||
# port: 8080
|
||||
|
||||
services:
|
||||
marimo:
|
||||
image: ghcr.io/marimo-team/marimo:latest-sql
|
||||
environment:
|
||||
- SERVICE_FQDN_MARIMO_8080
|
||||
- TOKEN_PASSWORD=$SERVICE_PASSWORD_MARIMO
|
||||
volumes:
|
||||
- "marimo:/app"
|
||||
command:
|
||||
- "marimo"
|
||||
- "edit"
|
||||
- "--token-password"
|
||||
- "${SERVICE_PASSWORD_MARIMO}"
|
||||
- "--port"
|
||||
- "8080"
|
||||
- "--host"
|
||||
- "0.0.0.0"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- uvx
|
||||
- --with
|
||||
- httpx[cli]
|
||||
- httpx
|
||||
- http://localhost:8080/health
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
@@ -1,5 +1,5 @@
|
||||
# documentation: https://github.com/maybe-finance/maybe
|
||||
# slogan: Maybe: The OS for your personal finances.
|
||||
# slogan: Maybe, the OS for your personal finances.
|
||||
# tags: finances,wallets,coins,stocks,investments,open,source
|
||||
# logo: svgs/maybe.svg
|
||||
# port: 3000
|
||||
@@ -17,29 +17,75 @@ services:
|
||||
- GOOD_JOB_EXECUTION_MODE=${GOOD_JOB_EXECUTION_MODE:-async}
|
||||
- SECRET_KEY_BASE=${SERVICE_BASE64_64_SECRETKEYBASE}
|
||||
- DB_HOST=postgres
|
||||
- POSTGRES_DB=${POSTGRES_DB:-maybe_db}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-maybe-db}
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- DB_PORT=5432
|
||||
- REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379/1
|
||||
- OPENAI_ACCESS_TOKEN=${OPENAI_ACCESS_TOKEN}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- curl
|
||||
- "-f"
|
||||
- "http://localhost:3000"
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
|
||||
worker:
|
||||
image: ghcr.io/maybe-finance/maybe:latest
|
||||
command: bundle exec sidekiq
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-maybe-db}
|
||||
- SECRET_KEY_BASE=${SERVICE_BASE64_64_SECRETKEYBASE}
|
||||
- SELF_HOSTED=true
|
||||
- RAILS_FORCE_SSL=${RAILS_FORCE_SSL:-false}
|
||||
- RAILS_ASSUME_SSL=${RAILS_ASSUME_SSL:-false}
|
||||
- GOOD_JOB_EXECUTION_MODE=${GOOD_JOB_EXECUTION_MODE:-async}
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379/1
|
||||
- OPENAI_ACCESS_TOKEN=${OPENAI_ACCESS_TOKEN}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
exclude_from_hc: true
|
||||
|
||||
postgres:
|
||||
image: postgres:16
|
||||
image: postgres:16-alpine
|
||||
volumes:
|
||||
- maybe_postgres_data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-maybe_db}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-maybe-db}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:8-alpine
|
||||
command: redis-server --appendonly yes --requirepass ${SERVICE_PASSWORD_REDIS}
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
environment:
|
||||
- REDIS_PASSWORD=${SERVICE_PASSWORD_REDIS}
|
||||
- REDIS_PORT=6379
|
||||
- REDIS_DB=1
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "--pass", "${SERVICE_PASSWORD_REDIS}", "ping"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
@@ -5,7 +5,7 @@
|
||||
# port: 5230
|
||||
|
||||
services:
|
||||
wg-easy:
|
||||
memos:
|
||||
image: neosmemo/memos:stable
|
||||
volumes:
|
||||
- memos/:/var/opt/memos
|
||||
|
||||
@@ -27,7 +27,6 @@ services:
|
||||
|
||||
postgres:
|
||||
image: 'postgres:17-alpine'
|
||||
platform: linux/amd64
|
||||
volumes:
|
||||
- 'postgresql-data:/var/lib/postgresql/data'
|
||||
environment:
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# documentation: https://docs.netbird.io/how-to/examples#net-bird-client-in-docker
|
||||
# slogan: Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
|
||||
# tags: wireguard, mesh-networks, vpn, zero-trust-network-access, open source
|
||||
# logo: svgs/netbird.png
|
||||
|
||||
services:
|
||||
netbird-client:
|
||||
image: 'netbirdio/netbird:latest'
|
||||
environment:
|
||||
- 'NB_SETUP_KEY=${NB_SETUP_KEY}'
|
||||
- 'NB_ENABLE_ROSENPASS=${NB_ENABLE_ROSENPASS:-false}'
|
||||
- 'NB_ENABLE_EXPERIMENTAL_LAZY_CONN=${NB_ENABLE_EXPERIMENTAL_LAZY_CONN:-false}'
|
||||
volumes:
|
||||
- 'netbird-client:/etc/netbird'
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
- SYS_RESOURCE
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- netbird
|
||||
- 'version'
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -0,0 +1,54 @@
|
||||
# documentation: https://docs.observium.org/
|
||||
# slogan: Observium is a comprehensive network monitoring platform designed to deliver powerful monitoring capabilities, combined with an elegant and intuitive user interface.
|
||||
# tags: networking, monitoring
|
||||
# logo: svgs/observium.webp
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
observium:
|
||||
image: mbixtech/observium:latest
|
||||
platform: linux/amd64
|
||||
volumes:
|
||||
- observium_logs:/opt/observium/logs
|
||||
- observium_rrd:/opt/observium/rrd
|
||||
environment:
|
||||
- SERVICE_FQDN_OBSERVIUM=${SERVICE_FQDN_OBSERVIUM}
|
||||
- OBSERVIUM_ADMIN_PASS=${SERVICE_PASSWORD_OBSERVIUMADMIN}
|
||||
- OBSERVIUM_ADMIN_USER=${SERVICE_USER_OBSERVIUMADMIN}
|
||||
- OBSERVIUM_DB_HOST=mariadb
|
||||
- OBSERVIUM_DB_NAME=${OBSERVIUM_DB_NAME:-observium-db}
|
||||
- OBSERVIUM_DB_PASS=${SERVICE_PASSWORD_MARIADB}
|
||||
- OBSERVIUM_DB_USER=${SERVICE_USER_MARIADB}
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- curl
|
||||
- "-f"
|
||||
- "http://localhost/"
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 5s
|
||||
|
||||
mariadb:
|
||||
image: mariadb:lts
|
||||
volumes:
|
||||
- observium_mariadb_data:/var/lib/mysql
|
||||
environment:
|
||||
- MARIADB_ROOT_PASSWORD=${SERVICE_PASSWORD_MARIADBROOT}
|
||||
- MARIADB_USER=${SERVICE_USER_MARIADB}
|
||||
- MARIADB_PASSWORD=${SERVICE_PASSWORD_MARIADB}
|
||||
- MARIADB_DATABASE=${MARIADB_DATABASE:-observium-db}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- healthcheck.sh
|
||||
- "--connect"
|
||||
- "--innodb_initialized"
|
||||
start_period: 10s
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
@@ -0,0 +1,44 @@
|
||||
# documentation: https://docs.onetimesecret.com
|
||||
# slogan: Share sensitive information securely with self-destructing links that are only viewable once.
|
||||
# tags: auth,password,secret,secure
|
||||
# logo: svgs/onetimesecret.svg
|
||||
# port: 3000
|
||||
|
||||
services:
|
||||
onetimesecret:
|
||||
image: onetimesecret/onetimesecret:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_ONETIMESECRET_3000
|
||||
- AUTH_AUTOVERIFY=${AUTH_AUTOVERIFY:-true}
|
||||
- AUTH_SIGNUP=${AUTH_SIGNUP:-true}
|
||||
- COLONEL=${COLONEL:-admin@example.com}
|
||||
- HOST=${HOST:-localhost}
|
||||
- REDIS_URL=redis://:${SERVICE_PASSWORD_REDIS}@redis:6379/0
|
||||
- SECRET=${SERVICE_PASSWORD_ONETIMESECRET}
|
||||
- SSL=${SSL:-false}
|
||||
- RACK_ENV=production
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- ruby
|
||||
- "-rnet/http"
|
||||
- "-e"
|
||||
- "exit(Net::HTTP.get_response(URI('http://localhost:3000')).is_a?(Net::HTTPSuccess) ? 0 : 1)"
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
redis:
|
||||
image: redis:8-alpine
|
||||
command: redis-server --requirepass ${SERVICE_PASSWORD_REDIS}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- redis-cli
|
||||
- ping
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
@@ -0,0 +1,49 @@
|
||||
# documentation: https://starterhelp.orangehrm.com/hc/en-us
|
||||
# slogan: OrangeHRM open source HR management software.
|
||||
# tags: HR, HRIS, HRMS, human resource management, OrangeHRM, HR management
|
||||
# logo: svgs/orangehrm.svg
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
orangehrm:
|
||||
image: orangehrm/orangehrm:latest
|
||||
platform: linux/amd64
|
||||
environment:
|
||||
- SERVICE_FQDN_ORANGEHRM_80
|
||||
- ORANGEHRM_DATABASE_HOST=mariadb
|
||||
- ORANGEHRM_DATABASE_USER=${SERVICE_USER_MYSQL}
|
||||
- ORANGEHRM_DATABASE_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
- ORANGEHRM_DATABASE_NAME=${MYSQL_DATABASE:-orangehrm-db}
|
||||
volumes:
|
||||
- orangehrm-data:/orangehrm
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- curl
|
||||
- "-f"
|
||||
- "http://127.0.0.1"
|
||||
interval: 2s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
|
||||
mariadb:
|
||||
image: mariadb:11
|
||||
volumes:
|
||||
- orangehrm_mariadb_data:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-orangehrm-db}
|
||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- healthcheck.sh
|
||||
- "--connect"
|
||||
- "--innodb_initialized"
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -0,0 +1,61 @@
|
||||
# documentation: https://paymenter.org/docs/guides/docker
|
||||
# slogan: Open-Source Billing, Built for Hosting
|
||||
# tags: automation, billing, open source
|
||||
# logo: svgs/paymenter.svg
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
paymenter:
|
||||
image: ghcr.io/paymenter/paymenter:latest
|
||||
volumes:
|
||||
- app_logs:/app/storage/logs
|
||||
- app_public:/app/storage/public
|
||||
environment:
|
||||
SERVICE_FQDN_PAYMENTER: ${SERVICE_FQDN_PAYMENTER_80}
|
||||
DB_DATABASE: ${MYSQL_DATABASE:-paymenter-db}
|
||||
DB_PASSWORD: ${SERVICE_PASSWORD_MYSQL}
|
||||
DB_USERNAME: ${SERVICE_USER_MYSQL}
|
||||
APP_ENV: production
|
||||
CACHE_STORE: redis
|
||||
SESSION_DRIVER: redis
|
||||
QUEUE_CONNECTION: redis
|
||||
REDIS_HOST: redis
|
||||
REDIS_USERNAME: default
|
||||
REDIS_PASSWORD: ${SERVICE_PASSWORD_64_REDIS}
|
||||
DB_CONNECTION: mariadb
|
||||
DB_HOST: mariadb
|
||||
DB_PORT: 3306
|
||||
APP_KEY: ${SERVICE_BASE64_KEY}
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -sf http://localhost:80 || exit 1"]
|
||||
interval: 10s
|
||||
timeout: 1s
|
||||
retries: 3
|
||||
|
||||
mariadb:
|
||||
image: mariadb:11
|
||||
volumes:
|
||||
- paymenter_mariadb_data:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-paymenter-db}
|
||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
healthcheck:
|
||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:alpine
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
|
||||
interval: 10s
|
||||
timeout: 1s
|
||||
retries: 3
|
||||
@@ -0,0 +1,34 @@
|
||||
# documentation: https://github.com/eduardolat/pgbackweb
|
||||
# slogan: Effortless PostgreSQL backups with a user-friendly web interface!
|
||||
# tags: backup, postgresql, web-interface
|
||||
# logo: svgs/pgbackweb.svg
|
||||
# port: 8085
|
||||
|
||||
services:
|
||||
pgbackweb:
|
||||
image: eduardolat/pgbackweb:latest
|
||||
volumes:
|
||||
- pgbackweb_backups:/backups
|
||||
environment:
|
||||
- SERVICE_FQDN_PGBACKWEB_8085
|
||||
- PBW_ENCRYPTION_KEY=${SERVICE_PASSWORD_64_PGBACKWEB}
|
||||
- PBW_POSTGRES_CONN_STRING=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-pgbackweb-db}?sslmode=disable
|
||||
- TZ=${TIME_ZONE:-UTC}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
exclude_from_hc: true
|
||||
|
||||
postgres:
|
||||
image: postgres:17
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-pgbackweb-db}
|
||||
volumes:
|
||||
- pgbackweb_postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${SERVICE_USER_POSTGRES} -d pgbackweb"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
@@ -0,0 +1,37 @@
|
||||
# documentation: https://github.com/ignisda/ryot
|
||||
# slogan: Roll your own tracker! Ryot is a self-hosted platform for tracking various aspects of life such as media consumption, fitness activities, and more.
|
||||
# tags: rss, reader, self-hosted, automation, tracker, media, fitness
|
||||
# logo: svgs/ryot.svg
|
||||
# port: 8000
|
||||
|
||||
services:
|
||||
ryot:
|
||||
image: ignisda/ryot:v8
|
||||
environment:
|
||||
- SERVICE_FQDN_RYOT_8000
|
||||
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB}
|
||||
- SERVER_ADMIN_ACCESS_TOKEN=${SERVICE_PASSWORD_64_RYOT}
|
||||
- TZ=${TZ:-Europe/Amsterdam}
|
||||
depends_on:
|
||||
postgresql:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/health"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
postgresql:
|
||||
image: postgres:16-alpine
|
||||
volumes:
|
||||
- ryot_postgresql_data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-ryot-db}
|
||||
- TZ=${TZ:-Europe/Amsterdam}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -0,0 +1,68 @@
|
||||
# documentation: https://manual.seafile.com
|
||||
# slogan: Open source cloud storage system for file sync, share and document collaboration
|
||||
# tags: file-manager,file-sharing,storage
|
||||
# logo: svgs/seafile.svg
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
seafile:
|
||||
image: seafileltd/seafile-mc:12.0-latest
|
||||
volumes:
|
||||
- seafile-data:/shared
|
||||
environment:
|
||||
- SERVICE_FQDN_SEAFILE_80
|
||||
- SEAFILE_SERVER_HOSTNAME=${SERVICE_URL_SEAFILE_80}
|
||||
- DB_HOST=mariadb
|
||||
- DB_PORT=3306
|
||||
- DB_ROOT_PASSWD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||
- DB_USER=${SERVICE_USER_MYSQL}
|
||||
- DB_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
- SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db}
|
||||
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db}
|
||||
- SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME:-seahub_db}
|
||||
- TIME_ZONE=${TIME_ZONE:-UTC}
|
||||
- INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL:-test@example.com}
|
||||
- INIT_SEAFILE_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
|
||||
- SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL:-http}
|
||||
- SITE_ROOT=${SITE_ROOT:-/}
|
||||
- NON_ROOT=${NON_ROOT:-false}
|
||||
- JWT_PRIVATE_KEY=${SERVICE_PASSWORD_64_JWT}
|
||||
- SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT:-true}
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
memcached:
|
||||
condition: service_started
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:80/api2/ping"]
|
||||
interval: 20s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
mariadb:
|
||||
image: mariadb:11
|
||||
volumes:
|
||||
- seafile_mariadb_data:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-seafile-db}
|
||||
healthcheck:
|
||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
memcached:
|
||||
image: memcached:latest
|
||||
entrypoint: memcached -m 256
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD-SHELL",
|
||||
'bash -c "echo version | (exec 3<>/dev/tcp/localhost/11211; cat >&3; timeout 0.5 cat <&3; exec 3<&-)"',
|
||||
]
|
||||
interval: 20s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
services:
|
||||
snapdrop:
|
||||
image: lscr.io/linuxserver/snapdrop:latest
|
||||
image: 'linuxserver/snapdrop:version-b8b78cc2'
|
||||
environment:
|
||||
- SERVICE_FQDN_SNAPDROP
|
||||
- PUID=1000
|
||||
|
||||
@@ -279,14 +279,14 @@ services:
|
||||
config:
|
||||
hide_credentials: true
|
||||
supabase-studio:
|
||||
image: supabase/studio:20241202-71e5240
|
||||
image: supabase/studio:2025.06.02-sha-8f2993d
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"node",
|
||||
"-e",
|
||||
"require('http').get('http://127.0.0.1:3000/api/profile', (r) => {if (r.statusCode !== 200) process.exit(1); else process.exit(0); }).on('error', () => process.exit(1))",
|
||||
"fetch('http://127.0.0.1:3000/api/platform/profile').then((r) => {if (r.status !== 200) throw new Error(r.status)})"
|
||||
]
|
||||
timeout: 5s
|
||||
interval: 5s
|
||||
@@ -913,7 +913,7 @@ services:
|
||||
command: ["--config", "etc/vector/vector.yml"]
|
||||
|
||||
supabase-rest:
|
||||
image: postgrest/postgrest:v12.2.0
|
||||
image: postgrest/postgrest:v12.2.12
|
||||
depends_on:
|
||||
supabase-db:
|
||||
# Disable this if you are using an external Postgres database
|
||||
@@ -931,7 +931,7 @@ services:
|
||||
command: "postgrest"
|
||||
exclude_from_hc: true
|
||||
supabase-auth:
|
||||
image: supabase/gotrue:v2.164.0
|
||||
image: supabase/gotrue:v2.174.0
|
||||
depends_on:
|
||||
supabase-db:
|
||||
# Disable this if you are using an external Postgres database
|
||||
@@ -1022,7 +1022,7 @@ services:
|
||||
|
||||
realtime-dev:
|
||||
# This container name looks inconsistent but is correct because realtime constructs tenant id by parsing the subdomain
|
||||
image: supabase/realtime:v2.33.70
|
||||
image: supabase/realtime:v2.34.47
|
||||
container_name: realtime-dev.supabase-realtime
|
||||
depends_on:
|
||||
supabase-db:
|
||||
@@ -1191,7 +1191,7 @@ services:
|
||||
- ./volumes/storage:/var/lib/storage
|
||||
|
||||
supabase-meta:
|
||||
image: supabase/postgres-meta:v0.84.2
|
||||
image: supabase/postgres-meta:v0.89.3
|
||||
depends_on:
|
||||
supabase-db:
|
||||
# Disable this if you are using an external Postgres database
|
||||
@@ -1207,7 +1207,7 @@ services:
|
||||
- PG_META_DB_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
|
||||
supabase-edge-functions:
|
||||
image: supabase/edge-runtime:v1.65.3
|
||||
image: supabase/edge-runtime:v1.67.4
|
||||
depends_on:
|
||||
supabase-analytics:
|
||||
condition: service_healthy
|
||||
@@ -1351,7 +1351,7 @@ services:
|
||||
- /home/deno/functions/main
|
||||
|
||||
supabase-supavisor:
|
||||
image: 'supabase/supavisor:1.1.56'
|
||||
image: 'supabase/supavisor:2.5.1'
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
# documentation: https://github.com/amancevice/docker-superset
|
||||
# slogan: Modern data exploration and visualization platform (unofficial community docker image)
|
||||
# tags: analytics,bi,dashboard,database,sql,unofficial
|
||||
# logo: svgs/superset.svg
|
||||
# port: 8088
|
||||
|
||||
services:
|
||||
superset:
|
||||
image: amancevice/superset:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_SUPERSET_8088
|
||||
- SECRET_KEY=${SERVICE_BASE64_64_SUPERSETSECRETKEY}
|
||||
- MAPBOX_API_KEY=${MAPBOX_API_KEY}
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-superset-db}
|
||||
- REDIS_PASSWORD=${SERVICE_PASSWORD_REDIS}
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./superset/superset_config.py
|
||||
target: /etc/superset/superset_config.py
|
||||
content: |
|
||||
"""
|
||||
For more configuration options, see:
|
||||
- https://superset.apache.org/docs/configuration/configuring-superset
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
SECRET_KEY = os.getenv("SECRET_KEY")
|
||||
MAPBOX_API_KEY = os.getenv("MAPBOX_API_KEY", "")
|
||||
|
||||
CACHE_CONFIG = {
|
||||
"CACHE_TYPE": "RedisCache",
|
||||
"CACHE_DEFAULT_TIMEOUT": 300,
|
||||
"CACHE_KEY_PREFIX": "superset_",
|
||||
"CACHE_REDIS_HOST": "redis",
|
||||
"CACHE_REDIS_PORT": 6379,
|
||||
"CACHE_REDIS_DB": 1,
|
||||
"CACHE_REDIS_URL": f"redis://:{os.getenv('REDIS_PASSWORD')}@redis:6379/1",
|
||||
}
|
||||
|
||||
FILTER_STATE_CACHE_CONFIG = {**CACHE_CONFIG, "CACHE_KEY_PREFIX": "superset_filter_"}
|
||||
EXPLORE_FORM_DATA_CACHE_CONFIG = {**CACHE_CONFIG, "CACHE_KEY_PREFIX": "superset_explore_form_"}
|
||||
|
||||
SQLALCHEMY_TRACK_MODIFICATIONS = True
|
||||
SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://{os.getenv('POSTGRES_USER')}:{os.getenv('POSTGRES_PASSWORD')}@postgres:5432/{os.getenv('POSTGRES_DB')}"
|
||||
|
||||
# Uncomment if you want to load example data (using "superset load_examples") at the
|
||||
# same location as your metadata postgresql instance. Otherwise, the default sqlite
|
||||
# will be used, which will not persist in volume when restarting superset by default.
|
||||
#SQLALCHEMY_EXAMPLES_URI = SQLALCHEMY_DATABASE_URI
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:8088/health"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
postgres:
|
||||
image: postgres:17-alpine
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-superset-db}
|
||||
volumes:
|
||||
- superset_postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:8-alpine
|
||||
volumes:
|
||||
- superset_redis_data:/data
|
||||
command: redis-server --requirepass ${SERVICE_PASSWORD_REDIS}
|
||||
healthcheck:
|
||||
test: redis-cli ping
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -0,0 +1,26 @@
|
||||
# documentation: https://typesense.org/docs
|
||||
# slogan: Cutting-edge, in-memory search engine for mere mortals. Knowledge of rocket science optional.
|
||||
# tags: search, search-engine, search-api, elasticsearch-alternative
|
||||
# logo: svgs/typesense.png
|
||||
# port: 8108
|
||||
|
||||
services:
|
||||
typesense:
|
||||
image: typesense/typesense:28.0
|
||||
environment:
|
||||
- SERVICE_FQDN_TYPESENSE_8108
|
||||
- TYPESENSE_ENABLE_CORS=${TYPESENSE_ENABLE_CORS:-true}
|
||||
- TYPESENSE_DATA_DIR=/data
|
||||
- TYPESENSE_API_KEY=${TYPESENSE_API_KEY:?}
|
||||
volumes:
|
||||
- typesense_data:/data
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
CMD,
|
||||
bash,
|
||||
-c,
|
||||
"exec 3<>/dev/tcp/localhost/8108 && printf 'GET /health HTTP/1.1\\r\\nConnection: close\\r\\n\\r\\n' >&3 && head -n1 <&3 | grep '200' && exec 3>&-",
|
||||
]
|
||||
retries: 5
|
||||
timeout: 7s
|
||||
@@ -1,5 +1,5 @@
|
||||
# documentation: https://wordpress.org
|
||||
# slogan: Wordpress is open source software you can use to create a beautiful website, blog, or app.
|
||||
# slogan: WordPress is open source software you can use to create a beautiful website, blog, or app.
|
||||
# tags: cms, blog, content, management, mariadb
|
||||
# logo: svgs/wordpress.svg
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# documentation: https://wordpress.org
|
||||
# slogan: Wordpress is open source software you can use to create a beautiful website, blog, or app.
|
||||
# slogan: WordPress is open source software you can use to create a beautiful website, blog, or app.
|
||||
# tags: cms, blog, content, management, mysql
|
||||
# logo: svgs/wordpress.svg
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# documentation: https://wordpress.org
|
||||
# slogan: Wordpress is open source software you can use to create a beautiful website, blog, or app.
|
||||
# slogan: WordPress is open source software you can use to create a beautiful website, blog, or app.
|
||||
# tags: cms, blog, content, management
|
||||
# logo: svgs/wordpress.svg
|
||||
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
# documentation: https://github.com/FuzzyGrim/Yamtrack/wiki
|
||||
# slogan: Yamtrack is a self hosted media tracker for movies, tv shows, anime, manga, video games and books.
|
||||
# tags: self-hosted, automation, tracker, media, movies, shows, anime, manga, games, books, comics
|
||||
# logo: svgs/yamtrack.svg
|
||||
# port: 8000
|
||||
|
||||
services:
|
||||
yamtrack:
|
||||
image: ghcr.io/fuzzygrim/yamtrack
|
||||
environment:
|
||||
- SERVICE_FQDN_YAMTRACK_8000
|
||||
- URLS=${SERVICE_FQDN_YAMTRACK}
|
||||
- TZ=${TZ:-Europe/Berlin}
|
||||
- SECRET=${SERVICE_PASSWORD_SECRET}
|
||||
- REGISTRATION=${REGISTRATION_ENABLED:-true}
|
||||
- REDIS_URL=redis://redis:6379
|
||||
- DB_HOST=postgres
|
||||
- DB_NAME=${POSTGRESQL_DATABASE:-yamtrack-db}
|
||||
- DB_USER=${SERVICE_USER_POSTGRESQL}
|
||||
- DB_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
||||
- DB_PORT=5432
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"wget",
|
||||
"--no-verbose",
|
||||
"--tries=1",
|
||||
"--spider",
|
||||
"http://127.0.0.1:8000/health/",
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
||||
- POSTGRES_DB=${POSTGRESQL_DATABASE:-yamtrack-db}
|
||||
volumes:
|
||||
- yamtrack_postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
volumes:
|
||||
- yamtrack_redis_data:/data
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- redis-cli
|
||||
- ping
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -0,0 +1,43 @@
|
||||
# documentation: https://github.com/FuzzyGrim/Yamtrack/wiki
|
||||
# slogan: Yamtrack is a self hosted media tracker for movies, tv shows, anime, manga, video games and books.
|
||||
# tags: self-hosted, automation, tracker, media, movies, shows, anime, manga, games, books, comics
|
||||
# logo: svgs/yamtrack.svg
|
||||
# port: 8000
|
||||
|
||||
services:
|
||||
yamtrack:
|
||||
image: ghcr.io/fuzzygrim/yamtrack
|
||||
environment:
|
||||
- SERVICE_FQDN_YAMTRACK_8000
|
||||
- URLS=${SERVICE_FQDN_YAMTRACK}
|
||||
- TZ=${TZ:-Europe/Berlin}
|
||||
- SECRET=${SERVICE_PASSWORD_SECRET}
|
||||
- REGISTRATION=${REGISTRATION_ENABLED:-true}
|
||||
- REDIS_URL=redis://redis:6379
|
||||
volumes:
|
||||
- yamtrack_data:/yamtrack/db
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD-SHELL",
|
||||
"wget --quiet --tries=1 --spider http://127.0.0.1:8000/health/ || exit 1",
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
volumes:
|
||||
- yamtrack_redis_data:/data
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- redis-cli
|
||||
- ping
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -1,4 +1,4 @@
|
||||
# documentation: https://github.com/diced/zipline
|
||||
# documentation: https://zipline.diced.sh/docs/config
|
||||
# slogan: A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!
|
||||
# tags: zipline,file-sharing,upload,sharing
|
||||
# logo: svgs/zipline.png
|
||||
|
||||
Reference in new issue
Block a user