1 Configuration
Miko edited this page 2026-10-31 00:30:48 +00:00

Configuration

Everything comes from the environment. The app auto-loads ./.env at startup; real environment variables win over the file. The repository's .env.example and the README's Configuration section carry the complete table; this page covers the settings every install touches and the ones that change behavior.

Required

Variable Purpose
EVE_CLIENT_ID EVE SSO application client ID
EVE_CLIENT_SECRET EVE SSO application client secret
EVE_CALLBACK_URL OAuth2 redirect URI; must match the callback registered at developers.eveonline.com character for character
DATABASE_URL PostgreSQL connection URL (the setup script generates one for server installs)

Common

Variable Default Purpose
ADDR :8080 HTTP listen address; use 127.0.0.1:8080 behind a reverse proxy
TOKEN_ENCRYPTION_KEY unset Encrypts the EVE tokens stored in the database (see Security)
ESI_CONTACT unset How CCP can reach the operator; sent in the User-Agent of every ESI request, as CCP asks
LOG_LEVEL info Least severe log line written: debug, info, warn, or error
LOG_FORMAT text text, or json for one object per line
EVE_SDE_BASE_URL Fuzzwork's dump Base URL of the SDE CSV dump the importer downloads

Who can sign up

Out of the box, anyone who can reach the site and sign in with EVE gets an account. To limit an instance, list EVE IDs in .env (any mix, comma separated):

EVE_ALLOWED_CHARACTER_IDS=90000001,90000002
EVE_ALLOWED_CORPORATION_IDS=98000001
EVE_ALLOWED_ALLIANCE_IDS=99000001

A new account then needs a character that is listed itself, or whose corporation or alliance is. Characters in EVE_ADMIN_CHARACTER_IDS are always allowed. Someone who already has an account can still link more characters, including alts outside the lists, and accounts created before the lists were set keep working. A list that cannot be read (a typo, a stray separator) stops the app at startup rather than silently allowing everyone.

EVE_ADMIN_CHARACTER_IDS names the accounts that may open the Admin and Sync pages: comma-separated EVE character IDs, where any character linked to an account makes the whole account an admin's.

Signing in, or linking another character, opens a short chooser instead of asking EVE for every permission at once:

  1. What do you want to do? Activity cards (track my pilots, trade the market, build and produce, run my corporation, fit and plan ships, a bit of everything). Each feature declares which kinds of play it serves and what it needs.
  2. The reveal. Before anything is sent to EVE, the page lists the features that will be turned on, each with the permissions it uses in plain words, and how many permissions EVE will ask for. Features can be unticked; one another feature needs stays, and says why.

The server works the scope list out from the declarations; a link only ever asks for a subset of the scopes the EVE developer portal allows. The account remembers its last choice, so the next character opens on the reveal, preselected. Linking more onto a character asks for what it already granted too, so a grant never narrows. ESI cannot narrow a granted token, so there is no removal flow: a narrower grant is a fresh link at the narrower set.

Updates

EVESYNAPSE_UPDATE_PROVIDER lists the sources the updater reads releases from (github, gitlab, forgejo, mirror), checked in the order listed with no source preferred beyond that order. See Updating.

Optional features

  • Browser push: VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_SUBJECT (see Notifications).
  • Discord: DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET, DISCORD_BOT_TOKEN (see Discord).
  • Trade Ideas: MODEL_API_KEY, or CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_AUTH_TOKEN as the fallback model.
  • Swarm Cache: SHARED_CACHE, SHARED_CACHE_SECRET, SHARED_CACHE_SEEDS (see Swarm-Cache).
  • Intel classifier: INTEL_TAGGER (set off to read intel without it) and INTEL_TAGGER_WEIGHTS for a different model file. The classifier is a small model built into the server; it runs on the operator's machine and sends nothing anywhere.
  • Android app: ANDROID_APP_PACKAGE and ANDROID_APP_FINGERPRINTS name the site's Android app (see Notifications).

Worker sizing

The defaults suit a small instance. Larger ones may meet: WORKER_TIERS (how refresh cadence follows account activity), WORKER_FETCHES_PER_CYCLE and WORKER_LANES (how much ESI work a cycle may do, and how many characters refresh at once), FORESIGHT (warming the data an account is likely to open next, on game events), and DB_MAX_CONNS. The README's Configuration table gives the ranges and the reasoning for each.