Padloc Password Manager te installeren op Rocky Linux 8
Padloc is een cloud-gebaseerde oplossing voor wachtwoordbeheer waarmee je je opgeslagen wachtwoorden op meerdere platforms kunt inzien en gebruiken. Het biedt een eenvoudige interface en kan gebruikt worden om je wachtwoorden op te slaan en kan gevoelige documenten versleutelen en opslaan. Het ondersteunt ook het opslaan van twee-factor authenticatie tokens en kan deze direct vanaf de webpagina toevoegen.
Padloc biedt ook een open-source self-hosted oplossing die je op elke server kunt installeren om volledige controle over je gegevens te houden. Hier zit echter een voorbehoud aan vast. Je kunt de zelf gehoste toepassing niet gebruiken met zijn desktop en mobiele apps. Aan de positieve kant wordt Padloc geserveerd als een PWA (Progressive web app), wat betekent dat je het als een native applicatie op mobiel kunt installeren en gebruik kunt maken van verschillende van zijn functies.
In deze tutorial leer je hoe je Padloc Password Manager installeert op een Rocky Linux 8 gebaseerde server.
Voorwaarden
- Een server met Rocky Linux 8 met minimaal 1 GB RAM.
- Een niet-root gebruiker met sudo rechten.
- Een Fully Qualified Domain Name (FQDN) die naar de server wijst zoals
example.com
. We nemen aan dat je voor deze tutorial slechts één domeinnaam gebruikt voor deze server.
Stap 1 – Firewall
De eerste stap is het configureren van de firewall. Rocky Linux gebruikt Firewalld Firewall. Controleer de status van de firewall.
$ sudo firewall-cmd --state running
De firewall werkt met verschillende zones, en de publieke zone is de standaardzone die we zullen gebruiken. Maak een lijst van alle diensten en poorten die actief zijn op de firewall.
$ sudo firewall-cmd --permanent --list-services
Het zou de volgende uitvoer moeten tonen.
cockpit dhcpv6-client ssh
Sta HTTP en HTTPS poorten toe.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Controleer opnieuw de status van de firewall.
$ sudo firewall-cmd --permanent --list-services
Je zou een soortgelijke uitvoer moeten zien.
cockpit dhcpv6-client http https ssh
Herlaad de firewall om de wijzigingen in te schakelen.
$ sudo firewall-cmd --reload
Stap 2 – Docker installeren
Rocky Linux wordt geleverd met een oudere versie van Docker. Om de nieuwste versie te installeren, installeer je eerst de officiële Docker repository.
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Installeer de nieuwste versie van Docker.
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Activeer en draai de Docker daemon.
$ sudo systemctl enable docker --now
Controleer of hij draait.
$ 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 ....
Standaard heeft Docker rootrechten nodig. Als je wilt voorkomen dat je telkens sudo
gebruikt als je het commando docker
uitvoert, voeg dan je gebruikersnaam toe aan de groep docker
.
$ sudo usermod -aG docker $(whoami)
Je moet uitloggen van de server en weer inloggen als dezelfde gebruiker om deze wijziging mogelijk te maken.
Stap 3 – Installeer Docker-Compose
Download de laatste stabiele versie van 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
Pas uitvoerbare rechten toe op het Docker Compose binaire bestand.
$ sudo chmod +x /usr/local/bin/docker-compose
Test de installatie.
$ docker-compose --version docker-compose version 1.29.2, build 5becea4c
Installeer het Docker-compose Bash Completion script.
$ sudo curl \ -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \ -o /etc/bash_completion.d/docker-compose
Herlaad je profielinstellingen om de bash-completion te laten werken.
$ source ~/.bashrc
Stap 4 – Maak gegevensdirectories aan
Maak een directory aan voor padloc.
$ mkdir ~/padloc
Ga naar de padloc-map.
$ cd ~/padloc
Maak mappen voor de gebruikersdatabase, toepassingslogs, bijlagen, de PWA app en SSL-configuratie.
$ mkdir {attachments,db,logs,pwa,ssl}
Maak een directory voor Nginx logs.
$ mkdir logs/nginx
Stap 5 – Maak Docker Compose bestand aan
Maak en open het ~/padloc/docker-compose.yml
bestand om te bewerken.
$ nano docker-compose.yml
Plak er de volgende code in.
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
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom wordt gevraagd.
We gebruiken drie Docker images voor Padloc.
- Het Server image – bevat alle backend logica voor de applicatie. Het draait standaard op poort 3000. We hebben de ports variabele in ons compose bestand uitgecommentarieerd om de poort onzichtbaar te maken voor de server. In plaats daarvan gebruiken we de expose variabele om de poort in de Docker engine bloot te stellen aan de Nginx container. De omgevingsvariabelen voor de image worden later geconfigureerd. We hebben ook mappen in kaart gebracht voor een gebruikersdatabase, bijlage en toepassingslogs.
- Het PWA image – bevat de voorkant van de applicatie. Het draait standaard op poort 8080. Voor het server image hebben we de poorten sectie voor dit image verborgen en de poort in de Docker engine blootgesteld. We hebben de directory voor de web-app in kaart gebracht.
- Het Nginx image – bevat de Nginx server applicatie. We hebben de poorten voor HTTP(80) en HTTPS(443) aan de server gekoppeld om hem van buitenaf toegankelijk te maken. We hebben verschillende mappen en bestanden in kaart gebracht om het te laten werken.
- Het eerste bestand is
nginx.conf
dat alle hoofdconfiguraties voor Nginx bevat om de padloc applicatie te dienen. - De volgende twee bestanden,
cert.pem
enkey.pem
zijn het SSL-certificaat en de sleutels die we zullen genereren met Let’s encrypt. - Het bestand
ssl.conf
bevat aanvullende informatie over het serveren van SSL via Nginx. - Het bestand
dhparam.pem
is om het Diffie-Hellman groepscertificaat te serveren. - De laatste vermelding is om de Nginx logs terug te mappen naar de server, zodat je er buiten Docker bij kunt.
- Het eerste bestand is
- De
:Z
vlag aan het eind van de map mappings geeft aan dat die mappen alleen toegankelijk zullen zijn vanuit de respectievelijke containers. Dit wordt gedaan omdat SELINUX is ingeschakeld op onze server. Als je SELinux niet gebruikt, dan kun je de vlag verwijderen.
Stap 6 – NGinx configureren
Maak het bestand ~/padloc/nginx.conf
aan en open het om te bewerken.
$ nano nginx.conf
Plak er de volgende code in.
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 {}
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom wordt gevraagd.
De bovenstaande configuratie stuurt alle verzoeken van de padloc_server
container door naar de /server
locatie van de domeinnaam en alle verzoeken van de padlock_pwa
container naar de root. Ook wordt al het HTTP verkeer omgeleid naar HTTPS. We hebben ook de uploadgrootte van bestanden ingesteld op 10 MB voor bijlagen. Je kunt de grootte naar wens aanpassen. De SSL instellingen zijn opgenomen via een extern bestand dat we later zullen configureren.
Stap 7 – Omgevingsbestand maken
Maak het bestand ~/padloc/.env
aan en open het om te bewerken.
$ nano .env
Plak er de volgende code in.
# 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
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom wordt gevraagd. De meeste instellingen spreken voor zich. De bestaande Nginx configuratie verwacht dat de app geserveerd wordt via het hoofddomein en de server via /server
directory. De PL_PWA_DIR
is niet verplicht om hier en in het Docker-compose bestand in te stellen, maar het hebben ervan versnelt het opstarten van de container, en daarom zou je het altijd moeten instellen.
Padloc heeft de mogelijkheid nodig om e-mails te versturen voor functies als het verifiëren van nieuwe gebruikers, twee-factor authenticatie en het resetten van wachtwoorden. Daarom zijn SMTP-gegevens verplicht.
Voor de SSL-functie gebruiken we standaardmappen van Let’s Encrypt waar de certificaten zich bevinden. De aanvullende SSL configuratie wordt verstrekt via het bestand /ssl/ssl.conf
.
Stap 8 – SSL installeren
Om een SSL-certificaat te installeren met Let’s Encrypt, moeten we het hulpprogramma Certbot installeren.
Eerst moet je de EPEL repository downloaden en installeren.
$ sudo dnf install epel-release
Voer de volgende commando’s uit om Certbot te installeren.
$ sudo dnf install certbot
Genereer het SSL-certificaat.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com
Het bovenstaande commando zal een certificaat downloaden naar de /etc/letsencrypt/live/example.com
directory op je server.
Genereer een Diffie-Hellman groepscertificaat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Maak een Cron Job aan om de SSL te vernieuwen. Deze zal elke week worden uitgevoerd om het certificaat te controleren en zo nodig te vernieuwen. Maak daarvoor eerst het bestand /etc/cron.weekly/certbot-renew
aan en open het voor bewerking.
$ sudo nano /etc/cron.weekly/certbot-renew
Plak er de volgende code in. We gebruiken de Docker commando’s om de Nginx container te starten, stoppen en herstarten, afhankelijk van de vernieuwingsstatus.
#!/bin/sh certbot renew --cert-name example.com --pre-hook "docker stop nginx" --post-hook "docker start nginx" --renew-hook "docker restart nginx"
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom wordt gevraagd.
Wijzig de rechten op het taakbestand om het uitvoerbaar te maken.
$ sudo chmod +x /etc/cron.weekly/certbot-renew
Stap 9 – SSL configureren
Maak en open het bestand ~/padloc/ssl/ssl.conf
om te bewerken.
$ nano ssl/ssl.conf
Plak er de volgende code in.
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;
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom wordt gevraagd.
Het bovenstaande bestand introduceert enkele aanbevolen SSL-instellingen om je site veiliger te maken. Het beperkt TLS protocollen tot v1.2 en v1.3 en schakelt Online Certificate Status Protocol (OCSP) nieten en verificatie in.
Stap 10 – Voer Padloc uit
Nu je alles hebt geconfigureerd voer je Padloc uit met het volgende commando.
$ docker-compose up -d
Controleer de status van de containers.
$ docker ps
U zou een soortgelijke uitvoer moeten krijgen.
Stap 11 – Open en configureer Padloc
Open de URL https://example.com
in je browser, en je komt op de aanmeldingspagina.
Klik op de Sign up Now link om de registratie te starten.
Voer je naam en e-mailadres in, en druk op de knop Doorgaan om verder te gaan.
Padloc stuurt je een e-mail met een bevestigingscode. Voer de bevestigingscode in het vak hierboven in, en druk op Doorgaan om verder te gaan.
Padloc genereert automatisch een hoofdwachtwoord voor je. Beweeg over het vakje en kopieer het. Plak het weer in het vakje eronder. Je kunt er ook voor kiezen om je wachtwoord te gebruiken. Druk op Doorgaan als je klaar bent.
Je komt nu op de Padloc Homepage. Je kunt beginnen met het opslaan van je inloggegevens en gevoelige documenten.
Stap 12 – Padloc bijwerken
Het bijwerken van Padloc gaat in twee stappen. Ga eerst naar de Padloc-map.
$ cd ~/padloc
Sluit de bestaande Padloc containers af en verwijder ze.
$ docker-compose down --remove-orphans
Haal de nieuwste images op.
$ docker-compose pull
Start de containers weer op.
$ docker-compose up -d
Conclusie
Dit besluit onze tutorial over het installeren van Padloc Self-hosted password manager op een Rocky Linux 8 server. Als je vragen hebt, post ze dan in de opmerkingen hieronder.