Padloc è una soluzione di gestione delle password basata su cloud che ti consente di accedere e utilizzare le password salvate su più piattaforme. Offre un'interfaccia semplice e può essere utilizzato per salvare le password e può crittografare e archiviare documenti sensibili. Supporta anche la memorizzazione di token di autenticazione a due fattori e può aggiungerli direttamente dalla pagina web.
Padloc offre anche una soluzione self-hosted open source che puoi installare su qualsiasi server per mantenere il controllo completo sui tuoi dati. Tuttavia, c'è un avvertimento a questo. Non è possibile utilizzare l'applicazione self-hosted con le sue app desktop e mobili. Il lato positivo è che Padloc è servito come PWA (progressive web app), il che significa che puoi installarlo come applicazione nativa su dispositivi mobili e sfruttare molte delle sue funzionalità.
In questo tutorial imparerai come installare Padloc Password Manager su un server basato su Rocky Linux 8.
Prerequisiti
- Un server che esegue Rocky Linux 8 con un minimo di 1 GB di RAM.
- Un utente non root con privilegi sudo.
- Un nome di dominio completo (FQDN) che punta al server come
example.com
. Daremo per scontato che utilizzerai un solo nome di dominio per questo server per questo tutorial.
Fase 1 - Firewall
Il primo passo è configurare il firewall. Rocky Linux utilizza Firewalld Firewall. Controlla lo stato del firewall.
$ sudo firewall-cmd --state running
Il firewall funziona con diverse zone e la zona pubblica è quella predefinita che useremo. Elenca tutti i servizi e le porte attive sul firewall.
$ sudo firewall-cmd --permanent --list-services
Dovrebbe mostrare il seguente output.
cockpit dhcpv6-client ssh
Consenti porte HTTP e HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Ricontrolla lo stato del firewall.
$ sudo firewall-cmd --permanent --list-services
Dovresti vedere un output simile.
cockpit dhcpv6-client http https ssh
Ricarica il firewall per abilitare le modifiche.
$ sudo firewall-cmd --reload
Passaggio 2 - Installa Docker
Rocky Linux viene fornito con una versione precedente di Docker. Per installare l'ultima versione, prima installa il repository Docker ufficiale.
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Installa l'ultima versione di Docker.
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Abilita ed esegui il demone Docker.
$ sudo systemctl enable docker --now
Verifica che sia in esecuzione.
$ sudo systemctl status docker ? docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2022-04-09 22:43:21 UTC; 30s ago Docs: https://docs.docker.com Main PID: 43005 (dockerd) Tasks: 7 Memory: 90.5M CGroup: /system.slice/docker.service ??43005 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ....
Per impostazione predefinita, Docker richiede i privilegi di root. Se vuoi evitare di usare sudo
ogni volta che esegui la docker
comando, aggiungi il tuo nome utente alla docker
gruppo.
$ sudo usermod -aG docker $(whoami)
Dovrai disconnetterti dal server e riconnetterti come lo stesso utente per abilitare questa modifica.
Passaggio 3:installazione di Docker-Compose
Scarica l'ultima versione stabile di Docker Compose.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Applica le autorizzazioni eseguibili al file binario Docker Compose.
$ sudo chmod +x /usr/local/bin/docker-compose
Testare l'installazione.
$ docker-compose --version docker-compose version 1.29.2, build 5becea4c
Installa lo script Docker-compose Bash Completion.
$ sudo curl \ -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \ -o /etc/bash_completion.d/docker-compose
Ricarica le impostazioni del tuo profilo per far funzionare il completamento di bash.
$ source ~/.bashrc
Fase 4:crea directory di dati
Crea una directory per padloc.
$ mkdir ~/padloc
Passa alla directory padloc.
$ cd ~/padloc
Crea directory per il database utente, i registri delle applicazioni, gli allegati, l'app PWA e la configurazione SSL.
$ mkdir {attachments,db,logs,pwa,ssl}
Crea una directory per i log di Nginx.
$ mkdir logs/nginx
Passaggio 5:crea un file di composizione Docker
Crea e apri il ~/padloc/docker-compose.yml
file per la modifica.
$ nano docker-compose.yml
Incolla il seguente codice al suo interno.
version: "3" services: server: image: padloc/server container_name: padloc_server restart: unless-stopped #ports: # - ${PL_SERVER_PORT:-3000}:3000 expose: - 3000 volumes: - ${PL_DB_DIR:-./db}:/data:Z - ${PL_ATTACHMENTS_DIR:-./attachments}:/docs:Z - ./logs:/logs:Z environment: - PL_PWA_URL - PL_EMAIL_SERVER - PL_EMAIL_PORT - PL_EMAIL_USER - PL_EMAIL_PASSWORD - PL_EMAIL_FROM pwa: image: padloc/pwa container_name: padloc_pwa restart: unless-stopped #ports: # - ${PL_PWA_PORT:-8080}:8080 expose: - 8080 volumes: - ${PL_PWA_DIR:-./pwa}:/pwa:Z environment: - PL_SERVER_URL nginx: image: nginx container_name: nginx restart: unless-stopped volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ${PL_SSL_CERT:-./ssl/cert.pem}:/ssl/cert - ${PL_SSL_KEY:-./ssl/key.pem}:/ssl/key - ${PL_SSL_CONF:-./ssl/ssl.conf}:/ssl/ssl.conf - /etc/ssl/certs/dhparam.pem:/ssl/dhparam.pem - ./logs/nginx:/var/log/nginx:Z ports: - 80:80 - 443:443
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Stiamo utilizzando tre immagini Docker per Padloc.
-
L'immagine del server - contiene tutta la logica di backend per l'applicazione. Funziona sulla porta 3000 per impostazione predefinita. Abbiamo decommentato la variabile delle porte nel nostro file di composizione per rendere la porta invisibile al server. Invece, utilizziamo la variabile di esposizione per esporre la porta all'interno del motore Docker al contenitore Nginx. Le variabili di ambiente per l'immagine verranno configurate in seguito. Abbiamo anche mappato le directory per un database utente, allegati e registri dell'applicazione.
-
L'immagine PWA - contiene il frontend dell'applicazione. Funziona sulla porta 8080 per impostazione predefinita. Per quanto riguarda l'immagine del server, abbiamo nascosto la sezione delle porte per questa immagine ed esposto la porta all'interno del motore Docker. Abbiamo mappato la directory per l'app web.
-
L'immagine di Nginx - contiene l'applicazione server Nginx. Abbiamo le porte per HTTP(80) e HTTPS(443) al server per renderlo accessibile dall'esterno. Abbiamo mappato diverse directory e file per farlo funzionare.
- Il primo file è
nginx.conf
che contiene tutte le principali configurazioni di Nginx per servire l'applicazione padloc. - I prossimi due file,
cert.pem
ekey.pem
sono il certificato SSL e le chiavi che genereremo utilizzando Let's encrypt. - Il file
ssl.conf
contiene ulteriori informazioni sulla fornitura di SSL tramite Nginx. - Il file
dhparam.pem
è servire il gruppo Diffie-Hellman certificato. - L'ultima voce è mappare i log di Nginx sul server in modo da poterli accedere al di fuori di Docker.
- Il primo file è
-
Il
:Z
flag alla fine dei mapping delle cartelle indica che quelle directory saranno accessibili solo dai rispettivi contenitori. Questo viene fatto poiché SELINUX è abilitato sul nostro server. Se non stai usando SELinux, puoi rimuovere il flag.
Fase 6 - Configura NGinx
Crea e apri il file ~/padloc/nginx.conf
per la modifica.
$ nano nginx.conf
Incolla il seguente codice al suo interno.
http { # This is required if you want to upload attachments client_max_body_size 10m; # Redirect all http traffic to https server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://$host$request_uri; } server { # We don't need a host name here since we're only # dealing with one domain, but you may insert your domain here. server_name _; # Both server and pwa are served over https listen 443 ssl http2; listen [::]:443 ssl http2; # This will resolve to the server instance location /server/ { proxy_pass http://padloc_server:3000; rewrite ^/padloc_server(.*)$ $1 break; } # This will resolve to the web app location / { proxy_pass http://padloc_pwa:8080; rewrite ^/padloc_pwa(.*)$ $1 break; } # SSL certificate ssl_certificate /ssl/cert; # SSL private key ssl_certificate_key /ssl/key; # Add this file to add advanced ssl configuration include /ssl/ssl.conf; } } # This section is required by nginx events {}
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
La configurazione di cui sopra inoltra tutte le richieste effettuate dal padloc_server
contenitore al /server
posizione del nome a dominio ed eventuali richieste effettuate dal padlock_pwa
contenitore alla radice. Reindirizza anche tutto il traffico HTTP su HTTPS. Abbiamo anche impostato la dimensione del caricamento del file su 10 MB per gli allegati. È possibile modificare la dimensione secondo le vostre esigenze. Le impostazioni SSL sono state incluse tramite un file esterno che configureremo in seguito.
Passaggio 7:crea un file di ambiente
Crea e apri il ~/padloc/.env
file per la modifica.
$ nano .env
Incolla il seguente codice al suo interno.
# GENERAL SETTINGS # ================ # URL that will resolve to the server instance PL_PWA_URL=https://example.com/ # URL that will resolve to the web app PL_SERVER_URL=https://example.com/server/ # SERVER SETTINGS # =============== # Port the server instance will listen on PL_SERVER_PORT=3000 # Directory where database files will be stored PL_DB_DIR=./db # Directory where attachment files will be stored PL_ATTACHMENTS_DIR=./attachments # PWA SETTINGS # ============ # Port the web app will be served from PL_PWA_PORT=8080 # Directory where the static code for the web app will be stored PL_PWA_DIR=./pwa # EMAIL SETTINGS # ============= # SMTP host PL_EMAIL_SERVER=smtp.example.com # SMTP username [email protected] # SMTP port PL_EMAIL_PORT=443 # SMTP password PL_EMAIL_PASSWORD=your_smtp_password # Always use TLS when sending emails # PL_EMAIL_SECURE=false # Email ID to send mails from [email protected] # SSL SETTINGS # ============ # The path to your ssl certificate PL_SSL_CERT=/etc/letsencrypt/live/example.com/fullchain.pem # The path to your ssl private key PL_SSL_KEY=/etc/letsencrypt/live/example.com/privkey.pem # Advanced configuration file PL_SSL_CONF=./ssl/ssl.conf
Salva il file premendo Ctrl + X e inserendo Y quando richiesto. La maggior parte delle impostazioni sono autoesplicative. La configurazione di Nginx esistente prevede che l'app venga servita tramite il dominio principale e il server tramite /server
directory. Il PL_PWA_DIR
non è obbligatorio impostarlo qui e nel file Docker-compose ma averlo velocizza l'avvio del contenitore e, quindi, dovresti sempre impostarlo.
Padloc richiede la possibilità di inviare e-mail per funzionalità come la verifica di nuovi utenti, l'autenticazione a due fattori e la reimpostazione delle password. Pertanto, i dettagli SMTP sono obbligatori.
Per la funzione SSL, utilizziamo le directory predefinite Let's Encrypt in cui si trovano i certificati. La configurazione SSL aggiuntiva verrà fornita tramite il file /ssl/ssl.conf
.
Passaggio 8 - Installa SSL
Per installare un certificato SSL utilizzando Let's Encrypt, è necessario installare lo strumento Certbot.
Innanzitutto, devi scaricare e installare il repository EPEL.
$ sudo dnf install epel-release
Esegui i seguenti comandi per installare Certbot.
$ sudo dnf install certbot
Genera il certificato SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com
Il comando precedente scaricherà un certificato in /etc/letsencrypt/live/example.com
directory sul tuo server.
Genera un gruppo Diffie-Hellman certificato.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni settimana per controllare il certificato e rinnovarlo se necessario. Per questo, prima crea il file /etc/cron.weekly/certbot-renew
e aprilo per la modifica.
$ sudo nano /etc/cron.weekly/certbot-renew
Incolla il codice seguente. Utilizziamo i comandi Docker per avviare, arrestare e riavviare il container Nginx a seconda dello stato di rinnovo.
#!/bin/sh certbot renew --cert-name example.com --pre-hook "docker stop nginx" --post-hook "docker start nginx" --renew-hook "docker restart nginx"
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Modifica le autorizzazioni sul file dell'attività per renderlo eseguibile.
$ sudo chmod +x /etc/cron.weekly/certbot-renew
Fase 9 - Configura SSL
Crea e apri il file ~/padloc/ssl/ssl.conf
per la modifica.
$ nano ssl/ssl.conf
Incolla il seguente codice al suo interno.
ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_prefer_server_ciphers off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /ssl/dhparam.pem; resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s; resolver_timeout 2s;
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Il file precedente introduce alcune impostazioni SSL consigliate per rendere il tuo sito più sicuro. Limita i protocolli TLS a v1.2 e v1.3 e abilita la pinzatura e la verifica OCSP (Online Certificate Status Protocol).
Fase 10 - Esegui Padloc
Ora che hai configurato tutto esegui Padloc usando il seguente comando.
$ docker-compose up -d
Controlla lo stato dei contenitori.
$ docker ps
Dovresti ottenere un output simile.
Fase 11 - Accedi e configura Padloc
Apri l'URL https://example.com
nel tuo browser e raggiungerai la sua pagina di accesso.
Fai clic su Registrati ora link per avviare la registrazione.
Inserisci il tuo nome e indirizzo e-mail e premi Continua per procedere.
Padloc ti invierà una mail con un codice di conferma. Inserisci il codice di conferma nella casella in alto e premi Continua per procedere.
Padloc genererà automaticamente una password principale per te. Passa il mouse sopra la casella e copialo. Incollalo di nuovo nella casella sottostante. Puoi anche scegliere di utilizzare la tua password. Premi Continua al termine.
Verrai indirizzato alla Homepage di Padloc. Puoi iniziare a salvare i tuoi dati di accesso e documenti sensibili.
Fase 12 - Aggiorna Padloc
L'aggiornamento di Padloc è un processo in due fasi. Per prima cosa, passa alla directory Padloc.
$ cd ~/padloc
Spegni e rimuovi i contenitori Padloc esistenti.
$ docker-compose down --remove-orphans
Estrai le ultime immagini.
$ docker-compose pull
Riavvia i contenitori.
$ docker-compose up -d
Conclusione
Questo conclude il nostro tutorial sull'installazione di Padloc Self-hosted password manager su un server Rocky Linux 8. Se hai domande, pubblicale nei commenti qui sotto.