# petrolyst-infra Everything that runs on the petrolyst server (109.199.127.84, Ubuntu 24.04): - **Traefik** at the edge for every project on the server. Its dashboard is at https://traefik.petrolyst.com, behind Keycloak. - **fuel-monitoring** (ATOMA): Superset at https://atoma.petrolyst.com, reading the operational store `fuel-db` (Postgres 17 with TimescaleDB) directly, as the read-only role `fuel_ro` (no Trino since 29 Oct 2026). Sign-in goes through Keycloak client `petrolyst`, and the UI carries the Petrolyst brand. **Deploys are manual.** A person deploys a clean commit of `main` from the Mac ("Manual deploy" under Operating). There is no CI runner, and a push to Gitea deploys nothing. Customization and deployment are separate, as with media-insights and media-intelligence-docker: | Folder | Holds | |---|---| | `petrolyst-insights/` | how Superset looks and behaves for Petrolyst: config, Keycloak login code, branding, patches, dashboards. See its README. | | `traefik/` | edge proxy, TLS, the `sso` middleware (oauth2-proxy) that guards the dashboard | | `stacks/fuel-monitoring/` | Compose stack, Superset Dockerfile and init, fuel-db roles and migrations | | `deploy/` | `deploy.sh` (run on the server by a manual deploy), `rollback.sh` (manual), `lib.sh` (shared) | | `host/` | one-time server setup: `bootstrap.sh`, `secrets-init.sh` | | `keycloak/` | the clients `petrolyst` and `petrolyst-app` for Keycloak's partial import | No credential is in this repository. Secrets exist only on the server, under `/opt/petrolyst/secrets/`. A deploy needs only root SSH access to the server (`ssh petrolyst`). ## How a deploy works 1. A person runs "Manual deploy" (Operating, below) from a clean checkout of `main`: the scripts are linted, `git archive` sends exactly that commit to a fresh `/opt/petrolyst/incoming/-manual-