Getting Started
Introduction
Row-Template is a self-contained, white-label subscription page for 3X-UI, PasarGuard and Rebecca panels — seventeen designs, one HTML file each, installed and managed with one command.
3X-UI, PasarGuard and Rebecca can each serve a custom page to subscribers instead of their built-in one. Row-Template is that page. A subscriber opens their subscription link in a browser and sees their plan, their traffic, their expiry date, and one-tap ways to add the subscription to the app they use.
It ships as one self-contained HTML file per design — every style, script, font and the QR code generator are inlined — built once for each panel’s own template engine. A single command detects your panel, installs the page next to it, points the panel at it, and gives you a row-template manager for branding, updates and rollback.
This documentation covers Row-Template 1.4.0
Supported panels: 3X-UI (MHSanaei) 3.6.0 or newer, PasarGuard 5.x, and Rebecca 1.x — the Go edition, from Rebecca’s binary install. Rebecca’s Docker image is still the 0.0.x Python edition, which cannot render this page; the installer refuses it and changes nothing. Commands and messages on this site are taken from the 1.4.0 installer. Compatibility →
How it works
-
The installer downloads a release, verifies its SHA-256 checksum (there is no way to skip this), and finds out which panel the server runs. On a server with more than one, it asks — or, in a script, reads
RT_PANEL. -
It installs into its own directory —
/etc/3x-ui/sub_templates/row-templateon 3X-UI,/etc/row-templateon PasarGuard and Rebecca — then generates the page from the design you chose and your branding, validates it, and swaps it into place atomically. -
It points the panel at the page, changing as little as possible:
- 3X-UI: one panel setting, the subscription theme directory (
subThemeDir). - PasarGuard: the page goes into PasarGuard’s templates directory, and one marked block selecting it is appended to
/opt/pasarguard/.env. - Rebecca: the page goes into Rebecca’s templates directory, and two fields of its subscription settings select it.
On PasarGuard and Rebecca this is a transaction: the panel’s settings are snapshotted first, and restored exactly if any step fails.
- 3X-UI: one panel setting, the subscription theme directory (
-
The panel fills the page with each subscriber’s data when it serves it. The page then keeps its status fresh by asking your own panel for updated figures, on all three panels. VPN apps that fetch the same link still receive normal subscription content.
Why Row-Template
Private by design
The page makes no third-party requests: no CDNs, no external QR or geolocation lookups, no telemetry. Live status on 3X-UI comes from your own panel.
Genuinely white-label
Your service name, your support link, your logo. Nothing on the served page identifies Row-Template.
Seventeen designs
Same features, same languages, same safety checks on every supported panel — only the layout and look change. Row is the default.
Safe to operate
Checksum-verified releases, atomic and transactional activation, automatic restore on failure, and one-command rollback.
What it does not do
- It never patches your panel. On 3X-UI it changes one setting,
subThemeDir; on PasarGuard it adds one marked block to.env; on Rebecca it sets two fields of its subscription settings. Uninstall puts each of them back. - It never touches your inbounds, clients, users, nodes, hosts, certificates or the panel’s other settings.
- It installs nothing else on your server: no Node.js, no Python, no database. It uses the tools Linux already has, plus
sqlite3if it is present.