
Installazione di NGINX Proxy Manager su Raspberry Pi come container in Docker
Se stai esponendo porte e servizi dalla tua rete su internet, l’utilizzo di un reverse proxy è un ottimo modo per incrementare le prestazioni e il livello di sicurezza. Un reverse proxy non è altro che un server che si trova tra il tuo router e uno o più server web, e si occupa ad inoltrare le richieste dei client a relativi server web. In parole povere sarà necessario esporre solo un server su internet (utilizzando le porte TCP 80 e 443) e sarai in grado di accedere a tutti i servizi web che desideri e che disponi all’interno della tua rete.
Qui di seguito uno schema esempio che rappresenta il flusso di rete senza l’utilizzo di un reverse proxy.

Senza un reverse proxy, sarà necessario definire porte di rete univoche per ciarcun web server.

Con un reverse proxy, tutto il traffico può essere instradato attraverso le due sole porte TCP 80 e 443.
Assicuriamoci di avere Docker e Docker-compose installati, se non fosse cosi, qui puoi trovare una guida che ho scritto su come installarlo.
Fatta questa premessa, colleghiamoci in SSH sul nostro Raspberry Pi e andiamo a creare la cartella nginx e posizioniamoci all’interno:
mkdir /home/pi/Docker/nginx
cd /home/pi/Docker/nginx
Ora dobbiamo creare un file chiamato config.json
nano config.json
e riportimamo quanto segue:
{
"database": {
"engine": "mysql",
"host": "db",
"name": "npm",
"user": "npm",
"password": "npm",
"port": 3306
}
}
A questo punto possiamo chiudere il file digitando CRTL+X
dopo di che digitiamo Y
o S
(a seconda della lingua impostata) ed infine premiamo il tasto ENTER
per confermare.
Ora andiamo a creare il file docker-compose.yml sempre all’interno della cartella nginx
nano docker-compose.yml
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' ports: - '80:80' - '81:81' - '443:443' volumes: - ./config.json:/app/config/production.json - ./data:/data - ./letsencrypt:/etc/letsencrypt db: image: 'yobasystems/alpine-mariadb:latest' environment: MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' volumes: - ./data/mysql:/var/lib/mysql
Se si riceve un errore o il container non si avvia e riporta di essere in esecuzione come “unhealthy“, segui le istruzioni seguenti:
Sostituisci questa riga all’interno del file docker-compose.yml:
image: 'yobasystems/alpine-mariadb:latest'
con questa:
image: 'yobasystems/alpine-mariadb:10.4.17-arm32v7'
Chiudiamo il file digitando CRTL+X
dopo di che digitiamo Y
o S
(a seconda della lingua impostata) ed infine premiamo il tasto ENTER
per confermare.
sudo docker-compose up -d
A questo punto docker scaricherà e installerà tutti i file necessari per il container.
Ora modificheremo entrambi i contenitori che Nginx Proxy Manager utilizza per far si che si avviino automaticamente al riavvio del tuo Raspberry Pi.
sudo docker update --restart always nginx_app_1 sudo docker update --restart always nginx_db_1
Ora dobbiamo riavviare il nostro Raspberry (fondamentale!!)
sudo reboot now
Al termine del riavvio, l’installazione completa del container richiederà alcuni minuti. Per verificarne lo stato del container, è possibile eseguire il comando seguente.
sudo docker ps
In alternativa al precedente comando, si si ha Portainer installato, è possibile monitorarne lo stato di tutti i container da li.
Quando segnala “healthy“, sarai in grado di aprire la pagina Web di configurazione di Nginx Proxy Manager.
http://[RASPBERRY_PI_IP]:81

le credenziali di default per accedere sono:
Email: admin@example.com
Password: changeme
Quando verrà effettuato l’accesso, ci verrà chiesto di modificare queste informazioni e successivamente visualizzeremo la seguente schermata:

A questo punto, Nginx Proxy Manager è completamente installato. Dovremo aprire le porte TCP 80 e 443 sul nostro router e farle puntare al nostro Raspberry Pi. Dopo di chè, non ci resta che configurare Nginx Proxy Manager.
Buon divertimento!