A machine's role is now the interview's first question and the one answer Panama records. Servers get the same shell minus the screen: core packages, nvm, Bun, Claude Code and Codex (desktops get Codex too), linger, rootless ports from 80, firewalld, the nginx-bridge network, and a nightly image updater that replaced watchtower for cause. server/containers/ carries junior's 23 compose services -- secrets moved to per-machine .env files that never enter this public repo, every transformed compose proven to render byte-identical to what is live. 'panama server' enables, disables and relinks them; nothing here restarts a running service. 'boot --server' walks a fresh VPS from its root login to a normal install. Five new contracts pin the secrets rule, the catalog's shape, panama-server's behavior, the role plumbing, and the dotfile classification. Claude-Session: https://claude.ai/code/session_01NU5JGiN3JfzqrLQB6wmJ1E
65 lines
2.3 KiB
Bash
65 lines
2.3 KiB
Bash
# Since .env is gitignored, you can use .env.example to build a new `.env` file when you clone the repo.
|
|
# Keep this file up-to-date when you add new variables to \`.env\`.
|
|
# This file will be committed to version control, so make sure not to have any secrets in it.
|
|
# If you are cloning this repo, create a copy of this file named `.env` and populate it with your secrets.
|
|
|
|
## Next.js ##
|
|
NODE_ENV=production
|
|
SENTRY_AUTH_TOKEN=CHANGE_ME
|
|
PAYLOAD_SECRET=CHANGE_ME
|
|
PAYLOAD_DB_URL=CHANGE_ME
|
|
NEXT_PUBLIC_SITE_URL=https://lashaddict.gbrown.org
|
|
NEXT_PUBLIC_CONVEX_URL=https://api.lashaddict.gbrown.org # convex-backend:3210
|
|
NEXT_PUBLIC_PLAUSIBLE_URL=https://plausible.gbrown.org
|
|
NEXT_PUBLIC_SENTRY_DSN=https://[email protected]/7
|
|
NEXT_PUBLIC_SENTRY_URL=https://sentry.gbrown.org
|
|
NEXT_PUBLIC_SENTRY_ORG=sentry
|
|
NEXT_PUBLIC_SENTRY_PROJECT_NAME=lashaddict-next
|
|
|
|
## Convex ##
|
|
CONVEX_SELF_HOSTED_URL=https://api.lashaddict.gbrown.org # convex-backend:3210
|
|
CONVEX_SELF_HOSTED_ADMIN_KEY=CHANGE_ME
|
|
# Convex Auth
|
|
CONVEX_SITE_URL=https://lashaddict.gbrown.org
|
|
USESEND_API_KEY=CHANGE_ME
|
|
USESEND_URL=https://usesend.gbrown.org
|
|
USESEND_FROM_EMAIL='Admin <[email protected]>'
|
|
AUTH_AUTHENTIK_ID=CHANGE_ME
|
|
AUTH_AUTHENTIK_SECRET=CHANGE_ME
|
|
AUTH_AUTHENTIK_ISSUER=https://auth.gbrown.org/application/o/lashaddict/
|
|
|
|
## Docker Compose Variables for Next App ##
|
|
NETWORK=nginx-bridge
|
|
NEXT_CONTAINER_NAME=lashaddict-next
|
|
NEXT_DOMAIN=lashaddict.gbrown.org
|
|
#NEXT_PORT=
|
|
|
|
## Docker Compose Variables for Self hosted Convex ##
|
|
BACKEND_TAG=latest
|
|
DASHBOARD_TAG=latest
|
|
BACKEND_CONTAINER_NAME=lashaddict-backend
|
|
DASHBOARD_CONTAINER_NAME=lashaddict-dashboard
|
|
BACKEND_DOMAIN=convex.lashaddict.gbrown.org
|
|
DASHBOARD_DOMAIN=dashboard.lashaddict.gbrown.org
|
|
INSTANCE_NAME=lashaddict_convex
|
|
INSTANCE_SECRET=CHANGE_ME
|
|
CONVEX_CLOUD_ORIGIN=https://api.lashaddict.gbrown.org
|
|
CONVEX_SITE_ORIGIN=https://convex.lashaddict.gbrown.org
|
|
NEXT_PUBLIC_DEPLOYMENT_URL=https://api.lashaddict.gbrown.org
|
|
DISABLE_BEACON=true
|
|
REDACT_LOGS_TO_CLIENT=true
|
|
DO_NOT_REQUIRE_SSL=true
|
|
POSTGRES_URL=CHANGE_ME
|
|
#BACKEND_PORT=
|
|
#DASHBOARD_PORT
|
|
#SITE_PROXY_PORT=
|
|
#ACTIONS_USER_TIMEOUT_SECS=
|
|
#RUST_LOG=
|
|
#RUST_BACKTRACE=
|
|
|
|
## Docker Compose Variables for Postgres ##
|
|
POSTGRES_CONTAINER_NAME=lashaddict-postgres
|
|
POSTGRES_USER=gib
|
|
POSTGRES_PASSWORD=CHANGE_ME
|
|
POSTGRES_DB=lashaddict-payload
|