Damit wir eine Änderungen der Konfiguration der gemounteten Verzeichnisse oder Umgebungsvariablen vornehmen können, muss der Container angehalten werden.
Sarte die Docker app auf der Synology, wähle „Container“ auf der linked Seite und schalte den Container an der rechten Seite aus.
Dann markiere den Container und klicke auf „Bearbeiten“
Nun kannst du in den Bereichen „Volume“ gemountete Verzeichnisse anpassen, und unter „Umgebung“ die Umgebungsvariablen anpassen.
Dann speichere den Container und starte ihn erneut.
restic (2) – sftp Server vorbereiten – Der Login muss mit einem SSL Zertifikat ohne Password möglich sein, damit restic über rclone darauf zugreifen kann.
Melde dich auf deiner Synology in einem Terminal an und werde root:
$ sudo su -
Installiere rclone
# curl https://rclone.org/install.sh | sudo bash
Erstelle einen Ordner rclone unter /volume1/docker, in dem wir die rclone Konfigurationsdateien speichern werden. Dieses Verzeichnis werden wir später dem restic Docker Container zur Verfügung stellen.
# mkdir /volume1/docker/rclone
Privaten Schlüssel einrichten
Kopiere den privaten Schlüssel certififcate.pem, den wir in restic (2) – sftp Server vorbereiten erstellt hatten, in die Datei /volume1/docker/certificate.pem. Du kannst die Datei mit cat anlegen und dann via copy-paste den Inhalt von deinem Windows Rechner übertragen. Mit Ctrl-D beendest du die Eingabe und speicherst die Datei.
Stelle sicher, dass nur du den Inhalt des privaten Schlüssels sehen kannst:
# chmod 400 /volume1/docker/certificate.pem
Teste den Schlüssel mit sftp am Domain Factory server. ssh-username ist dein Nutzername auf dem server und 1111111111.hostingkunde.de ist der Hostname.
# sftp -i /volume1/docker/certificate.pem ssh-username@1111111111.hostingkunde.de
Connected to 1111111111.hostingkunde.de.
sftp>
Du siehst nun ohne Kennworteingabe den sftp> Prompt. Mit „quit“ beendest du sftp.
sftp> quit
rclone konfigurieren
Wir erstellen eine rclone Konfiguration, die wir in der Datei /volume1/docker/rclone/rclone.conf speichern:
# rclone config --config /volume1/docker/rclone/rclone.conf
2021/12/28 20:44:50 NOTICE: Config file "/volume1/docker/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q>
Mit „n“ erstellen wir die neue Konfiguration.
n/s/q> n
name>
Wir geben „domain-factory“ als Namen an.
name> domain-factory
Option Storage.
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value.
1 / 1Fichier
\ "fichier"
2 / Alias for an existing remote
\ "alias"
3 / Amazon Drive
\ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
\ "s3"
5 / Backblaze B2
\ "b2"
6 / Better checksums for other remotes
\ "hasher"
7 / Box
\ "box"
8 / Cache a remote
\ "cache"
9 / Citrix Sharefile
\ "sharefile"
10 / Compress a remote
\ "compress"
11 / Dropbox
\ "dropbox"
12 / Encrypt/Decrypt a remote
\ "crypt"
13 / Enterprise File Fabric
\ "filefabric"
14 / FTP Connection
\ "ftp"
15 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
16 / Google Drive
\ "drive"
17 / Google Photos
\ "google photos"
18 / Hadoop distributed file system
\ "hdfs"
19 / Hubic
\ "hubic"
20 / In memory object storage system.
\ "memory"
21 / Jottacloud
\ "jottacloud"
22 / Koofr
\ "koofr"
23 / Local Disk
\ "local"
24 / Mail.ru Cloud
\ "mailru"
25 / Mega
\ "mega"
26 / Microsoft Azure Blob Storage
\ "azureblob"
27 / Microsoft OneDrive
\ "onedrive"
28 / OpenDrive
\ "opendrive"
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
30 / Pcloud
\ "pcloud"
31 / Put.io
\ "putio"
32 / QingCloud Object Storage
\ "qingstor"
33 / SSH/SFTP Connection
\ "sftp"
34 / Sia Decentralized Cloud
\ "sia"
35 / Sugarsync
\ "sugarsync"
36 / Tardigrade Decentralized Cloud Storage
\ "tardigrade"
37 / Transparently chunk/split large files
\ "chunker"
38 / Union merges the contents of several upstream fs
\ "union"
39 / Uptobox
\ "uptobox"
40 / Webdav
\ "webdav"
41 / Yandex Disk
\ "yandex"
42 / Zoho
\ "zoho"
43 / http Connection
\ "http"
44 / premiumize.me
\ "premiumizeme"
45 / seafile
\ "seafile"
Storage>
Als Storage Option wählen wir „33“ für sftp.
Storage> 33
Option host.
SSH host to connect to.
E.g. "example.com".
Enter a string value. Press Enter for the default ("").
host>
Dann geben wir den sftp Hostnamen ein:
host> 1111111111.hostingkunde.de
Option user.
SSH username, leave blank for current username, root.
Enter a string value. Press Enter for the default ("").
user>
Nun den Usernamen auf dem entfernten Host
user> ssh-username Option port. SSH port, leave blank to use default (22). Enter a string value. Press Enter for the default (""). port>
Als Port nehmen wir den default Wert und drücken direkt die Eingabetaste.
port> Option pass. SSH password, leave blank to use ssh-agent. Choose an alternative below. Press Enter for the default (n). y) Yes type in my own password g) Generate random password n) No leave this optional password blank (default) y/g/n>
Das Kennwort bleibt leer, also der Default Wert „n“
y/g/n> Option key_pem. Raw PEM-encoded private key. If specified, will override key_file parameter. Enter a string value. Press Enter for the default (""). key_pem>
Auch den Private Key lassen wir hier leer und drücken die Eingabetaste
key_pem> Option key_file. Path to PEM-encoded private key file. Leave blank or set key-use-agent to use ssh-agent. Leading ~ will be expanded in the file name as will environment variables such as ${RCLONE_CONFIG_DIR}. Enter a string value. Press Enter for the default (""). key_file>
Nun geben wir den Pfad zur Datei mit dem privaten Key an.
key_file> /volume1/docker/certificate.pem
Option key_file_pass.
The passphrase to decrypt the PEM-encoded private key file.
Only PEM encrypted key files (old OpenSSH format) are supported. Encrypted keys
in the new OpenSSH format can't be used.
Choose an alternative below. Press Enter for the default (n).
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank (default)
y/g/n>
Wir haben keine Passphrase, also gleich die Eingabtaste drücken.
y/g/n> Option pubkey_file. Optional path to public key file. Set this if you have a signed certificate you want to use for authentication. Leading ~ will be expanded in the file name as will environment variables such as ${RCLONE_CONFIG_DIR}. Enter a string value. Press Enter for the default (""). pubkey_file>
Wir brauchen keinen public Key hier. Eingabetaste drücken.
pubkey_file> Option key_use_agent. When set forces the usage of the ssh-agent. When key-file is also set, the ".pub" file of the specified key-file is read and only the associated key is requested from the ssh-agent. This allows to avoid Too many authentication failures for *username* errors when the ssh-agent contains many keys. Enter a boolean value (true or false). Press Enter for the default ("false"). key_use_agent>
Wir nutzen ssh-agent nicht, gleich die Eingabetaste drücken
key_use_agent>
Option use_insecure_cipher.
Enable the use of insecure ciphers and key exchange methods.
This enables the use of the following insecure ciphers and key exchange methods:
- aes128-cbc
- aes192-cbc
- aes256-cbc
- 3des-cbc
- diffie-hellman-group-exchange-sha256
- diffie-hellman-group-exchange-sha1
Those algorithms are insecure and may allow plaintext data to be recovered by an attacker.
Enter a boolean value (true or false). Press Enter for the default ("false").
Choose a number from below, or type in your own value.
1 / Use default Cipher list.
\ "false"
2 / Enables the use of the aes128-cbc cipher and diffie-hellman-group-exchange-sha256, diffie-hellman-group-exchange-sha1 key exchange.
\ "true"
use_insecure_cipher>
Wir benutzen keine unsicheren Cipher. So nehmen wir den Default Wert und drücken die Eingabetaste
use_insecure_cipher> Option disable_hashcheck. Disable the execution of SSH commands to determine if remote file hashing is available. Leave blank or set to false to enable hashing (recommended), set to true to disable hashing. Enter a boolean value (true or false). Press Enter for the default ("false"). disable_hashcheck>
Wir behalten die Prüfung des Hash Wertes bei. So nehmen wir den Default Wert und drücken die Eingabetaste
disable_hashcheck>
Edit advanced config?
y) Yes
n) No (default)
y/n>
Wir benötigen keine weiteren Details der Advanced Config. So nehmen wir den Default Wert und drücken die Eingabetaste
y/n>
--------------------
[domain-factory]
type = sftp
host = 1111111111.hostingkunde.de
user = ssh-username
port = 22
key_file = /volume1/docker/certificate.pem
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d>
Wir bestätigen die Eingabe mit „y“ (default mit Eingabetaste)
y/e/d>
Current remotes:
Name Type
==== ====
domain-factory sftp
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>
Wir beenden die Konfiguration mit „q“
e/n/d/r/c/s/q> q
#
Jetzt testen wir rclone mit dem test memory flags (Man page: „Load all the objects at remote:path into memory and report memory stats.“)
# rclone test memory --config=/volume1/docker/rclone/rclone.conf domain-factory
2021/12/28 21:07:00 NOTICE: 1 objects took -104 bytes, -104.0 bytes/object
2021/12/28 21:07:00 NOTICE: System memory changed from 16073736 to 16073736 bytes a change of 0 bytes
Es gabe keine Fehlermeldung. Alles ist gut. Wir können weiter machen und den restic Docker Container im nächsten Schritt konfigurieren (restic (5) – restic Docker Container).
restic (2) – sftp Server vorbereiten – Der Login muss mit einem SSL Zertifikat ohne Password möglich sein, damit restic über rclone darauf zugreifen kann.
restic kann auf vielfältige Weise installiert werden, aber es gibt kein Binary für Synology, and die gängigen Installer (yum, apk, etc.) sind auf Synology nicht verfügbar. Die verbleibende Option ist einen restic Docker Container zu nutzen. Das werden wir hier tun.
Docker installieren
Öffne das Synology Paketzentrum, suche nach „Docker“ und installiere das Paket.
Öffne Docker, gehe zu „Registrierung“ und suche nach „restic“
Wähle „lobaro/restic-backup-docker“ aus und klicke „Download“
Lade den Container mit dem Tag „latest“ herunter, klicke auf „Auswählen“
Die Installation von Docker erzeugt das Verzeichnis /volume1/docker auf der Synology. Das Verzeichnis benutzen wir für die sftp und rclone Konfiguration in den folgenden Schritten.
Bevor wir den Container konfigurieren und starten, müssen wir zunächst den sftp Client und rclone einrichten (restic (4) – rclone für sftp). Das machen wir morgen.
restic (2) – sftp Server vorbereiten – Der Login muss mit einem SSL Zertifikat ohne Password möglich sein, damit restic über rclone darauf zugreifen kann.
Im Juni 2021 wurde im Chaosradio Podcast in der Folge CR270 Daten archivieren, wiederherstellen und löschen die Backupsoftware restic vorgestellt. „Backups done right!“ ist der restic Slogan. Die Vorstellung im Podcast hat mich dazu inspiriert, meine Daten endlich vernünftig auf entfernten System zu sichern und dazu restic zu nutzen.
Zu Hause habe ich einen Windows 10 PC. Meine Daten sind auf einer Synology DS220 mit gespiegelten Platten (RAID 1). Zusätzlich nutze ich die Synology Cloud Sync Software, um meine Daten auf Dropbox und Microsoft OneDrive zu synchroniseren.
Aber alle diese Maßnahmen ersetzen kein externes Backup, weil ein Verlust der Daten zum Beispiel durch eine Ransomware Verschlüsselung durch die Spiegelungen auf allen Medien passiert. Wenn auf einer Seite eine Datei gelöscht wird, ist sie überall gelöscht. In Microsoft OneDrive kann man alte Dateiversionen wiederherstellen, aber ich bevorzuge ein separates Backup.
restic bietet sich an, weil es freie Software ist, die seit einigen Jahren ausgereift ist. In den folgenden Artikeln werde ich beschreiben, wie ich mit restic die Daten von meiner Synology auf externen Cloud Speichern sichere. Die beiden Beispiele sind ein sftp Server von Domain Factory und Microsoft OneDrive.
restic wird auf Synology in einem Docker container des Typs lobaro / restic-backup-docker laufen und rclone verwenden, um auf die jeweiligen Backup Server zuzugreifen. Für den ersten Teil mit dem Domain Factory sftp Server sieht das so aus:
restic (2) – sftp Server vorbereiten – Der Login muss mit einem SSL Zertifikat ohne Password möglich sein, damit restic über rclone darauf zugreifen kann.