Published on

Docker + Nginx Proxy Manager in LXC su Proxmox: la mia configurazione ideale

Authors
  • avatar
    Name
    Alessandro Iannacone
    Twitter

In questo articolo condivido la mia configurazione attuale per far girare Nginx Proxy Manager (NPM) dentro un container LXC su Proxmox, usando Docker. È il cuore della mia infrastruttura self-hosted e mi permette di gestire i reverse proxy HTTPS di tutti i miei servizi (da portainer a Grafana, da blog a backend API) in modo facile, visuale e sicuro.


🎯 Obiettivo

Volevo un setup che fosse:

  • ✅ Leggero e isolato
  • ✅ Facile da ripristinare o clonare
  • ✅ Gestibile da interfaccia web (no solo nginx.conf)
  • ✅ Compatibile con certificati Let's Encrypt automatici
  • ✅ Pronto per future espansioni (es. autenticazione, rate limiting, etc.)

🏗️ Ambiente di base

  • Hypervisor: Proxmox VE 8.x
  • Container: LXC Debian 12 (privilegiato)
  • Strumenti: Docker + Docker Compose
  • Proxy: Nginx Proxy Manager (con dashboard web)

⚙️ Passaggi chiave

1. Creazione del container LXC

Nel mio caso:

pct create 105 local:vztmpl/debian-12-standard_*.tar.zst \
  --hostname npm \
  --cores 2 \
  --memory 1024 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --features keyctl=1,nesting=1 \
  --unprivileged 0 \
  --rootfs local-lvm:10

🔐 Nota: uso un container privilegiato perché Docker ne ha bisogno per funzionare correttamente su LXC.

Poi attivo nesting:

pct set 105 -features nesting=1,keyctl=1

2. Installazione di Docker

Nel container:

apt update && apt install -y curl gnupg2 ca-certificates lsb-release software-properties-common

curl -fsSL https://get.docker.com | sh

# opzionale: docker compose v2
apt install docker-compose-plugin

3. Docker Compose per NPM

Nel container creo una cartella /opt/npm con dentro questo docker-compose.yml:

version: '3'
services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - 80:80
      - 81:81  # interfaccia web
      - 443:443
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Poi avvio:

docker compose up -d

🔐 Accesso e configurazione

L'interfaccia è accessibile su:

http://<IP_CONTAINER>:81

Credenziali predefinite:

La prima cosa da fare è cambiarle e poi iniziare ad aggiungere proxy host. Ogni dominio può avere:

  • Redirect
  • Certificato Let's Encrypt
  • Header custom
  • Autenticazione HTTP basic

📌 Ottimizzazioni utili

🔄 Backup veloce

Creo backup automatici delle cartelle data e letsencrypt (via rsync o Proxmox snapshot). In questo modo posso ripristinare il container e riavere tutti i proxy configurati in pochi minuti.

📈 Monitoraggio

Uso anche un container con Uptime Kuma per controllare che tutti i proxy siano up & running. Facile da integrare.


🚀 Considerazioni finali

Questa configurazione mi ha semplificato enormemente la gestione dei miei servizi. Usare un container LXC leggero, con Docker dentro, permette di avere un buon compromesso tra flessibilità e efficienza.

Se usi Proxmox e ti serve un reverse proxy moderno, NPM in LXC è una scelta che consiglio senza esitazioni.


💬 Domande o suggerimenti?

Scrivimi via email se vuoi condividere la tua configurazione o hai dubbi tecnici!