Running on Linux¶
From 0.9.13, EVE Console runs natively on 64-bit Linux, and Linux builds ship alongside the Windows builds with every release. Everything the app needs is bundled, including the .NET runtime.
Downloads¶
Both come from the Releases page:
-
AppImage —
EveConsole.AppImage— a single self-contained file. Make it executable and run it:chmod +x EveConsole.AppImage ./EveConsole.AppImageLike the Windows builds, the AppImage keeps itself up to date automatically.
-
Tarball —
EveConsole-linux-x64.tar.gz— extract anywhere and run the binary:tar -xzf EveConsole-linux-x64.tar.gz -C ~/eveconsole ~/eveconsole/EveConsoleThe tarball does not self-update; download a newer tarball to upgrade. It's the layout to use for a service (see below).
The one dependency: vlc¶
The only thing the build can't carry is your distribution's vlc package, which the app uses for alarm sounds and the AI agent's speech (text-to-speech). Everything else works without it. Install it from your package manager if you want audio:
# Debian / Ubuntu
sudo apt install vlc
# Fedora
sudo dnf install vlc
# Arch
sudo pacman -S vlc
Where data lives¶
Your data and configuration live under your home directory:
- Database (SQLite):
~/.local/share/EveConsole/EveConsole.db - Configuration: the same
EveConsoledirectory.
This is per-user, so the account that runs the app is the account whose data you see — worth remembering when you set up a service.
Running headless as a service¶
On Linux the background worker can run with no window as a systemd user unit, so ESI polling, imports, alarms, the scheduler and backups keep going after you close the desktop client — or on a machine that never opens one at all.
Headless on Linux means PostgreSQL
A SQLite file can only be held by one process, so a worker running as a service would lock the desktop client out entirely. Run the worker headless only when the app is on PostgreSQL; the app tells you as much on stdout if you try it on SQLite.
A unit file ships in the source tree at packaging/eveconsole-worker.service. The essentials:
- Run it as a real login user, not
rootor a system account — the data directory is under that user's home, and it's that user's keyring a UI-saved password would land in. -
Supply the connection string in the environment, not from saved settings — a daemon has no login session and can't open the keyring:
sudo install -m 600 /dev/null /etc/eveconsole.env echo 'EVECONSOLE_DB_CONNECTION=Host=db.example;Database=eveconsole;Username=eveconsole;Password=…' \ | sudo tee /etc/eveconsole.env >/dev/null -
Point
ExecStartat the tarball binary with--headless:ExecStart=/opt/eveconsole/EveConsole --headlessTo run the AppImage as a service instead, use its extract-and-run flag — a system service often can't mount FUSE, and without this the AppImage exits before it reaches any of the app's own code:
ExecStart=/opt/eveconsole/EveConsole.AppImage --appimage-extract-and-run --headlessKeep the filename stable across upgrades, or the unit will keep starting the old build.
Install and manage it like any user/system unit:
sudo cp packaging/eveconsole-worker.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now eveconsole-worker
journalctl -u eveconsole-worker -f
The worker handles SIGTERM itself and releases its work lease on the way out, so another client (or a restart) can pick the work up cleanly — let it stop gracefully rather than killing it. See Background processing for how the lease and the client/worker hand-off work.
Building from source on Linux¶
The same steps as anywhere — clone, restore, run — using the .NET 9 SDK:
git clone https://github.com/kernoeve/EveConsole.git
cd EveConsole
dotnet run