# Copyright (C) 2026 Doan Luu Duc Tai # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # Public hostnames: DNS names only, without a scheme, path, or port. # www aliases are derived from these names. These settings are public, not secrets. BASE_DOMAIN=luuduct.ai SITE_HOST=doan.luuduct.ai GIT_HOST=git.doan.luuduct.ai SEARCH_HOST=search.doan.luuduct.ai WKD_HOST=openpgpkey.luuduct.ai CHAT_HOST=chat.doan.luuduct.ai # Production TCP HTTP and TCP/UDP HTTPS listener/published ports. # Keep 80/443 for ordinary public HTTPS and ACME validation. Nonstandard ports # also require matching external routing and a suitable certificate setup. HTTP_PORT=80 HTTPS_PORT=443 # Development Caddy binds only to loopback. Its HTTPS host port is this value + 1. # A --port argument overrides this setting for that invocation. LOCAL_HTTP_PORT=8080 # Caddy connection targets, not upstream application bind settings. # The bundled cgit and SearXNG images listen internally on 8080. CGIT_UPSTREAM=cgit:8080 SEARXNG_UPSTREAM=searxng:8080 # Chat remains a separate local experimental process. --bind overrides CHAT_BIND. # CHAT_ORIGIN must match the browser's exact origin; existing identity files pin it. # Changing an origin is not a private-key or identity-file migration. CHAT_BIND=127.0.0.1:9080 CHAT_ORIGIN=http://127.0.0.1:9080 # Public backup recipient and a project-relative public key file. # Private GnuPG keys stay outside the project. CLI --recipient/--key override these. BACKUP_RECIPIENT=3346AA3150F8F16828BB0D14F8C66DF77AFECEA6 BACKUP_PUBLIC_KEY=web/.well-known/openpgpkey/luuduct.ai/hu/t76q8xqkeassgy1kr38re1ppj6cpc1dp # Private values: generate locally; never commit the actual .env. # The stack creates SEARXNG_SECRET on first initialization. SEARXNG_SECRET=GENERATE_RANDOM_HEX_KEY # cargo stack chat --init generates the owner registration token. CHAT_SETUP_TOKEN=GENERATE_WITH_CHAT_SERVER_INIT