Skip to main content

Quick start

Installation​

Remnawave consists of two parts:

  • Main panel (aka backend)
  • Node (with XRay Core inside)

You can install both parts on the same machine or separate machines.

Minimum requirements for Backend:

  • 2GB of RAM
  • 2 CPU cores
  • Docker Engine

Minimum requirements for Node:

  • 1GB of RAM
  • 1 CPU core
  • Docker Engine

Configuration​

First of all, you need to configure the environment variables.

You can find the list of all environment variables in the Environment Variables page.

warning

Be sure to change the default credentials in the environment variables.

Installation​

Main Panel​

info

This guide written for Ubuntu 22.04, instructions may vary for other distributions.

  1. Create separate directory for the project.
mkdir remnawave && cd remnawave
  1. Download and configure the environment variables.
curl -o .env https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/.env.sample
  1. Configure the environment variables.
nano .env
  1. Create docker-compose.yml file, example below.
danger

Do not expose the services to the public internet, use only 127.0.0.1 for Remnawave services.

You must use Nginx/Caddy/Apache/etc. to expose the services to the public internet.

This guide does not cover the configuration of the reverse proxy, but just a bit later we will use Cloudflare Tunnel to expose the services to the public internet.

docker-compose.yml
services:
remnawave-db:
image: postgres:17
container_name: 'remnawave-db'
hostname: remnawave-db
restart: always
env_file:
- .env
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
- TZ=UTC
ports:
- '127.0.0.1:6767:5432'
volumes:
- remnawave-db-data:/var/lib/postgresql/data
networks:
- remnawave-network
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}']
interval: 3s
timeout: 10s
retries: 3

remnawave:
image: remnawave/backend:latest
container_name: 'remnawave'
hostname: remnawave
restart: always
ports:
- '127.0.0.1:3000:3000'
env_file:
- .env
networks:
- remnawave-network

networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: false

volumes:
remnawave-db-data:
driver: local
external: false
name: remnawave-db-data
  1. Run containers.
docker compose up -d
  1. Check the logs.
docker compose logs -f
  1. Remnawave is now running on http://127.0.0.1:3000.

Now we are ready to move on the Reverse Proxy installation.

danger

Do not expose the services to the public internet, use only 127.0.0.1 for Remnawave services.

You must use Nginx/Caddy/Apache/etc. to expose the services to the public internet.