First Steps¶
This guide walks you through your first 10 minutes with VortexUI — from login to a working user subscription.
Step 1: Login¶
- Open
https://your-domain.com(orhttp://server-ip:8080if no domain) - Enter the admin credentials you created during installation
- You'll land on the Dashboard
First-time? The onboarding tour will guide you through the main features. Click "Start Tour" or dismiss to explore on your own.
Step 2: Add a Node¶
Nodes are servers running proxy cores (Xray or sing-box) that serve your users.
Local Node (Single Server)¶
If panel and proxy run on the same machine:
- Go to Nodes → Add Node
- Select Local Node
- Choose core: Xray (recommended) or sing-box
- Click Create
- Status should show 🟢 Online within seconds
Remote Node¶
If proxy runs on a separate server:
- Go to Nodes → Add Node
- Select Remote Node
- Fill in:
- Name: e.g., "Frankfurt-01"
- Address: server IP or hostname
- Port: API port (default 62050)
- Copy the generated install command
- SSH into your node server and run:
- Enter the panel address and enrollment token when prompted
- Back in the panel, status should show 🟢 Online
Step 3: Create an Inbound¶
Inbounds are protocol configurations that listen for client connections.
- Go to Nodes → select your node → Inbounds tab
- Click Add Inbound
- Choose a protocol:
Recommended: VLESS + Reality¶
| Field | Value |
|---|---|
| Protocol | VLESS |
| Port | 443 |
| Transport | TCP |
| Security | Reality |
| Dest | www.google.com:443 |
| Server Names | www.google.com |
- Click Create
Tip: Use the Reality Scanner (Security → Reality) to find optimal SNI domains for your server location.
Alternative: VMess + WebSocket + TLS¶
Good for CDN fronting (Cloudflare):
| Field | Value |
|---|---|
| Protocol | VMess |
| Port | 443 |
| Transport | WebSocket |
| Path | /vmws |
| Security | TLS |
Step 4: Create a User¶
- Go to Users → Add User
- Fill in:
| Field | Value |
|---|---|
| Username | your-username |
| Data Limit | 50 GB (or unlimited: 0) |
| Expire | 30 days from now |
| Device Limit | 2 (optional) |
- In Inbounds section, check the inbound(s) you created
- Click Create
Step 5: Get Subscription Link¶
- On the user detail page, find Subscription
- Copy the subscription URL:
- Or scan the QR Code directly with a mobile app
Import into Client Apps¶
| App | Platform | How to Import |
|---|---|---|
| v2rayNG | Android | Scan QR or paste URL |
| v2rayN | Windows | Subscription → Add → Paste URL |
| Nekoray | Windows/Linux | Subscription → New → Paste URL |
| Clash Meta | All | Profiles → Import from URL |
| Shadowrocket | iOS | Scan QR or Add Subscription |
| Streisand | iOS | Settings → Subscriptions → Add |
Step 6: Verify Connection¶
- In your client app, select the imported server
- Connect
- Visit https://ipinfo.io — you should see your node's IP
In VortexUI: - Dashboard → check real-time traffic - Monitor → see active connections - Users → verify traffic usage updating
Step 7: Harden Your Panel¶
Enable 2FA¶
- Click your avatar (top-right) → Profile
- Enable Two-Factor Authentication
- Scan QR with Google Authenticator / Authy
- Save backup codes securely
Set Strong JWT Secret¶
Ensure VORTEX_JWT_SECRET in your .env is at least 32 random bytes:
Configure IP Whitelist¶
- Settings → Security → IP Guard
- Add your management IPs to the whitelist
- Enable enforcement
Set Up Backups¶
- Settings → Backup
- Configure Telegram or S3 destination
- Set schedule (e.g., daily at 3 AM)
What's Next?¶
| Task | Guide |
|---|---|
| Customize dashboard | Dashboard |
| Bulk import users | User Management |
| Add more nodes | Node Management |
| Set up routing rules | Network Policy |
| Configure anti-censorship | Security |
| Create reseller accounts | Plans & Payments |
| Enable notifications | Notifications |
Troubleshooting First Setup¶
Node shows "Offline"¶
- Check node server is reachable:
ping node-ip - Verify port is open:
telnet node-ip 62050 - Check node agent logs:
journalctl -u vortex-node -f - Ensure panel address in node config is correct
Subscription URL returns 404¶
- Verify the user has at least one inbound assigned
- Check user hasn't expired or been suspended
- Verify the domain resolves to your panel server
Client can't connect¶
- Check inbound port is open:
telnet node-ip 443 - Verify protocol settings match
- Check firewall rules on node server
- Test with
curl -v https://node-ip:port
Login fails after panel restart¶
- Check database is running:
systemctl status postgresql - Verify JWT secret hasn't changed
- Check panel logs:
journalctl -u vortexui -f