Installation
The NetIgnite server ships as a Docker image on the GitHub Container Registry:
ghcr.io/netignite-project/server
| Tag | Content |
|---|---|
latest | The latest stable release |
0.1.3, 0.1.2, … | A specific release (see the release list) |
Images are built for linux/amd64 and signed with cosign
(keyless).
Docker Compose (recommended)
services:
netignite-server:
image: ghcr.io/netignite-project/server:latest
container_name: netignite-server
restart: unless-stopped
ports:
- "18232:18232"
volumes:
- /opt/netignite/data:/opt/netignite/data
- /opt/netignite/config:/opt/netignite/config
docker compose up -d
docker compose logs -f netignite-server
The upstream compose file
also mounts /opt/netignite/logs. The current release logs to stdout only (use docker logs),
so that mount is optional.
docker run
docker run -d \
--name netignite-server \
--restart unless-stopped \
-p 18232:18232 \
-v /opt/netignite/data:/opt/netignite/data \
-v /opt/netignite/config:/opt/netignite/config \
ghcr.io/netignite-project/server:latest
What's in the container
| Path | Content |
|---|---|
/opt/netignite/data/db.sqlite | The SQLite database (users, agents, devices) |
/opt/netignite/data/initial_admin_credentials | The generated admin password from the first start |
/opt/netignite/config/config.json | Server settings; created from a sample on first start (see Configuration) |
The container listens on port 18232 (NITRO_PORT) on all interfaces. The dashboard, the REST
API and the agent WebSocket (/api/agent-control-service) all share this port.
First start
On first start, the server:
- creates
config/config.jsonfrom the bundled sample (an empty{}) if it doesn't exist, - creates the database tables,
- creates the user
adminwith a random 64-character password, writes it todata/initial_admin_credentialsand prints it to the log, - loads the agents from the database and starts accepting agent connections.
sudo cat /opt/netignite/data/initial_admin_credentials
initial_admin_credentials. The
server never removes the file itself.Production builds only accept the session cookie over HTTPS (or on localhost). Before you use
the dashboard from another machine, set up HTTPS & a reverse proxy.
Updating
Pull the new image and recreate the container. The database and config live in the mounted volumes and are kept.
docker compose pull
docker compose up -d
From source
The server requires Bun. Node.js is not supported: the build uses Nitro's bun
preset and the startup code uses Bun APIs.
git clone https://github.com/NetIgnite-project/Server.git
cd Server
bun install
bun run build
bun run .output/server/index.mjs
Run the last command from the repository root: config/ and data/ are resolved relative to the
working directory, and the config file is created from config/config.sample.json. Without
NITRO_PORT the server listens on port 3000; set NITRO_PORT=18232 to match the Docker image.
To build the image yourself, use the repository root as the build context:
docker build -f docker/Dockerfile -t netignite-server .
For a development server with hot reload, see Development.