Installation

Pick an install path from Docker Compose, the guided installer, systemd, release binaries or the offline bundle.

Last updated Aug 14, 2026View as Markdown

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 (amd64 or arm64) with root or sudo access.
  • One free inbound port for the panel, 9761 by 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

  1. 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 .env and starts the service.
  2. Follow that path’s page to the end.
  3. 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.