Skip to content

Kopia - HTTP/S Server aufsetzen

Angeheftet Kopia
  • 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.

  • Restic v0.17.0 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    96 Aufrufe
    Niemand hat geantwortet
  • Plasma 6

    Linux
    1
    0 Stimmen
    1 Beiträge
    119 Aufrufe
    Niemand hat geantwortet
  • Proxmox 8.1 released

    Linux
    1
    0 Stimmen
    1 Beiträge
    108 Aufrufe
    Niemand hat geantwortet
  • Nextcloud - Collabora Installation Debian Bookworm 12

    Nextcloud
    2
    0 Stimmen
    2 Beiträge
    820 Aufrufe
    FrankMF

    Ok, ich war leider nicht in der Lage den CODE-Server hinter einem Proxy zu installieren. Das CODE-Team scheint Docker zu lieben und das andere nur am Rande zu machen. Ohne Liebe 🙂

    Da ich extrem lange Ladezeiten hatte und die Software insgesamt nicht den Eindruck machte, das man das gerne produktiv auf einem Server nutzen möchte, habe ich den Server eben wieder gelöscht.

    Jetzt fehlt mir leider, die deepl.com Anbindung, aber das kann man ja auch über die Webseite nutzen.

    Ich nutze jetzt wieder den eingebauten CODE-Server, der eigentlich ein App-Image ist.

    28c41010-5ce1-4f7c-89d5-1c9b253011d0-grafik.png

    Der klare Vorteil, es läuft incl. Dokumenten Freigabe 🙂

    Nicht vergessen, unter Allow list for WOPI requests kommen die Server Adressen des Nextcloud-Webservers rein!

    c1a06c2c-86b5-4750-a062-7ba9d8dd8253-grafik.png

  • Nextcloud 23.0.3

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    143 Aufrufe
    Niemand hat geantwortet
  • Restic - forget --keep-last 3 --prune

    Restic
    2
    0 Stimmen
    2 Beiträge
    600 Aufrufe
    FrankMF

    Ich habe mich damit noch ein wenig beschäftigt, die letzten drei zu behalten, ist nicht so optimal. Da es viele Optionen bei dem Befehl gibt, hier ein Ausschnitt

    Flags: -l, --keep-last n keep the last n snapshots -H, --keep-hourly n keep the last n hourly snapshots -d, --keep-daily n keep the last n daily snapshots -w, --keep-weekly n keep the last n weekly snapshots -m, --keep-monthly n keep the last n monthly snapshots -y, --keep-yearly n keep the last n yearly snapshots

    habe ich das ein wenig so angepasst, das ich denke es passt für mich.

    restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ forget --keep-last 3 --keep-monthly 3 --prune

    Damit behalte ich auch die jeweils eines pro Monat. Und die letzten drei. Das sieht dann so aus.

    root@debian:~# ./backup2.sh repository 2f3f6147 opened successfully, password is correct Files: 38 new, 100 changed, 13268 unmodified Dirs: 0 new, 1 changed, 0 unmodified Added to the repo: 10.166 GiB processed 13406 files, 50.324 GiB in 3:24 snapshot 849f614c saved repository 2f3f6147 opened successfully, password is correct Applying Policy: keep the last 3 snapshots, 3 monthly snapshots snapshots for (host [debian], paths [/home/frank]): keep 5 snapshots: ID Time Host Tags Reasons Paths ------------------------------------------------------------------------------------ a7251cfd 2019-11-28 17:00:01 debian monthly snapshot /home/frank 283d4027 2019-12-31 17:00:01 debian monthly snapshot /home/frank ae2b96ec 2020-01-01 21:47:46 debian last snapshot /home/frank 079e00a6 2020-01-02 17:00:01 debian last snapshot /home/frank 849f614c 2020-01-03 21:08:45 debian last snapshot /home/frank monthly snapshot ------------------------------------------------------------------------------------ 5 snapshots remove 26 snapshots: ID Time Host Tags Paths ------------------------------------------------------------------ 896f16c2 2019-11-07 22:23:40 debian /home/frank b21bcf6d 2019-11-11 17:00:01 debian /home/frank f89248fb 2019-11-12 17:00:01 debian /home/frank 123ab546 2019-11-13 17:00:01 debian /home/frank b82d87d0 2019-11-18 17:00:01 debian /home/frank 040b0ab7 2019-11-19 17:00:01 debian /home/frank 7221d8ef 2019-11-20 17:00:01 debian /home/frank 84132a25 2019-11-21 17:00:01 debian /home/frank b558a52c 2019-11-25 17:00:01 debian /home/frank e5cc0c3e 2019-12-02 17:00:01 debian /home/frank 22423fa5 2019-12-03 17:00:01 debian /home/frank 39df1ab9 2019-12-04 17:00:01 debian /home/frank 98843457 2019-12-05 17:00:01 debian /home/frank b0cdd4b6 2019-12-09 17:00:01 debian /home/frank 828414f9 2019-12-10 17:00:01 debian /home/frank e34a27c3 2019-12-11 17:00:01 debian /home/frank 6e488c3b 2019-12-12 17:00:01 debian /home/frank 17898403 2019-12-16 17:00:01 debian /home/frank 1973305a 2019-12-17 17:00:01 debian /home/frank 9553bedd 2019-12-18 17:00:01 debian /home/frank fedf749d 2019-12-19 17:00:01 debian /home/frank 8e7cb876 2019-12-23 17:00:01 debian /home/frank 0bd0d102 2019-12-25 17:00:01 debian /home/frank 13d348b0 2019-12-26 17:00:01 debian /home/frank c7d960aa 2019-12-30 17:00:01 debian /home/frank f6ea9118 2020-01-01 17:00:01 debian /home/frank ------------------------------------------------------------------ 26 snapshots 26 snapshots have been removed, running prune counting files in repo building new index for repo [0:35] 100.00% 7806 / 7806 packs repository contains 7806 packs (46537 blobs) with 41.110 GiB processed 46537 blobs: 0 duplicate blobs, 0 B duplicate load all snapshots find data that is still in use for 5 snapshots [0:01] 100.00% 5 / 5 snapshots found 32654 of 46537 data blobs still in use, removing 13883 blobs will remove 0 invalid files will delete 715 packs and rewrite 752 packs, this frees 5.027 GiB [2:28] 100.00% 752 / 752 packs rewritten counting files in repo [0:01] 100.00% 6571 / 6571 packs finding old index files saved new indexes as [d137b425 f7caee99 a6e9711a] remove 35 old index files [1:13] 100.00% 1467 / 1467 packs deleted done using temporary cache in /tmp/restic-check-cache-916655151 repository 2f3f6147 opened successfully, password is correct created new cache in /tmp/restic-check-cache-916655151 create exclusive lock for repository load indexes check all packs check snapshots, trees and blobs read all data [7:47] 100.00% 6571 / 6571 items duration: 7:47 no errors were found root@debian:~#

    Am Ende seht ihr noch, wie Restic alle Files testet. Mein Script sieht jetzt so aus.

    #!/bin/bash # Script um mit Restic Daten automatisiert zu sichern! # Dient zum Sichern der Homepartition auf dem ROCKPro64 NAS! # Was soll gesichert werden? backup_pfad=/home/frank # Programm Start restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ backup $backup_pfad --exclude-file=excludes.txt restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ forget --keep-last 3 --keep-monthly 3 --prune # Testen restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ check --read-data

    Das dann schön mit einem Cronjob laufen lassen und die Datensicherung ist erledigt 😉

  • Redis installieren

    Angeheftet Verschoben Redis
    1
    0 Stimmen
    1 Beiträge
    378 Aufrufe
    Niemand hat geantwortet
  • NodeBB - Automatisch starten

    NodeBB
    1
    0 Stimmen
    1 Beiträge
    628 Aufrufe
    Niemand hat geantwortet