Skip to content

Kopia - HTTP/S Server aufsetzen

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

  • fail2ban auf einem systemd System (Debian 12)

    Linux linux fail2ban
    2
    0 Stimmen
    2 Beiträge
    220 Aufrufe
    FrankMF
    Auf Debian 13 Trixie fehlt noch folgendes apt install python3-setuptools
  • Nextcloud - Update auf 31.0.0

    Nextcloud nextcloud linux
    2
    1
    0 Stimmen
    2 Beiträge
    619 Aufrufe
    FrankMF
    Und nicht vergessen service php8.2-fpm restart Damit sieht man dann auch alle Files und Kalendereinträge LOL
  • MongoDB Compass

    Linux mongodb flatpak linux
    1
    3
    0 Stimmen
    1 Beiträge
    250 Aufrufe
    Niemand hat geantwortet
  • Pycharm - AI Assistant

    Linux pycharm linux
    1
    2
    0 Stimmen
    1 Beiträge
    302 Aufrufe
    Niemand hat geantwortet
  • Happy Birthday Debian

    Allgemeine Diskussionen debian linux
    1
    1
    0 Stimmen
    1 Beiträge
    116 Aufrufe
    Niemand hat geantwortet
  • Semaphore - Installation & Anwendung

    Verschoben Ansible semaphore ansible linux
    4
    9
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    FrankMF
    Ich parke das mal hier, damit ich das nicht noch mal vergesse. Hat mich eben mal wieder eine Stunde gekostet /etc/ansible/ansible.cfg [defaults] host_key_checking = False Edit -> https://linux-nerds.org/topic/1493/ansible-host_key_checking
  • Redis - Datenbanken löschen

    Redis redis linux
    1
    0 Stimmen
    1 Beiträge
    279 Aufrufe
    Niemand hat geantwortet
  • OpenWRT - Zonen

    Verschoben OpenWRT & Ubiquiti ER-X openwrt linux
    2
    3
    0 Stimmen
    2 Beiträge
    691 Aufrufe
    FrankMF
    Es ist was heller geworden [image: 1610188645165-7b86e97c-31a5-44b6-809f-25d9d1c2ee4a-image.png] Die besagte Forward Regel [image: 1610188840619-zonen.png] Diese Forward Regel zieht erst dann, wenn es mehrere Interfaces in einer Zone gibt. Aus der Doku INPUT rules for a zone describe what happens to traffic trying to reach the router itself through an interface in that zone. OUTPUT rules for a zone describe what happens to traffic originating from the router itself going through an interface in that zone. FORWARD rules for a zone describe what happens to traffic passing between different interfaces belonging in the same zone. Das heisst nun, das ein Forwarding zwischen zwei Zonen immer eine spezifische Regel unter Traffic Rules benötigt. Forwarding between zones always requires a specific rule. Somit ist ein Forwarding zwischen zwei Zonen in den Standard Einstellungen nicht erlaubt. Das kann ich hier auch so bestätigen. Das ist ja auch das was ich mit meiner "DMZ"-Zone erreichen möchte. Kein Zugriff auf LAN. Unter Zone ⇒ Forwardings kann man jetzt sehen, das das Forwarding von LAN in Richtung WAN und DMZ erlaubt ist. WAN ist logisch, sonst komme ich ja nicht ins Internet. DMZ habe ich eingestellt, damit ich auch Teilnehmer im DMZ Netz erreichen kann, wenn ich da mal ran muss. [image: 1610189307657-8a548c29-8bc5-4074-8099-66460bcea9a8-image.png] Stelle ich das jetzt so ein. [image: 1610189398985-dca8b393-f613-4cab-a377-ffbc2bb8ddf5-image.png] Dann kann ich von der DMZ Zone aus das LAN erreichen. Aha, so langsam verstehe ich Quelle: https://forum.openwrt.org/t/firewall-zones-and-settings/84369