SSTEALTHNETSOFTWARE

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

Why subscriptions get their own domain. If the panel's domain is blocked, clients keep refreshing their configs: the subscription service runs independently and can live on another server with nothing but an API key.

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.

  1. Open Infrastructure → Configuration profiles → New profile.
  2. Pick a preset. Start with VLESS + Reality (TCP): it needs neither a domain of your own nor a certificate.
  3. Open the editor and replace the fields written in capitals — the keys come from the “Reality keys” button on the same page.
  4. Save. The panel validates the config with the real engine and will not save one that does not run.
Placeholders such as 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
  1. Internal squads → Create squad, tick the profile's inbounds.
  2. 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.

Nothing comes back? A subscription hands out no configs if the client has no active time left, or if not a single inbound from their squads is up on a live node. Both causes are covered in when something breaks.