Install on Linux
INSTALL · LINUX
Install Spent on Linux.
Spent on Linux installs as a user-level systemd service. There's no native menubar — you open the dashboard in your browser.
What you’ll need
Section titled “What you’ll need”- A modern systemd-based distro (Ubuntu 22.04+, Fedora 38+, Arch, Debian 12+, etc.).
- Node.js 20+ from your distro’s package manager, nvm, or Volta.
- About 500 MB of disk space.
- Your bank login credentials.
-
Install Node.js
Use whichever Node distribution you prefer. If you don’t have one yet:
Terminal window # nvm (recommended for most users)curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashsource ~/.bashrcnvm install --lts# OR: Ubuntu/Debian distro packagesudo apt install nodejs npm # check `node --version` is >= 20# OR: Fedorasudo dnf install nodejs -
Get Spent
Terminal window git clone https://github.com/Shaya16/Spent.git ~/.local/share/spentcd ~/.local/share/spent -
Install and run setup
Terminal window npm installnpm run setupnpm installtakes 2-3 minutes.npm run setupbuilds the app, registers a systemd--userunit, and opens the dashboard.
What `npm run setup` actually does
On Linux, in order:
- Builds the Next.js app (
npm run build). - Writes a
--usersystemd unit at~/.config/systemd/user/spent.serviceand enables it so it starts at login. - Polls
/api/healthuntil the server is ready, then opens the browser viaxdg-open.
Service management goes through systemctl --user; the npm run service:* commands shell out to it.
The hosts entry for spent.local is not added on Linux by default — modifying /etc/hosts outside of a package manager is unusual on Linux. Add it manually if you want the friendly name:
echo "127.0.0.1 spent.local" | sudo tee -a /etc/hostsSource: scripts/setup.mjs, scripts/service/install.mjs.
Day-to-day commands
Section titled “Day-to-day commands”npm run service:status # systemctl --user status spentnpm run service:startnpm run service:stopnpm run service:reload # rebuild + restartnpm run service:logs # journalctl --user -u spent -fnpm run service:open # opens the dashboard via xdg-openUninstall
Section titled “Uninstall”npm run uninstallDisables and removes the systemd unit. Your data/ folder is preserved.