Skip to content

Restic UI - Webinterface for backup tool restic [MongoDB]

Verschoben Restic UI (MongoDB)
  • Ich hatte ja im Jahr 2024 Euch mein Tool vorgestellt.

    Re: Vorstellung Restic UI Flask

    Seitdem hat sich eine Menge getan. Die Welt bleibt ja auch nicht stehen, so muss man halt auch Entscheidungen treffen. Eine dieser Entscheidungen betraf das Backend, Redis ist raus geflogen und nun nutze ich MongoDB. Auch nicht mein absoluter Traum von Open Source, aber man kann halt nicht alles haben. Es sollte schon eine NoSQL Datenbank sein.

    Außerdem hat MongoDB ein schönes UI für den Desktop, hört auf den Namen MongoDB Compass. Sehr gut zum Programmieren geeignet, da ich ja doch ständig irgendwo was ändere 🙂

    So sieht das UI zu Weihnachten 2024 aus.

    7d384c16-8358-4348-b907-bb9278052d7d-grafik.png

    Was gibt es Neues?

    Als Erstes habe ich eine kleine Übersicht eingeführt. Diese ist jetzt um zwei Elemente erweitert.

    • S3
    • Last Update

    Und die Felder Source und Repository haben die Positionen getauscht. ( Logik, Quelle -> Ziel gefiel mir besser) Außerdem ist Repository jetzt so aufgebaut, das es auch für REST und S3 Backups den Zielpfad anzeigt.

    Und dann sind wir schon bei der wichtigsten Neuerung, den S3 Backups. Da Hetzner, das jetzt endlich für alle verfügbar gemacht hat, habe ich das natürlich direkt ausprobiert. Aber womit fülle ich das? Meine ersten Test hatte ich auf der Konsole gemacht, da fiel mir doch ein, das Restic das nativ unterstützt 🙂

    Somit musste ich das nur in mein kleines Tool einfügen. Ein paar Tage später funktionierte das dann so wie es sollte und ich konnte mein erstes Backup erfolgreich anlegen. Juhu.

    Damit hat das Tool jetzt drei Backup Möglichkeiten

    • Lokales Backup
    • REST Backup (REST Server von Restic)
    • S3

    Außerdem hatte ich , als ersten Versuch, ein Login / Logout hinzugefügt. Man muss sich also erst einloggen, bevor man auf die Daten der Backups zugreifen kann. Das funktioniert, ist aber noch nicht final. z.B. fehlt noch das erste Anlegen eines Nutzers komplett.

    Add Backup

    Viel Arbeit habe ich hier reingesteckt.

    23370c88-df37-4b5e-97ff-a836c1d92f42-grafik.png

    Man bekommt auch nur die Felder angezeigt, die zu dem entsprechenden Backup auch Sinn machen.

    Edit Backup

    Ebenso beim Editieren eines Backups.

    66071882-6713-402c-b57b-95df6f01418b-grafik.png

    Login / Logout

    79cbc903-e18a-413d-8384-23310f311651-grafik.png

    Hier kann man den User und das Passwort ändern. Das gefällt mir aber noch nicht, habe ich da eigentlich nur schnell rein gecodet zum Testen. Mal sehen, man muss ja auch 2025 noch Aufgaben haben 😉

    ca93d891-40a4-4147-aa14-4964e473d8da-grafik.png

    S3 Praktisches Beispiel

    Init

    Das angelegte S3 Test Projekt muss initialisiert werden. Im Menü kann auch nur diese Funktion ausgewählt werden. In der Übersicht kann man auch erkennen, das Init nicht gesetzt ist.

    63a89be4-127c-4e9e-9ce0-2de59e9966e8-grafik.png

    Wenn ich nun auf Init klicke, taucht nach kurzer Zeit folgendes Fenster auf. Es enthält die Original Ausgabe des Restic Tools.

    15e0e755-2ff8-4e38-8584-80365bcfd5ea-grafik.png

    Backup

    Nach dem Klick auf Backup und kurzer oder längerer Wartezeit, erscheint folgendes Fenster.

    9c06976e-4887-4a5d-b33d-d1484884fe00-grafik.png

    Alle anderen Funktionen arbeiten auf ähnliche Art und Weise. Ich will ja heir nicht langweilen.

    Zum Schluss noch, wie es auf Hetzner aussieht.

    Hetzner

    Den Inhalt des Ordners kann man sich bei Hetzner ansehen.

    6cbf7a9a-b703-4e58-b86a-802014fc8df7-grafik.png

    Und das Tolle an Restic ist, alle Daten sind AES256 verschlüsselt. Ein ordentliches Passwort vorausgesetzt, sollte verhindern, das andere Menschen die versehentlich in den Besitz der Dateien kommen irgendwas damit anfangen können 🙂

    So sieht das dann in der Praxis aus.

    2c85a3ab-6ed1-44df-97a0-3df9334a0f93-grafik.png

    Video

    Ausblick

    Aktuell ist das gitlab Repository auf Privat gestellt. Ob sich das ändert, weiß ich aktuell noch nicht. Bin immer noch an meiner Code Qualität am Arbeiten usw.

    Sollte aber jemand echtes Interesse an dem Projekt haben, werden wir dafür auch eine Lösung finden.

    Da ich das Projekt auch produktiv nutze, werde ich jetzt wohl alles auf S3 verlagern.

  • FrankMF FrankM verschob dieses Thema von Restic UI
  • Ich habe den Sonntag mal genutzt um ein wenig was einzubauen. Einmal habe ich mit datatables.net die Tabelle etwas funktionaler gestaltet.

    00a95363-1f41-4bbf-884a-34f21aea81e4-grafik.png

    Man kann nun suchen, sortieren und wenn man mehr als 10 Datenpunkte hat, hat die Tabelle auch Pagination. Ein nettes Projekt, macht einiges einfacher 👍

    Das nächste, ich hatte es im Video ja kurz erwähnt, mir fehlte ja noch die Restore Funktion von Restic. Ok, ist jetzt auch drin.

    Da die Benutzerverwaltung mittlerweile komplett eingebaut ist, werde ich demnächst meine Test Datenbanken und alles was damit zu tuen hat, aus dem Code entfernen. Brauch ich jetzt nicht mehr. Habe jetzt zwei Benutzer, einen Produktiven und einen zum Testen.

    Langfristig steht auch noch eine zweite Sprache auf dem Zettel. Aber, dafür muss ich Lust haben, das Thema juckt nicht so richtig 😉

  • Rest-Server v0.13.0 released

    Restic
    2
    0 Stimmen
    2 Beiträge
    319 Aufrufe
    FrankMF
    Download Rest-Server und installieren Im Github Repository den aktuellen Release suchen. Hier am Beispiel der aktuellen Version 0.13.0 (27.07.2024) Datei herunterladen wget https://github.com/restic/rest-server/releases/download/v0.13.0/rest-server_0.13.0_linux_amd64.tar.gz Die Datei entpacken tar -xf rest-server_0.13.0_linux_amd64.tar.gz Ins Verzeichnis wechseln cd rest-server_0.13.0_linux_amd64 Wenn der Rest-Server läuft, dann muss man diesen erst mal stoppen. systemctl stop rest-server Danach kopiert man das File nach bin. Wer mag sichert vorher das alte File. cp rest-server /usr/local/bin Danach kann man den Rest-Server wieder starten. systemctl start rest-server Versionskontrolle root@rest-server:~# rest-server -v rest-server version rest-server 0.13.0 compiled with go1.22.5 on linux/amd64 Die Hilfe vom Rest-Server root@rest-server:~# rest-server -h Run a REST server for use with restic Usage: rest-server [flags] Flags: --append-only enable append only mode --cpu-profile string write CPU profile to file --debug output debug messages -h, --help help for rest-server --htpasswd-file string location of .htpasswd file (default: "<data directory>/.htpasswd)" --listen string listen address (default ":8000") --log filename write HTTP requests in the combined log format to the specified filename (use "-" for logging to stdout) --max-size int the maximum size of the repository in bytes --no-auth disable .htpasswd authentication --no-verify-upload do not verify the integrity of uploaded data. DO NOT enable unless the rest-server runs on a very low-power device --path string data directory (default "/tmp/restic") --private-repos users can only access their private repo --prometheus enable Prometheus metrics --prometheus-no-auth disable auth for Prometheus /metrics endpoint --tls turn on TLS support --tls-cert string TLS certificate path --tls-key string TLS key path -v, --version version for rest-server Systemd Wer noch ein passendes systemd File benötigt. [Unit] Description=Rest Server After=syslog.target After=network.target [Service] Type=simple User=rest-server Group=rest-server ExecStart=/usr/local/bin/rest-server --private-repos --tls --tls-cert /mnt/rest-server/<DOMAIN>/fullchain.pem --tls-key /mnt/rest-server/<DOMAIN>/key.pem --path /mnt/rest-server Restart=always RestartSec=5 # Optional security enhancements NoNewPrivileges=yes PrivateTmp=yes ProtectSystem=strict ProtectHome=yes ReadWritePaths=/mnt/rest-server [Install] WantedBy=multi-user.target
  • PyWebIO vs. Flask

    Python3
    2
    0 Stimmen
    2 Beiträge
    181 Aufrufe
    FrankMF
    Mist, jetzt habe ich auch noch Streamlit gefunden. Jetzt geht mir langsam die Zeit aus...
  • Restic - Passwortübergabe

    Restic
    1
    0 Stimmen
    1 Beiträge
    183 Aufrufe
    Niemand hat geantwortet
  • Debian 11 Bullseye released!

    Linux
    4
    0 Stimmen
    4 Beiträge
    315 Aufrufe
    FrankMF
    Mein Systemadmin auf der Arbeit meinte heute, angesprochen auf das Problem, läuft der Network-Manager? Ok, gute Frage...... Schauen wir mal. Ich bin mir leider nicht 100% sicher, ob er vor meinem Eingreifen lief, ich denke aber schon. Warum ich unsicher bin? root@debian:~# systemctl enable systemd-networkd.service Created symlink /etc/systemd/system/dbus-org.freedesktop.network1.service → /lib/systemd/system/systemd-networkd.service. Created symlink /etc/systemd/system/multi-user.target.wants/systemd-networkd.service → /lib/systemd/system/systemd-networkd.service. Created symlink /etc/systemd/system/sockets.target.wants/systemd-networkd.socket → /lib/systemd/system/systemd-networkd.socket. Created symlink /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service → /lib/systemd/system/systemd-networkd-wait-online.service. Ok, danach root@debian:~# systemctl start systemd-networkd.service root@debian:~# systemctl status systemd-networkd.service ● systemd-networkd.service - Network Service Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; ven> Active: active (running) since Tue 2021-08-17 17:36:38 CEST; 6s ago TriggeredBy: ● systemd-networkd.socket Docs: man:systemd-networkd.service(8) Main PID: 1288 (systemd-network) Status: "Processing requests..." Tasks: 1 (limit: 19087) Memory: 3.9M CPU: 39ms CGroup: /system.slice/systemd-networkd.service └─1288 /lib/systemd/systemd-networkd Aug 17 17:36:38 debian systemd[1]: Starting Network Service... Aug 17 17:36:38 debian systemd-networkd[1288]: enp25s0: Gained IPv6LL Aug 17 17:36:38 debian systemd-networkd[1288]: Enumeration completed Aug 17 17:36:38 debian systemd[1]: Started Network Service. Danach ging immer noch nix. root@debian:/etc/network# ^C root@debian:/etc/network# nmcli device show GENERAL.DEVICE: wlx7cdd907cbec2 GENERAL.TYPE: wifi GENERAL.HWADDR: BA:59:C0:76:C7:F5 GENERAL.MTU: 1500 GENERAL.STATE: 20 (nicht verfügbar) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- GENERAL.DEVICE: enp25s0 GENERAL.TYPE: ethernet GENERAL.HWADDR: 30:9C:23:60:C6:8E GENERAL.MTU: 1500 GENERAL.STATE: 10 (nicht verwaltet) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- WIRED-PROPERTIES.CARRIER: an IP4.ADDRESS[1]: 192.168.3.169/24 IP4.GATEWAY: 192.168.3.1 IP4.ROUTE[1]: dst = 192.168.3.0/24, nh = 0.0.0.0, mt = 0 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.3.1, mt = 0 IP6.ADDRESS[1]: 2a02:908:1260:13bc:329c:23ff:xxxx:xxxx/64 IP6.ADDRESS[2]: fd8a:6ff:2880:0:329c:23ff:fe60:c68e/64 IP6.ADDRESS[3]: fe80::329c:23ff:fe60:c68e/64 IP6.GATEWAY: fe80::e4d3:f0ff:fe8f:2354 IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256 IP6.ROUTE[2]: dst = ::/0, nh = fe80::e4d3:f0ff:fe8f:2354, mt = 1024 IP6.ROUTE[3]: dst = 2a02:908:xxxx:xxxx::/64, nh = ::, mt = 256 IP6.ROUTE[4]: dst = fd8a:6ff:2880::/64, nh = ::, mt = 256 Jetzt hatte ich das erste Mal einen Ansatz, wonach ich suchen musste. GENERAL.STATE: 10 (nicht verwaltet) Etwas Suche im Netz und dann das nano /etc/NetworkManager/NetworkManager.conf Inhalt der Datei [main] plugins=ifupdown,keyfile [ifupdown] managed=false Das false in true geändert. Danach ein systemctl restart NetworkManager und ich konnte den Network-Manager auf dem Desktop benutzen!?!?!? [image: 1629216580219-bildschirmfoto-vom-2021-08-17-18-07-25.png] Irgendwas ist da durcheinander im Bullseye
  • Ubiquiti ER-X - Switch

    Verschoben OpenWRT & Ubiquiti ER-X
    1
    +0
    0 Stimmen
    1 Beiträge
    266 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Projekt Wireguard Server

    Verschoben ROCKPro64
    2
    +1
    0 Stimmen
    2 Beiträge
    520 Aufrufe
    FrankMF
    Hat ein wenig Nerven gekostet und der Artikel ist auch was länger geworden Viel Spaß beim Lesen und testen!
  • Proxmox - Offline

    Linux
    1
    0 Stimmen
    1 Beiträge
    267 Aufrufe
    Niemand hat geantwortet
  • Redis installieren

    Angeheftet Verschoben Redis
    1
    0 Stimmen
    1 Beiträge
    392 Aufrufe
    Niemand hat geantwortet