Skip to content

First tunnel, first customer

A fresh panel is empty on purpose: no interfaces, no customers, one administrator. Three steps get a customer connected.

1. Create an interface

Interfaces → Add Inbound. An interface is one tunnel: a subnet, a port, and the public hostname customers dial.

FieldNote
Protocolwireguard or openvpn
Modestandard, or amnezia — obfuscated WireGuard for networks that block the plain one
Subnet10.66.0.0/16 gives ~65 000 addresses; .1 becomes the gateway
Listen portUDP for WireGuard; OpenVPN can be TCP 443, which passes where little else does
Endpoint hostthe hostname or IP that goes into customer configs
NAT interfaceyour public NIC, usually eth0 — masquerading needs it
MTU1420 suits most networks

The keypair is generated for you. The private key never appears in any config you can copy out of the panel. For OpenVPN, a certificate authority, server certificate and tls-crypt key are generated in-process and stored with the interface — a database backup is a complete backup.

2. Create a customer

Clients → Add Clients. One client is one customer; each gets one device (account) per allowed device, each with its own key and address.

FieldNote
Namewhat you will search for
Protocolchosen per client
Interface(s)which tunnels the customer can use
Total traffic0 = unlimited; enforced in the kernel
Expiry0 = never; or start on first use with a number of days
Device limithow many separate configs to issue
Reset cyclenone, daily, weekly, monthly
Speed limitper-customer HTB class on every device their traffic leaves by
Telegram idlets the customer ask the bot about their own plan

Bulk: the same form makes many at once — a prefix and a count.

3. Hand out the config

Open the customer's row:

  • QR code — one per device, per host; phones scan it with the WireGuard or AmneziaWG app.
  • Client information — every link, every download, the subscription link.
  • Subscription link — one URL a customer keeps; the page behind it lists every device and every host, with QR codes, in their language and your chosen template. Apps that speak subscriptions re-fetch it.

What the statuses mean

StatusMeaning
activeworking
disabledswitched off by you
exhaustedhit the data quota
expiredpast the expiry date

Anything other than active has its peers removed from the kernel, so the customer stops passing traffic. Raising the quota or extending the expiry brings them straight back — no restart, no reissued config.

How OpenVPN customers differ

WireGuard identifies a customer by key. OpenVPN customers get a username and password, and there are no per-client certificates: creating one appends a credential, not a certificate to issue and revoke. Three properties follow:

  • one credential serves one personduplicate-cn is off; a second login disconnects the first;
  • addresses are pinned through client-config-dir, so the nftables quota keeps counting the right person across reconnects;
  • cutting someone off is immediate — the credential is removed and the live session is killed over the management socket.

Adding or removing a customer never restarts the server, and restarting or upgrading the panel does not disconnect anyone.

Released under the AGPL-3.0 License.