Compare commits

..
Author SHA1 Message Date
Mauricio SiuandClaude Fable 5 af8b535d34 feat: add Oryx (SRS) media streaming template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 14:06:04 -06:00
Mauricio SiuandGitHub c60bfa8c72 Merge pull request #1010 from Dokploy/fix/openpanel
fix(openpanel): pin verified 2.2.1 images to prevent broken-release breakage
2026-07-14 13:58:40 -06:00
Mauricio SiuandGitHub dd986039a7 Merge pull request #1009 from Dokploy/fix/phpmyadmin
fix(phpmyadmin): raise PHP upload limit so SQL imports over 2MB work
2026-07-14 13:58:32 -06:00
Mauricio SiuandGitHub 0633b987d5 Merge pull request #1008 from Dokploy/fix/rybbit-update
fix(rybbit): update to current version (v2.7.0)
2026-07-14 13:58:05 -06:00
Mauricio SiuandGitHub 5d6afe20a6 Merge pull request #1007 from Dokploy/fix/evolutionapi
fix(evolutionapi): enable integration env flags (n8n/openai/evoai) and update
2026-07-14 13:57:56 -06:00
Mauricio SiuandGitHub 618cda2366 Merge pull request #1006 from Dokploy/fix/databasus-rename
fix: add Databasus template (Postgresus was renamed upstream)
2026-07-14 13:57:48 -06:00
Mauricio SiuandGitHub 74cec8f74f Merge pull request #1004 from Dokploy/fix/signoz-clickhouse
fix(signoz): fix ClickHouse hostname resolution and IPv6 binding
2026-07-14 13:57:40 -06:00
Mauricio SiuandGitHub 64fb0f6573 Merge pull request #1003 from Dokploy/fix/automatisch
fix(automatisch): switch to official image and wire up DOMAIN to fix Bad Gateway
2026-07-14 13:57:31 -06:00
Mauricio SiuandGitHub 9e02e96e3a Merge pull request #1002 from Dokploy/fix/immich-update
fix(immich): update to v3.0.2
2026-07-14 13:57:22 -06:00
Mauricio SiuandGitHub 33c3fcdadb Merge pull request #998 from Dokploy/fix/homarr-volumes
fix(homarr): use named volume for /appdata and 64-char hex encryption key
2026-07-14 13:57:07 -06:00
Mauricio SiuandGitHub 493e824f70 Merge pull request #996 from Dokploy/fix/cockpit-volumes
fix(cockpit): persist config and storage volumes per upstream docs
2026-07-14 13:56:58 -06:00
Mauricio SiuandGitHub 6f27a9427c Merge pull request #995 from Dokploy/fix/affinepro-update
fix(affinepro): update to current AFFiNE images
2026-07-14 13:56:48 -06:00
Mauricio SiuandGitHub f76c31ef89 Merge pull request #1024 from Dokploy/feat/markup
feat: add Markup template
2026-07-14 13:56:16 -06:00
Mauricio SiuandGitHub 478c5197b2 Merge pull request #1021 from Dokploy/feat/silex
feat: add Silex template
2026-07-14 13:53:56 -06:00
Mauricio SiuandGitHub a837539398 Merge pull request #999 from Dokploy/fix/logto-update
fix(logto): fix postgres role error and update to current version
2026-07-14 13:53:28 -06:00
Mauricio SiuandGitHub c33f72b32a Merge pull request #997 from Dokploy/fix/kener-issues
fix(kener): define REDIS_URL and drop unused databases
2026-07-14 13:53:19 -06:00
Mauricio SiuandGitHub 1c2921417d Merge pull request #1001 from Dokploy/fix/zitadel-domain
fix(zitadel): wire EXTERNALDOMAIN to the generated domain
2026-07-14 13:53:00 -06:00
Mauricio SiuandGitHub 6f1b083c57 Merge pull request #1005 from Dokploy/fix/infisical-update
fix(infisical): update to v0.162.6
2026-07-14 13:52:47 -06:00
Mauricio SiuandGitHub bd457e0310 Merge pull request #1022 from Dokploy/feat/spacetimedb
feat: add SpacetimeDB template
2026-07-14 13:52:36 -06:00
Mauricio SiuandGitHub 311faa1ea9 Merge pull request #1000 from Dokploy/fix/gitlab-ce
fix(gitlab-ce): serve on the generated domain (external_url/nginx config)
2026-07-14 13:51:56 -06:00
Mauricio SiuandClaude Fable 5 ee35ed1a42 feat: add Markup template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:47:42 -06:00
Mauricio SiuandClaude Fable 5 3ddbdde081 feat: add SpacetimeDB template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:30:17 -06:00
Mauricio SiuandClaude Fable 5 0bfb50d62f feat: add Silex template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:19:16 -06:00
Mauricio SiuandClaude Fable 5 f946051a6c fix(openpanel): pin verified 2.2.1 images and fix ClickHouse interserver host
- Pin lindesvard/openpanel-api|dashboard|worker to 2.2.1 (verified working
  end-to-end on a Dokploy instance) instead of the mutable :2 tag, so a
  future broken 2.x release cannot silently break the template again —
  which is how #615 originated when 2.0.0 shipped.
- Fix interserver_http_host to match the actual service name (op-ch),
  aligning with upstream self-hosting config.
- Set meta.json version to the pinned 2.2.1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:53:37 -06:00
Mauricio SiuandClaude Fable 5 9bdbe266e5 fix(phpmyadmin): raise PHP upload limit so SQL imports over 2MB work
Without UPLOAD_LIMIT the phpMyAdmin image keeps PHP's default 2M
post_max_size/upload_max_filesize, so importing any SQL file larger
than 2MB fails with 'POST Content-Length exceeds the limit of
2097152 bytes' followed by a session_start error page.

- Add UPLOAD_LIMIT (512M) and MAX_EXECUTION_TIME (600) env vars,
  configurable from the template env
- Wire the previously unused MYSQL_DATABASE env var into the compose
  file, replacing the hardcoded 'tu_base_de_datos' placeholder, and
  default it to 'phpmyadmin' instead of the system 'mysql' schema

Closes #236

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:47:20 -06:00
Mauricio SiuandClaude Fable 5 25563213f2 fix(rybbit): update to v2.7.0
The template shipped rybbit v1.5.1, which is no longer supported and is
vulnerable to known React2Shell exploits (see #659). Update to the
latest stable release v2.7.0 and align the stack with the upstream
docker-compose:

- Pin ghcr.io/rybbit-io/rybbit-backend and rybbit-client to v2.7.0
- Add the redis service now required by the backend (session tracking
  and BullMQ queues), with password auth, AOF persistence and
  noeviction policy per upstream
- Drop the DOMAIN_NAME env var (only used by the upstream Caddy
  webserver, which Dokploy replaces with Traefik)
- Add DISABLE_TELEMETRY env and generate BETTER_AUTH_SECRET as base64

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:39:58 -06:00
Mauricio SiuandClaude Fable 5 fb64197738 fix(evolutionapi): enable integration flags and update version
Adds the integration enable env flags introduced in Evolution API v2.3.x
(N8N_ENABLED, OPENAI_ENABLED, EVOAI_ENABLED, DIFY_ENABLED, TYPEBOT_ENABLED,
CHATWOOT_ENABLED) so integrations no longer fail with 'N8n is disabled',
and pins the image to v2.3.7 instead of latest.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:38:27 -06:00
Mauricio SiuandClaude Fable 5 cd16441901 fix: add databasus (postgresus renamed upstream)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:36:03 -06:00
Mauricio SiuandClaude Fable 5 29a7970397 fix(infisical): update to v0.162.6
- Bump image from v0.135.0-postgres to v0.162.6 (upstream dropped the
  -postgres tag suffix after v0.146.0; plain tags are the postgres build)
- Remove the db-migration service: the standalone image runs database
  migrations automatically on boot (auto-start-migrations), matching the
  official docker-compose.prod.yml which no longer ships that service
- Generate ENCRYPTION_KEY (${hash:32}) and AUTH_SECRET (${base64:32})
  per deployment instead of shipping hardcoded example secrets
- Fix SITE_URL to http://${main_domain} (no :8080; the domain is proxied)
- Refresh SMTP env names (SMTP_FROM_ADDRESS/SMTP_FROM_NAME; SMTP_SECURE
  was removed upstream) and drop unused CLIENT_* env placeholders that
  were never passed to the container

Closes #215

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:30:46 -06:00
Mauricio SiuandClaude Fable 5 1e486813b4 fix(signoz): fix ClickHouse hostname resolution and IPv6 binding
- Override the ClickHouse image's config.d/docker_related_config.xml,
  which listens on the IPv6 wildcard address ([::]) first and fails to
  bind on hosts without IPv6 support; listen on 0.0.0.0 (IPv4) only and
  disable the internal DNS cache so transient startup DNS failures for
  zookeeper-1/clickhouse are not cached (issue #534).
- Set hostname: clickhouse (instead of container_name) so the server
  identifies itself as the cluster host declared in cluster.xml.
- Remove the explicit signoz-net network: Dokploy attaches its own
  networks automatically and the repo validator rejects explicit
  networks; a fixed-name shared network also breaks service DNS across
  deployments.
- Fix mount mismatch: template.toml created files/signoz/prometheus.xml
  while the compose mounts ../files/signoz/prometheus.yml, so Docker
  silently mounted a directory as the signoz prometheus config.
- Give the otel-collector domain its own generated host: both domains
  previously shared the same host and path "/", creating two conflicting
  Traefik routers where one service randomly won.

Closes #534

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:30:07 -06:00
Mauricio SiuandClaude Fable 5 3c416eaba3 fix(automatisch): switch to official image and wire up DOMAIN to fix Bad Gateway
- Replace unofficial dockeriddonuts/automatisch:2.0 mirror (stale since Nov 2024)
  with the official automatischio/automatisch:0.15.0 image
- Define DOMAIN in template.toml [config.env]: the compose referenced ${DOMAIN}
  but it was never provided, so HOST resolved empty and the app generated
  localhost URLs for the web app and webhooks
- Set API_URL/WEB_APP_URL so generated URLs don't carry the internal :3000 port
  behind Traefik
- Add postgres healthcheck and gate the app on service_healthy to avoid the
  boot-time migration race; worker now starts after main (official compose order)
- Drop unnecessary published port and no-op REDIS_* env on the redis service
- Bump meta.json version to 0.15.0

Closes #97

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:28:22 -06:00
Mauricio SiuandClaude Fable 5 31158e2340 fix(immich): update to v3.0.2
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:19:38 -06:00
Mauricio SiuandClaude Fable 5 6786237720 fix(zitadel): wire EXTERNALDOMAIN/PORT/SECURE to the generated domain
Zitadel resolves its instance from the external domain/port/scheme, so the
template's ZITADEL_EXTERNALPORT=8080 made every generated URL (OIDC issuer,
login redirects) point at http://<domain>:8080 instead of the domain served
by Traefik, ending in {"code":5,"message":"Not Found"} (#516).

- Expose ZITADEL_EXTERNALDOMAIN / ZITADEL_EXTERNALPORT / ZITADEL_EXTERNALSECURE
  as template env vars, defaulting to the generated domain over HTTP
  (port 80, secure=false) so the routed domain and Zitadel's external config
  always match; HTTPS users flip them to 443/true in the Env tab.
- Pin image to v4.16.0 (was latest) and keep the built-in login v1 via
  ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_REQUIRED=false so no separate
  login-v2 container is needed.
- Add the official readiness healthcheck, drop the unused /app/data volume,
  bogus SMTP env keys, published port and obsolete compose version key.

Closes #516

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:12:30 -06:00
Mauricio SiuandClaude Fable 5 8f84a52855 fix(gitlab-ce): serve on the generated domain (remove removed unicorn config, pin omnibus)
The template set unicorn['worker_processes'] / unicorn['worker_timeout'] in
GITLAB_OMNIBUS_CONFIG. Unicorn was removed in GitLab 14.0, so on current
gitlab-ce images `gitlab-ctl reconfigure` aborts with "Removed configurations
found in gitlab.rb" and GitLab never starts serving — the generated domain
returned 502 Bad Gateway (issue #380).

Rewrite the template as the official all-in-one Omnibus setup:
- pin gitlab/gitlab-ce:19.1.2-ce.0 instead of :latest
- external_url http://<domain> with nginx listen_port 80 / listen_https false
  (TLS terminates at Traefik)
- set gitlab_rails['initial_root_password'] from a generated template password
- puma single mode + prometheus monitoring off to keep memory reasonable
- drop the external postgres/redis containers (Omnibus bundles and manages
  its own) and the broken ports entries ("2224" published a random host port
  while sshd listens on 22)

Verified on a live Dokploy instance: domain serves the GitLab sign-in page
and root login with the generated password works.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:11:25 -06:00
Mauricio SiuandClaude Fable 5 7ed8450cf8 fix(logto): fix postgres role error and update to 1.41.0
The postgres healthcheck ran pg_isready without -U while POSTGRES_USER
was set to logto, so every probe attempted to connect as role
"postgres" and spammed FATAL: role "postgres" does not exist.
Pass -U logto -d logto explicitly and set POSTGRES_DB.

Also fix LOGTO_ENDPOINT pointing at the admin domain instead of the
main domain, update Logto 1.27.0 -> 1.41.0, use ${password:32} for the
generated password, drop the ephemeral host port publishing and add
restart policies.

Closes #130

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:04:17 -06:00
Mauricio SiuandClaude Fable 5 c6a0b1b1b5 fix(homarr): use named volume for /appdata and hex encryption key
- Replace the relative bind mount `../homarr/appdata:/appdata` with a
  named volume `homarr_appdata:/appdata` so the data survives cleanups
  and can be backed up through Dokploy volume backups.
- Generate SECRET_ENCRYPTION_KEY with `${hash:64}` instead of
  `${password:64}`: homarr requires a 64-character hex string
  (`openssl rand -hex 32`) and the password helper emits non-hex
  characters (g-z).

Closes #738

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 10:58:33 -06:00
Mauricio SiuandClaude Fable 5 744ff52770 fix(kener): define REDIS_URL and drop unused databases
Kener v4 requires Redis for its BullMQ queues, caching and scheduler,
so the app crashed on startup with "REDIS_URL is not defined in
environment variables" right after printing that it was running
(issue #976). The template also spun up both a postgres and a mariadb
container while DATABASE_URL pointed at SQLite, so neither database
was ever used (issue #282).

Changes, aligned with the upstream docker-compose.yml
(rajnandan1/kener):

- Add a redis:7-alpine service with a healthcheck and persistent
  volume, wire REDIS_URL=redis://redis:6379 and make kener depend on
  redis being healthy
- Remove the unused postgres and mysql services plus their env vars
  and generated passwords; keep SQLite (upstream default) persisted
  in the kener_db volume
- Set ORIGIN to https://<domain> instead of http://localhost:3000 so
  CSRF protection works behind the generated domain
- Drop the stale /app/uploads bind mount (kener v4 only persists
  /app/database) and the obsolete compose version key

Deploy-tested on a Dokploy instance: migrations and seed complete,
schedulers start, "Kener version 4.1.2 is running!", HTTP 200 on the
generated domain, both containers stable.

Closes #976
Closes #282

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 10:56:19 -06:00
Mauricio SiuandClaude Fable 5 55aa82489d fix(cockpit): persist config and storage volumes per upstream docs
The template mounted `html:/var/www/html` (freezing the app code from the
first deploy) and `data:/var/www/html/storage/data`, which misses uploaded
assets (stored under `storage/uploads`) and cache. Per the official Cockpit
persistent-storage docs, mount `config:/var/www/html/config` and
`storage:/var/www/html/storage` instead.

Closes #549

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 10:55:57 -06:00
Mauricio SiuandClaude Fable 5 59770d4ae8 fix(affinepro): update to current AFFiNE images
The template pinned ghcr.io/toeverything/affine-graphql:stable-780dd83,
an ephemeral per-commit tag on the old image name that has since been
removed from GHCR, so the template could no longer pull and deploy.

- Switch both app and migration services to ghcr.io/toeverything/affine:stable,
  the rolling stable tag recommended by the official self-host compose,
  so the template no longer rots when per-commit tags are garbage-collected
- Move postgres to pgvector/pgvector:pg16 and set AFFINE_INDEXER_ENABLED=false,
  matching the current upstream self-host compose requirements
- Add postgres/redis healthchecks and proper depends_on conditions so the
  self-host-predeploy migration job runs only once the database is ready,
  and the server starts only after migrations complete successfully

Closes #777

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 10:55:42 -06:00
67 changed files with 671 additions and 522 deletions
+28 -9
View File
@@ -1,7 +1,7 @@
version: "3.8"
services:
affinepro:
image: ghcr.io/toeverything/affine-graphql:stable-780dd83
image: ghcr.io/toeverything/affine:stable
restart: unless-stopped
ports:
- 3010
@@ -12,6 +12,7 @@ services:
- REDIS_SERVER_HOST=redis
- REDIS_SERVER_PASSWORD=${REDIS_PASSWORD}
- DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/affinepro
- AFFINE_INDEXER_ENABLED=false
- AFFINE_SERVER_HOST=${DOMAIN}
- MAILER_HOST=${MAILER_HOST}
- MAILER_PORT=${MAILER_PORT}
@@ -19,16 +20,21 @@ services:
- MAILER_PASSWORD=${MAILER_PASSWORD}
- MAILER_SENDER=${MAILER_SENDER}
depends_on:
- db
- redis
db:
condition: service_healthy
redis:
condition: service_healthy
migration:
condition: service_completed_successfully
migration:
image: ghcr.io/toeverything/affine-graphql:stable-780dd83
command: node ./scripts/self-host-predeploy.js
image: ghcr.io/toeverything/affine:stable
command: ["sh", "-c", "node ./scripts/self-host-predeploy.js"]
environment:
- REDIS_SERVER_HOST=redis
- REDIS_SERVER_PASSWORD=${REDIS_PASSWORD}
- DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/affinepro
- AFFINE_INDEXER_ENABLED=false
- AFFINE_SERVER_HOST=${DOMAIN}
- MAILER_HOST=${MAILER_HOST}
- MAILER_PORT=${MAILER_PORT}
@@ -39,17 +45,25 @@ services:
- affine-storage:/root/.affine/storage
- affine-config:/root/.affine/config
depends_on:
- db
- redis
db:
condition: service_healthy
redis:
condition: service_healthy
db:
image: postgres:15-alpine
image: pgvector/pgvector:pg16
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=affinepro
- POSTGRES_INITDB_ARGS=--data-checksums
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres", "-d", "affinepro"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
@@ -57,9 +71,14 @@ services:
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- redis-data:/data
healthcheck:
test: ["CMD-SHELL", "redis-cli -a '${REDIS_PASSWORD}' ping | grep PONG"]
interval: 10s
timeout: 5s
retries: 5
volumes:
affine-storage: {}
affine-config: {}
postgres-data: {}
redis-data: {}
redis-data: {}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "affinepro",
"name": "Affine Pro",
"version": "stable-780dd83",
"version": "stable",
"description": "Affine Pro is a modern, self-hosted platform designed for collaborative content creation and project management. It offers an intuitive interface, seamless real-time collaboration, and powerful tools for organizing tasks, notes, and ideas.",
"logo": "logo.png",
"links": {
+15 -14
View File
@@ -1,17 +1,15 @@
version: "3.8"
services:
automatisch:
image: dockeriddonuts/automatisch:2.0
image: automatischio/automatisch:0.15.0
restart: unless-stopped
ports:
- 3000
environment:
- HOST=${DOMAIN}
- PROTOCOL=http
- PORT=3000
- API_URL=http://${DOMAIN}
- WEB_APP_URL=http://${DOMAIN}
- APP_ENV=production
- REDIS_HOST=automatisch-redis
- REDIS_USERNAME=default
- REDIS_PASSWORD=${REDIS_PASSWORD}
- POSTGRES_HOST=automatisch-postgres
- POSTGRES_DATABASE=automatisch
@@ -23,11 +21,13 @@ services:
volumes:
- storage:/automatisch/storage
depends_on:
- automatisch-postgres
- automatisch-redis
automatisch-postgres:
condition: service_healthy
automatisch-redis:
condition: service_started
automatisch-worker:
image: dockeriddonuts/automatisch:2.0
image: automatischio/automatisch:0.15.0
restart: unless-stopped
environment:
- APP_ENV=production
@@ -44,8 +44,7 @@ services:
volumes:
- storage:/automatisch/storage
depends_on:
- automatisch-postgres
- automatisch-redis
- automatisch
automatisch-postgres:
image: postgres:15-alpine
@@ -56,18 +55,20 @@ services:
- POSTGRES_DB=automatisch
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d automatisch"]
interval: 10s
timeout: 5s
retries: 5
automatisch-redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --requirepass ${REDIS_PASSWORD}
environment:
- REDIS_USERNAME=default
- REDIS_PASSWORD=${REDIS_PASSWORD}
volumes:
- redis_data:/data
volumes:
storage: {}
postgres_data: {}
redis_data: {}
redis_data: {}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "automatisch",
"name": "Automatisch",
"version": "2.0",
"version": "0.15.0",
"description": "Automatisch is a powerful, self-hosted workflow automation tool designed for connecting your apps and automating repetitive tasks. With Automatisch, you can create workflows to sync data, send notifications, and perform various actions seamlessly across different services.",
"logo": "logo.png",
"links": {
+1
View File
@@ -13,6 +13,7 @@ port = 3000
host = "${main_domain}"
[config.env]
DOMAIN = "${main_domain}"
DB_PASSWORD = "${db_password}"
REDIS_PASSWORD = "${redis_password}"
ENCRYPTION_KEY = "${encryption_key}"
+4 -4
View File
@@ -11,8 +11,8 @@ services:
- COCKPIT_DATABASE_SERVER=mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@mongo:27017
- COCKPIT_DATABASE_NAME=cockpit
volumes:
- html:/var/www/html
- data:/var/www/html/storage/data
- config:/var/www/html/config
- storage:/var/www/html/storage
depends_on:
- mongo
@@ -25,6 +25,6 @@ services:
- mongo-data:/data/db
volumes:
html:
data:
config:
storage:
mongo-data:
+12
View File
@@ -0,0 +1,12 @@
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_287_1020)">
<path d="M50.1522 115.189C50.1522 121.189 57.1564 121.193 59 118C60.1547 116 61 114 61 108C61 102 58.1044 96.9536 55.3194 91.5175C54.6026 90.1184 53.8323 88.6149 53.0128 86.9234C51.6073 84.0225 49.8868 81.3469 47.3885 79.2139C47.0053 78.8867 46.8935 78.0093 46.9624 77.422C47.2351 75.1036 47.5317 72.7876 47.8283 70.4718C48.3186 66.6436 48.8088 62.8156 49.1909 58.9766C49.459 56.2872 49.4542 53.5119 49.1156 50.8329C48.3833 45.0344 45.1292 40.7783 40.1351 37.9114C38.6818 37.0771 38.2533 36.1455 38.4347 34.5853C38.9402 30.2473 40.6551 26.3306 42.8342 22.6642C44.8356 19.297 47.1037 16.0858 49.3676 12.8804C49.6576 12.4699 49.9475 12.0594 50.2367 11.6488C50.6069 11.1231 51.5231 10.7245 52.1971 10.7075C60.4129 10.5017 68.6303 10.3648 76.8477 10.2636C77.4123 10.2563 78.1584 10.5196 78.5221 10.9246C83.6483 16.634 88.2284 22.712 90.9778 29.9784C91.1658 30.4758 91.3221 30.9869 91.4655 31.4997C92.4976 35.1683 92.4804 35.1803 89.5401 37.2499L89.4071 37.3436C83.8702 41.2433 81.8458 46.8198 82.0921 53.349C82.374 60.8552 84.0622 68.1313 85.9869 75.3539C86.3782 76.8218 86.6318 77.9073 85.2206 79.2609C82.3951 81.9698 81.2196 85.6872 80.6575 89.4687C80.0724 93.4081 79.599 97.3637 79.1254 101.32C78.8627 103.515 78.8497 105.368 78.318 107.904C76.2819 117.611 71 128 63 128H50.1522C45 128 41 123.189 41 115.189H50.1522Z" fill="#155DFC"/>
<path d="M46.2429 6.56033C43.3387 11.1 40.3642 15.4031 37.7614 19.9209C35.413 23.9964 33.8487 28.4226 33.0913 33.1211C32.0998 39.2728 33.694 44.7189 38.0765 48.9775C41.6846 52.4835 42.6153 56.4472 42.152 61.1675C41.1426 71.4587 39.1174 81.5401 36.2052 91.4522C36.1769 91.5477 36.0886 91.6255 35.8974 91.8977C34.1517 91.3525 32.3161 90.8446 30.5266 90.2095C5.53011 81.3376 -12.7225 64.953 -24.1842 41.0298C-25.175 38.9625 -26.079 36.8498 -26.9263 34.7202C-27.0875 34.3151 -26.9749 33.5294 -26.6785 33.2531C-17.1479 24.3723 -7.64007 15.4647 2.00468 6.70938C8.64568 0.681612 16.5812 -1.21558 25.2457 0.739942C31.9378 2.24992 38.5131 4.27834 45.1363 6.09048C45.5843 6.2128 45.9998 6.45502 46.2429 6.56033Z" fill="#155DFC"/>
<path d="M96.9586 89.3257C95.5888 84.7456 94.0796 80.4011 93.0111 75.9514C91.6065 70.0978 90.4683 64.1753 89.3739 58.2529C88.755 54.9056 89.3998 51.8176 91.89 49.2108C98.2669 42.5358 98.3933 34.7971 95.3312 26.7037C92.7471 19.8739 88.593 13.9904 83.7026 8.60904C83.1298 7.9788 82.5693 7.33641 81.918 6.60491C82.2874 6.40239 82.5709 6.18773 82.8909 6.07999C90.1281 3.64085 97.4495 1.54842 105.041 0.488845C112.781 -0.591795 119.379 1.81818 125.045 6.97592C130.017 11.5018 134.805 16.2327 139.812 20.7188C143.822 24.3115 148.013 27.7066 152.19 31.1073C152.945 31.7205 153.137 32.2154 152.913 33.1041C149.059 48.4591 141.312 61.4883 129.457 71.9877C120.113 80.2626 109.35 85.9785 96.9586 89.3265V89.3257Z" fill="#155DFC"/>
</g>
<defs>
<clipPath id="clip0_287_1020">
<rect width="128" height="128" rx="6" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

+22
View File
@@ -0,0 +1,22 @@
services:
databasus:
image: databasus/databasus:latest
ports:
- "4005"
volumes:
# Persistent data storage
- databasus-data:/databasus-data
restart: unless-stopped
environment:
# Optional: Set timezone
- TZ=UTC
healthcheck:
test: [ "CMD", "databasus", "healthcheck" ]
interval: 30s
timeout: 5s
retries: 3
start_period: 60s
volumes:
databasus-data:
driver: local
+17
View File
@@ -0,0 +1,17 @@
{
"id": "databasus",
"name": "Databasus",
"version": "latest",
"description": "Free, open source and self-hosted tool to backup PostgreSQL, MySQL, MariaDB and MongoDB. Multiple storages (S3, Google Drive, FTP, etc.), notifications and Point-in-Time Recovery. Successor of Postgresus",
"logo": "databasus.svg",
"links": {
"github": "https://github.com/databasus/databasus",
"website": "https://databasus.com",
"docs": "https://databasus.com/installation"
},
"tags": [
"postgres",
"backup",
"s3"
]
}
+11
View File
@@ -0,0 +1,11 @@
[variables]
main_domain = "${domain}"
[config]
env = []
mounts = []
[[config.domains]]
serviceName = "databasus"
port = 4005
host = "${main_domain}"
+8 -1
View File
@@ -1,6 +1,6 @@
services:
evolution-api:
image: evoapicloud/evolution-api:latest
image: evoapicloud/evolution-api:v2.3.7
restart: always
volumes:
- evolution-instances:/evolution/instances
@@ -29,6 +29,13 @@ services:
- CACHE_REDIS_URI=${CACHE_REDIS_URI}
- CACHE_REDIS_PREFIX_KEY=${CACHE_REDIS_PREFIX_KEY}
- CACHE_REDIS_SAVE_INSTANCES=${CACHE_REDIS_SAVE_INSTANCES}
- TYPEBOT_ENABLED=${TYPEBOT_ENABLED}
- TYPEBOT_API_VERSION=${TYPEBOT_API_VERSION}
- CHATWOOT_ENABLED=${CHATWOOT_ENABLED}
- OPENAI_ENABLED=${OPENAI_ENABLED}
- DIFY_ENABLED=${DIFY_ENABLED}
- N8N_ENABLED=${N8N_ENABLED}
- EVOAI_ENABLED=${EVOAI_ENABLED}
evolution-postgres:
image: postgres:16-alpine
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "evolutionapi",
"name": "Evolution API",
"version": "v2.1.2",
"version": "v2.3.7",
"description": "Evolution API is a robust platform dedicated to empowering small businesses with limited resources, going beyond a simple messaging solution via WhatsApp.",
"logo": "evolutionapi.png",
"links": {
+7
View File
@@ -31,6 +31,13 @@ env = [
"CACHE_REDIS_URI=redis://evolution-redis:6379",
"CACHE_REDIS_PREFIX_KEY=evolution",
"CACHE_REDIS_SAVE_INSTANCES=true",
"TYPEBOT_ENABLED=true",
"TYPEBOT_API_VERSION=latest",
"CHATWOOT_ENABLED=true",
"OPENAI_ENABLED=true",
"DIFY_ENABLED=true",
"N8N_ENABLED=true",
"EVOAI_ENABLED=true",
]
mounts = []
+6 -47
View File
@@ -1,65 +1,24 @@
services:
gitlab:
image: gitlab/gitlab-ce:latest
image: gitlab/gitlab-ce:19.1.2-ce.0
restart: unless-stopped
hostname: gitlab.example.com
shm_size: "256m"
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://${GITLAB_HOST}'
gitlab_rails['gitlab_ssh_host'] = '${GITLAB_HOST}'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_host'] = 'postgresql'
gitlab_rails['db_port'] = '5432'
gitlab_rails['db_database'] = '${POSTGRES_DB}'
gitlab_rails['db_username'] = '${POSTGRES_USER}'
gitlab_rails['db_password'] = '${POSTGRES_PASSWORD}'
# Redis config for external TCP connection
gitlab_rails['redis_url'] = 'redis://redis:6379/0'
gitlab_rails['redis_host'] = 'redis'
gitlab_rails['redis_port'] = 6379
gitlab_rails['redis_socket'] = nil
gitlab_rails['gitlab_email_enabled'] = false
gitlab_rails['gitlab_default_can_create_group'] = true
gitlab_rails['gitlab_username_changing_enabled'] = false
unicorn['worker_processes'] = 2
unicorn['worker_timeout'] = 60
postgresql['enable'] = false
redis['enable'] = false
nginx['enable'] = true
nginx['listen_port'] = 80
nginx['listen_https'] = false
gitlab_rails['initial_root_password'] = '${GITLAB_ROOT_PASSWORD}'
gitlab_rails['gitlab_email_enabled'] = false
puma['worker_processes'] = 0
sidekiq['concurrency'] = 10
prometheus_monitoring['enable'] = false
ports:
- "80"
- "2224"
volumes:
- gitlab_config:/etc/gitlab
- gitlab_logs:/var/log/gitlab
- gitlab_data:/var/opt/gitlab
depends_on:
- postgresql
- redis
postgresql:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgresql_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- redis_data:/data
volumes:
gitlab_config:
gitlab_logs:
gitlab_data:
postgresql_data:
redis_data:
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "gitlab-ce",
"name": "GitLab CE",
"version": "latest",
"version": "19.1.2",
"description": "GitLab Community Edition is a free and open source platform for managing Git repositories, CI/CD pipelines, and project management.",
"logo": "gitlab-ce.svg",
"links": {
+2 -6
View File
@@ -1,15 +1,11 @@
[variables]
main_domain = "${domain}"
postgres_db = "gitlab"
postgres_user = "gitlab"
postgres_password = "${password:32}"
gitlab_root_password = "${password:32}"
[config]
env = [
"GITLAB_HOST=${main_domain}",
"POSTGRES_DB=${postgres_db}",
"POSTGRES_USER=${postgres_user}",
"POSTGRES_PASSWORD=${postgres_password}",
"GITLAB_ROOT_PASSWORD=${gitlab_root_password}",
]
[[config.domains]]
+4 -1
View File
@@ -4,8 +4,11 @@ services:
restart: unless-stopped
volumes:
# - /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration
- ../homarr/appdata:/appdata
- homarr_appdata:/appdata
environment:
- SECRET_ENCRYPTION_KEY=${SECRET_ENCRYPTION_KEY}
ports:
- 7575
volumes:
homarr_appdata:
+1 -1
View File
@@ -1,6 +1,6 @@
[variables]
main_domain = "${domain}"
secret_key = "${password:64}"
secret_key = "${hash:64}"
[config]
env = ["SECRET_ENCRYPTION_KEY=${secret_key}"]
+11 -39
View File
@@ -2,10 +2,10 @@ version: "3.9"
services:
immich-server:
image: ghcr.io/immich-app/immich-server:v2.1.0
image: ghcr.io/immich-app/immich-server:v3.0.2
volumes:
- immich-library:/usr/src/app/upload
- immich-library:/data
- /etc/localtime:/etc/localtime:ro
depends_on:
immich-redis:
@@ -13,9 +13,6 @@ services:
immich-database:
condition: service_healthy
environment:
PORT: 2283
SERVER_URL: ${SERVER_URL}
FRONT_BASE_URL: ${FRONT_BASE_URL}
# Database Configuration
DB_HOSTNAME: ${DB_HOSTNAME}
DB_PORT: ${DB_PORT}
@@ -30,70 +27,45 @@ services:
TZ: ${TZ}
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:2283/server-info/ping"]
interval: 30s
timeout: 10s
retries: 3
disable: false
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:v2.1.0
image: ghcr.io/immich-app/immich-machine-learning:v3.0.2
volumes:
- immich-model-cache:/cache
environment:
REDIS_HOSTNAME: ${REDIS_HOSTNAME}
REDIS_PORT: ${REDIS_PORT}
REDIS_DBINDEX: ${REDIS_DBINDEX}
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3003/ping"]
interval: 30s
timeout: 10s
retries: 3
disable: false
immich-redis:
image: redis:6.2-alpine
image: valkey/valkey:9
volumes:
- immich-redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
test: redis-cli ping || exit 1
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
immich-database:
image: tensorchord/pgvecto-rs:pg14-v0.3.0
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
volumes:
- immich-postgres:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: immich
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
shm_size: 128mb
healthcheck:
test: pg_isready -U ${DB_USERNAME} -d immich || exit 1
test: pg_isready -U ${DB_USERNAME} -d ${DB_DATABASE_NAME} || exit 1
interval: 10s
timeout: 5s
retries: 5
command:
[
'postgres',
'-c',
'shared_preload_libraries=vectors.so',
'-c',
'search_path="$$user", public, vectors',
'-c',
'logging_collector=on',
'-c',
'max_wal_size=2GB',
'-c',
'shared_buffers=512MB',
'-c',
'wal_compression=on',
]
restart: unless-stopped
volumes:
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "immich",
"name": "Immich",
"version": "v1.121.0",
"version": "v3.0.2",
"description": "High performance self-hosted photo and video backup solution directly from your mobile phone.",
"logo": "immich.svg",
"links": {
-3
View File
@@ -5,9 +5,6 @@ db_user = "immich"
[config]
env = [
"IMMICH_HOST=${main_domain}",
"SERVER_URL=https://${main_domain}",
"FRONT_BASE_URL=https://${main_domain}",
"DB_HOSTNAME=immich-database",
"DB_PORT=5432",
"DB_USERNAME=${db_user}",
+13 -46
View File
@@ -1,58 +1,29 @@
services:
db-migration:
depends_on:
db:
condition: service_healthy
image: infisical/infisical:v0.135.0-postgres
environment:
- NODE_ENV=production
- ENCRYPTION_KEY
- AUTH_SECRET
- SITE_URL
- DB_CONNECTION_URI=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
- REDIS_URL=redis://redis:6379
- SMTP_HOST
- SMTP_PORT
- SMTP_FROM_NAME
- SMTP_USERNAME
- SMTP_PASSWORD
- SMTP_SECURE=true
command: npm run migration:latest
pull_policy: always
backend:
image: infisical/infisical:v0.162.6
restart: unless-stopped
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
db-migration:
condition: service_completed_successfully
image: infisical/infisical:v0.135.0-postgres
pull_policy: always
environment:
- NODE_ENV=production
- ENCRYPTION_KEY
- AUTH_SECRET
- SITE_URL
- ENCRYPTION_KEY=${ENCRYPTION_KEY}
- AUTH_SECRET=${AUTH_SECRET}
- SITE_URL=${SITE_URL}
- DB_CONNECTION_URI=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
- REDIS_URL=redis://redis:6379
- SMTP_HOST
- SMTP_PORT
- SMTP_FROM_NAME
- SMTP_USERNAME
- SMTP_PASSWORD
- SMTP_SECURE=true
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT}
- SMTP_FROM_ADDRESS=${SMTP_FROM_ADDRESS}
- SMTP_FROM_NAME=${SMTP_FROM_NAME}
- SMTP_USERNAME=${SMTP_USERNAME}
- SMTP_PASSWORD=${SMTP_PASSWORD}
redis:
image: redis:7.4.1
env_file: .env
restart: always
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- redis_infisical_data:/data
@@ -60,12 +31,11 @@ services:
image: postgres:14-alpine
restart: always
environment:
- POSTGRES_PASSWORD
- POSTGRES_USER
- POSTGRES_DB
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- pg_infisical_data:/var/lib/postgresql/data
healthcheck:
test: "pg_isready --username=${POSTGRES_USER} && psql --username=${POSTGRES_USER} --list"
interval: 5s
@@ -75,6 +45,3 @@ services:
volumes:
pg_infisical_data:
redis_infisical_data:
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "infisical",
"name": "Infisical",
"version": "0.135.0",
"version": "0.162.6",
"description": "All-in-one platform to securely manage application configuration and secrets across your team and infrastructure.",
"logo": "infisical.jpg",
"links": {
+9 -38
View File
@@ -3,56 +3,27 @@ main_domain = "${domain}"
postgres_password = "${password}"
postgres_user = "infisical"
postgres_db = "infisical"
encryption_key = "${hash:32}"
auth_secret = "${base64:32}"
[config]
env = [
"ENCRYPTION_KEY=6c1fe4e407b8911c104518103505b218",
"AUTH_SECRET=5lrMXKKWCVocS/uerPsl7V+TX/aaUaI7iDkgl3tSmLE=",
"ENCRYPTION_KEY=${encryption_key}",
"AUTH_SECRET=${auth_secret}",
"POSTGRES_PASSWORD=${postgres_password}",
"POSTGRES_USER=${postgres_user}",
"POSTGRES_DB=${postgres_db}",
"SITE_URL=http://${main_domain}:8080",
"SITE_URL=http://${main_domain}",
"SMTP_HOST=",
"SMTP_PORT=",
"SMTP_NAME=",
"SMTP_PORT=587",
"SMTP_FROM_ADDRESS=",
"SMTP_FROM_NAME=Infisical",
"SMTP_USERNAME=",
"SMTP_PASSWORD=",
"CLIENT_ID_HEROKU=",
"CLIENT_ID_VERCEL=",
"CLIENT_ID_NETLIFY=",
"CLIENT_ID_GITHUB=",
"CLIENT_ID_GITHUB_APP=",
"CLIENT_SLUG_GITHUB_APP=",
"CLIENT_ID_GITLAB=",
"CLIENT_ID_BITBUCKET=",
"CLIENT_SECRET_HEROKU=",
"CLIENT_SECRET_VERCEL=",
"CLIENT_SECRET_NETLIFY=",
"CLIENT_SECRET_GITHUB=",
"CLIENT_SECRET_GITHUB_APP=",
"CLIENT_SECRET_GITLAB=",
"CLIENT_SECRET_BITBUCKET=",
"CLIENT_SLUG_VERCEL=",
"CLIENT_PRIVATE_KEY_GITHUB_APP=",
"CLIENT_APP_ID_GITHUB_APP=",
"SENTRY_DSN=",
"POSTHOG_HOST=",
"POSTHOG_PROJECT_API_KEY=",
"CLIENT_ID_GOOGLE_LOGIN=",
"CLIENT_SECRET_GOOGLE_LOGIN=",
"CLIENT_ID_GITHUB_LOGIN=",
"CLIENT_SECRET_GITHUB_LOGIN=",
"CLIENT_ID_GITLAB_LOGIN=",
"CLIENT_SECRET_GITLAB_LOGIN=",
"CAPTCHA_SECRET=",
"NEXT_PUBLIC_CAPTCHA_SITE_KEY=",
"PLAIN_API_KEY=",
"PLAIN_WISH_LABEL_IDS=",
"SSL_CLIENT_CERTIFICATE_HEADER_KEY=",
]
mounts = []
[[config.domains]]
serviceName = "backend"
port = 8_080
port = 8080
host = "${main_domain}"
+15 -19
View File
@@ -1,39 +1,35 @@
version: "3.8"
services:
kener:
image: rajnandan1/kener:latest
environment:
- TZ=${TZ}
- KENER_SECRET_KEY=${KENER_SECRET_KEY} # 🔐 API key / secret
- ORIGIN=${ORIGIN}
- REDIS_URL=${REDIS_URL}
- DATABASE_URL=${DATABASE_URL}
- KENER_BASE_PATH=${KENER_BASE_PATH}
- ORIGIN=${ORIGIN}
- RESEND_API_KEY=${RESEND_API_KEY} # 🔐 API key
- RESEND_SENDER_EMAIL=${RESEND_SENDER_EMAIL}
ports:
- 3000
volumes:
- kener_db:/app/database
- ../files/uploads:/app/uploads
depends_on:
redis:
condition: service_healthy
restart: unless-stopped
postgres:
image: postgres:alpine
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD} # 🔐 DB password
- POSTGRES_DB=${POSTGRES_DB}
restart: unless-stopped
mysql:
image: mariadb:11
environment:
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD} # 🔐 DB password
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_RANDOM_ROOT_PASSWORD=true
redis:
image: redis:7-alpine
volumes:
- kener_redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
volumes:
kener_db: {}
kener_redis: {}
+2 -20
View File
@@ -1,8 +1,6 @@
[variables]
main_domain = "${domain}"
KENER_SECRET_KEY = "${password:64}"
POSTGRES_PASSWORD = "${password:32}"
MYSQL_PASSWORD = "${password:32}"
[config]
[[config.domains]]
@@ -13,25 +11,9 @@ host = "${main_domain}"
[config.env]
TZ = "Etc/UTC"
KENER_SECRET_KEY = "${KENER_SECRET_KEY}" # 🔐 API key / secret
ORIGIN = "https://${main_domain}"
REDIS_URL = "redis://redis:6379"
DATABASE_URL = "sqlite://./database/kener.sqlite.db"
KENER_BASE_PATH = ""
ORIGIN = "http://localhost:3000"
RESEND_API_KEY = ""
RESEND_SENDER_EMAIL = "Accounts <accounts@resend.dev>"
POSTGRES_USER = "user"
POSTGRES_DB = "kener_db"
MYSQL_USER = "user"
MYSQL_DATABASE = "kener_db"
MYSQL_RANDOM_ROOT_PASSWORD = "true"
MYSQL_PASSWORD = "${MYSQL_PASSWORD}" # 🔐 DB password
POSTGRES_PASSWORD = "${POSTGRES_PASSWORD}" # 🔐 DB password
[[config.mounts]]
type = "volume"
source = "kener_db"
target = "/app/database"
[[config.mounts]]
type = "bind"
source = "../files/uploads"
target = "/app/uploads"
+5 -9
View File
@@ -1,14 +1,11 @@
services:
app:
image: ghcr.io/logto-io/logto:1.41.0
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
image: ghcr.io/logto-io/logto:1.27.0
entrypoint: ["sh", "-c", "npm run cli db seed -- --swe && npm start"]
ports:
- 3001
- 3002
environment:
TRUST_PROXY_HEADER: 1
DB_URL: postgres://logto:${LOGTO_POSTGRES_PASSWORD}@postgres:5432/logto
@@ -18,20 +15,19 @@ services:
- logto-connectors:/etc/logto/packages/core/connectors
postgres:
image: postgres:17-alpine
user: postgres
restart: unless-stopped
environment:
POSTGRES_USER: logto
POSTGRES_PASSWORD: ${LOGTO_POSTGRES_PASSWORD}
POSTGRES_DB: logto
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
test: ["CMD-SHELL", "pg_isready -U logto -d logto"]
interval: 10s
timeout: 5s
retries: 5
volumes:
logto-connectors:
postgres-data:
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "logto",
"name": "Logto",
"version": "1.27.0",
"version": "1.41.0",
"description": "Logto is an open-source Identity and Access Management (IAM) platform designed to streamline Customer Identity and Access Management (CIAM) and Workforce Identity Management.",
"logo": "logto.png",
"links": {
+2 -2
View File
@@ -1,7 +1,7 @@
[variables]
main_domain = "${domain}"
admin_domain = "${domain}"
postgres_password = "${password}"
postgres_password = "${password:32}"
[config]
mounts = []
@@ -17,6 +17,6 @@ port = 3_002
host = "${admin_domain}"
[config.env]
LOGTO_ENDPOINT = "http://${admin_domain}"
LOGTO_ENDPOINT = "http://${main_domain}"
LOGTO_ADMIN_ENDPOINT = "http://${admin_domain}"
LOGTO_POSTGRES_PASSWORD = "${postgres_password}"
+39
View File
@@ -0,0 +1,39 @@
version: "3.8"
services:
db:
image: postgres:16-alpine
restart: unless-stopped
volumes:
- markup-postgres-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: markup
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: markup
healthcheck:
test: ["CMD-SHELL", "pg_isready -U markup -d markup"]
interval: 10s
timeout: 5s
retries: 5
markup:
image: ghcr.io/pphilfre/markup:main
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
DATABASE_URL: ${DATABASE_URL}
NEXT_PUBLIC_DB_PROVIDER: postgres
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL}
# WorkOS AuthKit (optional): required only for user accounts and cloud sync.
# Placeholders keep the app running; replace them with real credentials
# from https://dashboard.workos.com to enable sign-in.
WORKOS_CLIENT_ID: ${WORKOS_CLIENT_ID}
WORKOS_API_KEY: ${WORKOS_API_KEY}
WORKOS_COOKIE_PASSWORD: ${WORKOS_COOKIE_PASSWORD}
NEXT_PUBLIC_WORKOS_REDIRECT_URI: ${NEXT_PUBLIC_WORKOS_REDIRECT_URI}
NODE_ENV: production
volumes:
markup-postgres-data:
+5
View File
@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none">
<rect width="100" height="100" rx="20" fill="#0a0a0a"/>
<text x="50" y="68" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-weight="700" font-size="48" fill="#7c3aed">M</text>
<rect x="22" y="76" width="56" height="3" rx="1.5" fill="#7c3aed" opacity="0.5"/>
</svg>

After

Width:  |  Height:  |  Size: 375 B

+18
View File
@@ -0,0 +1,18 @@
{
"id": "markup",
"name": "Markup",
"version": "main",
"description": "Markup is a fast, keyboard-first markdown workspace with live preview, graph view, whiteboards, mind maps, and PostgreSQL-powered cloud sync.",
"logo": "markup.svg",
"links": {
"github": "https://github.com/pphilfre/markup",
"website": "https://home.markup.freddiephilpot.dev/",
"docs": "https://docs.markup.freddiephilpot.dev/"
},
"tags": [
"markdown",
"notes",
"editor",
"self-hosted"
]
}
+25
View File
@@ -0,0 +1,25 @@
[variables]
main_domain = "${domain}"
postgres_password = "${password:32}"
cookie_password = "${password:32}"
[config]
env = [
"POSTGRES_PASSWORD=${postgres_password}",
"DATABASE_URL=postgresql://markup:${postgres_password}@db:5432/markup",
"NEXT_PUBLIC_SITE_URL=https://${main_domain}",
"# WorkOS AuthKit is optional: it powers user accounts and cloud sync.",
"# The app works without it (local, in-browser storage). To enable sign-in,",
"# create an app at https://dashboard.workos.com, set the redirect URI below",
"# in the WorkOS dashboard, and replace the placeholder credentials.",
"WORKOS_CLIENT_ID=client_id_change_me",
"WORKOS_API_KEY=sk_change_me",
"WORKOS_COOKIE_PASSWORD=${cookie_password}",
"NEXT_PUBLIC_WORKOS_REDIRECT_URI=https://${main_domain}/callback",
]
mounts = []
[[config.domains]]
serviceName = "markup"
port = 3000
host = "${main_domain}"
+3 -3
View File
@@ -54,7 +54,7 @@ services:
retries: 5
op-api:
image: lindesvard/openpanel-api:2
image: lindesvard/openpanel-api:2.2.1
restart: always
command: >
sh -c "
@@ -97,7 +97,7 @@ services:
condition: service_healthy
op-dashboard:
image: lindesvard/openpanel-dashboard:2
image: lindesvard/openpanel-dashboard:2.2.1
restart: always
depends_on:
op-api:
@@ -111,7 +111,7 @@ services:
retries: 5
op-worker:
image: lindesvard/openpanel-worker:2
image: lindesvard/openpanel-worker:2.2.1
restart: always
depends_on:
op-api:
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "openpanel",
"name": "OpenPanel",
"version": "latest",
"version": "2.2.1",
"description": "An open-source web and product analytics platform that combines the power of Mixpanel with the ease of Plausible and one of the best Google Analytics replacements.",
"logo": "logo.svg",
"links": {
+1 -1
View File
@@ -26,7 +26,7 @@ content = """
<part_log remove="remove"/>
<listen_host>0.0.0.0</listen_host>
<interserver_listen_host>0.0.0.0</interserver_listen_host>
<interserver_http_host>opch</interserver_http_host>
<interserver_http_host>op-ch</interserver_http_host>
<!-- Disable cgroup memory observer -->
<cgroups_memory_usage_observer_wait_time>0</cgroups_memory_usage_observer_wait_time>
<!-- Not used anymore, but kept for backwards compatibility -->
+18
View File
@@ -0,0 +1,18 @@
version: "3.8"
services:
oryx:
image: ossrs/oryx:5.15.20
restart: unless-stopped
ports:
# RTMP, WebRTC and SRT are not HTTP protocols, so Traefik cannot route
# them through the domain. They must be published directly on the host
# (same approach as the poste.io template with its mail ports). Use the
# server IP (not the domain) for these protocols.
- "1935:1935" # RTMP ingest/playback (TCP)
- "8000:8000/udp" # WebRTC media transport (UDP)
- "10080:10080/udp" # SRT ingest/playback (UDP)
volumes:
- oryx-data:/data
volumes:
oryx-data: {}
+29
View File
@@ -0,0 +1,29 @@
# Oryx (SRS Stack)
Oryx is an all-in-one video streaming server built on [SRS](https://github.com/ossrs/srs), with a web console for managing streams, recording, forwarding, transcoding and virtual live streaming.
## First login
Open the domain assigned to this service. On the first visit Oryx asks you to **create the admin password** — set it right away, since anyone who reaches the page first can claim the instance. The password (and all other state) is stored in the `oryx-data` volume, so it survives restarts and upgrades.
## Publishing streams
The web console (Scenarios > Streaming) shows ready-to-copy URLs that include your stream secret. The streaming protocols are **not HTTP**, so Traefik cannot route them through your domain — they are published directly on the server's host ports instead. Use the **server IP address** (not the domain) for these:
| Protocol | URL format | Host port |
| --- | --- | --- |
| RTMP (OBS, ffmpeg) | `rtmp://SERVER_IP/live/livestream?secret=xxx` | `1935/tcp` |
| SRT | `srt://SERVER_IP:10080?streamid=#!::r=live/livestream,secret=xxx,m=publish` | `10080/udp` |
| WebRTC (WHIP) | `https://your-domain/rtc/v1/whip/?app=live&stream=livestream&secret=xxx` | signaling via domain, media via `8000/udp` |
Make sure your server firewall / cloud security group allows `1935/tcp`, `8000/udp` and `10080/udp`. Because these are fixed host ports, only one Oryx instance can run per server.
## Playback
HTTP-based playback goes through your domain (HTTPS via Traefik):
- HLS: `https://your-domain/live/livestream.m3u8`
- HTTP-FLV: `https://your-domain/live/livestream.flv`
- WebRTC (WHEP): available from the console's preview page; media flows over `8000/udp`.
If WebRTC playback or publishing connects but produces no media, verify that UDP port `8000` is reachable from the client — WebRTC media bypasses the reverse proxy entirely.
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 64 32" height="32px" width="64px" id="svg2" version="1.1" xmlns="http://www.w3.org/2000/svg">
<defs id="defs6">
<linearGradient id="linearGradient28" spreadMethod="pad" gradientTransform="matrix(148.91527,0,0,-148.91527,151.81076,224.17897)" gradientUnits="userSpaceOnUse" y2="0" x2="1" y1="0" x1="0">
<stop id="stop24" offset="0" style="stop-opacity:1;stop-color:#3caae1"/>
<stop id="stop26" offset="1" style="stop-opacity:1;stop-color:#b65c9e"/>
</linearGradient>
<linearGradient id="linearGradient48" spreadMethod="pad" gradientTransform="matrix(155.05911,0,0,-155.05911,49.431911,216.24139)" gradientUnits="userSpaceOnUse" y2="0" x2="1" y1="0" x1="0">
<stop id="stop44" offset="0" style="stop-opacity:1;stop-color:#2ca0d4"/>
<stop id="stop46" offset="1" style="stop-opacity:1;stop-color:#305ba7"/>
</linearGradient>
<clipPath id="clipPath58" clipPathUnits="userSpaceOnUse">
<path id="path56" d="M 0,350.158 H 350.158 V 0 H 0 Z"/>
</clipPath>
</defs>
<g transform="matrix(0.172146, 0, 0, -0.188192, -9.741413, 53.288761)" id="g10" style="">
<g id="g12" style="" transform="matrix(0.654687, 0, 0, 0.654687, 47.49966, 55.96529)">
<g id="g14">
<g id="g20">
<g id="g22">
<path id="path30" style="fill:url(#linearGradient28);stroke:none" d="m 151.811,280.659 54.062,-54.064 14.238,14.586 c 13.253,11.772 33.681,8.665 42.764,-6.48 v 0 c 6.949,-11.585 4.152,-27.659 -6.248,-35.919 v 0 c -11.647,-9.249 -27.453,-8.66 -37.707,1.501 v 0 c -8.318,8.241 -16.529,16.588 -24.814,24.861 v 0 c -13.578,13.558 -26.814,27.483 -40.842,40.56 v 0 c -0.155,0.144 -0.318,0.269 -0.474,0.412 v 0 c 1.246,-1.658 40.823,-54.57 51.701,-97.422 v 0 c 14.746,-10.175 31.762,-12.852 50.25,-8.006 v 0 c 35.557,9.319 55.709,47.52 41.276,82.815 v 0 c -9.385,22.952 -27.32,35.949 -52.141,38.356 v 0 c -15.155,1.471 -27.697,-2.422 -38.597,-9.506 v 0 l -8.305,8.306 c -6.236,6.235 -14.409,9.353 -22.581,9.353 v 0 c -8.173,0 -16.346,-3.118 -22.582,-9.353"/>
</g>
</g>
</g>
</g>
<g id="g32" style="" transform="matrix(0.653075, 0, 0, 0.653075, 48.56073, 55.406696)">
<g id="g34">
<g id="g40">
<g id="g42">
<path id="path50" style="fill:url(#linearGradient48);stroke:none" d="m 50.99,234 c -1.85,-8.185 -1.733,-14.379 -1.264,-20.194 v 0 c 2.822,-30.213 29.126,-54.494 59.465,-55.353 v 0 c 13.788,-0.391 25.237,3.439 35.23,9.815 v 0 l 8.671,-8.669 c 12.471,-12.471 32.691,-12.471 45.163,0 v 0 l -52.152,52.151 c -0.639,0.65 -1.262,1.284 -1.904,1.935 v 0 c -4.061,-4.127 -8.071,-8.229 -12.109,-12.304 v 0 c -7.927,-8.003 -17.355,-11.004 -28.326,-8.029 v 0 C 92.462,196.418 84.207,206.453 83.4,217.68 v 0 c -0.881,12.257 5.312,23.099 16.04,28.075 v 0 c 10.826,5.024 23.504,2.646 32.091,-5.942 v 0 c 21.291,-21.289 42.367,-42.8 63.987,-63.751 v 0 c 2.884,-2.793 5.882,-5.235 8.973,-7.368 v 0 c -16.324,63.52 -50.455,95.764 -51.701,97.422 v 0 c -12.077,11.041 -26.76,16.121 -41.224,16.121 v 0 C 84.3,282.238 57.808,264.189 50.99,234"/>
</g>
</g>
</g>
</g>
<g id="g52" style="" transform="matrix(0.797304, 0, 0, 0.797304, 194.474228, 136.918259)">
<g clip-path="url(#clipPath58)" id="g54">
<g transform="translate(126.2779,90.4397)" id="g60">
<path id="path62" style="fill:#494545;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 h -19.449 c -3.396,0.381 -5.093,2.049 -5.093,5.005 l 0.132,0.879 c 0.731,2.487 2.385,3.731 4.961,3.731 H 5.357 c 1.2,0 2.327,0.16 3.381,0.484 4.479,1.843 6.717,5.005 6.717,9.483 0,0.233 -0.073,0.351 -0.219,0.351 h -35.783 c -2.458,0 -5.034,-0.776 -7.727,-2.328 -4.419,-3.453 -6.629,-7.361 -6.629,-11.721 0,-2.167 0.337,-4.289 1.009,-6.366 2.752,-6.586 8.109,-9.879 16.069,-9.879 h 18.09 c 3.395,-0.352 5.092,-2.005 5.092,-4.961 L 5.226,-16.2 c -0.732,-2.488 -2.387,-3.732 -4.961,-3.732 h -24.807 c -1.199,0 -2.326,-0.175 -3.381,-0.527 -4.477,-1.815 -6.717,-4.962 -6.717,-9.439 0,-0.264 0.074,-0.396 0.22,-0.396 H 1.362 c 2.458,0 5.034,0.79 7.728,2.371 4.419,3.453 6.629,7.361 6.629,11.723 0,2.371 -0.337,4.404 -1.011,6.102 C 12.075,-3.365 7.172,0 0,0"/>
</g>
<g transform="translate(257.773,80.342)" id="g64">
<path id="path66" style="fill:#494545;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c -2.633,6.732 -7.536,10.098 -14.708,10.098 h -19.449 c -3.396,0.381 -5.093,2.048 -5.093,5.005 l 0.131,0.878 c 0.732,2.488 2.386,3.732 4.962,3.732 h 24.805 c 1.201,0 2.328,0.16 3.381,0.483 4.48,1.844 6.717,5.005 6.717,9.484 0,0.233 -0.072,0.35 -0.218,0.35 h -35.783 c -2.458,0 -5.035,-0.775 -7.727,-2.327 -4.419,-3.453 -6.63,-7.361 -6.63,-11.722 0,-2.167 0.337,-4.289 1.01,-6.366 2.751,-6.586 8.108,-9.879 16.069,-9.879 h 18.089 c 3.395,-0.351 5.092,-2.005 5.092,-4.961 l -0.13,-0.878 c -0.733,-2.488 -2.387,-3.731 -4.962,-3.731 H -39.25 c -1.2,0 -2.327,-0.176 -3.381,-0.527 -4.477,-1.816 -6.717,-4.962 -6.717,-9.44 0,-0.263 0.073,-0.395 0.22,-0.395 h 35.781 c 2.459,0 5.035,0.79 7.728,2.371 4.419,3.453 6.63,7.361 6.63,11.722 C 1.011,-3.731 0.674,-1.698 0,0"/>
</g>
<g transform="translate(160.6578,100.5822)" id="g68">
<path id="path70" style="fill:#494545;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 h 7.033 v 5.847 c 0,1.153 0.634,2.204 1.654,2.741 1.021,0.537 2.245,0.467 3.195,-0.185 L 20.445,2.54 C 21.284,1.965 21.787,1.017 21.791,0 h 2.004 c 2.986,0 4.77,-1.713 5.356,-5.138 L 29.02,-5.839 c -0.674,-3.015 -2.416,-4.523 -5.225,-4.523 H 0 Z m 23.531,-20.108 c 2.518,0 5.182,0.834 7.991,2.503 4.594,3.306 6.894,7.507 6.894,12.6 0,4.126 -1.626,7.815 -4.874,11.064 -3.103,2.545 -5.956,3.82 -8.562,3.82 H -9.528 l -0.22,-0.265 v -49.217 l 0.133,-0.13 c 2.048,0 3.832,0.482 5.356,1.448 2.838,2.107 4.259,4.317 4.259,6.63 v 20.722 l 26.648,-26.518 c 1.288,-1.99 3.66,-2.986 7.114,-2.986 3.891,0.235 5.84,0.908 5.84,2.02 v 0.22 c 0,0.146 -5.944,6.176 -17.826,18.089 z"/>
</g>
<g transform="translate(180.5738,101.9846)" id="g72">
<path id="path74" style="fill:#494545;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 -8.563,5.863 c -0.323,0.222 -0.688,0.333 -1.055,0.333 -0.299,0 -0.598,-0.072 -0.878,-0.22 -0.627,-0.33 -1,-0.95 -1,-1.659 V -7.41 c 0,-0.708 0.373,-1.327 1,-1.657 0.627,-0.332 1.349,-0.289 1.933,0.111 L 0,-3.092 c 0.518,0.354 0.815,0.918 0.815,1.545 C 0.815,-0.918 0.518,-0.354 0,0"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

+22
View File
@@ -0,0 +1,22 @@
{
"id": "oryx",
"name": "Oryx",
"version": "5.15.20",
"description": "Oryx (formerly SRS Stack) is an all-in-one, open-source video streaming server with a web console. It ingests RTMP, WebRTC (WHIP) and SRT streams and plays them back over HLS, HTTP-FLV and WebRTC (WHEP), with built-in recording, forwarding, transcoding and virtual live streaming.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/ossrs/oryx",
"website": "https://ossrs.io/",
"docs": "https://ossrs.io/lts/en-us/docs/v6/doc/getting-started-oryx",
"docker": "https://hub.docker.com/r/ossrs/oryx"
},
"tags": [
"streaming",
"video",
"rtmp",
"webrtc",
"srt",
"hls",
"media-server"
]
}
+8
View File
@@ -0,0 +1,8 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "oryx"
port = 2022
host = "${main_domain}"
+3 -1
View File
@@ -5,7 +5,7 @@ services:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: tu_base_de_datos
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
@@ -19,6 +19,8 @@ services:
PMA_USER: ${MYSQL_USER}
PMA_PASSWORD: ${MYSQL_PASSWORD}
PMA_ARBITRARY: 1
UPLOAD_LIMIT: ${UPLOAD_LIMIT}
MAX_EXECUTION_TIME: ${MAX_EXECUTION_TIME}
depends_on:
- db
+3 -1
View File
@@ -13,6 +13,8 @@ host = "${main_domain}"
[config.env]
MYSQL_ROOT_PASSWORD = "${root_password}"
MYSQL_DATABASE = "mysql"
MYSQL_DATABASE = "phpmyadmin"
MYSQL_USER = "phpmyadmin"
MYSQL_PASSWORD = "${user_password}"
UPLOAD_LIMIT = "512M"
MAX_EXECUTION_TIME = "600"
+3 -1
View File
@@ -1,6 +1,8 @@
services:
postgresus:
image: rostislavdugin/postgresus:latest
# Postgresus was renamed upstream to Databasus (https://github.com/databasus/databasus).
# This image is frozen at its final release; use the "databasus" template for new deployments.
image: rostislavdugin/postgresus:v2.15.3
ports:
- "4005"
volumes:
+4 -4
View File
@@ -1,13 +1,13 @@
{
"id": "postgresus",
"name": "Postgresus",
"version": "latest",
"description": "Free, open source and self-hosted solution for automated PostgreSQL backups. With multiple storage options and notifications",
"version": "v2.15.3",
"description": "Deprecated: the project was renamed to Databasus, use the Databasus template instead. Free, open source and self-hosted solution for automated PostgreSQL backups, frozen at its final release",
"logo": "postgresus.svg",
"links": {
"github": "https://github.com/RostislavDugin/postgresus",
"website": "https://postgresus.com",
"docs": "https://postgresus.com"
"website": "https://databasus.com",
"docs": "https://databasus.com"
},
"tags": [
"postgres",
+45 -7
View File
@@ -1,13 +1,13 @@
# https://www.rybbit.io/docs/self-hosting-advanced
# NOTE: there are two sample HTTP traefik domain entries created:
# - rybbit_backend (port 3001, path /api),
# - rybbit_backend (port 3001, path /api),
# - rybbit_client (port 3002, path /)
#
# You should treat these as placeholders - Rybbit only supports HTTPS.
#
# You should also update the `BASE_URL`, and `DOMAIN_NAME` environment
# variable when updating the domain entries with your custom domain.
# You should also update the `BASE_URL` environment variable when
# updating the domain entries with your custom domain.
services:
rybbit_clickhouse:
@@ -50,8 +50,41 @@ services:
retries: 3
restart: unless-stopped
rybbit_redis:
image: redis:7-alpine
volumes:
- redis_data:/data
# Backs session tracking and the BullMQ queues. noeviction is required by
# BullMQ (evicting job keys corrupts queues); AOF (everysec) keeps queues
# durable across restarts.
command:
- redis-server
- --requirepass
- ${REDIS_PASSWORD}
- --appendonly
- "yes"
- --appendfsync
- everysec
- --maxmemory-policy
- noeviction
healthcheck:
test:
[
"CMD",
"redis-cli",
"-a",
"${REDIS_PASSWORD}",
"--no-auth-warning",
"ping",
]
interval: 30s
timeout: 10s
retries: 3
start_period: 5s
restart: unless-stopped
rybbit_backend:
image: ghcr.io/rybbit-io/rybbit-backend:v1.5.1
image: ghcr.io/rybbit-io/rybbit-backend:v2.7.0
environment:
- NODE_ENV=production
- CLICKHOUSE_HOST=http://rybbit_clickhouse:8123
@@ -63,15 +96,20 @@ services:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- REDIS_HOST=rybbit_redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
- BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
- BASE_URL=${BASE_URL}
- DOMAIN_NAME=${DOMAIN_NAME}
- DISABLE_SIGNUP=${DISABLE_SIGNUP}
- DISABLE_TELEMETRY=${DISABLE_TELEMETRY}
depends_on:
rybbit_clickhouse:
condition: service_healthy
rybbit_postgres:
condition: service_started
rybbit_redis:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3001/api/health"]
interval: 30s
@@ -81,11 +119,10 @@ services:
restart: unless-stopped
rybbit_client:
image: ghcr.io/rybbit-io/rybbit-client:v1.5.1
image: ghcr.io/rybbit-io/rybbit-client:v2.7.0
environment:
- NODE_ENV=production
- NEXT_PUBLIC_BACKEND_URL=${BASE_URL}
- DOMAIN_NAME=${DOMAIN_NAME}
- NEXT_PUBLIC_DISABLE_SIGNUP=${DISABLE_SIGNUP}
depends_on:
- rybbit_backend
@@ -94,3 +131,4 @@ services:
volumes:
clickhouse_data:
postgres_data:
redis_data:
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "rybbit",
"name": "Rybbit",
"version": "v1.5.1",
"version": "v2.7.0",
"description": "Open-source and privacy-friendly alternative to Google Analytics that is 10x more intuitive",
"logo": "rybbit.png",
"links": {
+4 -2
View File
@@ -1,8 +1,9 @@
[variables]
main_domain = "${domain}"
better_auth_secret = "${password:32}"
better_auth_secret = "${base64:32}"
clickhouse_password = "${password:32}"
postgres_password = "${password:32}"
redis_password = "${password:32}"
[[config.domains]]
serviceName = "rybbit_backend"
@@ -17,15 +18,16 @@ host = "${main_domain}"
[config.env]
BASE_URL = "http://${main_domain}"
DOMAIN_NAME= "${main_domain}"
BETTER_AUTH_SECRET = "${better_auth_secret}"
DISABLE_SIGNUP = "false"
DISABLE_TELEMETRY = "false"
CLICKHOUSE_DB = "analytics"
CLICKHOUSE_USER = "default"
CLICKHOUSE_PASSWORD = "${clickhouse_password}"
POSTGRES_DB = "analytics"
POSTGRES_USER = "frog"
POSTGRES_PASSWORD = "${postgres_password}"
REDIS_PASSWORD = "${redis_password}"
[[config.mounts]]
filePath = "./clickhouse_config/enable_json.xml"
+2 -6
View File
@@ -1,6 +1,4 @@
x-common: &common
networks:
- signoz-net
restart: unless-stopped
logging:
options:
@@ -89,11 +87,12 @@ services:
- ZOO_PROMETHEUS_METRICS_PORT_NUMBER=9141
clickhouse:
!!merge <<: *clickhouse-defaults
container_name: signoz-clickhouse
hostname: clickhouse
volumes:
- ../files/clickhouse/config.xml:/etc/clickhouse-server/config.xml
- ../files/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/
- ../files/clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml
- ../files/clickhouse/docker_related_config.xml:/etc/clickhouse-server/config.d/docker_related_config.xml
- clickhouse:/var/lib/clickhouse/
signoz:
!!merge <<: *db-depend
@@ -156,9 +155,6 @@ services:
- --dsn=tcp://clickhouse:9000
- --up=
restart: on-failure
networks:
signoz-net:
name: signoz-net
volumes:
clickhouse:
name: signoz-clickhouse
+19 -2
View File
@@ -1,5 +1,6 @@
[variables]
main_domain = "${domain}"
otel_domain = "${domain}"
jwt_secret = "${password:64}"
[config]
@@ -12,7 +13,7 @@ path = "/"
[[config.domains]]
serviceName = "otel-collector"
port = 4318
host = "${main_domain}"
host = "${otel_domain}"
path = "/"
[config.env]
@@ -1246,7 +1247,23 @@ content = """
"""
[[config.mounts]]
filePath = "/signoz/prometheus.xml"
filePath = "/clickhouse/docker_related_config.xml"
content = """
<?xml version="1.0"?>
<clickhouse>
<!-- Overrides the docker image's default config.d/docker_related_config.xml,
which listens on the IPv6 wildcard address ([::]) first. On hosts without
IPv6 support the bind fails, so listen on IPv4 only. -->
<listen_host>0.0.0.0</listen_host>
<listen_try>1</listen_try>
<!-- Container IPs can change and DNS records (zookeeper-1, clickhouse) may not
be ready the moment ClickHouse starts. Do not cache DNS lookup failures. -->
<disable_internal_dns_cache>1</disable_internal_dns_cache>
</clickhouse>
"""
[[config.mounts]]
filePath = "/signoz/prometheus.yml"
content = """
# my global config
global:
+20
View File
@@ -0,0 +1,20 @@
services:
silex:
image: silexlabs/silex:3.7.0
restart: unless-stopped
ports:
- 6805
environment:
- SILEX_URL=${SILEX_URL}
- SILEX_SESSION_SECRET=${SILEX_SESSION_SECRET}
- STORAGE_CONNECTORS=fs
- HOSTING_CONNECTORS=fs,download
- SILEX_FS_ROOT=/silex/silex/storage
- SILEX_FS_HOSTING_ROOT=/silex/silex/hosting
volumes:
- silex-storage:/silex/silex/storage
- silex-hosting:/silex/silex/hosting
volumes:
silex-storage:
silex-hosting:
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+17
View File
@@ -0,0 +1,17 @@
{
"id": "silex",
"name": "Silex",
"version": "3.7.0",
"description": "Silex is a free and open-source website builder for professional designers. It lets you create static websites visually with a drag-and-drop editor, custom CSS and JavaScript, and publish them anywhere.",
"logo": "logo.png",
"links": {
"github": "https://github.com/silexlabs/Silex",
"website": "https://www.silex.me",
"docs": "https://docs.silex.me"
},
"tags": [
"website-builder",
"no-code",
"static-site"
]
}
+13
View File
@@ -0,0 +1,13 @@
[variables]
main_domain = "${domain}"
session_secret = "${password:32}"
[config]
[[config.domains]]
serviceName = "silex"
port = 6805
host = "${main_domain}"
[config.env]
SILEX_URL = "http://${main_domain}"
SILEX_SESSION_SECRET = "${session_secret}"
+13
View File
@@ -0,0 +1,13 @@
version: "3.8"
services:
spacetimedb:
image: clockworklabs/spacetime:v2.6.1
restart: unless-stopped
command: start
ports:
- 3000
volumes:
- spacetimedb-data:/home/spacetime
volumes:
spacetimedb-data: {}
+45
View File
@@ -0,0 +1,45 @@
# SpacetimeDB
SpacetimeDB is a database and server runtime in one: your clients connect directly to the database and your application logic runs inside it as WebAssembly modules. There is no web UI — the domain assigned to this service exposes the SpacetimeDB HTTP/WebSocket API (so opening `/` in a browser returns a plain 404; that is expected).
## Verify the server is running
```bash
curl -i https://your-domain.com/v1/ping
```
A `200 OK` response means the server is up.
## Connect with the SpacetimeDB CLI
1. Install the CLI on your local machine:
```bash
curl -sSf https://install.spacetimedb.com | sh
```
2. Register your Dokploy instance as a server and make it the default:
```bash
spacetime server add --url https://your-domain.com dokploy --default
```
3. Log in (or create an anonymous local identity) and publish a module:
```bash
spacetime login
spacetime publish --server dokploy my-database
```
4. Check connectivity at any time:
```bash
spacetime server ping dokploy
```
From your game or app, connect with any SpacetimeDB client SDK (Rust, C#, TypeScript) using `https://your-domain.com` as the host URI. See the [getting started guide](https://spacetimedb.com/docs/getting-started) for a full walkthrough.
## Notes
- All server state (databases, logs and the JWT signing keys used for identities) is persisted in the `spacetimedb-data` volume, so identities survive restarts and upgrades.
- Client connections use WebSockets over the same domain; no extra configuration is needed.
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

+17
View File
@@ -0,0 +1,17 @@
{
"id": "spacetimedb",
"name": "SpacetimeDB",
"version": "v2.6.1",
"description": "SpacetimeDB is a relational database with a built-in server runtime. Clients connect directly to the database and run server-side logic (modules) inside it, making it ideal for real-time multiplayer games, chat and collaborative applications without a separate backend.",
"logo": "logo.png",
"links": {
"github": "https://github.com/clockworklabs/SpacetimeDB",
"website": "https://spacetimedb.com/",
"docs": "https://spacetimedb.com/docs"
},
"tags": [
"database",
"realtime",
"backend"
]
}
+8
View File
@@ -0,0 +1,8 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "spacetimedb"
port = 3000
host = "${main_domain}"
-51
View File
@@ -1,51 +0,0 @@
services:
synapse:
image: matrixdotorg/synapse:v1.156.0
restart: unless-stopped
# The stock entrypoint (/start.py) does not generate the signing key when a
# config file is provided, so generate any missing keys on first boot and
# make sure the data volume is owned by the synapse user (991) before
# handing over to the regular entrypoint.
entrypoint:
- /bin/sh
- -c
- |
python -m synapse.app.homeserver --config-path /config/homeserver.yaml --keys-directory /data --generate-keys
chown -R 991:991 /data
exec /start.py
environment:
SYNAPSE_CONFIG_PATH: /config/homeserver.yaml
volumes:
- synapse-data:/data
- ../files/homeserver.yaml:/config/homeserver.yaml:ro
- ../files/log.config:/config/log.config:ro
depends_on:
postgres:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -fSs http://localhost:8008/health || exit 1"]
interval: 15s
timeout: 5s
retries: 10
start_period: 90s
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: synapse
# Synapse requires a database with C collation
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U synapse -d synapse"]
interval: 10s
timeout: 5s
retries: 5
volumes:
synapse-data:
postgres-data:
-39
View File
@@ -1,39 +0,0 @@
## Instructions
Synapse is deployed with public registration disabled, so you need to create the
first user (your admin account) from the command line.
### Create the first user
Open a terminal on the server running Dokploy (or use the container terminal in
the Dokploy UI) and run the following inside the `synapse` service container:
```bash
docker exec -it $(docker ps -qf "name=synapse" | head -n 1) \
register_new_matrix_user http://localhost:8008 -c /config/homeserver.yaml
```
The tool prompts for a username and password, and asks whether the user should
be an admin. It authenticates against the server using the
`registration_shared_secret` that was generated for this deployment (stored in
the mounted `homeserver.yaml`), so no registration needs to be enabled.
### Log in
Point any Matrix client (for example Element Web at https://app.element.io) at
your homeserver URL `https://your-domain` and log in with the user you just
created. You can verify the server is up with:
```bash
curl https://your-domain/_matrix/client/versions
```
### Notes
- Data (signing keys, media uploads) is stored in the `synapse-data` volume and
the database in the `postgres-data` volume.
- Federation with other Matrix servers works through `.well-known` delegation
over HTTPS (port 443). The dedicated federation port 8448 is not exposed.
- To allow open registration instead, edit `enable_registration` in the mounted
`homeserver.yaml` (see Synapse docs for the required spam-check options such
as CAPTCHA or email verification).
-16
View File
@@ -1,16 +0,0 @@
{
"id": "synapse",
"name": "Synapse",
"version": "v1.156.0",
"description": "Synapse is the reference homeserver implementation for Matrix, an open standard for secure, decentralised, real-time communication.",
"logo": "synapse.svg",
"links": {
"github": "https://github.com/element-hq/synapse",
"website": "https://element-hq.github.io/synapse/latest/",
"docs": "https://element-hq.github.io/synapse/latest/setup/installation.html"
},
"tags": [
"matrix",
"communication"
]
}
-5
View File
@@ -1,5 +0,0 @@
<svg width="75" height="32" xmlns="http://www.w3.org/2000/svg">
<g fill="#000000" fill-rule="nonzero">
<path d="M.936.732V31.25H3.13v.732H.095V0h3.034v.732zM9.386 10.407v1.544h.044a4.461 4.461 0 0 1 1.487-1.368c.58-.323 1.245-.485 1.993-.485.72 0 1.377.14 1.972.42.595.279 1.047.771 1.355 1.477.338-.5.796-.941 1.377-1.323.58-.383 1.266-.574 2.06-.574.602 0 1.16.074 1.674.22.514.148.954.383 1.322.707.366.323.653.746.859 1.268.205.522.308 1.15.308 1.887v7.633H20.71v-6.464c0-.383-.015-.743-.044-1.082a2.305 2.305 0 0 0-.242-.882 1.473 1.473 0 0 0-.584-.596c-.257-.146-.606-.22-1.047-.22-.44 0-.796.085-1.068.253-.272.17-.485.39-.639.662a2.654 2.654 0 0 0-.308.927 7.074 7.074 0 0 0-.078 1.048v6.354h-3.128v-6.398c0-.338-.007-.673-.021-1.004a2.825 2.825 0 0 0-.188-.916 1.411 1.411 0 0 0-.55-.673c-.258-.168-.636-.253-1.135-.253a2.33 2.33 0 0 0-.584.1 1.94 1.94 0 0 0-.705.374c-.228.184-.422.449-.584.794-.161.346-.242.798-.242 1.357v6.619H6.434V10.407h2.952zM25.842 12.084a3.751 3.751 0 0 1 1.233-1.17 5.37 5.37 0 0 1 1.685-.629 9.579 9.579 0 0 1 1.884-.187c.573 0 1.153.04 1.74.121.588.081 1.124.24 1.609.475.484.235.88.562 1.19.981.308.42.462.975.462 1.666v5.934c0 .516.03 1.008.088 1.478.058.471.161.824.308 1.06H32.87a4.435 4.435 0 0 1-.22-1.104c-.5.515-1.087.876-1.762 1.081a7.084 7.084 0 0 1-2.071.31c-.544 0-1.05-.067-1.52-.2a3.472 3.472 0 0 1-1.234-.617 2.87 2.87 0 0 1-.826-1.059c-.199-.426-.298-.934-.298-1.522 0-.647.114-1.18.342-1.6.227-.419.52-.753.881-1.004.36-.25.771-.437 1.234-.562.462-.125.929-.224 1.399-.298.47-.073.932-.132 1.387-.176.456-.044.86-.11 1.212-.199.353-.088.631-.217.837-.386.206-.169.301-.415.287-.74 0-.337-.055-.606-.166-.804a1.217 1.217 0 0 0-.44-.464 1.737 1.737 0 0 0-.639-.22 5.292 5.292 0 0 0-.782-.055c-.617 0-1.101.132-1.454.397-.352.264-.558.706-.617 1.323h-3.128c.044-.735.227-1.345.55-1.83zm6.179 4.423a5.095 5.095 0 0 1-.639.165 9.68 9.68 0 0 1-.716.11c-.25.03-.5.067-.749.11a5.616 5.616 0 0 0-.694.177 2.057 2.057 0 0 0-.594.298c-.17.125-.305.284-.408.474-.103.192-.154.434-.154.728 0 .28.051.515.154.706.103.192.242.342.419.453.176.11.381.187.617.231.234.044.477.066.726.066.617 0 1.094-.102 1.432-.309.338-.205.587-.452.75-.739.16-.286.26-.576.297-.87.036-.295.055-.53.055-.707v-1.17a1.4 1.4 0 0 1-.496.277zM43.884 10.407v2.096h-2.291v5.647c0 .53.088.883.264 1.059.176.177.529.265 1.057.265.177 0 .345-.007.507-.022.161-.015.316-.037.463-.066v2.426a7.49 7.49 0 0 1-.882.089 21.67 21.67 0 0 1-.947.022c-.484 0-.944-.034-1.377-.1a3.233 3.233 0 0 1-1.145-.386 2.04 2.04 0 0 1-.782-.816c-.191-.353-.287-.816-.287-1.39v-6.728H36.57v-2.096h1.894v-3.42h3.129v3.42h2.29zM48.355 10.407v2.118h.044a3.907 3.907 0 0 1 1.454-1.754 4.213 4.213 0 0 1 1.036-.497 3.734 3.734 0 0 1 1.145-.176c.206 0 .433.037.683.11v2.912a5.862 5.862 0 0 0-.528-.077 5.566 5.566 0 0 0-.595-.033c-.573 0-1.058.096-1.454.287a2.52 2.52 0 0 0-.958.783 3.143 3.143 0 0 0-.518 1.158 6.32 6.32 0 0 0-.154 1.434v5.14h-3.128V10.407h2.973zM54.039 8.642V6.06h3.128v2.582H54.04zm3.128 1.765v11.405H54.04V10.407h3.128zM58.797 10.407h3.569l2.005 2.978 1.982-2.978h3.459l-3.745 5.339 4.208 6.067h-3.57l-2.378-3.596-2.38 3.596h-3.502l4.097-6.001zM74.094 31.25V.732H71.9V0h3.035v31.982H71.9v-.732z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

-93
View File
@@ -1,93 +0,0 @@
[variables]
main_domain = "${domain}"
postgres_password = "${password:32}"
registration_shared_secret = "${password:32}"
macaroon_secret_key = "${password:32}"
form_secret = "${password:32}"
[config]
env = [
"POSTGRES_PASSWORD=${postgres_password}",
]
[[config.domains]]
serviceName = "synapse"
port = 8008
host = "${main_domain}"
[[config.mounts]]
filePath = "homeserver.yaml"
content = """
# Synapse homeserver configuration
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html
server_name: "${main_domain}"
public_baseurl: "https://${main_domain}/"
pid_file: /data/homeserver.pid
signing_key_path: "/data/signing.key"
log_config: "/config/log.config"
media_store_path: /data/media_store
report_stats: false
# Serve /.well-known/matrix/server so other homeservers can federate with
# this server over port 443 (the dedicated federation port 8448 is not exposed).
serve_server_wellknown: true
listeners:
- port: 8008
tls: false
type: http
x_forwarded: true
bind_addresses: ['0.0.0.0']
resources:
- names: [client, federation]
compress: false
database:
name: psycopg2
args:
user: synapse
password: "${postgres_password}"
database: synapse
host: postgres
port: 5432
cp_min: 5
cp_max: 10
# Public registration is disabled. Create users with the
# register_new_matrix_user tool (see the template instructions).
enable_registration: false
registration_shared_secret: "${registration_shared_secret}"
macaroon_secret_key: "${macaroon_secret_key}"
form_secret: "${form_secret}"
trusted_key_servers:
- server_name: "matrix.org"
suppress_key_server_warning: true
"""
[[config.mounts]]
filePath = "log.config"
content = """
version: 1
formatters:
precise:
format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
handlers:
console:
class: logging.StreamHandler
formatter: precise
loggers:
synapse.storage.SQL:
level: INFO
root:
level: INFO
handlers: [console]
disable_existing_loggers: false
"""
+19 -18
View File
@@ -1,9 +1,7 @@
version: '3.8'
services:
zitadel:
restart: 'always'
image: 'ghcr.io/zitadel/zitadel:latest'
image: 'ghcr.io/zitadel/zitadel:v4.16.0'
command: 'start-from-init --masterkey "${ZITADEL_MASTERKEY}" --tlsMode disabled'
environment:
# Database Configuration
@@ -17,33 +15,37 @@ services:
ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD: "${POSTGRES_PASSWORD}"
ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODE: disable
# External Configuration for HTTP only - TLS mode disabled
ZITADEL_EXTERNALSECURE: false
ZITADEL_EXTERNALPORT: 8080
ZITADEL_EXTERNALDOMAIN: "${EXTERNAL_DOMAIN}"
# External access configuration. These MUST match the domain configured
# in the Domains tab and the scheme/port it is served on, otherwise
# Zitadel answers {"code":5,"message":"Not Found"}.
# HTTP -> ZITADEL_EXTERNALPORT=80, ZITADEL_EXTERNALSECURE=false
# HTTPS -> ZITADEL_EXTERNALPORT=443, ZITADEL_EXTERNALSECURE=true
ZITADEL_EXTERNALDOMAIN: "${ZITADEL_EXTERNALDOMAIN}"
ZITADEL_EXTERNALPORT: "${ZITADEL_EXTERNALPORT}"
ZITADEL_EXTERNALSECURE: "${ZITADEL_EXTERNALSECURE}"
ZITADEL_TLS_ENABLED: false
# Disable Email Notifications
ZITADEL_NOTIFICATIONS_SMTP_HOST: ""
ZITADEL_NOTIFICATIONS_SMTP_PORT: ""
# Custom Admin User Configuration
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_USERNAME: "${ZITADEL_FIRSTINSTANCE_ORG_HUMAN_USERNAME}"
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD: "${ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD}"
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_EMAIL_ADDRESS: "${ZITADEL_FIRSTINSTANCE_ORG_HUMAN_EMAIL_ADDRESS}"
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_FIRSTNAME: "${ZITADEL_FIRSTINSTANCE_ORG_HUMAN_FIRSTNAME}"
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_LASTNAME: "${ZITADEL_FIRSTINSTANCE_ORG_HUMAN_LASTNAME}"
# Default Instance Features
# Use the login UI built into the API container (no extra login-v2 service needed)
ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_REQUIRED: false
healthcheck:
test: ["CMD", "/app/zitadel", "ready"]
interval: '10s'
timeout: '30s'
retries: 12
start_period: '30s'
depends_on:
db:
condition: 'service_healthy'
ports:
- '8080'
volumes:
- zitadel_data:/app/data
expose:
- 8080
db:
restart: 'always'
@@ -63,4 +65,3 @@ services:
volumes:
postgres_data:
zitadel_data:
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "zitadel",
"name": "Zitadel",
"version": "latest",
"version": "4.16.0",
"description": "Open-source identity and access management platform with multi-tenancy, OpenID Connect, SAML, and OAuth 2.0 support.",
"logo": "zitadel.png",
"links": {
+11 -3
View File
@@ -7,6 +7,8 @@ admin_email = "${email}"
admin_password = "AdminPassword123!"
[config]
mounts = []
[[config.domains]]
serviceName = "zitadel"
port = 8080
@@ -16,7 +18,15 @@ path = "/"
[config.env]
POSTGRES_PASSWORD = "${postgres_password}"
ZITADEL_MASTERKEY = "${zitadel_masterkey}"
EXTERNAL_DOMAIN = "${main_domain}"
# ZITADEL_EXTERNALDOMAIN must always match the domain configured in the
# Domains tab. If you change the domain, update this variable too (and do it
# BEFORE the first deploy — Zitadel binds its instance to this domain on
# first start). For a domain served over HTTPS set ZITADEL_EXTERNALPORT=443
# and ZITADEL_EXTERNALSECURE=true.
ZITADEL_EXTERNALDOMAIN = "${main_domain}"
ZITADEL_EXTERNALPORT = "80"
ZITADEL_EXTERNALSECURE = "false"
# Custom Admin User Configuration
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_USERNAME = "${admin_username}"
@@ -24,5 +34,3 @@ ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD = "${admin_password}"
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_EMAIL_ADDRESS = "${admin_email}"
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_FIRSTNAME = "Admin"
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_LASTNAME = "User"
[[config.mounts]]