Quick start
In one pass: bring up the panel, create a configuration profile, attach a node, hand a client their subscription and confirm it works.
What you need
- A server with Debian 12 or Ubuntu 22.04+, and root access.
- A domain for the panel and a separate domain for subscriptions — both A records pointing at the server.
- A Telegram bot token, if you sell through a bot.
Installing
git clone https://github.com/STEALTHNET-APP/stealthnet-software.git
cd stealthnet-software
cp .env.example .env
Fill in the panel and subscription addresses, database access and the bot token in
.env. Then:
docker compose up -d
docker compose logs -f api
The log will print the login and a one-time password for the first administrator. Change it as soon as you are in.
Configuration profile
A profile is the Xray config handed out to nodes. One profile serves many nodes: the agent writes the clients into it locally.
- Open Infrastructure → Configuration profiles → New profile.
- Pick a preset. Start with VLESS + Reality (TCP): it needs neither a domain of your own nor a certificate.
- Open the editor and replace the fields written in capitals — the keys come from the “Reality keys” button on the same page.
- Save. The panel validates the config with the real engine and will not save one that does not run.
YOUR_PRIVATE_KEY fail validation
on purpose. That way a forgotten field surfaces immediately, instead of arriving from
your clients a week later.The first node
On the Nodes page press “Attach node”. The panel produces a ready command — run it on the node's server. Details and special cases: Nodes.
Within 15 seconds the node appears in the list, green. If it is red, the panel states the reason right in the row.
Squad and plan
A squad is the set of inbounds a client is given. The chain runs:
plan → squads → inbounds → nodes
- Internal squads → Create squad, tick the profile's inbounds.
- Plans → New plan: code, name, duration and price, traffic and device limits, and the squads the client receives.
Hosts
A host is the line a client sees as a location in their app. It points at a profile inbound and adds what only the administrator knows: the public address, the port and the name of the location.
Hosts → Add host: a remark (say “🇩🇪 Frankfurt”), the node's address and port, and the inbound. The order of hosts in the list is the order of locations for the client.
The first client
Clients → Create client. Give a name and a plan. The card's “Subscription and VPN” tab holds the link — that is what you hand over.
You can check it without leaving the panel: open the link in a browser and you get a page with apps for each platform and an “Add subscription” button.