Table of contents
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.
Choosing what to link
Signing in, or linking another character, opens a short chooser instead of asking EVE for every permission at once:
- 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.
- 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, orCLOUDFLARE_ACCOUNT_IDandCLOUDFLARE_AUTH_TOKENas the fallback model. - Swarm Cache:
SHARED_CACHE,SHARED_CACHE_SECRET,SHARED_CACHE_SEEDS(see Swarm-Cache). - Intel classifier:
INTEL_TAGGER(setoffto read intel without it) andINTEL_TAGGER_WEIGHTSfor 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_PACKAGEandANDROID_APP_FINGERPRINTSname 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.