Pular para o conteúdo principal

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.

aviso

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:

  1. Usar um provedor DNS (ex.: Cloudflare, Google Cloud, etc.)
  2. 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 @.

informação

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.

informação

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)

static

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.

aviso

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

informação

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.

aviso

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"
informação

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.

aviso

Por favor, substitua REPLACE_WITH_YOUR_DOMAIN pelo seu nome de domínio.

Revise a configuração abaixo, procure pelas linhas destacadas em vermelho.

nginx.conf
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.

docker-compose.yml
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.

login-page

Solução de Problemas