Skip to main content

Quick Start

XLADA is a proxy management panel built on Xray-core. It provides a web interface and a REST API for users, nodes, subscriptions, and Xray configurations. XLADA is a fork of Remnawave under the AGPL-3.0 license, with stronger privacy and control over your data.

What the system is made of​

ComponentWhere it runsPurpose
Panelmanagement serverweb interface and REST API
Nodeeach proxy serverruns Xray-core, controlled by the panel
Subscription pagemanagement serverbranded page with the user's keys

At minimum you need a panel and at least one node. The subscription page is optional: without it, the user gets the link directly.

administrator browser
│ HTTPS
â–ŧ
┌──────────────────┐ HTTPS + mTLS + JWT ┌──────────────┐
│ Panel (xpanel) │ ───────────────────────────────â–ļ │ Node (Xray) │
│ PostgreSQL │ ◀─────────────────────────────── │ proxy server │
│ Valkey │ inbound only └──────────────┘
└──────────────────┘
▲
│ HTTPS
subscription page (xpanel-subpage)

Installing the panel​

You need a server with Docker and a domain that points to it.

git clone https://github.com/xray-panel/deploy.git /opt/xlada
cd /opt/xlada

cp panel.env.sample .env
chmod 600 .env

# fill in .env:
# APP_SECRET — openssl rand -hex 32, cannot be changed after startup
# POSTGRES_PASSWORD — openssl rand -hex 16
# PANEL_DOMAIN, FRONT_END_DOMAIN, SUB_PUBLIC_DOMAIN
# METRICS_USER, METRICS_PASS — required, the container will not start without them

docker compose up -d

The panel comes up on 127.0.0.1:3000. nginx exposes it to the outside:

cp nginx/panel.conf /etc/nginx/sites-available/xlada-panel
ln -sf /etc/nginx/sites-available/xlada-panel /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d panel.example.com
HTTPS is required

The panel code contains middleware that drops the connection if the request arrives without the X-Forwarded-For and X-Forwarded-Proto: https headers. Without a reverse proxy with TLS the panel does not work.

Open https://panel.example.com — the panel will prompt you to create an administrator. Password: at least 24 characters, and it must contain lowercase letters, uppercase letters, and digits.

Connecting a node​

  1. In the panel: Nodes → create node — the panel shows a SECRET_KEY.
  2. On the proxy server:
docker run -d \
--name xpanel-node \
--restart unless-stopped \
--network host \
--cap-add NET_ADMIN \
--ulimit nofile=1048576:1048576 \
-e NODE_PORT=2222 \
-e SECRET_KEY="<SECRET_KEY from the panel>" \
ghcr.io/xray-panel/node:latest

Within a minute the node appears in the panel as connected.

What's next​