Salta al contenuto principale
Dal blog

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

Come ho configurato Nginx Proxy Manager in un container LXC su Proxmox, con Docker e tutte le ottimizzazioni che mi permettono di gestire in modo semplice e sicuro i proxy dei miei servizi.

Foto profilo di Alessandro IannaconeAlessandro Iannacone

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!


Per una consulenza o una verifica della tua situazione:

Contattami qui

Discussione