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.

  • Proxmox - Video Tipp

    Proxmox
    1
    0 Stimmen
    1 Beiträge
    148 Aufrufe
    Niemand hat geantwortet
  • Nextcloud 28.0.0 - OpenAI Integration

    Nextcloud
    2
    6
    0 Stimmen
    2 Beiträge
    808 Aufrufe
    FrankMF
    Noch eine Ergänzung. Wenn ihr jetzt viele User habt und das nur auf eine Gruppe beschränken wollt, könnt ihr das so machen. Unter Apps, Nextcloud Assistant suchen und die gewünschten Gruppen eintragen. Fertig [image: 1702725312285-197deae4-d72a-4729-bba7-bfa9b4bef334-grafik.png]
  • Manjaro KDE Plasma 21.2.2

    Linux
    5
    2
    0 Stimmen
    5 Beiträge
    208 Aufrufe
    FrankMF
    Ok, geht nicht. Manjaro und ich werden leider keine Freunde. Da sind zu viele Dinge, die nicht besonders gut umgesetzt sind. Heute mal den Test gemacht und mein geliebtes Linux Mint Cinnamon installiert. Passwort für die Verschlüsselung nimmt anstandslos deutsche Sonderzeichen an WiFi geht auch nicht mit WPA3, man kann aber einfach auf WPA2 umstellen und das funktioniert. Damit endet dieser Versuch jetzt..
  • LUKS verschlüsselte Platte mounten

    Linux
    2
    1
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    FrankMF
    So, jetzt das ganze noch einen Ticken komplizierter Ich habe ja heute, für eine Neuinstallation von Ubuntu 20.04 Focal eine zweite NVMe SSD eingebaut. Meinen Bericht zu dem Thema findet ihr hier. Aber, darum soll es jetzt hier nicht gehen. Wir haben jetzt zwei verschlüsselte Ubuntu NVMe SSD Riegel im System. Jetzt klappt die ganze Sache da oben nicht mehr. Es kommt immer einen Fehlermeldung. unbekannter Dateisystemtyp „LVM2_member“. Ok, kurz googlen und dann findet man heraus, das es nicht klappen kann, weil beide LVM Gruppen, den selben Namen benutzen. root@frank-MS-7C37:/mnt/crypthome/root# vgdisplay --- Volume group --- VG Name vgubuntu2 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size <464,53 GiB PE Size 4,00 MiB Total PE 118919 Alloc PE / Size 118919 / <464,53 GiB Free PE / Size 0 / 0 VG UUID lpZxyv-cNOS-ld2L-XgvG-QILa-caHS-AaIC3A --- Volume group --- VG Name vgubuntu System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size <475,71 GiB PE Size 4,00 MiB Total PE 121781 Alloc PE / Size 121781 / <475,71 GiB Free PE / Size 0 / 0 VG UUID jRYTXL-zjpY-lYr6-KODT-u0LJ-9fYf-YVDna7 Hier oben sieht man das schon mit geändertem Namen. Der VG Name muss unterschiedlich sein. Auch dafür gibt es ein Tool. root@frank-MS-7C37:/mnt/crypthome/root# vgrename --help vgrename - Rename a volume group Rename a VG. vgrename VG VG_new [ COMMON_OPTIONS ] Rename a VG by specifying the VG UUID. vgrename String VG_new [ COMMON_OPTIONS ] Common options for command: [ -A|--autobackup y|n ] [ -f|--force ] [ --reportformat basic|json ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands. Das muss dann so aussehen! vgrename lpZxyv-cNOS-ld2L-XgvG-QILa-caHS-AaIC3A vgubuntu2 ACHTUNG Es kann zu Datenverlust kommen, also wie immer, Hirn einschalten! Ich weiß, das die erste eingebaute Platte mit der Nummer /dev/nvme0n1 geführt wird. Die zweite, heute verbaute, hört dann auf den Namen /dev/nvme1n1. Die darf ich nicht anpacken, weil sonst das System nicht mehr startet. /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /dev/mapper/vgubuntu-root / ext4 errors=remount-ro 0 1 # /boot was on /dev/nvme1n1p2 during installation UUID=178c7e51-a1d7-4ead-bbdf-a956eb7b754f /boot ext4 defaults 0 2 # /boot/efi was on /dev/nvme0n1p1 during installation UUID=7416-4553 /boot/efi vfat umask=0077 0 1 /dev/mapper/vgubuntu-swap_1 none swap sw 0 0 Jo, wenn jetzt die Partition /dev/mapper/vgubuntu2-root / anstatt /dev/mapper/vgubuntu-root / heißt läuft nichts mehr. Nur um das zu verdeutlichen, auch das könnte man problemlos reparieren. Aber, ich möchte nur warnen!! Nachdem die Änderung durchgeführt wurde, habe ich den Rechner neugestartet. Puuh, Glück gehabt, richtige NVMe SSD erwischt Festplatte /dev/mapper/vgubuntu2-root: 463,58 GiB, 497754832896 Bytes, 972177408 Sektoren Einheiten: Sektoren von 1 * 512 = 512 Bytes Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes Nun können wir die Platte ganz normal, wie oben beschrieben, mounten. Nun kann ich noch ein paar Dinge kopieren
  • ROCKPro64 - PCIe NVMe SSD installieren

    Hardware
    1
    0 Stimmen
    1 Beiträge
    333 Aufrufe
    Niemand hat geantwortet
  • Cups Druckdaemon

    Linux
    1
    5
    0 Stimmen
    1 Beiträge
    403 Aufrufe
    Niemand hat geantwortet
  • NodeBB - spawn npm ENOENT

    NodeBB
    1
    0 Stimmen
    1 Beiträge
    422 Aufrufe
    Niemand hat geantwortet
  • [HOWTO] Verschlüsseltes NAS aufsetzen

    Verschoben ROCKPro64
    12
    0 Stimmen
    12 Beiträge
    3k Aufrufe
    FrankMF
    Da btrfs bei mir ja nicht so der Bringer war, Fehler im Image vom Kamil?, Fehler in btrfs? Ich weiß es nicht, also weg damit! Da ich das NAS noch richtig produktiv genutzt hatte, waren die Daten schnell gesichert. Danach das NAS neugestartet, nun sind die beiden Platten nicht mehr gemountet und wir können damit arbeiten. ACHTUNG! Ich bitte wie immer darum, das Gehirn ab hier einzuschalten! Sonst droht Datenverlust! Aus Sicherheitsgründen gebe ich hier die Laufwerke so an = sdX1 Das X bitte entsprechend austauschen! Die beiden Platten mit sudo fdisk /dev/sdX neu einrichten. Alte Partition weg, neu einrichten usw. Im Detail gehe ich hier jetzt nicht drauf ein. Ich gehe davon aus, das das bekannt ist. Der Plan raid_pool0 = sdX1 = /dev/mapper/raid_pool0 raid_pool1 = sdX1 = /dev/mapper/raid_pool1 Verschlüsseln sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1 sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1 Platten entschlüsseln sudo cryptsetup open /dev/sdX1 raid_pool0 sudo cryptsetup open /dev/sdX1 raid_pool1 RAID1 anlegen sudo mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/mapper/raid_pool0 /dev/mapper/raid_pool1 sudo mkfs.ext4 /dev/md0 Script zum Entschlüsseln und Mounten crypt.sh #!/bin/bash ###############################################################################$ # Autor: Frank Mankel # Verschlüsseltes Raid1 einbinden! # # Hardware: # ROCKPro64v2.1 # PCIe SATA Karte # 2St. 2,5 Zoll HDD Platten a 2TB # # Software: # bionic-minimal 0.7.9 # Kontakt: frank.mankel@gmail.com # ###############################################################################$ #Passwort abfragen echo "Passwort eingeben!" read -s password echo "Bitte warten......" #Passwörter abfragen echo -n $password | cryptsetup open /dev/sdX1 raid_pool0 -d - echo -n $password | cryptsetup open /dev/sdX1 raid_pool1 -d - #Raid1 mounten mount /dev/md0 /mnt/raid echo "Laufwerke erfolgreich gemountet!" Bis jetzt sieht das Raid ok aus, ich werde das die nächsten Tage mal ein wenig im Auge behalten. [ 82.430293] device-mapper: uevent: version 1.0.3 [ 82.430430] device-mapper: ioctl: 4.39.0-ioctl (2018-04-03) initialised: dm-devel@redhat.com [ 108.196397] md/raid1:md0: not clean -- starting background reconstruction [ 108.196401] md/raid1:md0: active with 2 out of 2 mirrors [ 108.240395] md0: detected capacity change from 0 to 2000260497408 [ 110.076860] md: resync of RAID array md0 [ 110.385099] EXT4-fs (md0): recovery complete [ 110.431715] EXT4-fs (md0): mounted filesystem with ordered data mode. Opts: (null) [57744.301662] md: md0: resync done.