Installation
Pick an install path from Docker Compose, the guided installer, systemd, release binaries or the offline bundle.
Overview
Nasnet Linux is a single Go binary that carries the admin panel, the subscriber
panel and the Telegram bot inside it, so “installing” it means getting one
process running with a .env file next to it and a database it can reach.
There are five supported paths and they all end at the same place: the panel
listening on port 9761 and an Xray-core process supervised by it. Start here
to choose, then follow the child page for the path you picked.
Before you start
- A 64-bit Linux server (
amd64orarm64) with root orsudoaccess. - One free inbound port for the panel,
9761by default, plus whatever ports your proxy inbounds will listen on. - A domain pointed at the server if you want automatic HTTPS. A bare IP works over plain HTTP, but secure cookies need HTTPS.
- Two generated secrets and an admin password hash. Every install path needs them, and the guided installer generates them for you.
# JWT secret, which must be at least 32 characters
openssl rand -hex 32
# Admin panel password hash (bcrypt)
htpasswd -nbBC 10 "" "your-password" | tr -d ':\n' | sed 's/$2y/$2a/'
Steps
- Decide how you want to run it. If you are unsure, use the
guided installer, which
installs Docker if it is missing, generates every secret, writes
.envand starts the service. - Follow that path’s page to the end.
- Open the panel URL and sign in, as covered in First run and admin sign-in.
Reference
| Path | When to pick it | Page |
|---|---|---|
| Docker Compose | You already run Docker and want to edit the config yourself. Runs app, PostgreSQL 16 and Prometheus together. | Docker Compose |
| Guided installer | First install, or you want a menu for update, backup and uninstall afterwards. Covers both Docker and systemd. | Guided installer |
| systemd | No Docker on the host; you want the binary managed as a native service. | systemd service |
| Release binaries | Manual setup, or you are wiring the panel into your own tooling. | Release binaries |
| Offline bundle | The server has no outbound internet access. Ships PostgreSQL and Xray-core inside. | Offline bundle |
Troubleshooting
The panel URL does not answer. Check the port is open in both the host
firewall and your provider’s network rules, and that APP_PORT in .env
matches the port you published. The app exposes a readiness probe at
/health/ready, where a 200 means the process is up and the problem is in
front of it.