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

Installation

You need a Linux machine (ARM64 or x86-64) and an EVE app registration for sign-in, created at developers.eveonline.com.

1. Get the program

Easiest is the prebuilt binary from the project's releases, published on Forgejo, GitHub, and GitLab: evesynapse-arm64 for ARM machines (most ARM cloud instances), evesynapse-amd64 for Intel/AMD ones. Or build it yourself (below).

2. Run the setup script

From a checkout of the repository:

sudo bash deploy/setup.sh

The script:

  • downloads the latest build for your machine, checks the release's signature, and verifies the build against the checksum in its signed manifest (see Updating for how signing works),
  • creates the evesynapse user and /opt/evesynapse,
  • installs and starts PostgreSQL if it is missing, and creates the app's database with a generated password written into /opt/evesynapse/.env,
  • tunes PostgreSQL's memory settings for the machine it is on, only while they are still at their shipped values (EVESYNAPSE_TUNE_POSTGRES=0 skips this),
  • installs the systemd service and links evesynapse into /usr/bin.

It never overwrites an existing .env; it only appends a DATABASE_URL that is not there yet. The program, /opt/evesynapse, and .env belong to root; the service account can read them but not change them, and the unit runs sandboxed.

Installing from a fork or from your own build works too:

sudo EVESYNAPSE_UPDATE_REPO=you/evesynapse bash deploy/setup.sh
sudo EVESYNAPSE_BINARY=/path/to/evesynapse bash deploy/setup.sh

Run the fork form from a checkout of the fork: the script checks the release against the release key in the checkout it runs from, and a fork's releases are signed with the fork's own key.

3. Configure and start

Fill in /opt/evesynapse/.env with your EVE app's client ID, secret, and callback URL (see Configuration), then:

sudo systemctl start evesynapse

Open the address you configured and sign in with EVE.

HTTPS

EveSynapse itself speaks plain HTTP. On anything but your own machine, put a reverse proxy that terminates TLS in front of it, so sign-in cookies and character data never cross the network unencrypted. With Caddy, which obtains and renews the certificate itself, the whole configuration is:

eve.example.org {
    reverse_proxy 127.0.0.1:8080
}

Then, in /opt/evesynapse/.env:

ADDR=127.0.0.1:8080
EVE_CALLBACK_URL=https://eve.example.org/auth/callback

The app reads its public address from EVE_CALLBACK_URL. When that is an https address it marks the session cookie Secure and sends Strict-Transport-Security.

Build from source

Needs Go (the version in the repository's go.mod). The fonts and wallpaper travel through the repository in encoded form, so decode them into place first:

make assets        # decode the fonts and wallpaper
make build         # bin/evesynapse for this machine
make build-arm64   # bin/evesynapse-arm64
make build-amd64   # bin/evesynapse-amd64
make test          # the test suite (starts its own embedded PostgreSQL)
make check         # gofmt, go vet, tests under the race detector

Every optional feature is a module, and a build contains exactly the modules internal/app/modules_enabled.go imports; the default file lists them all. To build a smaller server, let the build tool write that file for your selection:

make modules                                          # every module and its scopes
go run ./cmd/modbuild -modules fitting,doctrines      # print the file; nothing written
go run ./cmd/modbuild -modules fitting,doctrines -write
go build -o bin/evesynapse ./cmd/evesynapse
go run ./cmd/modbuild -all -write                     # back to the default

Install your build with:

sudo EVESYNAPSE_BINARY=$PWD/bin/evesynapse bash deploy/setup.sh

For local development there is also a dev build (make build-dev) that adds a /dev-login route when started with DEV_LOGIN=1. Never deploy the dev build, and never enable dev login anywhere anyone else can reach it.