Ich möchte diesen Beitrag ein wenig optimieren und verbessern.
Server
Ich nehme mal einen Debian Buster 10 Server zum Spielen Ganz einfach geht das mit der Hetzner Cloud (Ja, ist ein Werbeblock )
Nach dem der Server innerhalb von einer Minute am Start ist, fangen wir mal an. Was brauchen wir?
iptables
Wir passen das entsprechend an, wir nutzen den Standard Port von Kopia auf 51515. Könnt Ihr auch gerne ändern! Nicht vergessen, das dauerhaft zu speichern.
https://forum.frank-mankel.org/topic/661/iptables-dauerhaft-speichern?_=1598077570202
Ich setze hier voraus, das man weiß wie das geht.
fail2ban
Auch hier setze ich voraus, das man weiß was man tut
User anlegen
Wir sind als Root angemeldet!
adduser user
Für user könnt ihr euch was aussuchen. Passwort festlegen und fertig. Dieser User verfügt jetzt über ein Homeverzeichnis unter
/home/user
Kopia installieren
Anwendung runterladen
wget https://github.com/kopia/kopia/releases/download/v0.6.3/kopia_0.6.3_linux_amd64.deb
Quelle: https://github.com/kopia/kopia/releases
Anwendung installieren
dpkg -i *.deb
Selecting previously unselected package kopia.
(Reading database ... 34241 files and directories currently installed.)
Preparing to unpack kopia_0.6.3_linux_amd64.deb ...
Unpacking kopia (0.6.3) ...
Setting up kopia (0.6.3) ...
Filesystem initialisieren
Wir suchen uns einen Speicherort aus und sind als Kopia User eingeloggt.
su user
mkdir kopia
Danach initialisieren
kopia repository create filesystem --path kopia
Enter password to create new repository:
Re-enter password for verification:
Initializing repository with:
block hash: BLAKE2B-256-128
encryption: AES256-GCM-HMAC-SHA256
splitter: DYNAMIC-4M-BUZHASH
Connected to repository.
NOTICE: Kopia will check for updates on GitHub every 7 days, starting 24 hours after first use.
To disable this behavior, set environment variable KOPIA_CHECK_FOR_UPDATES=false
Alternatively you can remove the file "/root/.config/kopia/repository.config.update-info.json".
Policy for (global):
Retention:
Annual snapshots: 3 (default)
Monthly snapshots: 24 (default)
Weekly snapshots: 4 (default)
Daily snapshots: 7 (default)
Hourly snapshots: 48 (default)
Latest snapshots: 10 (default)
Files policy:
No ignore rules.
Read ignore rules from files:
.kopiaignore (default)
Error handling policy:
Ignore file read errors: false (default)
Ignore directory read errors: false (default)
Scheduled snapshots:
None
Compression disabled.
To change the policy use:
kopia policy set --global <options>
or
kopia policy set <dir> <options>
Kopia will perform quick maintenance of the repository automatically every 1h0m0s
when running as root@debian-2gb-nbg1-2-kopia. This operation never deletes any data.
Full maintenance (which also deletes unreferenced data) is disabled by default.
To run it manually use:
$ kopia maintenance run --full
Alternatively you can schedule full maintenance to run periodically using:
$ kopia maintenance set --enable-full=true --full-interval=4h
Benutzerverwaltung
Als root
apt install apache2-utils
Benutzer und Passwort anlegen
htpasswd -B -c .htpasswd USER@DOMAIN
New password:
Re-type new password:
Adding password for user USER@DOMAIN
Das File .htpasswd in /home/USER ablegen und an die Rechte denken.
chown USER:USER .htpasswd
Letsencrypt
Installation
apt install letsencrypt
Wir legen uns eine Subdomain an und lassen diese auf die IP des Servers verweisen.
Danach
letsencrypt certonly --standalone -d kopia.DOMAIN.de
Achtung, die Firewall sollte aus sein.
Wenn alles geklappt hat, sieht man folgendes
- Congratulations! Your certificate and chain have been saved at:
Für eine Aktualisierung des Zertifikates einen Cronjob anlegen und nach der Aktualisierung mit einem Script die Zertifikate ins Homeverzeichnis des Users kopieren. (Nicht schön, da muss ich nochmal ran)
Ok, ich habe das noch mal getestet. Der Crontab für root sieht so aus.
0 3 1 * * certbot renew --post-hook "chown -R kopia-server:root /etc/letsencrypt/"
Nach dem Aktualisieren des Zertifikates ändern wir den Benutzer ab, dann kann auch der Benutzer kopia-server damit umgehen.
Kopia Server Start
Danach testen wir erst mal trocken ob das Ding startet.
/usr/bin/kopia server start --tls-cert-file /etc/letsencrypt/live/DOMAIN/fullchain.pem --tls-key-file /etc/letsencrypt/live/DOMAIN/privkey.pem --htpasswd-file /home/kopia-server/.htpasswd --address https://IP-Adresse:51515
Wenn das klappt, sieht man folgendes
SERVER ADDRESS: https://IP-Adresse:51515
Open the address above in a web browser to use the UI.
Dann kann mal mal probieren, ob der externe Zugriff klappt. So sieht ein erfolgreicher Zugriff aus.
kopia repo connect server --url=https://DOMAIN:51515 --override-username=USER --override-hostname=DOMAIN
Enter password to open repository:
Connected to repository API Server.
NOTICE: Kopia will check for updates on GitHub every 7 days, starting 24 hours after first use.
To disable this behavior, set environment variable KOPIA_CHECK_FOR_UPDATES=false
Alternatively you can remove the file "/home/frank/.config/kopia/repository.config.update-info.json".
Für einen automatischen Start habe ich viel mit systemd getestet, hatte aber immer irgendwelche Probleme, die ich mir leider nicht erklären konnte. Auch eine Recherche im Netz brachte mich nicht weiter. Aber gut, es gibt ja immer viele Möglichkeiten in Linux
Crontab
crontab -e
In diese Datei folgendes rein
@reboot /home/kopia-server/startup.sh
Die Datei startup.sh
#!/bin/bash
# Script um Kopia beim Start des Servers zu starten!
cd /home/kopia-server/
## TLS
/usr/bin/kopia server start --tls-cert-file /home/kopia-server/fullchain.pem --tls-key-file /home/kopia-server/privkey.pem --htpasswd-file /home/kopia-server/.htpasswd --address https://IPv4-Adresse:51515
Danach ein
chmod +x /home/startup.sh
Nach einem Reboot startet der Kopia-Server jetzt automatisch.