Skip to content
Browse the docs

Self-hosting

Try Crunu on one computer

Run the whole Crunu server on one computer from the on-premises bundle, in Docker or with Node.js alone, reachable only from that computer, with no internet.

Last updated

On this page

The on-premises bundle can also put Crunu on a single computer: to evaluate it before a network install, or to keep secrets for one machine. The server listens only on the loopback address, 127.0.0.1, so no other computer can reach it, and it runs in isolated mode with no internet access at any point.

Available from Crunu 6.3.0, from the bundle you receive under an Enterprise agreement. For a team in a company network, see Install Crunu in your own network.

Two ways

WayWhat you needDatabase
Docker, --localDocker with the compose plugin and Node.js 24 or newerSQLite or Postgres
Node.js only, --node-onlyNode.js 24 or newer; the archive crunu-onprem-<version>-node.tar is enoughSQLite

Take the Docker archive for the architecture of your computer: amd64 or arm64. The Node.js archive runs on any architecture.

Docker on this computer

Shell
tar -xf crunu-onprem-6.3.0-amd64.tar
sh crunu-onprem-6.3.0-amd64/install.sh --local

The installer loads the images, writes the settings into deploy/.env of the bundle, starts the server at http://localhost:8080 without Caddy, checks it, and prints the bootstrap token. Its last line is the command that stops the server. --port 8090 picks another port.

To keep this install apart from a network install on the same machine, give it its own Compose project:

Shell
COMPOSE_PROJECT_NAME=crunu-onprem-local sh crunu-onprem-6.3.0-amd64/install.sh --local

The commands it prints then name that project, such as docker compose -p crunu-onprem-local …. Run them as printed.

Node.js without Docker

Shell
tar -xf crunu-onprem-6.3.0-node.tar
sh crunu-onprem-6.3.0-node/install.sh --node-only

It keeps the data in ~/.crunu-onprem, the SQLite database and the settings with the server key, with the directory at mode 0700. The server runs in the foreground of this terminal at http://localhost:8080; Ctrl+C stops it.

OptionWhat it does
--data <dir>another data directory
--port 8090another port
--no-startprepare everything, don't start the server

To run it as a service, the installer prints a systemd unit with the line “To run the server as a service, save this unit as /etc/systemd/system/crunu-server.service and run:”. It doesn't install the unit itself: save it, then run sudo systemctl enable --now crunu-server.

First steps

  1. Open http://localhost:8080 in a browser on this computer. Plain http is accepted only for localhost and the loopback addresses.
  2. Choose Create the first owner, enter the bootstrap token, the organization name, your name, email address and password.
  3. Keep the Emergency Kit the web app shows: it holds your Secret Key, which you need with your password on every new device.

The bootstrap token works once. After the first owner exists, the server no longer accepts it.

The agent on this computer

The bundle's releases/<version>/ holds crunu-<version>-<os>-<arch> with their checksums in SHA256SUMS. Check the file before you use it, then make it executable and put it on your PATH as crunu:

Shell
grep ' crunu-6.3.0-darwin-arm64$' SHA256SUMS | shasum -a 256 -c -   # on Linux: sha256sum -c -

Sign in as yourself and run a program with an environment:

Shell
crunu login --server http://localhost:8080
crunu run --env personal/my-keys -- your-command

crunu opens only environments where you have access of your own, such as those of your personal project. For an environment of a shared project, issue a service token for it in the web app.

Limits of a single computer

  • Team members on other computers can't reach the server: it listens only on 127.0.0.1. For a team, install it in your network.
  • --node-only uses SQLite only.
  • Back up the data directory or the Docker volume and the settings file, as On-premises: backups and updates describes.