Nginx
Descripción general
En esta guía usaremos Nginx como proxy inverso para acceder al panel Remnawave. Apuntaremos un nombre de dominio a nuestro servidor, emitiremos un certificado SSL y configuraremos Nginx.
Necesitas tener un nombre de dominio registrado para continuar.
Apuntar el dominio a tu servidor
Comprueba la dirección IP de tu servidor. Es mejor usar una dirección IPv4 estática.
Ahora, necesitas apuntar tu nombre de dominio a esta dirección IP.
Por ejemplo, sería my-super-panel.com -> 193.122.122.122.
Hay dos formas de hacerlo:
- Usar un proveedor de DNS (p. ej. Cloudflare, Google Cloud, etc.)
- Usar un registrador (p. ej. Namecheap, etc.)
Proveedor DNS
Si usas Cloudflare, necesitas agregar un registro A/AAAA (para IPv4 e IPv6 respectivamente) a tus registros DNS.
Inicia sesión en tu cuenta de Cloudflare aquí y selecciona el dominio deseado.
En el lado izquierdo de la página, haz clic en DNS y luego en Records. Haz clic en Create record.
Establece el Type en A y el Name en @.
Si quieres usar subdominios, debes ingresar el nombre del subdominio (p. ej. panel) en el campo Name.
Ingresa la dirección IP de tu servidor en el campo IPv4 address y haz clic en Save.
Ahora debes esperar un momento para que se actualicen los registros DNS.
Hay una gran diferencia entre la nube amarilla (el dominio está siendo procesado por Cloudflare) y la nube gris (el dominio no está siendo procesado por Cloudflare) en el panel de control de Cloudflare.
Si Cloudflare funciona bien en tu región, es mejor procesar el dominio a través de Cloudflare. (Nube amarilla)

Algunos proveedores de DNS tienen una interfaz diferente, pero el proceso general es el mismo.
Emitir un certificado SSL
Ahora necesita emitir un certificado SSL. La forma más sencilla es usar acme.sh.
Esta guía solo cubre la emisión de certificado SSL para el dominio del panel.
Instalar dependencias
sudo apt-get install cron socat
Instalar acme.sh
Puede usar cualquier dirección de correo electrónico para emitir el certificado, pero se recomienda usar una válida.
Reemplace EMAIL con su dirección de correo electrónico.
curl https://get.acme.sh | sh -s email=EMAIL && source ~/.bashrc
Crear una carpeta para los certificados
mkdir -p /opt/remnawave/nginx && cd /opt/remnawave/nginx
Emitir un certificado
Reemplace DOMAIN con el nombre de dominio para el que desea emitir un certificado.
No use zonas de dominio: .ru, .su, .рф. Actualmente ZeroSSL no soporta estas 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"
Asegúrese de que el puerto 8443 esté abierto en su servidor. Es necesario para la emisión del 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"
Esto muestra que el certificado ha sido emitido. Acme.sh se encargará de renovar automáticamente el certificado cada 60 días, solo asegúrese de que el puerto 8443 esté abierto (y no ocupado) en su servidor.
Configuración de Nginx
Configuración simple
Cree un archivo llamado nginx.conf en el directorio /opt/remnawave/nginx.
cd /opt/remnawave/nginx && nano nginx.conf
Pegue la siguiente configuración.
Por favor, reemplace REPLACE_WITH_YOUR_DOMAIN con su nombre de dominio.
Revise la configuración a continuación, busque las líneas resaltadas en rojo.
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;
}
Crear docker-compose.yml
Cree un archivo docker-compose.yml en el directorio /opt/remnawave/nginx.
cd /opt/remnawave/nginx && nano docker-compose.yml
Pegue la siguiente configuración.
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 el contenedor
docker compose up -d && docker compose logs -f -t
Abrir el panel en el navegador
Abre el nombre de dominio configurado en el navegador y verás la página de inicio de sesión.
