Ctrl K
ComunidadGuías…

documents/ENV-VARS.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Environment variables for Docker homelab stacks

[Documentation](README.md)

Use this as a reference when adding new stacks. Per-stack environment variable
details live in each stack's `README.md` under the **Environment variables**
section. This file covers shared conventions and common variables only.

---

## Shared env file (TZ & locale)

To set `TZ` and locale in one place for all stacks, see
[SHARED-RESOURCES.md – Shared env file](SHARED-RESOURCES.md#1-shared-env-file-tz--locale).

New and updated stacks should **not** duplicate `TZ`, `LANG`, `LC_ALL`, or
`LC_CTYPE` in their own `stack.env.example`, prefer `../../shared.env` with a
short comment pointing to SHARED-RESOURCES.md.

```env
# Typical contents of shared.env (do not commit real values)
TZ=America/Denver
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
```

- **TZ** – Logs and in-app times. Set to your IANA timezone (e.g. `America/Denver`, `Europe/London`).
- **LANG / LC_ALL** – Default locale and encoding (UTF-8). Usually provided via `shared.env` rather than per-stack.
- **LC_CTYPE** – Character classification (UTF-8); some apps use it for filenames and text. Usually provided via `shared.env` rather than per-stack.

---

## Common per-app variables (checklist)

Not every image respects all of these. Check the upstream image docs.

- **LANGUAGE** – Message language, e.g. `en_US:en` (if the image shows translated messages).
- **PYTHONIOENCODING** – For Python apps: `UTF-8` so stdin/stdout/stderr are UTF-8.
- **NODE_OPTIONS** – For Node apps, e.g. `--max-old-space-size=512` if you need to cap memory.
- **PUID / PGID** – Some images (e.g. LinuxServer.io) use these to run as a specific user; set to your host user if you want file ownership to match.
- **UMASK** – e.g. `0022` or `0002` if the image documents it for volume file permissions.

---

## Secret generation patterns

These patterns appear across many stacks:

```bash
# 32-byte base64 secret (Laravel APP_KEY, general secrets)
openssl rand -base64 32

# 32-byte hex secret (general, JWT, Flask)
openssl rand -hex 32

# 64-byte hex secret (Rails SECRET_KEY_BASE, Docuseal SECRET_KEY_BASE)
openssl rand -hex 64

# Laravel APP_KEY via artisan (Firefly III, Snipe-IT, etc.)
docker run --rm <image> php artisan key:generate --show
```

---

## Per-stack environment variables

Each stack's `README.md` documents its required and optional environment
variables. See the stack directory for `stack.env.example` as the authoritative
list of variables to set.

Quick reference, find a stack:

| Stack | Notes |
|-------|-------|
| acquire | CLI only; forensic artifact collection. |
| actual-budget | TZ only; sync server for Actual Budget desktop/mobile app. |
| adguard-home | `ADGUARD_BIND_IP` binds DNS ports 53/853 to the Docker host's LAN address. |
| affine | Optional AFFINE_SERVER_EXTERNAL_URL; no host ports. |
| afl-libfuzzer | CLI only; fuzzing toolkit. |
| ail / ail-framework | TZ only; Analysis Information Leak framework. Resource-heavy (>6 GB RAM). |
| alertmanager | Config file-based; see ALERTMANAGER_CONFIG_PATH. |
| anything-llm | JWT_SECRET required; LLM/Ollama vars; SYS_ADMIN cap per upstream. |
| appflowy | Scaffold; configure URL settings in stack.env. |
| archisteamfarm | ASF_UID optional; config/ASF.json (Kestrel + IPCPassword). |
| archivebox | ADMIN_USERNAME/PASSWORD, ALLOWED_HOSTS, CSRF_TRUSTED_ORIGINS. |
| asking / asking-ng | JWT_SECRET, ADMIN_TOKEN, DATABASE_URI; VITE_* are build-time args. |
| atomic-red-team | CLI only; attack simulation. |
| audiobookshelf | TZ only; image does not use PUID/PGID. |
| auth-fuzz | CLI only; auth fuzzing toolkit. |
| baserow | BASEROW_PUBLIC_URL required behind Caddy. |
| bazarr | TZ, PUID, PGID; BAZARR_TV_PATH, BAZARR_MOVIES_PATH → /tv, /movies. |
| beszel | BESZEL_APP_URL required; BESZEL_DATA_DIR optional. |
| blackbird | CLI only; OSINT. |
| blackbox-exporter | Config file-based; Prometheus scrapes :9115. |
| bookstack | APP_URL required; MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD. |
| caddy | TZ/locale via shared.env only. |
| cadvisor | TZ/locale via shared.env only. |
| calcom | DATABASE_URL, CAL_SIGNATURE_TOKEN required; REDIS_URL. |
| calibre-web | PUID/PGID; optional SECRET_KEY, DOCKER_MODS. |
| cloudflare-tunnel | TZ/locale via shared.env only. |
| code-server | PUID, PGID, PASSWORD required; PROXY_DOMAIN. |
| convertx | JWT_SECRET recommended; ACCOUNT_REGISTRATION. |
| cowrie | Honeypot; no web UI; logs via Loki/Promtail. |
| crowdsec | GID, COLLECTIONS; config via acquisitions file. |
| cryptpad | CPAD_MAIN_DOMAIN optional; shared.env for locale. |
| cups | CUPSADMIN, CUPSPASSWORD required; named volume for /etc/cups. |
| databasus | See stack README and stack.env.example. |
| dbgate | See stack README and stack.env.example. |
| ddns-updater | Config via ./data/config.json; optional SHOUTRRR_ADDRESSES for notifications. |
| dependency-track | API_BASE_URL required; POSTGRES_PASSWORD. |
| dionaea-conpot | Honeypot; CLI/daemon only. |
| dispatcharr | Placeholder; compose not yet created. |
| diun | DIUN_WATCH_*, DIUN_PROVIDERS_DOCKER, DIUN_NOTIF_*. |
| docker-forensics-toolkit | CLI only; optional DOF_IMAGE_MOUNTPOINT. |
| docker-gc | DRY_RUN, EXCLUDE_IMAGES, EXCLUDE_CONTAINERS. |
| docuseal | POSTGRES_PASSWORD, DATABASE_URL, SECRET_KEY_BASE required. |
| dozzle | DOZZLE_CONFIG_DIR; optional DOZZLE_AUTH_PROVIDER. |
| emby | TZ, PUID, PGID; EMBY_TV_PATH, EMBY_MOVIES_PATH, EMBY_MUSIC_PATH → /data/... |
| enclosed | PUBLIC_BASE_API_URL behind proxy; optional AUTHENTICATION_JWT_SECRET. |
| ersatztv | TZ only; IPTV server on :8409. |
| explo | Scheduled playlist jobs; ListenBrainz; Ollama target system vars. |
| firefly-iii | DB_*, APP_URL, APP_KEY (artisan generate) required. |
| flaresolverr | LOG_LEVEL; optional PROXY_URL; accessible at flaresolverr:8191. |
| freshrss | TZ, PUID, PGID optional. |
| ghunt | CLI only; OSINT for Google accounts. |
| gitea | GITEA_DB_*, GITEA_ROOT_URL required. |
| gitlab | Placeholder; configure GITLAB_OMNIBUS_CONFIG per upstream. |
| gitlab-runners | Placeholder; REGISTRATION_TOKEN, CI_SERVER_URL required. |
| glance | Config file-based (./config); no env required. |
| gluetun | VPN_SERVICE_PROVIDER, VPN_TYPE + provider-specific vars. |
| gotenberg | Placeholder; stateless PDF service; no env required for basic use. |
| grafana | GF_SERVER_ROOT_URL optional; GF_SECURITY_* optional. |
| grafana-alloy | ALLOY_CONFIG_PATH required (Portainer). |
| guacamole | POSTGRES_DB/USER/PASSWORD required. |
| handbrake | USER_ID, GROUP_ID, UMASK for file ownership; placeholder stack. |
| harbor | Deployed via upstream installer (harbor.yml), not a standard compose stack. |
| hashcat | No env required; CLI only; optional HASHCAT_WORDLIST_DIR. |
| headscale | HEADSCALE_CONFIG_B64 (base64-encoded config.yaml). |
| hedgedoc | POSTGRES_DB/USER/PASSWORD, CMD_DOMAIN required. |
| holehe | OSINT web UI; no env required. |
| home-assistant | TZ/locale via shared.env; Zigbee2MQTT + Mosquitto optional. |
| homarr | TZ only; dashboard on :7575. |
| homepage | TZ only; static landing page. |
| immich | DB_PASSWORD, DB_* required; shared.env for locale. |
| infisical | ENCRYPTION_KEY, AUTH_SECRET, POSTGRES_*, REDIS_URL, SITE_URL required. |
| influxdb | Placeholder; INFLUXDB_ADMIN_USER/PASSWORD per upstream. |
| it-tools | TZ/locale via shared.env only. |
| jellyfin | TZ, PUID, PGID; JELLYFIN_TV_PATH, JELLYFIN_MOVIES_PATH, JELLYFIN_MUSIC_PATH. |
| jellystat | POSTGRES_*, JWT_SECRET required; optional JS_BASE_URL. |
| joplin-server | POSTGRES_*, APP_BASE_URL required. |
| kali | KALI_PASSWORD for VNC/RDP; offensive security toolkit. |
| kasm | KASM_PORT; privileged mode; set Proxy Port to 0 after install. |
| kavita | TZ, PUID, PGID optional; LinuxServer image. |
| keycloak | POSTGRES_*, KEYCLOAK_ADMIN/PASSWORD, KC_HOSTNAME required. |
| kokoro-tts | KOKORO_IMAGE_TAG optional; API_LOG_LEVEL optional. |
| kometa | KOMETA_CONFIG_PATH, KOMETA_DATA_PATH required; batch runner. |
| komga | SERVER_PORT=25600; optional JAVA_TOOL_OPTIONS for large libraries. |
| lanraragi | LRR_UID/GID optional; content at /home/koyomi/lanraragi/content. |
| librarr | AUTH_USERNAME/PASSWORD, API_KEY, TORZNAB_API_KEY, LIBRARR_CONFIG_PATH and LIBRARR_MEDIA_PATH required; optional provider and reader credentials. |
| librechat | MONGO_INITDB_*, REDIS_PASSWORD, DOMAIN_*, JWT_SECRET required. |
| lidarr | TZ, PUID, PGID; LIDARR_MEDIA_PATH → /data. |
| linkding | TZ optional; optional LD_DISABLE_BACKGROUND_TASKS. |
| linkstack | Optional SERVER_ADMIN, HTTP_SERVER_NAME, PHP_MEMORY_LIMIT. |
| linkwarden | NEXTAUTH_SECRET, POSTGRES_PASSWORD, MEILI_MASTER_KEY required. |
| litellm | LITELLM_MASTER_KEY, UI_USERNAME/PASSWORD, POSTGRES_PASSWORD required. |
| logseq-sync | Experimental; optional TZ; run ./clone-repo.sh first. |
| loki | Config file-based; Grafana data source at http://loki:3100. |
| maigret | OSINT; no env required; reports in named volume. |
| mailpit | No env required; SMTP on :1025, web on :8025. |
| maloja | MALOJA_FORCE_PASSWORD required on first start; optional API keys. |
| matomo | MATOMO_DB_NAME/USER/PASSWORD required; optional MATOMO_BASE_URL. |
| mattermost | POSTGRES_*, MM_SERVICESETTINGS_SITEURL required. |
| mealie | BASE_URL behind proxy; ALLOW_SIGNUP; optional DB_ENGINE. |
| meilisearch | MEILI_MASTER_KEY recommended; MEILI_ENV. |
| metagoofil | CLI only; OSINT. |
| metube | TZ, PUID, PGID, UMASK optional. |
| minio | MINIO_ROOT_USER, MINIO_ROOT_PASSWORD required. |
| mosquitto | Config via mosquitto.conf; MQTT on :1883. |
| mylar3 | TZ, PUID, PGID; MYLAR3_MEDIA_PATH → /data. |
| n8n | N8N_HOST, WEBHOOK_URL required behind Caddy; N8N_ENCRYPTION_KEY recommended. |
| naisho | SECRET_KEY_BASE required (openssl rand -hex 64). |
| navidrome | ND_BASEURL recommended; ND_SCANSCHEDULE, ND_LOGLEVEL. |
| netbird | NETBIRD_MGMT_API_ENDPOINT, AUTH_* vars; UDP 3478 for STUN. |
| netboot.xyz | Placeholder; TFTP/HTTP netboot server; UDP 69 + HTTP on host. |
| netbox | Pointer stack; use upstream netbox-docker. |
| netexec | CLI only; network pentesting (crackmapexec successor). |
| nextcloud | POSTGRES_*, NEXTCLOUD_TRUSTED_DOMAINS, NEXTCLOUD_ADMIN_* required. |
| node-exporter | No env; Prometheus scrapes :9100; host filesystem read-only. |
| node-red | TZ/locale via shared.env; flow editor. |
| nodepad | OLLAMA_ORIGIN, NODEPAD_SITE_URL, UMAMI_* required at runtime. |
| gotify | Set a unique GOTIFY_DEFAULTUSER_PASS and dedicated producer application tokens. |
| ntopng | TZ/locale via shared.env; host networking; web on :3000. |
| nut-server | NUT_CONFIG_DIR required (path to ups.conf, upsd.*, upsmon.conf). |
| nzbget | PUID, PGID optional; NZBGET_DOWNLOADS_PATH → /downloads; servers and categories in UI. |
| nzbhydra2 | PUID, PGID optional; config in UI. |
| oasis | No env required; TZ from shared.env. |
| ollama | OLLAMA_HOST_PORT, OLLAMA_MODELS_PATH; GPU deploy block optional. |
| ombi | Placeholder; Plex/Jellyfin URL + API token configured in UI. |
| onionprobe | GRAFANA_DATABASE_PASSWORD optional; upstream repo required (./clone-repo.sh). |
| onionscan | CLI only; Tor container required. |
| open-notebook | API_URL, OPEN_NOTEBOOK_ENCRYPTION_KEY, SURREAL_* required. |
| open-webui | OLLAMA_BASE_URL required; optional OPENAI_API_KEY, WEBUI_SECRET_KEY. |
| opengist | See stack README and stack.env.example. |
| openspeedtest | No env required; speed test server. |
| outline | POSTGRES_*, URL, SECRET_KEY, UTILS_SECRET, AWS_* (MinIO) required. |
| paperless-ai-next | Paperless-ngx API URL/token + Ollama vars required. |
| paperless-gpt | PAPERLESS_*, OLLAMA_HOST required. |
| paperless-ngx | PAPERLESS_URL, PAPERLESS_SECRET_KEY, plus DB and broker vars. |
| password-pusher | PWPUSH_MASTER_KEY required; optional PWP__HOST_DOMAIN, PWP__ENABLE_LOGINS. |
| peanut | See stack README and stack.env.example. |
| vane | SEARXNG_API_URL, OLLAMA_BASE_URL, OPENAI_BASE_URL, OPENAI_API_KEY optional; VANE_DATA_VOLUME and VANE_DATA_EXTERNAL preserve upgrade storage. Protect provider settings with owner-only Access. |
| pgadmin | See stack README and stack.env.example. |
| phoneinfoga | OSINT; no env required. |
| picard | PUID, PGID optional; PICARD_MEDIA_PATH → /data. |
| pihole | See stack README; DNS port 53 conflict resolution required on host. |
| plaso | CLI only; digital forensics (log2timeline/psort). |
| plex | TZ, PUID, PGID, VERSION, PLEX_*_PATH, optional PLEX_CLAIM. |
| pocketbase | See stack README and stack.env.example. |
| postfix / smtp-relay | ALLOWED_SENDER_DOMAINS, RELAYHOST required; RELAYHOST_USERNAME/PASSWORD. |
| posthog | DOMAIN, POSTHOG_APP_TAG required; auto-fill secrets via ./prepare-stack.sh. |
| postiz | See stack README and stack.env.example. |
| presidio | See stack README and stack.env.example. |
| privatebin | See stack README; config file-based. |
| privotron | CLI only; PRIVOTRON_VERSION build arg. |
| prometheus | Config file-based (prometheus.yml); no env secrets. |
| promtail | Config file-based (promtail-config.yml); ships logs to Loki. |
| prowlarr | TZ, PUID, PGID; indexer manager. |
| pwntools-gdb | CLI only; exploit dev toolkit. |
| qbittorrent | TZ, PUID, PGID; Gluetun VPN_* vars if using VPN. |
| rackula | See stack README and stack.env.example. |
| radarr | TZ, PUID, PGID; RADARR_MEDIA_PATH → /data. |
| readarr | TZ, PUID, PGID; READARR_MEDIA_PATH → /data. |
| reconftw | CLI only; recon framework. |
| resilio | See stack README and stack.env.example. |
| responder-mitm6 | See stack README; network attack toolkit. |
| restic | RESTIC_REPOSITORY, RESTIC_PASSWORD, AWS_* required; BACKUP_CRON. |
| romm | ROMM_AUTH_SECRET_KEY, ROMM_BASE_URL, MARIADB_* required; optional metadata API keys. |
| rtorrent-flood | TZ, PUID, PGID, UMASK optional. |
| rustdesk | See stack README; host networking for TURN/STUN. |
| rustfs | See stack README and stack.env.example. |
| scrypted | See stack README; hardware acceleration config in UI. |
| scrutiny | TZ optional; adjust devices/volumes in compose for your disks. |
| seafile | TIME_ZONE, MYSQL_ROOT_PASSWORD, SEAFILE_DB_*, SEAFILE_SERVER_HOSTNAME required. |
| searx-ng | SEARXNG_SECRET, SEARXNG_BASE_URL required; config via settings.yml. |
| seerr | See stack README and stack.env.example. |
| shlink | DEFAULT_DOMAIN, GEOLITE_LICENSE_KEY required; IS_HTTPS_ENABLED=true behind Caddy. |
| simplelogin | URL, EMAIL_DOMAIN, FLASK_SECRET, POSTGRES_* required; DKIM key at ./data/dkim.key. |
| slink | ORIGIN required (must match Caddy hostname); STORAGE_PROVIDER. |
| snipe-it | APP_URL, APP_KEY (artisan generate), DB_*, MYSQL_* required. |
| snowflake-relay | See stack README and stack.env.example. |
| social-hunt | ADMIN_TOKEN, SOCIAL_HUNT_PUBLIC_URL required. |
| sonarr | TZ, PUID, PGID; SONARR_MEDIA_PATH → /data. |
| soulseek | SLSKD_SLSK_USERNAME/PASSWORD required; SLSKD_SLSK_LISTEN_PORT (50300). |
| spiderfoot | OSINT scanner; no env required. |
| stirling-pdf | TZ optional; PDF tools. |
| stoat | .env.web (HOSTNAME, REVOLT_PUBLIC_URL, VITE_*); Revolt.toml for service config. |
| sublist3r | CLI only; subdomain enumeration. |
| super-productivity | TZ/locale via shared.env; browser-based productivity UI. |
| syncthing | TZ optional. |
| tailscale-exporter | See stack README; TAILSCALE_API_KEY and TAILNET required. |
| tautulli | See stack README; TZ and Plex server connection configured in UI. |
| terminus | Multi-service stack; see stack README for service-specific env. |
| theharvester | OSINT; no env required. |
| thelounge | THELOUNGE_PUBLIC optional; port 9000. |
| threat-dragon | SESSION_SIGNING_KEY required (32-char hex); optional OAuth vars. |
| tika | Apache Tika REST API; TZ only. |
| torbot | CLI only; OWASP TorBot; Tor on :9050. |
| trilium | TZ/locale via shared.env; optional TRILIUM_PORT. |
| twitch-drops-miner | See stack README and stack.env.example. |
| umami | POSTGRES_PASSWORD, APP_SECRET required; ./prepare-stack.sh copies to .env. |
| unbound | See stack README; recursive DNS resolver. |
| uptime-kuma | TZ/locale via shared.env only. |
| vaultwarden | TZ, DOMAIN, SIGNUPS_ALLOWED; optional ADMIN_TOKEN, WEBSOCKET_ENABLED. |
| vector | Config via vector.toml; ships logs to Loki. |
| vikunja | VIKUNJA_SERVICE_PUBLICURL (with trailing slash), VIKUNJA_DATABASE_TYPE required. |
| watchtower | TZ/locale via shared.env; WATCHTOWER_NOTIFICATION_URL via stack.env. |
| web-check | TZ/locale via shared.env; optional API keys in stack.env.example. |
| whisparr | PUID, PGID; WHISPARR_*_PATH bind-mount vars required. |
| whisper-asr | ASR_ENGINE, ASR_MODEL, ASR_DEVICE required; GPU image for CUDA. |
| wireguard | SERVERURL, SERVERPORT, PEERS required; PUID, PGID. |
| woodpecker-ci | POSTGRES_*, WOODPECKER_AGENT_SECRET, Gitea OAuth vars required. |
| yourls | YOURLS_SITE, YOURLS_USER, YOURLS_PASS, YOURLS_COOKIEKEY, DB vars required. |
| zed-attack-proxy | TZ optional; Webswing UI on :8080; proxy on :8080 for browser/tool config. |
| zigbee2mqtt | ZIGBEE2MQTT_CONFIG_MQTT_SERVER required; Mosquitto on telemetry network. |

The optional openai-oauth stack keeps its account tokens in a dedicated Docker volume. LiteLLM's optional OAuth override joins only that upstream network. Use a separate regular LiteLLM administrator and disable environment-credential UI login after verifying it. Alloy's `ALLOY_HOST_LABEL` preserves the stable host-file label when replacing Promtail.