Merge branch 'next' into add-opnform-template

This commit is contained in:
🏔️ Peak authored and GitHub committed 2025-05-23 16:27:21 +02:00
commit eef0e940e7
173 files changed
+4118 -2247

No files matched your search

+2 -2
View File
@@ -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:
+1 -1
View File
@@ -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
+46
View File
@@ -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
+4 -4
View File
@@ -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_URL_CONVEX_3210}
- CONVEX_SITE_ORIGIN=${SERVICE_URL_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
+27
View File
@@ -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
+10 -3
View File
@@ -12,11 +12,18 @@ services:
condition: service_healthy
environment:
- SERVICE_FQDN_DOCUMENSO_3000
- NEXTAUTH_URL=${SERVICE_FQDN_DOCUMENSO_3000}
- NEXTAUTH_URL=${SERVICE_FQDN_DOCUMENSO}
- NEXTAUTH_SECRET=${SERVICE_BASE64_AUTHSECRET}
- NEXT_PRIVATE_ENCRYPTION_KEY=${SERVICE_BASE64_ENCRYPTIONKEY}
- NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${SERVICE_BASE64_SECONDARYENCRYPTIONKEY}
- NEXT_PUBLIC_WEBAPP_URL=${SERVICE_FQDN_DOCUMENSO_3000}
- NEXT_PUBLIC_WEBAPP_URL=${SERVICE_FQDN_DOCUMENSO}
- NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT}
- NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}
- NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}
- NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME}
- NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD}
- NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME}
- NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}
- NEXT_PRIVATE_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public
- NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public
healthcheck:
@@ -28,7 +35,7 @@ services:
retries: 20
database:
image: postgres:16-alpine
image: postgres:17
environment:
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+63
View File
@@ -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
+76
View File
@@ -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
+34
View File
@@ -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
+50 -4
View File
@@ -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
+13
View File
@@ -0,0 +1,13 @@
# documentation: https://github.com/usememos/memos
# slogan: An open-source, lightweight note-taking solution. The pain-less way to create your meaningful notes. Your Notes, Your Way.
# tags: note-taking,microblog,social-network,markdown
# logo: svgs/memos.png
# port: 5230
services:
memos:
image: neosmemo/memos:stable
volumes:
- memos/:/var/opt/memos
environment:
- SERVICE_FQDN_MEMOS_5230
+25
View File
@@ -0,0 +1,25 @@
# documentation: https://www.navidrome.org/docs/
# slogan: Standalone server, that allows you to browse and listen to your music collection using a web browser or any Subsonic-compatible client.
# tags: media, server, music, subsonic
# logo: svgs/navidrome.svg
# port: 4533
services:
navidrome:
image: deluan/navidrome:latest
restart: unless-stopped
environment:
- SERVICE_FQDN_NAVIDROME_4533
- ND_BASEURL=${SERVICE_FQDN_NAVIDROME}
- ND_SCANSCHEDULE=${ND_SCANSCHEDULE:-1h}
- ND_LOGLEVEL=${ND_LOGLEVEL:-info}
- ND_SESSIONTIMEOUT=${ND_SESSIONTIMEOUT:-24h}
- ND_ENABLEINSIGHTSCOLLECTOR=${ND_ENABLEINSIGHTSCOLLECTOR:-false}
volumes:
- "./data:/data"
- "./music:/music:ro"
healthcheck:
test: ["CMD", "wget", "--spider", "--quiet", "http://127.0.0.1:4533/ping"]
interval: 10s
timeout: 5s
retries: 5
+6 -4
View File
@@ -15,20 +15,22 @@ services:
- TZ=${TZ:-UTC}
- NTFY_CACHE_FILE=/var/cache/ntfy/cache.db
- NTFY_AUTH_FILE=/var/lib/ntfy/auth.db
- NTFY_WEB_PUSH_FILE=/var/cache/ntfy/webpush.db
- NTFY_BEHIND_PROXY=${NTFY_BEHIND_PROXY:-true}
- NTFY_UPSTREAM_BASE_URL=${UPSTREAM_BASE_URL:-https://ntfy.sh}
- NTFY_ENABLE_SIGNUP=${NTFY_ENABLE_SIGNUP:-true}
- NTFY_ENABLE_SIGNUP=${NTFY_ENABLE_SIGNUP:-true}
- NTFY_ENABLE_LOGIN=${NTFY_ENABLE_LOGIN:-true}
- NTFY_CACHE_DURATION=${NTFY_CACHE_DURATION:-24h}
- NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT=${NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT:-1G}
- NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT=${NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT:-1G}
- NTFY_ATTACHMENT_FILE_SIZE_LIMIT=${NTFY_ATTACHMENT_FILE_SIZE_LIMIT:-10M}
- NTFY_ATTACHMENT_EXPIRY_DURATION=${NTFY_ATTACHMENT_EXPIRY_DURATION:-24h}
- NTFY_SMTP_SENDER_ADDR=${NTFY_SMTP_SENDER_ADDR:-smtp.your-domain.de}
- NTFY_SMTP_SENDER_ADDR=${NTFY_SMTP_SENDER_ADDR:-smtp.your-domain.de}
- NTFY_SMTP_SENDER_USER=${NTFY_SMTP_SENDER_USER:-no-reply@de}
- NTFY_SMTP_SENDER_PASS=${NTFY_SMTP_SENDER_PASS:-password}
- NTFY_SMTP_SENDER_FROM=${NTFY_SMTP_SENDER_FROM:-no-reply@de}
- NTFY_KEEPALIVE_INTERVAL=${NTFY_KEEPALIVE_INTERVAL:-5m}
- NTFY_MANAGER_INTERVAL=${NTFY_MANAGER_INTERVAL:-5m}
- NTFY_VISITOR_MESSAGE_DAILY_LIMIT=${NTFY_VISITOR_MESSAGE_DAILY_LIMIT:-100}
- NTFY_VISITOR_MESSAGE_DAILY_LIMIT=${NTFY_VISITOR_MESSAGE_DAILY_LIMIT:-100}
- NTFY_VISITOR_ATTACHMENT_DAILY_BANDWIDTH_LIMIT=${NTFY_VISITOR_ATTACHMENT_DAILY_BANDWIDTH_LIMIT:-1G}
- NTFY_UPSTREAM_ACCESS_TOKEN=${UPSTREAM_ACCESS_TOKEN}
- NTFY_AUTH_DEFAULT_ACCESS=${NTFY_AUTH_DEFAULT_ACCESS:-read-write}
+54
View File
@@ -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
+44
View File
@@ -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
+49
View File
@@ -0,0 +1,49 @@
# documentation: https://www.passbolt.com/ce/docker
# slogan: Passbolt Community Edition (CE) API. The JSON API for the open source password manager for teams!
# tags: security, credentials, password-manager, open source
# logo: svgs/passbolt.svg
# port: 80
services:
passbolt:
image: passbolt/passbolt:latest-ce
environment:
- SERVICE_FQDN_PASSBOLT
- APP_FULL_BASE_URL=${SERVICE_FQDN_PASSBOLT}
- DATASOURCES_DEFAULT_HOST=mariadb
- DATASOURCES_DEFAULT_USERNAME=${SERVICE_USER_PASSBOLT}
- DATASOURCES_DEFAULT_PASSWORD=${SERVICE_PASSWORD_PASSBOLT}
- DATASOURCES_DEFAULT_DATABASE=${MYSQL_DB:-passbolt-db}
volumes:
- "gpg_volume:/etc/passbolt/gpg"
- "jwt_volume:/etc/passbolt/jwt"
command:
- /usr/bin/wait-for.sh
- "-t"
- "0"
- "mariadb:3306"
- "--"
- /docker-entrypoint.sh
depends_on:
mariadb:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
interval: 5s
timeout: 20s
retries: 10
mariadb:
image: mariadb:11
environment:
- MARIADB_ROOT_PASSWORD=${SERVICE_PASSWORD_ROOTMARIADB}
- MARIADB_DATABASE=${MYSQL_DB:-passbolt-db}
- MARIADB_USER=${SERVICE_USER_PASSBOLT}
- MARIADB_PASSWORD=${SERVICE_PASSWORD_PASSBOLT}
volumes:
- "passbolt_mariadb_data:/var/lib/mysql"
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 20s
retries: 10
+61
View File
@@ -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
+34
View File
@@ -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
+37
View File
@@ -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
+75
View File
@@ -0,0 +1,75 @@
# 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-db:
image: mariadb:10.11
environment:
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_64_MYSQLDBROOT}
- MYSQL_LOG_CONSOLE=true
- MARIADB_AUTO_UPGRADE=1
volumes:
- seafile-mysql-db:/var/lib/mysql"
healthcheck:
test:
[
"CMD",
"/usr/local/bin/healthcheck.sh",
"--connect",
"--mariadbupgrade",
"--innodb_initialized",
]
interval: 20s
start_period: 30s
timeout: 5s
retries: 10
memcached:
image: memcached:1.6.29
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
seafile:
image: seafileltd/seafile-mc:12.0-latest
volumes:
- seafile-data:/shared
environment:
- SERVICE_FQDN_SEAFILE_80
- DB_HOST=${SEAFILE_MYSQL_DB_HOST:-seafile-db}
- DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
- DB_ROOT_PASSWD=${SERVICE_PASSWORD_64_MYSQLDBROOT}
- DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
- DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQLDBUSER}
- 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:-Etc/UTC}
- INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL:-me@example.com}
- INIT_SEAFILE_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
- SEAFILE_SERVER_HOSTNAME=${SERVICE_URL_SEAFILE_80}
- SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL:-https}
- 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:
seafile-db:
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
+1 -1
View File
@@ -4,7 +4,7 @@
services:
snapdrop:
image: lscr.io/linuxserver/snapdrop:latest
image: 'linuxserver/snapdrop:version-b8b78cc2'
environment:
- SERVICE_FQDN_SNAPDROP
- PUID=1000
@@ -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
+26
View File
@@ -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
+15
View File
@@ -0,0 +1,15 @@
# documentation: https://github.com/VERT-sh/VERT
# slogan: The next-generation file converter. Open source, fully local and free forever.
# tags: converter,file,documents,files,ffmpeg,wasm
# logo: svgs/vert.png
# port: 80
services:
vert:
image: ghcr.io/vert-sh/vert:latest
environment:
- SERVICE_FQDN_VERT_80
- PUB_VERT_URL=${SERVICE_FQDN_VERT_80}
- PUB_HOSTNAME=${SERVICE_URL_VERT_80}
- PUB_PORT=80
- PUB_ENV=production
@@ -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
+43
View File
@@ -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