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
| Way | What you need | Database |
|---|---|---|
Docker, --local | Docker with the compose plugin and Node.js 24 or newer | SQLite or Postgres |
Node.js only, --node-only | Node.js 24 or newer; the archive crunu-onprem-<version>-node.tar is enough | SQLite |
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
tar -xf crunu-onprem-6.3.0-amd64.tar
sh crunu-onprem-6.3.0-amd64/install.sh --localThe 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:
COMPOSE_PROJECT_NAME=crunu-onprem-local sh crunu-onprem-6.3.0-amd64/install.sh --localThe commands it prints then name that project, such as docker compose -p crunu-onprem-local …. Run them as printed.
Node.js without Docker
tar -xf crunu-onprem-6.3.0-node.tar
sh crunu-onprem-6.3.0-node/install.sh --node-onlyIt 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.
| Option | What it does |
|---|---|
--data <dir> | another data directory |
--port 8090 | another port |
--no-start | prepare 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
- Open
http://localhost:8080in a browser on this computer. Plainhttpis accepted only forlocalhostand the loopback addresses. - Choose Create the first owner, enter the bootstrap token, the organization name, your name, email address and password.
- 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:
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:
crunu login --server http://localhost:8080
crunu run --env personal/my-keys -- your-commandcrunu 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-onlyuses SQLite only.- Back up the data directory or the Docker volume and the settings file, as On-premises: backups and updates describes.