Skip to content

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.

  • 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.
  1. 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 | bash
    source ~/.bashrc
    nvm install --lts
    # OR: Ubuntu/Debian distro package
    sudo apt install nodejs npm # check `node --version` is >= 20
    # OR: Fedora
    sudo dnf install nodejs
  2. Get Spent

    Terminal window
    git clone https://github.com/Shaya16/Spent.git ~/.local/share/spent
    cd ~/.local/share/spent
  3. Install and run setup

    Terminal window
    npm install
    npm run setup

    npm install takes 2-3 minutes. npm run setup builds the app, registers a systemd --user unit, and opens the dashboard.

What `npm run setup` actually does

On Linux, in order:

  1. Builds the Next.js app (npm run build).
  2. Writes a --user systemd unit at ~/.config/systemd/user/spent.service and enables it so it starts at login.
  3. Polls /api/health until the server is ready, then opens the browser via xdg-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:

Terminal window
echo "127.0.0.1 spent.local" | sudo tee -a /etc/hosts

Source: scripts/setup.mjs, scripts/service/install.mjs.

Terminal window
npm run service:status # systemctl --user status spent
npm run service:start
npm run service:stop
npm run service:reload # rebuild + restart
npm run service:logs # journalctl --user -u spent -f
npm run service:open # opens the dashboard via xdg-open
Terminal window
npm run uninstall

Disables and removes the systemd unit. Your data/ folder is preserved.

Next Connect your bank