Nginx
Visão geral
Neste guia usaremos o Nginx como proxy reverso para acessar o painel Remnawave. Apontaremos um nome de domínio para o nosso servidor, emitiremos um certificado SSL e configuraremos o Nginx.
Você precisa ter um nome de domínio registrado para continuar.
Apontar domínio para o seu servidor
Verifique o endereço IP do seu servidor. É melhor usar um endereço IPv4 estático.
Agora, você precisa apontar seu nome de domínio para este endereço IP.
Por exemplo, será my-super-panel.com -> 193.122.122.122.
Há duas maneiras de fazer isso:
- Usar um provedor DNS (ex.: Cloudflare, Google Cloud, etc.)
- Usar um registrador (ex.: Namecheap, etc.)
Provedor DNS
Se você estiver usando o Cloudflare, precisará adicionar um registro A/AAAA (para IPv4 e IPv6, respectivamente) aos seus registros DNS.
Faça login na sua conta do Cloudflare aqui e selecione o domínio desejado.
No lado esquerdo da página, clique em DNS e depois em Records. Clique em Create record.
Defina o Type como A e o Name como @.
Se quiser usar subdomínios, você deve inserir o nome do subdomínio (ex.: panel) no campo Name.
Insira o endereço IP do seu servidor no campo IPv4 address e clique em Save.
Agora você precisa esperar um momento para que os registros DNS sejam atualizados.
Há uma grande diferença entre a nuvem amarela (domínio sendo proxiado pelo Cloudflare) e a nuvem cinza (domínio não sendo proxiado pelo Cloudflare) no painel de controle do Cloudflare.
Se o Cloudflare funcionar bem na sua região, é melhor fazer o proxy do domínio através do Cloudflare. (Nuvem amarela)

Alguns provedores DNS têm uma interface diferente, mas o processo geral é o mesmo.
Emitir um certificado SSL
Agora você precisa emitir um certificado SSL. A forma mais fácil é usar o acme.sh.
Este guia cobre apenas a emissão de certificado SSL para o domínio do painel.
Instalar dependências
sudo apt-get install cron socat
Instalar acme.sh
Você pode usar qualquer endereço de e-mail para emitir o certificado, mas é recomendado usar um válido.
Substitua EMAIL pelo seu endereço de e-mail.
curl https://get.acme.sh | sh -s email=EMAIL && source ~/.bashrc
Criar uma pasta para os certificados
mkdir -p /opt/remnawave/nginx && cd /opt/remnawave/nginx
Emitir um certificado
Substitua DOMAIN pelo nome de domínio para o qual você deseja emitir um certificado.
Não use zonas de domínio: .ru, .su, .рф. O ZeroSSL atualmente não suporta essas zonas.
acme.sh --issue --standalone -d 'DOMAIN' --key-file /opt/remnawave/nginx/privkey.key --fullchain-file /opt/remnawave/nginx/fullchain.pem --alpn --tlsport 8443 --reloadcmd "docker exec remnawave-nginx nginx -s reload"
Certifique-se de que a porta 8443 está aberta no seu servidor. É necessária para a emissão do certificado.

acme.sh --install-cert -d 'DOMAIN' --key-file /opt/remnawave/nginx/privkey.key --fullchain-file /opt/remnawave/nginx/fullchain.pem --reloadcmd "docker exec remnawave-nginx nginx -s reload"
Isso indica que o certificado foi emitido. O acme.sh cuidará da renovação automática do certificado a cada 60 dias — apenas certifique-se de que a porta 8443 esteja aberta (e não ocupada) no seu servidor.
Configuração do Nginx
Configuração simples
Crie um arquivo chamado nginx.conf no diretório /opt/remnawave/nginx.
cd /opt/remnawave/nginx && nano nginx.conf
Cole a seguinte configuração.
Por favor, substitua REPLACE_WITH_YOUR_DOMAIN pelo seu nome de domínio.
Revise a configuração abaixo, procure pelas linhas destacadas em vermelho.
upstream remnawave {
server remnawave:3000;
}
server {
server_name REPLACE_WITH_YOUR_DOMAIN;
listen 443 ssl reuseport;
listen [::]:443 ssl reuseport;
http2 on;
location / {
proxy_http_version 1.1;
proxy_pass http://remnawave;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# SSL Configuration (Mozilla Intermediate Guidelines)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_certificate "/etc/nginx/ssl/fullchain.pem";
ssl_certificate_key "/etc/nginx/ssl/privkey.key";
ssl_trusted_certificate "/etc/nginx/ssl/fullchain.pem";
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
resolver_timeout 2s;
# Gzip Compression
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name _;
ssl_reject_handshake on;
}
Criar docker-compose.yml
Crie um arquivo docker-compose.yml no diretório /opt/remnawave/nginx.
cd /opt/remnawave/nginx && nano docker-compose.yml
Cole a seguinte configuração.
services:
remnawave-nginx:
image: nginx:1.28
container_name: remnawave-nginx
hostname: remnawave-nginx
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./fullchain.pem:/etc/nginx/ssl/fullchain.pem:ro
- ./privkey.key:/etc/nginx/ssl/privkey.key:ro
restart: always
ports:
- '0.0.0.0:443:443'
networks:
- remnawave-network
networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true
Iniciar o contêiner
docker compose up -d && docker compose logs -f -t
Abrir o painel no navegador
Abra o nome de domínio configurado no navegador e você verá a página de login.
