An unofficial community Go implementation of the Remnawave node (https://docs.rw).
1.2K
An unofficial community Go implementation of the Remnawave node for xray-core. Manages xray-core lifecycle, users, traffic statistics, and IP blocking through a REST API.
⚠️ Warning: This is an unofficial community realization of remnawave-node. It is not affiliated with the official Remnawave team. Use at your own risk.
| remnawave-node-go | Remnawave |
|---|---|
| v1.2.1 | Below 2.7.0 |
| v1.3.0+ (in progress) | 2.7.0+ |
Note: The release compatible with Remnawave 2.7.0+ is not yet available. If you are using Remnawave 2.7.0 or higher, please wait for the upcoming release.
| remnawave/node | remnawave-node-go | |
|---|---|---|
| Language | TypeScript (NestJS) | Go |
| Runtime | Node.js / Bun | Native binary |
| RAM (idle) | ~109 MB | ~70 MB |
| Docker image | ~490 MB | ~79 MB |
| xray-core | Bundled binary + geodata in image | Compiled as Go library* |
| Architecture | Microservice (NestJS + supervisord) | Single static binary |
| Status | Official | Unofficial (community) |
* xray-core is compiled directly into the binary as a Go library. Only geodata files (
geoip.dat,geosite.dat) are downloaded on first start and cached in the Docker volume for subsequent starts.
| Variable | Required | Default | Description |
|---|---|---|---|
SECRET_KEY | Yes | — | Base64-encoded payload generated by the Remnawave panel. |
NODE_PORT | No | 2222 | Main HTTPS server port (mTLS + JWT auth) |
INTERNAL_REST_PORT | No | 61001 | Internal HTTP server port (localhost only) |
LOG_LEVEL | No | info | Log level: debug, info, warn, error |
.env exampleSECRET_KEY=<your-base64-encoded-secret-key>
NODE_PORT=2222
INTERNAL_REST_PORT=61001
LOG_LEVEL=info
docker run -d \
--name remnawave-node-go \
--network host \
--restart unless-stopped \
-e SECRET_KEY=<your-secret-key> \
-v xray-geodata:/usr/local/share/xray \
hteppl/remnawave-node-go:latest
Create a .env file (see example above), then:
docker compose up -d
docker-compose.yml:
services:
remnawave-node-go:
image: hteppl/remnawave-node-go:latest
container_name: remnawave-node-go
restart: unless-stopped
network_mode: host
env_file:
- .env
volumes:
- xray-geodata:/usr/local/share/xray
volumes:
xray-geodata:
# Follow logs
docker logs -f remnawave-node-go
# Last 100 lines
docker logs --tail 100 remnawave-node-go
# With timestamps
docker logs -t remnawave-node-go
To get more detailed logs, set LOG_LEVEL=debug in your .env file and restart the container.
You can retrieve the current xray config from the internal REST API:
# Print config to stdout
curl -s http://127.0.0.1:61001/internal/get-config | jq
# Save config to file
curl -s http://127.0.0.1:61001/internal/get-config | jq > config.json
# Stop
docker compose down
# Restart
docker compose restart
# Update to latest version
docker compose pull && docker compose up -d
This project is licensed under the AGPL-3.0 license.
Content type
Image
Digest
sha256:84578206e…
Size
21.4 MB
Last updated
5 months ago
docker pull hteppl/remnawave-node-go