Padloc ist eine Cloud-basierte Passwortverwaltungslösung, mit der Sie auf Ihre gespeicherten Passwörter auf mehreren Plattformen zugreifen und diese verwenden können. Es bietet eine einfache Schnittstelle und kann verwendet werden, um Ihre Passwörter zu speichern und sensible Dokumente zu verschlüsseln und zu speichern. Es unterstützt auch das Speichern von Zwei-Faktor-Authentifizierungstoken und kann diese direkt von der Webseite hinzufügen.
Padloc bietet auch eine selbst gehostete Open-Source-Lösung, die Sie auf jedem Server installieren können, um die vollständige Kontrolle über Ihre Daten zu behalten. Dies hat jedoch einen Vorbehalt. Sie können die selbst gehostete Anwendung nicht mit ihren Desktop- und mobilen Apps verwenden. Auf der positiven Seite wird Padloc als PWA (Progressive Web App) bereitgestellt, was bedeutet, dass Sie es als native Anwendung auf Mobilgeräten installieren und mehrere seiner Funktionen nutzen können.
In diesem Tutorial erfahren Sie, wie Sie den Padloc Password Manager auf einem Rocky Linux 8-basierten Server installieren.
Voraussetzungen
- Ein Server mit Rocky Linux 8 und mindestens 1 GB RAM.
- Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.
- Ein vollqualifizierter Domänenname (FQDN), der auf den Server verweist, z. B.
example.com
. Wir gehen davon aus, dass Sie für dieses Tutorial nur einen Domänennamen für diesen Server verwenden werden.
Schritt 1 – Firewall
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux verwendet Firewalld Firewall. Überprüfen Sie den Status der Firewall.
$ sudo firewall-cmd --staterunning
Die Firewall arbeitet mit verschiedenen Zonen, und die öffentliche Zone ist die Standardzone, die wir verwenden werden. Listet alle Dienste und Ports auf, die auf der Firewall aktiv sind.
$ sudo firewall-cmd --permanent --list-services
Es sollte die folgende Ausgabe zeigen.
cockpit dhcpv6-client ssh
HTTP- und HTTPS-Ports zulassen.
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Überprüfen Sie den Status der Firewall erneut.
$ sudo firewall-cmd --permanent --list-services
Sie sollten eine ähnliche Ausgabe sehen.
cockpit dhcpv6-client http https ssh
Laden Sie die Firewall neu, um die Änderungen zu aktivieren.
$ sudo firewall-cmd --reload
Schritt 2 – Docker installieren
Rocky Linux wird mit einer älteren Version von Docker ausgeliefert. Um die neueste Version zu installieren, installieren Sie zuerst das offizielle Docker-Repository.
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Installieren Sie die neueste Version von Docker.
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Aktivieren Sie den Docker-Daemon und führen Sie ihn aus.
$ sudo systemctl enable docker --now
Stellen Sie sicher, dass es ausgeführt wird.
$ sudo systemctl Status Docker? docker.service – Container-Engine der Docker-Anwendung Geladen:geladen (/usr/lib/systemd/system/docker.service; aktiviert; Herstellervoreinstellung:deaktiviert) Aktiv:aktiv (läuft) seit Sun 2022-04-09 22:43:21 KOORDINIERTE WELTZEIT; Vor 30 Sekunden Dokumente:https://docs.docker.com Haupt-PID:43005 (dockerd) Aufgaben:7 Arbeitsspeicher:90,5 MB CGroup:/system.slice/docker.service ??43005 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ....
Standardmäßig benötigt Docker Root-Rechte. Wenn Sie die Verwendung von sudo
vermeiden möchten jedes Mal, wenn Sie docker
ausführen Befehl, fügen Sie Ihren Benutzernamen zum docker
hinzu Gruppe.
$ sudo usermod -aG docker $(whoami)
Sie müssen sich vom Server abmelden und als derselbe Benutzer wieder anmelden, um diese Änderung zu aktivieren.
Schritt 3 – Docker-Compose installieren
Laden Sie die neueste stabile Version von Docker Compose herunter.
$ 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
Wenden Sie ausführbare Berechtigungen auf die Docker Compose-Binärdatei an.
$ sudo chmod +x /usr/local/bin/docker-compose
Testen Sie die Installation.
$ docker-compose --versiondocker-compose Version 1.29.2, Build 5becea4c
Installieren Sie das Docker-compose Bash Completion-Skript.
$ sudo curl \ -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \ -o /etc/bash_completion.d/docker-compose
Laden Sie Ihre Profileinstellungen neu, damit die Bash-Vervollständigung funktioniert.
$ source ~/.bashrc
Schritt 4 – Datenverzeichnisse erstellen
Erstellen Sie ein Verzeichnis für padloc.
$ mkdir ~/padloc
Wechseln Sie in das Padloc-Verzeichnis.
$ cd ~/padloc
Erstellen Sie Verzeichnisse für die Benutzerdatenbank, Anwendungsprotokolle, Anhänge, die PWA-App und die SSL-Konfiguration.
$ mkdir {attachments,db,logs,pwa,ssl}
Erstellen Sie ein Verzeichnis für Nginx-Protokolle.
$ mkdir logs/nginx
Schritt 5 – Docker-Compose-Datei erstellen
Erstellen und öffnen Sie die Datei ~/padloc/docker-compose.yml
Datei zum Bearbeiten.
$ nano docker-compose.yml
Fügen Sie den folgenden Code ein.
Version:"3"Dienste:Server:Image:Padloc/Server Containername:Padloc_Server Neustart:Sofern nicht gestoppt #Ports:# - ${PL_SERVER_PORT:-3000}:3000 Expose:- 3000 Volumes:- ${PL_DB_DIR:-./db}:/data:Z - ${PL_ATTACHMENTS_DIR:-./attachments}:/docs:Z - ./logs:/logs:Z Umgebung:- PL_PWA_URL - PL_EMAIL_SERVER - PL_EMAIL_PORT - PL_EMAIL_USER - PL_EMAIL_PASSWORD - PL_EMAIL_FROM pwa:image:padloc/pwa Containername:padloc_pwa Neustart:sofern nicht gestoppt #Ports:# - ${PL_PWA_PORT:-8080}:8080 Expose:- 8080 Volumes:- ${PL_PWA_DIR:-./pwa}:/pwa:Z Umgebung:- PL_SERVER_URL nginx:Bild:nginx container_name:nginx-Neustart:Sofern nicht gestoppte 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
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Wir verwenden drei Docker-Images für Padloc.
-
Das Server-Image - enthält die gesamte Backend-Logik für die Anwendung. Es läuft standardmäßig auf Port 3000. Wir haben die Ports-Variable in unserer Compose-Datei auskommentiert, um den Port für den Server unsichtbar zu machen. Stattdessen verwenden wir die Expose-Variable, um den Port innerhalb der Docker-Engine für den Nginx-Container verfügbar zu machen. Die Umgebungsvariablen für das Image werden später konfiguriert. Wir haben auch Verzeichnisse für eine Benutzerdatenbank, Anhänge und Anwendungsprotokolle zugeordnet.
-
Das PWA-Bild - enthält das Frontend der Anwendung. Es läuft standardmäßig auf Port 8080. Was das Server-Image betrifft, so haben wir den Abschnitt „Ports“ für dieses Image ausgeblendet und den Port innerhalb der Docker-Engine verfügbar gemacht. Wir haben das Verzeichnis für die Web-App gemappt.
-
Das Nginx-Image - enthält die Nginx-Serveranwendung. Wir haben die Ports für HTTP(80) und HTTPS(443) zum Server, um ihn von außen zugänglich zu machen. Wir haben mehrere Verzeichnisse und Dateien zugeordnet, damit es funktioniert.
- Die erste Datei ist
nginx.conf
die alle Hauptkonfigurationen für Nginx enthält, um die Padloc-Anwendung zu bedienen. - Die nächsten beiden Dateien,
cert.pem
undkey.pem
sind das SSL-Zertifikat und die Schlüssel, die wir mit Let's encrypt generieren werden. - Die Datei
ssl.conf
enthält zusätzliche Informationen zur Bereitstellung von SSL über Nginx. - Die Datei
dhparam.pem
soll der Diffie-Hellman-Gruppe dienen Zertifikat. - Der letzte Eintrag besteht darin, die Nginx-Protokolle wieder dem Server zuzuordnen, damit Sie außerhalb von Docker darauf zugreifen können.
- Die erste Datei ist
-
Das
:Z
Das Flag am Ende der Ordnerzuordnungen zeigt an, dass auf diese Verzeichnisse nur von den entsprechenden Containern aus zugegriffen werden kann. Dies geschieht, da SELINUX auf unserem Server aktiviert ist. Wenn Sie SELinux nicht verwenden, können Sie das Flag entfernen.
Schritt 6 – NGinx konfigurieren
Erstellen und öffnen Sie die Datei ~/padloc/nginx.conf
zum Bearbeiten.
$ nano nginx.conf
Fügen Sie den folgenden Code ein.
http { # Dies ist erforderlich, wenn Sie Anhänge hochladen möchten client_max_body_size 10m; # Den gesamten http-Verkehr auf den https-Server umleiten { listen 80 default_server; hören [::]:80 default_server; Servername _; return 301 https://$host$request_uri; } server { # Wir brauchen hier keinen Hostnamen, da wir es nur mit einer # Domain zu tun haben, aber Sie können hier Ihre Domain einfügen. Servername _; # Server und pwa werden über https bedient listen 443 ssl http2; hören [::]:443 ssl http2; # Dies wird zum Standort der Serverinstanz aufgelöst /server/ { proxy_pass http://padloc_server:3000; umschreiben ^/padloc_server(.*)$ $1 break; } # Dies wird zum Speicherort der Webanwendung aufgelöst / { proxy_pass http://padloc_pwa:8080; umschreiben ^/padloc_pwa(.*)$ $1 break; } # SSL-Zertifikat ssl_certificate /ssl/cert; # Privater SSL-Schlüssel ssl_certificate_key /ssl/key; # Fügen Sie diese Datei hinzu, um eine erweiterte SSL-Konfiguration hinzuzufügen include /ssl/ssl.conf; }}# Dieser Abschnitt wird von nginxevents {}benötigt
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Die obige Konfiguration leitet alle Anfragen vom padloc_server
weiter Container auf /server
Speicherort des Domainnamens und alle Anfragen, die von padlock_pwa
gestellt werden Container zur Wurzel. Es leitet auch den gesamten HTTP-Verkehr auf HTTPS um. Wir haben auch die Datei-Upload-Größe für Anhänge auf 10 MB festgelegt. Sie können die Größe nach Ihren Anforderungen ändern. Die SSL-Einstellungen wurden über eine externe Datei eingefügt, die wir später konfigurieren werden.
Schritt 7 – Umgebungsdatei erstellen
Erstellen und öffnen Sie die Datei ~/padloc/.env
Datei zum Bearbeiten.
$ nano .env
Fügen Sie den folgenden Code ein.
# ALLGEMEINE EINSTELLUNGEN# ================# URL, die zur Serverinstanz aufgelöst wirdPL_PWA_URL=https://example.com/# URL, die zur Web-AppPL_SERVER_URL aufgelöst wird =https://example.com/server/# SERVEREINSTELLUNGEN# ===============# Port, auf dem die Serverinstanz lauschtPL_SERVER_PORT=3000# Verzeichnis, in dem Datenbankdateien gespeichert werdenPL_DB_DIR=. /db# Verzeichnis, in dem Anhangsdateien gespeichert werdenPL_ATTACHMENTS_DIR=./attachments# PWA SETTINGS# ============# Port, von dem aus die Webanwendung bereitgestellt wirdPL_PWA_PORT=8080# Verzeichnis, in dem der statische Code für das Web gespeichert wird App wird gespeichertPL_PWA_DIR=./pwa# E-MAIL-EINSTELLUNGEN# =============# SMTP-HostPL_EMAIL_SERVER=smtp.example.com# SMTP-Benutzername[E-Mail-geschützt]# SMTP-PortPL_EMAIL_PORT=443# SMTP-PasswortPL_EMAIL_PASSWORD=your_smtp_password# Beim Senden von E-Mails immer TLS verwenden# PL_EMAIL_SECURE=false# E-Mail-ID zum Senden von E-Mails von[E-Mail-geschützt]# SSL-EINSTELLUNGEN# ============# Der Pfad zu Ihrem SSL-ZertifikatPL_SSL_CERT=/etc/ letsencrypt/live/example.com/fullcha in.pem# Der Pfad zu Ihrem privaten SSL-SchlüsselPL_SSL_KEY=/etc/letsencrypt/live/example.com/privkey.pem# Erweiterte KonfigurationsdateiPL_SSL_CONF=./ssl/ssl.conf
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden. Die meisten Einstellungen sind selbsterklärend. Die vorhandene Nginx-Konfiguration erwartet, dass die App über die Hauptdomäne und der Server über /server
bereitgestellt wird Verzeichnis. Der PL_PWA_DIR
muss hier und in der Docker-compose-Datei nicht zwingend gesetzt werden, aber es beschleunigt den Start des Containers und sollte daher immer gesetzt werden.
Padloc benötigt die Fähigkeit, E-Mails für Funktionen wie die Verifizierung neuer Benutzer, die Zwei-Faktor-Authentifizierung und das Zurücksetzen von Passwörtern zu senden. Daher sind SMTP-Angaben obligatorisch.
Für die SSL-Funktion verwenden wir die Standardverzeichnisse von Let’s Encrypt, in denen sich die Zertifikate befinden. Die zusätzliche SSL-Konfiguration wird über die Datei /ssl/ssl.conf
bereitgestellt .
Schritt 8 – SSL installieren
Um ein SSL-Zertifikat mit Let's Encrypt zu installieren, müssen wir das Certbot-Tool installieren.
Zuerst müssen Sie das EPEL-Repository herunterladen und installieren.
$ sudo dnf install epel-release
Führen Sie die folgenden Befehle aus, um Certbot zu installieren.
$ sudo dnf install certbot
Generieren Sie das SSL-Zertifikat.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com
Der obige Befehl lädt ein Zertifikat in /etc/letsencrypt/live/example.com
herunter Verzeichnis auf Ihrem Server.
Erstellen Sie eine Diffie-Hellman-Gruppe Zertifikat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Erstellen Sie einen Cron-Job, um das SSL zu erneuern. Es wird jede Woche ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstellen Sie dazu zunächst die Datei /etc/cron.weekly/certbot-renew
und zum Bearbeiten öffnen.
$ sudo nano /etc/cron.weekly/certbot-renew
Fügen Sie den folgenden Code ein. Wir verwenden die Docker-Befehle, um den Nginx-Container je nach Erneuerungsstatus zu starten, zu stoppen und neu zu starten.
#!/bin/shcertbot renew --cert-name example.com --pre-hook "docker stop nginx" --post-hook "docker start nginx" --renew-hook "docker restart nginx"Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Ändern Sie die Berechtigungen für die Aufgabendatei, um sie ausführbar zu machen.
$ sudo chmod +x /etc/cron.weekly/certbot-renewSchritt 9 – SSL konfigurieren
Erstellen und öffnen Sie die Datei
~/padloc/ssl/ssl.conf
zum Bearbeiten.$ nano ssl/ssl.confFügen Sie den folgenden Code ein.
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-SHA-25 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;Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Die obige Datei führt einige empfohlene SSL-Einstellungen ein, um Ihre Website sicherer zu machen. Es beschränkt die TLS-Protokolle auf v1.2 und v1.3 und ermöglicht das Stapeln und Verifizieren des Online Certificate Status Protocol (OCSP).
Schritt 10 – Padloc ausführen
Nachdem Sie nun alles konfiguriert haben, führen Sie Padloc mit dem folgenden Befehl aus.
$ docker-compose up -dÜberprüfen Sie den Status der Container.
$ Docker-PSSie sollten eine ähnliche Ausgabe erhalten.
Schritt 11 – Zugriff und Konfiguration von Padloc
Öffnen Sie die URL
https://example.com
in Ihrem Browser und Sie gelangen auf dessen Anmeldeseite.
Klicken Sie auf Jetzt anmelden Link um die Registrierung zu starten.
Geben Sie Ihren Namen und Ihre E-Mail-Adresse ein und klicken Sie auf Weiter um fortzufahren.
Padloc sendet Ihnen eine E-Mail mit einem Bestätigungscode. Geben Sie den Bestätigungscode in das obige Feld ein und klicken Sie auf Weiter um fortzufahren.
Padloc generiert automatisch ein Master-Passwort für Sie. Bewegen Sie den Mauszeiger über das Feld und kopieren Sie es. Fügen Sie es erneut in das Feld unten ein. Sie können auch Ihr Passwort verwenden. Drücken Sie Weiter wenn fertig.
Sie werden zur Padloc-Homepage weitergeleitet. Sie können damit beginnen, Ihre Anmeldedaten und sensiblen Dokumente zu speichern.
Schritt 12 – Padloc aktualisieren
Das Aktualisieren von Padloc ist ein zweistufiger Prozess. Wechseln Sie zunächst in das Padloc-Verzeichnis.
$ cd ~/padlocFahren Sie die vorhandenen Padloc-Container herunter und entfernen Sie sie.
$ docker-compose down --remove-orphansHolen Sie sich die neuesten Bilder.
$ docker-compose pullStarten Sie die Container erneut.
$ docker-compose up -dSchlussfolgerung
Damit ist unser Tutorial zur Installation des selbstgehosteten Padloc-Passwortmanagers auf einem Rocky Linux 8-Server abgeschlossen. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.