Compare commits
6 Commits
dbe1b1d74b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 24f184c947 | |||
| 28148e1e1b | |||
| e3b184fede | |||
| ae4f9650f0 | |||
| 32d99581ed | |||
| 2f14160037 |
19
.env.example
19
.env.example
@@ -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
122
README.md
@@ -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
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user