Basis Installation Ubuntu 22.04
Table of Contents
1. Pakete installieren und andere Grundeinstellungen
sudo apt update
sudo apt upgrade -y
sudo apt install -y apache2-utils cockpit cockpit-podman gnupg2 nginx pass php php-fpm phppgadmin pinentry-tty podman postgis postgresql ssl-cert zfsutils-linux
sudo apt purge apache2
sudo apt autoremove
# Normalen Benutzern die rechte geben, Services zu starten und zu stoppen
loginctl enable-linger <username> # <username> => serverconnect
# SSH-Schlüssel erstellen
ssh-keygen -t ed25519
# neue .htpasswd Datei mit einem neuen Benutzer erstellen (für Passwortschutz von Webseiten)
sudo htpasswd -c /etc/nginx/.htpasswd <username> # <username> => serverconnect
2. ZFS einbinden
# welche pools sind nicht eingebunden?
sudo zpool import
# wenn poolname nicht 'zfs_pool' heißt, dann
sudo zpool import -f <poolname> zfs_pool
# ansonsten
sudo zpool import -f zfs_pool
# um ein neuen zfs pool zu erstellen
sudo zpool create -o ashift=12 zfs_pool /dev/sda1
# um eine Datei für zfs_pool vorzubereiten
sudo dd if=/dev/zero of=/media/zfs/simulate.disk1 bs=1G count=500
# um weitere Partitionen hinzuzufügen
sudo zpool add zfs_pool /dev/sdb1
# weitere Optionen
sudo zfs set compression=lz4 zfs_pool # Komprimierung aktivieren
sudo zfs set checksum=off zfs_pool # schreiben von Checksummen deaktivieren, wenn Datenintegrität nicht sehr hohe Priorität hat!
sudo zfs set atime=off zfs_pool # Zugriffszeit auf Dateien wird nicht mehr von ZFS geschrieben.
3. nginx Konfiguration anpassen
3.1. /etc/nginx/nginx.conf
...
http {
...
upstream php {
server unix:/run/php/php8.1-fpm.sock;
}
...
}
...
3.2. /etc/nginx/conf.d/php
Datei neu anlegen: touch php
location ~ \.php$ {
fastcgi_pass php;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 86400;
include fastcgi_params;
}
3.3. /etc/nginx/sites-enabled/default
server {
...
# Kommentare entfernen
listen 443 ssl default_server http2;
listen [::]:443 ssl default_server http2;
# Kommentar entfernen oder echtes Let's Encrypt Zertifikat hinzufügen!
include snippets/snakeoil.conf;
# Let's Encrypt darf sofort auf das .well-kown Verzeichnis zugreifen.
location /.well-known {
try_files $uri $uri/ =404;
}
# alle anderen Anfrage werden ggf. auf https umgeleitet!
if ($scheme != "https") {
rewrite ^ https://$host$uri permanent;
}
index index.php index.html index.htm index.nginx-debian.html;
location ~ ^/phppgadmin {
root /usr/share;
include conf.d/php;
}
...
}
4. postgresql Konfiguration anpassen
4.1. Berechtigungen des Datenverzeichnisses sicherstellen
sudo chown -R postgres:postgres /zfs_pool/dbs/postgresql
4.2. /etc/postgresql/14/main/postgresql.conf
...
data_directory = '/zfs_pool/dbs/postgresql/14/main'
...
4.3. /etc/postgresql/14/main/postgresql.conf
Einstellungen wie unter PGTune empfohlen durchführen!
5. /etc/hosts
(nur bei internen Rechnern)
...
192.168.100.130 maps2.locr.com
192.168.100.131 maps3.locr.com
...
6. Cockpit UI
Um auf die Cockpit Oberfläche zuzugreifen, im Browser <ip-adresse>:9090 eingeben!
Dort kann man sich dann die Podman Images und laufenden Container ansehen/verwalten.
7. Sicheren Passwort Store mit GnuPG2 einrichten
gpg2 --full-generate-key # defaults akzeptieren. Real name: locr. Email address: support@locr.com
sudo update-alternatives --config pinentry # Den Eintrag mit '/usr/bin/pinentry-tty' auswählen!
pass init support@locr.com
Passwörter hinzufügen, bearbeiten und anzeigen
pass insert <password-name>
pass edit <password-name>
pass <password-name>