A standalone, production-ready VLESS WebSocket proxy server running the official 64-bit Xray-core inside a lightweight Alpine Linux Docker container, tailored for zero-cost deployment on Render.com.
Deploy directly to your Render account with pre-configured settings:
- Lightweight & Fast: Built on Alpine Linux with the latest official release of Xray-core.
- WebSocket Transport: Fully compatible with Cloudflare CDN, reverse proxies, and Render HTTP/WebSocket edge routing.
- Render Ready: Automatically binds to
$PORT(Render default:10000) and serves traffic over Render's automatic TLS on port443. - Customizable: Set your own client
UUIDand WebSocketWSPATHusing environment variables. - Automated CI: Built-in GitHub Actions testing workflow.
.
├── Dockerfile # Alpine image with Xray-core and dependencies
├── entrypoint.sh # Dynamic config generator and container entrypoint
├── render.yaml # 1-Click Render blueprint configuration
├── .github/
│ └── workflows/
│ └── docker-build.yml # Continuous Integration Docker build tests
├── LICENSE # MIT Open Source License
├── .gitignore # Standard Git ignore rules
└── README.md # Complete documentation
If you prefer to configure the Web Service manually:
-
Sign in to Render:
- Go to dashboard.render.com and log in with your GitHub account.
-
Create a New Web Service:
- In your Render dashboard, click New + and select Web Service.
- Select Build and deploy from a Git repository.
- Choose
vless-render-proxy.
-
Configure Service Settings:
- Name: Choose a unique service name (e.g.,
my-vless-service). - Region: Select Frankfurt (EU Central) (or your preferred region).
- Branch:
main - Runtime: Select Docker.
- Instance Type: Select Free ($0 / month).
- Name: Choose a unique service name (e.g.,
-
Configure Environment Variables: Click Add Environment Variable:
Key Value Description UUIDde04add9-5c68-8bab-950c-08cd5320df18(or your custom UUID)Client authentication ID WSPATH/vless-ws(or custom path like/app-stream)WebSocket route path -
Deploy:
- Click Deploy Web Service.
- When the build finishes, status will turn Live and provide your URL (e.g.,
https://my-vless-service.onrender.com).
| Variable | Default Value | Required | Description |
|---|---|---|---|
UUID |
de04add9-5c68-8bab-950c-08cd5320df18 |
Optional | User identifier for VLESS authentication. |
WSPATH |
/vless-ws |
Optional | WebSocket path (must start with /). |
PORT |
10000 |
Optional | Port inside container (handled automatically by Render). |
Render terminates TLS at its edge, so your client connects with Port 443 and TLS Enabled.
- Protocol:
VLESS - Address (Server / Host):
<your-service-name>.onrender.com - Port:
443 - User ID / UUID: Your configured
UUID - Encryption:
none - Transport / Network:
ws(WebSocket) - Path: Your configured
WSPATH(e.g.,/vless-ws) - Host / SNI:
<your-service-name>.onrender.com - TLS / Security:
TLSenabled - Flow: Leave blank / none
- Open v2rayN → Servers → Add VLESS Server.
- Address:
<your-service-name>.onrender.com - Port:
443 - User ID (id):
<YOUR_UUID> - Encryption:
none, Network:ws - Under Transport Settings (ws):
- path:
/vless-ws(or your custom path) - Host:
<your-service-name>.onrender.com
- path:
- Under TLS:
- streamSecurity:
tls - SNI:
<your-service-name>.onrender.com
- streamSecurity:
- Save and connect.
- Tap + → Type: VLESS.
- Server:
<your-service-name>.onrender.com, Port:443. - UUID:
<YOUR_UUID>. - Under Network:
- Network:
WebSocket - Path:
/vless-ws - Host:
<your-service-name>.onrender.com
- Network:
- Under Security:
- Security:
TLS - SNI:
<your-service-name>.onrender.com
- Security:
- Save and connect.
vless://YOUR_UUID@YOUR_SERVICE_NAME.onrender.com:443?encryption=none&security=tls&sni=YOUR_SERVICE_NAME.onrender.com&type=ws&host=YOUR_SERVICE_NAME.onrender.com&path=%2Fvless-ws#Render-VLESS
This project is licensed under the MIT License.