SSTEALTHNETSOFTWARE

When something breaks

Always in this order: first check whether the engine runs on the node, then whether the config reaches the client, and only then blame the app.

A node is red

Hover the marker — the tooltip carries the reason. Two different cases:

The agent is out of touch

systemctl status sn-node
journalctl -u sn-node -n 50 --no-pager

Usually a wrong panel address or a stale node secret. Issue a new secret from the node's menu, then run the install command again.

The engine did not start

The reason is written in the node's row. To check by hand:

xray -test -config /etc/sn-node/config.json

Typical causes: unfilled fields from a preset, a missing certificate file, a port already taken, a rule referencing a geo database that is not there.

This does not take the node down. The agent will not replace a working config with one the engine rejected — the locations that worked keep serving.

The subscription comes back empty

Walk the chain:

  1. The client has time left and traffic left.
  2. The client belongs to a squad.
  3. The squad has inbounds ticked.
  4. Those inbounds are bound to a node, and the node is online.
  5. The inbounds have hosts, and the hosts are enabled.

One break anywhere and the client has no locations.

A new client cannot connect

The client list reaches the node separately from the config, within 15 seconds. Look in the agent's log:

journalctl -u sn-node --since '2 min ago' | grep applying

A line like applying ... reason="client list changed" means the change arrived.

Trojan or Hysteria2 stopped working

Almost always an expired certificate. Check:

ls -l /etc/sn-node/tls/
openssl x509 -in /etc/sn-node/tls/your-domain.crt -noout -enddate

Renewal and the engine restart are handled by the daily sn-cert-sync service. If it is missing, reinstall the node with the NODE_DOMAIN variable.

Traffic is not counted

Check that the profile contains the api-in service inbound and the api, stats and policy sections. Without them the engine hands out no counters, which also means plan limits do not work. Every preset already has them.

Where to look

ServiceCommand
Paneljournalctl -u sn-api -n 100
Subscriptionsjournalctl -u sn-sub -n 100
Node agentjournalctl -u sn-node -n 100
Botjournalctl -u sn-bot -n 100

The overall health of the services is in the panel, under Help: it checks the API, the database and the subscription service.