Benutzer-Werkzeuge

Webseiten-Werkzeuge


thoschwiki:docker:apps:duplicati

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
thoschwiki:docker:apps:duplicati [03.08.2020 09:19]
thosch [Integration in Træfik] Überschriftenebene angepasst
thoschwiki:docker:apps:duplicati [10.10.2020 20:30] (aktuell)
thosch ↷ Links angepasst weil Seiten im Wiki verschoben wurden
Zeile 1: Zeile 1:
-====== Duplicati ====== +====== Duplicati (Docker) ======
- +
-Duplicati ist eine Software, die verschlüsselte, komprimierte, inkrementelle Datensicherungen (Backups) erstellt und diese auf Netzwerklaufwerke, integrierte oder externe USB-Festplatten oder Onlinespeicher überträgt. ([[wpde>Duplicati]])+
  
 +{{page>thoschwiki:bricks:duplicati#beschreibung&noheader}}
  
 +Auf jeden Fall nichts, was ich "direkt" auf meinen //Linux//- oder //macOS//-Rechner installieren möchte. Also so oder so ein Fall für eine Virtualisiserung.
  
 ^ **Image** ^^ ^ **Image** ^^
-^ Docker Hub | [[dockerhub>repo]] | +^ Docker Hub | [[dockerhub>linuxserver/duplicati]] | 
-^ GitHub | [[github>repo]] |+^ GitHub | [[github>linuxserver/docker-duplicati]] |
 ^ Architektur | x86-64, armhf, arm64 | ^ Architektur | x86-64, armhf, arm64 |
 ^ **Software** ^^ ^ **Software** ^^
-^ Projekt | |+^ Projekt | [[https://www.duplicati.com|Duplicati]] | 
 +^ GitHub | [[github>duplicati/duplicati]] | 
 +^ Anmerkung ^^ 
 +| Es gibt bei //DockerHub// ein Repository [[dockerhub>duplicati]] mit dem Image [[dockerhub>duplicati/duplicati]], das durch die Namensgebung den Eindruck erwecken könnte. dass es vom //Duplicati//-Projekt gepflegt wird. Jedoch finde ich keinerlei Bezug zwischen dem Repository und dem Projekt und es gibt auch keine andere Möglichkeit den Maintainer zu identifizieren oder zu kontaktieren. Weiterhin ist das Image nur sehr lückenhaft dokumentiert. ||
  
 + 
 ===== docker run ===== ===== docker run =====
  
Zeile 18: Zeile 22:
 <code> <code>
 docker run -d \  docker run -d \ 
-  --name+  --name=duplicati \ 
 +  -e PUID=2000 \ 
 +  -e PGID=2000 \ 
 +  -e TZ=Europe/Berlin \ 
 +  -e CLI_ARGS= `#optional` \ 
 +  -p 8200:8200 \ 
 +  -v /path/to/appdata/config:/config \ 
 +  -v /path/to/backups:/backups \ 
 +  -v /path/to/source:/source \ 
 +  --restart unless-stopped \ 
 +  linuxserver/duplicati
 </code> </code>
 +
 +==== Parameter ====
 +
 +Dies sind die wichtigsten Parameter. Sofern sie mit einem "*" markiert sind, sollte eine Anpassung erfolgen:
 +
 +^ Parameter ^ Funktion |
 +| -e PUID= * | Vorgabe des //Users// und der //Gruppe//, mit denen die Daten auf dem Docker-Host in die gemounteten Verzeichnisse geschrieben werden.  \\ Sofern Daten aus anderen Docker-Containern gesichert werden sollen, dann ist es notwendig, dass die ''PUID'' und ''PGID'' der Containerkonfigurationen **übereinstimmt**, damit der //Duplicati//-Container die Verzeichnisse der anderen Container lesen und gff. schreiben kann. |
 +| -e PGID= * | ::: |
 +| -e TZ= * | Vorgabe der lokalen Zeitzone im [[wpde>Zeitzonen-Datenbank|Format Gebiet/Ort]]. |
 +| -p 8200:8200 | Netzwerkport, über den die Benutzeroberfläche zu erreichen ist. Sofern die Oberfläche über einen anderen Port erreichbar sein soll, ist der erste Wert zu ändern (z.B.: ''-p 80:8200''). |
 +| -v * | Volumes, siehe [[#Volumes:|Unterabschnitt Volumes]] |
 +| -e CLI_ARGS= | Vorgabe von Kommendozeilenparametern, die an //Duplicati// übergeben werden (optional). Die Zeile kann in den meisten Fällen weggelassen werden. |
 +
 +==== Volumes ====
 +
 +In der Konfiguration werden Volumes in der Regel im folgenden Format angegeben:
 +
 +<code><Pfad auf dem Host>:<Pfad im Container>[:<Optionen>]</code>
 +
 +Die Volumes haben die folgenden Funktionen (maßgeblich ist der Pfad im Container):
 +
 +^ Pfad im Container ^ Funktion ^
 +| /config | Ablageort der Konfigurationsdateien |
 +| /backups | Ablageort von lokalen Backups. Kann weggelassen werden, wenn ausschließlich Online-Backups auf andere Server oder in die Cloud erstellt werden. |
 +| /source | Das Verzeichnis **auf dem Host**, in dem die Daten **außerhalb** des //Duplicati//-Containers liegen, von denen die Backups erstellt werden sollen.  \\ Hier bietet sich ein Verzeichnis an, unterhalb dessen auf dem Docker-Host zentral die Daten der einzelnen Docker-Container abgelegt sind. |
 +
 +=== Auswahl Sicherungsziel bei lokalen Backups ===
 +
 +Dieser Abschnitt ist nicht relevant, wenn //ausschließlich// Online-Backups (d.h. Backups werden per Netzwerkverbindung auf einem anderen Server oder in der Cloud abgelegt) erstellt werden.
 +
 +Beim Einrichten eines Backups in //Duplicati// ist nach der Vorgabe der Meta-Daten und des Kryptoschlüssels das Sicherungsziel (=Ort an den das backup abgelegt wird) auszuwählen. Sofern das Backup **nicht** per Netzwerkverbindung auf einem anderen Server oder nicht der Cloud abgelegt werden soll, ist das Sicherungszeil auszuwählen. Bei diesem //lokalen Backup// **muss** beim Anlegen des Container eine //Volume//-Zuweisung für das Volume ''/backups'' erfolgt sein.
 +
 +<note important>
 +Im Verzeichnisbaum wird das Verzeichnis ''/backups'' auch dann angezeigt, wenn das Volume **nicht** konfiguriert ist.\\ In diesem Fall würde das dort abgelegte Backup **innerhalb** des Containers abgelegt und damit **nicht** dauerhaft gespeichert werden.
 +</note>
 +
 +{{ thoschwiki:docker:apps:duplicati_fileselectiontarget.png?400 |}} 
 +
 +| grün | Die //lokalen// Backups sind unterhalb dieses Verzeichnisses abzulegen. |
 +| orange | Diese Verzeichnisse liegen zwar bei einer korrekten Konfiguration außerhalb des Container, sind aufgrund ihrer Bestimmung jedoch nicht als Sicherungsziel geeignet. |
 +| rot | Diese Verzeichnisse liegen **innerhalb** des Containers und sind deshalb als Sicherungsziel **nicht** geeignet. |
 +
 +=== Auswahl der Quelldateien ===
 +
 +Das Ziel eines dockerized //Duplicati// ist nicht die Sicherung von Dateien aus dem //Duplicati//-Container, sondern die Sicherung der außerhalb der Container auf dem Host abgelegten Volumes. Der Ablageort dieser Volumes ist über das Volume ''/sources'' in den //Duplicati//-Container einzubinden.
 +
 +{{ thoschwiki:docker:apps:duplicati_fileselectionsource.png?400 |}}
 +
 +| grün | In diesem Verzeichnis des Containers sind die über das Volume ''/sources'' eingebundenen, außerhalb des Container liegenden Verzeichnisse erreichbar und können für die Backups ausgewählt werden. |
 +| blau | Die ausgewählt Verzeichnisse und Dateien werden hier zusammengefasst angezeigt. |
 +| orange | Diese Verzeichnisse liegen bei einer korrekten Konfiguration außerhalb des Containers.  \\ Eine Sicherung des Verzeichnisses ''/backups'' ist nicht sinnvoll, weil es die lokalen Backups enthält.  \\ Die Konfiguration im Verzeichnis ''/config'' sollte über das Verzeichnis ''/sources'' erfolgen. |
 +| rot | Diese Verzeichnisse liegen **innerhalb** des Containers und eine Sicherung ist nicht notwendig. |
 +
  
 ===== docker-compose  ===== ===== docker-compose  =====
  
-Der Container wird wie folgt in der ''docker-compose.yml'' konfiguriert:+Der Container wird wie folgt in der Datei ''docker-compose.yml'' konfiguriert:
  
-<code>  </code>+<file - docker-compose.yml> 
 +version: "2.1" 
 +services: 
 +  duplicati: 
 +    image: linuxserver/duplicati 
 +    container_name: duplicati 
 +    environment: 
 +      - PUID=2000 
 +      - PGID=2000 
 +      - TZ=Europe/Berlin 
 +#      - CLI_ARGS= #optional 
 +    volumes: 
 +      - /path/to/appdata/config:/config 
 +      - /path/to/backups:/backups 
 +      - /path/to/source:/source 
 +    ports: 
 +      - 8200:8200 
 +    restart: unless-stopped 
 +</file> 
 + 
 +Details siehe Abschnitte [[#parameter|Parameter]] und [[#volumes|Volumes]].
  
 ===== Integration in Træfik ===== ===== Integration in Træfik =====
  
-Der Container kann mit den folgenden Eintragungen in der ''docker-compose.yml'' in Træfik integriert werden:+Die Integration des Containers in das //Træfik//-Setup gestaltete sich unerwartet schwierig. Im Nachhinein stellte sich heraus, dass für die Cloud-Instanz der Port 8200 nicht geöffnet war. Dies dürfte der Grund für die Probleme gewesen sein. 
 + 
 +Die derzeitige Umsetzung setzt auf ein Routing durch _Træfik_ und funktioniert ohne den Port 8200. 
 + 
 +Es sind hierfür die folgenden Ergänzungen in der ''docker-compose.yml'' und der ''static.yml'': 
 + 
 +''docker-compose.yml'': 
 + 
 +<code> 
 +  duplicati: 
 +    image: linuxserver/duplicati 
 +    container_name: duplicati 
 +    environment: 
 +      - PUID=2000 
 +      - PGID=2000 
 +      - TZ=Europe/Berlin 
 +    volumes: 
 +      - /path/to/DockerData/duplicati/config:/config 
 +      - /path/to/DockerData/:/source 
 +#    ports:          # Inbound traafik via Traefik 
 +#      - 8200:8200   # Port 8200 not ued 
 +    restart: unless-stopped 
 +    labels: 
 +     - traefik.http.routers.duplicati.rule=Host(`subdomain.example.com`) 
 +     - "traefik.http.routers.duplicati.tls.certResolver=default" 
 +     - "traefik.http.routers.duplicati.tls=true" 
 +</code> 
 + 
 +''static.yml'': 
 + 
 +<code> 
 +  web-duplicati: 
 +    address: ":8200" 
 +</code> 
 + 
 +<note warning> 
 +Bei dieser Implementation ist es für den Zugriff **nicht notwendig** den Port 8200 in der URL vorzugeben. Die //Duplicati//-Instanz liegt damit auf dem Web-Root und damit der Landingpage der jeweiligen (Sub)Domain. Es sollte daher eine Subdomain benutzt werden
 + 
 +Da //Duplicati// zur Sicherung nur ein Passwort (keine Vorgabe eines Usernamens) verlangt, sollte ein sehr starkes Passwort verwendet werden. 
 +</note> 
 + 
 +**Weitere Ansätze zur Integration**:
  
-<code>  </code>+  * [[https://gitlab.c3sl.ufpr.br/mch15/htpc/blob/master/docker-compose.yaml#L330|Intergration in Træfik unter Verwendung des Ports 8200]] 
 +  * Zugriff durch ein VPN
thoschwiki/docker/apps/duplicati.1596439155.txt.gz · Zuletzt geändert: 03.08.2020 09:19 von thosch