Skip to content

hteppl/remnawave-node-go

Repository files navigation

logo

remnawave-node-go

Go Version GitHub Release GitHub Actions Docker Hub Docker Pulls Docker Image Size License

English | Русский

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.

Comparison with the official node

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.

Configuration

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 example

SECRET_KEY=<your-base64-encoded-secret-key>
NODE_PORT=2222
INTERNAL_REST_PORT=61001
LOG_LEVEL=info

Docker

Quick start

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

Docker Compose

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:

Logs

# 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.

Internal API

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

Management

# Stop
docker compose down

# Restart
docker compose restart

# Update to latest version
docker compose pull && docker compose up -d

Special Thanks

License

This project is licensed under the AGPL-3.0 license.

About

An unofficial community Go implementation of the Remnawave node (https://docs.rw).

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages