4.1 KiB
sidebar_position, slug, title
| sidebar_position | slug | title |
|---|---|---|
| 1 | /installation/quick-start | 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. :::
- First of all, you need to install docker.
sudo curl -fsSL https://get.docker.com | sh
- Create separate directory for the project.
mkdir /opt/remnawave && cd /opt/remnawave
- Download and configure the environment variables.
curl -o .env https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/.env.sample
- Configure the environment variables.
nano .env
- Create
docker-compose.ymlfile, 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.
:::
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
depends_on:
remnawave-db:
condition: service_healthy
remnawave-redis:
condition: service_healthy
remnawave-redis:
image: valkey/valkey:8.0.2-alpine
container_name: remnawave-redis
hostname: remnawave-redis
restart: always
networks:
- remnawave-network
volumes:
- remnawave-redis-data:/data
healthcheck:
test: ['CMD', 'valkey-cli', 'ping']
interval: 3s
timeout: 10s
retries: 3
networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: false
volumes:
remnawave-db-data:
driver: local
external: false
name: remnawave-db-data
remnawave-redis-data:
driver: local
external: false
name: remnawave-redis-data
- Run containers.
docker compose up -d
- Check the logs.
docker compose logs -f
- 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.
<Button label="Continue to Reverse Proxy installation" link="/installation/rp/nginx" variant="secondary" size="md" outline style={{ marginBottom: '1rem' }} />
:::