Compare commits

...

6 Commits

3 changed files with 110 additions and 38 deletions

View File

@@ -1,19 +0,0 @@
# Ejemplo de variables de entorno para NGINX Proxy Manager
# Zona horaria
TZ=Europe/Madrid
# Puertos (descomentar si quieres cambiarlos)
# HTTP_PORT=80
# HTTPS_PORT=443
# ADMIN_PORT=81
# Base de datos externa (opcional - descomentar si usas MySQL/PostgreSQL)
# DB_MYSQL_HOST=mysql
# DB_MYSQL_PORT=3306
# DB_MYSQL_USER=npm
# DB_MYSQL_PASSWORD=npm_password
# DB_MYSQL_NAME=npm
# Deshabilitar IPv6 (descomentar si tienes problemas con IPv6)
# DISABLE_IPV6=true

122
README.md
View File

@@ -32,23 +32,65 @@ NGINX Proxy Manager es una herramienta de gestión de proxy inverso fácil de us
- **Volúmenes**: - **Volúmenes**:
- `npm_data`: Datos de configuración, base de datos y logs - `npm_data`: Datos de configuración, base de datos y logs
- `npm_letsencrypt`: Certificados SSL de Let's Encrypt - `npm_letsencrypt`: Certificados SSL de Let's Encrypt
- **Red**: `npm_network` dedicada para el stack - **Red**: `proxy` (externa, compartida con otros servicios)
## Pasos de despliegue ## Pasos de despliegue
### 1. Clonar el repositorio ### Opción 1: Docker Compose (Línea de comandos)
#### 1. Clonar el repositorio
```bash ```bash
git clone https://git.ictiberia.com/groales/npm git clone https://git.ictiberia.com/groales/npm
cd npm cd npm
``` ```
### 2. Levantar el stack #### 3. Levantar el stack
```bash ```bash
docker compose up -d docker compose up -d
``` ```
### Opción 2: Desplegar desde Portainer (Recomendado)
#### 1. Red proxy
La red `proxy` se creará automáticamente al desplegar el stack de NPM.
#### 2. Conectar Portainer a la red proxy
**Containers**`portainer`**Duplicate/Edit**
- En **Network****+ Connect to network** → Seleccionar `proxy`
- **Deploy**
O añadir a `docker-compose.override.yaml` de Portainer:
```yaml
services:
portainer:
networks:
- proxy
networks:
proxy:
external: true
```
#### 3. Desplegar stack de NPM
**Stacks****Add stack**
- **Name**: `nginx-proxy-manager`
- **Build method**:
- **Git Repository**:
- Repository URL: `https://git.ictiberia.com/groales/npm`
- Repository reference: `refs/heads/main`
- Compose path: `docker-compose.yml`
- O **Web editor**: Pegar contenido de `docker-compose.yml`
- **Deploy the stack**
#### 4. Verificar despliegue
**Stacks**`nginx-proxy-manager` → Ver logs del contenedor
### 3. Verificar el estado ### 3. Verificar el estado
```bash ```bash
@@ -89,6 +131,32 @@ Abre tu navegador en: **http://IP-del-servidor:81**
✅ En pocos segundos tendrás un proxy HTTPS funcionando con certificado válido. ✅ En pocos segundos tendrás un proxy HTTPS funcionando con certificado válido.
### Ejemplo: Proxy a Portainer (Contenedores en Red Compartida)
Si Portainer y NPM están en la misma red `proxy`:
1. **Crear Proxy Host** en NPM:
- **Domain Names**: `portainer.tudominio.com`
- **Scheme**: `https` (Portainer usa HTTPS)
- **Forward Hostname/IP**: `portainer` (nombre del contenedor)
- **Forward Port**: `9443`
- **Cache Assets**: ❌
- **Block Common Exploits**: ✅
- **Websockets Support**: ✅ (necesario para Portainer)
2. **Pestaña SSL**:
-**Request a new SSL Certificate**
-**Force SSL**
-**HTTP/2 Support**
- Email: `tu@email.com`
-**I Agree to Let's Encrypt ToS**
3. **Save**
Accede a: `https://portainer.tudominio.com` 🎉
💡 **Ventaja**: No necesitas exponer el puerto 9443 de Portainer, NPM gestiona todo el tráfico HTTPS.
## Configuración avanzada ## Configuración avanzada
### Variables de entorno ### Variables de entorno
@@ -105,7 +173,7 @@ HTTPS_PORT=443
ADMIN_PORT=81 ADMIN_PORT=81
``` ```
Luego modifica `docker-compose.yaml`: Luego modifica `docker-compose.yml`:
```yaml ```yaml
environment: environment:
@@ -118,24 +186,48 @@ ports:
### Integración con redes Docker ### Integración con redes Docker
Para proxy a contenedores en otras redes Docker: Este stack usa la red `proxy` (externa) para compartir conectividad con otros servicios Docker.
#### Conectar otros servicios a la red proxy
**Opción 1: Desde Portainer**
Para cada stack/contenedor que quieras exponer via NPM:
1. **Containers** → Seleccionar contenedor → **Duplicate/Edit**
2. **Network****+ Connect to network** → `proxy`
3. **Deploy**
**Opción 2: En docker-compose.yaml**
```yaml ```yaml
services: services:
app: mi_servicio:
# ... configuración existente ... # ... configuración existente ...
networks: networks:
- npm_network - mi_red_interna
- otra_red_docker - proxy # Añadir red proxy
networks: networks:
npm_network: mi_red_interna:
name: npm_network name: mi_red_interna
otra_red_docker: proxy:
external: true external: true # Red creada por NPM
``` ```
Luego en NPM usa el **nombre del contenedor** como Forward Hostname (ej: `portainer`). #### Configurar Proxy Host en NPM
Una vez el servicio esté en la red `proxy`:
- **Forward Hostname**: Usar **nombre del contenedor** (ej: `portainer`, `jellyfin`, `nextcloud`)
- **Forward Port**: Puerto **interno** del contenedor (no necesitas publicarlo con `-p`)
**Ejemplo**: Si tienes Jellyfin corriendo:
- Container name: `jellyfin`
- Puerto interno: `8096`
- En NPM: Forward Hostname = `jellyfin`, Port = `8096`
💡 **Ventaja**: No expones puertos innecesarios al host, todo el tráfico pasa por NPM.
## Documentación adicional ## Documentación adicional
@@ -143,8 +235,6 @@ Consulta la [**Wiki del proyecto**](https://git.ictiberia.com/groales/npm/wiki)
- [Guía de Configuración](https://git.ictiberia.com/groales/npm/wiki/Configuracion) - [Guía de Configuración](https://git.ictiberia.com/groales/npm/wiki/Configuracion)
- [Certificados SSL/TLS](https://git.ictiberia.com/groales/npm/wiki/SSL) - [Certificados SSL/TLS](https://git.ictiberia.com/groales/npm/wiki/SSL)
- [Backup y Restauración](https://git.ictiberia.com/groales/npm/wiki/Backup)
- [Configuración Avanzada](https://git.ictiberia.com/groales/npm/wiki/Avanzado)
## Solución de problemas ## Solución de problemas
@@ -158,7 +248,7 @@ Get-NetTCPConnection -LocalPort 80
# o en Linux # o en Linux
sudo netstat -tulpn | grep :80 sudo netstat -tulpn | grep :80
# Cambiar puerto en docker-compose.yaml # Cambiar puerto en docker-compose.yml
ports: ports:
- "8080:80" # HTTP en puerto 8080 - "8080:80" # HTTP en puerto 8080
``` ```

View File

@@ -13,7 +13,7 @@ services:
- npm_data:/data - npm_data:/data
- npm_letsencrypt:/etc/letsencrypt - npm_letsencrypt:/etc/letsencrypt
networks: networks:
- npm_network - proxy
volumes: volumes:
npm_data: npm_data:
@@ -22,5 +22,6 @@ volumes:
name: npm_letsencrypt name: npm_letsencrypt
networks: networks:
npm_network: proxy:
name: npm_network name: proxy
driver: bridge