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
evesynapseuser 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=0skips this), - installs the systemd service and links
evesynapseinto/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.