stacks: add .env + .env.secrets.ctmpl for productivity stacks

Adds real Vault Agent secret templates and non-secret env vars for
all 9 productivity stacks. Sanitized several real leaks: a real
residential public IP (ghost's UMAMI_IGNORE_IP), real personal
domains/email used across joplin/n8n/ghost/paperless-ngx, and a
real embedded OAuth client ID in paperless-ngx's private OIDC config
(dropped entirely - the public compose file doesn't wire up OIDC at
all, so none of that config was needed).

Also dropped n8n secrets referencing the out-of-scope Content
Pipeline system (nocodb-content, Postiz), and did not carry over a
real Redis password found sitting in plaintext in nextcloud's
private .env (unused by the public compose anyway).

Every var cross-checked against what its actual public compose file
references before writing.
This commit is contained in:
thesabear committed 2026-08-25 09:08:42 +03:00
1 parent e9bc00fde4
commit b2f308a135
16 files changed
+142

No files matched your search

+9
View File
@@ -0,0 +1,9 @@
# Exposed HTTP port
HTTP_PORT=5274
# System time zone
TZ=Etc/UTC
# ID's
PUID=1000
PGID=1000
+14
View File
@@ -0,0 +1,14 @@
# Exposed HTTP port
HTTP_PORT=56678
DB_PORT=13306
# System time zone
TZ=Etc/UTC
# ID's
PUID=1000
PGID=1000
# Remote user auth (Caddy forward-auth via Authentik) — email-based lookup
AUTHENTICATION_GUARD=remote_user_guard
AUTHENTICATION_GUARD_HEADER=HTTP_X_AUTHENTIK_EMAIL
@@ -0,0 +1,4 @@
APP_KEY={{ with secret "kv/host/fireflyiii" }}{{ .Data.data.app_key }}{{ end }}
DB_PASSWORD={{ with secret "kv/host/fireflyiii" }}{{ .Data.data.db_password }}{{ end }}
MYSQL_PASSWORD={{ with secret "kv/host/fireflyiii" }}{{ .Data.data.db_password }}{{ end }}
MYSQL_ROOT_PASSWORD={{ with secret "kv/host/fireflyiii" }}{{ .Data.data.mysql_root_password }}{{ end }}
+21
View File
@@ -0,0 +1,21 @@
HTTP_PORT=10368
TZ=Etc/UTC
GHOST_URL=https://blog.example.com
UMAMI_IGNORE_IP=203.0.113.1
DB_HOST=ghost_db
DB_NAME=ghostdb
DB_USER=ghostuser
UMAMI_PORT=3050
UMAMI_DB_NAME=umami
UMAMI_DB_USER=umami
SMTP_TRANSPORT=SMTP
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=[email protected]
@@ -0,0 +1,5 @@
DB_PASSWORD={{ with secret "kv/host/ghost" }}{{ .Data.data.db_password }}{{ end }}
SMTP_PASSWORD={{ with secret "kv/host/ghost" }}{{ .Data.data.smtp_password }}{{ end }}
MYSQL_ROOT_PASSWORD={{ with secret "kv/host/ghost" }}{{ .Data.data.mysql_root_password }}{{ end }}
UMAMI_APP_SECRET={{ with secret "kv/host/ghost" }}{{ .Data.data.umami_app_secret }}{{ end }}
UMAMI_DB_PASSWORD={{ with secret "kv/host/ghost" }}{{ .Data.data.umami_db_password }}{{ end }}
+13
View File
@@ -0,0 +1,13 @@
# Exposed HTTP port
HTTP_PORT=4719
# System time zone
TZ=Etc/UTC
# ID's
PUID=1000
PGID=1000
POSTGRES_USER=homeassistant_user
# POSTGRES_PASSWORD — see .env.secrets (Vault)
POSTGRES_DB=homeassistant-db
@@ -0,0 +1 @@
POSTGRES_PASSWORD={{ with secret "kv/host/home-assistant" }}{{ .Data.data.postgres_password }}{{ end }}
+25
View File
@@ -0,0 +1,25 @@
# Exposed HTTP port
HTTP_PORT=22300
POSTGRES_PORT=5432
# System time zone
TZ=Etc/UTC
# User Credentials
APP_BASE_URL=https://notes.example.com
# Admin account seed (only read on a fresh first-ever boot, e.g. after a full recreate)
APP_ADMIN_EMAIL=[email protected]
APP_ADMIN_NAME=admin
# SMTP Settings
MAILER_HOST=smtp.example.com
MAILER_PORT=587
MAILER_SECURITY=1
MAILER_AUTH_USER=[email protected]
MAILER_NOREPLY_NAME=JoplinServer
MAILER_NOREPLY_EMAIL=[email protected]
# Postgres Creds
POSTGRES_USER=postgres
POSTGRES_DB=joplin
@@ -0,0 +1,3 @@
POSTGRES_PASSWORD={{ with secret "kv/host/joplin" }}{{ .Data.data.postgres_password }}{{ end }}
MAILER_AUTH_PASSWORD={{ with secret "kv/host/joplin" }}{{ .Data.data.mailer_auth_password }}{{ end }}
APP_ADMIN_PASSWORD={{ with secret "kv/host/joplin" }}{{ .Data.data.app_admin_password }}{{ end }}
+15
View File
@@ -0,0 +1,15 @@
# Exposed HTTP port
N8N_PORT=5678
POSTGRES_PORT=5442
ADMINER_PORT=8091
N8N_HOST=n8n.local.example.com
# System time zone
TZ=Etc/UTC
# ID's
PUID=1000
PGID=1000
# N8N_POSTGRES_PASSWORD, N8N_BASIC_AUTH_PASSWORD — see .env.secrets (Vault)
N8N_USER=admin
@@ -0,0 +1,2 @@
N8N_POSTGRES_PASSWORD={{ with secret "kv/host/n8n" }}{{ .Data.data.postgres_password }}{{ end }}
N8N_BASIC_AUTH_PASSWORD={{ with secret "kv/host/n8n" }}{{ .Data.data.basic_auth_password }}{{ end }}
+6
View File
@@ -0,0 +1,6 @@
# mysql credentials
# MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD — see .env.secrets (Vault)
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
TZ=Etc/UTC
@@ -0,0 +1,3 @@
MYSQL_ROOT_PASSWORD={{ with secret "kv/host/nextcloud-stack" }}{{ .Data.data.mysql_root_password }}{{ end }}
MYSQL_PASSWORD={{ with secret "kv/host/nextcloud-stack" }}{{ .Data.data.mysql_password }}{{ end }}
ONLYOFFICE_JWT_SECRET={{ with secret "kv/host/nextcloud-stack" }}{{ .Data.data.onlyoffice_jwt_secret }}{{ end }}
+9
View File
@@ -0,0 +1,9 @@
# Exposed HTTP port
HTTP_PORT=8926
# Credentials
POSTGRES_DB=paperless
POSTGRES_USER=paperless
PAPERLESS_ADMIN_USER=admin
PAPERLESS_URL=https://paperless.local.example.com
@@ -0,0 +1,3 @@
POSTGRES_PASSWORD={{ with secret "kv/host/paperless-ngx" }}{{ .Data.data.postgres_password }}{{ end }}
PAPERLESS_DBPASS={{ with secret "kv/host/paperless-ngx" }}{{ .Data.data.postgres_password }}{{ end }}
PAPERLESS_ADMIN_PASSWORD={{ with secret "kv/host/paperless-ngx" }}{{ .Data.data.admin_password }}{{ end }}
+9
View File
@@ -0,0 +1,9 @@
# Exposed HTTP port
HTTP_PORT=8081
# System time zone
TZ=Etc/UTC
# ID's
PUID=1000
PGID=1000