Skip to content

Linux

Alles rund um Linux

This category can be followed from the open social web via the handle linux@linux-nerds.org

654 Topics 1.3k Posts

Subcategories


  • Alles rund um Forgejo

    5 6
    5 Topics
    6 Posts
    FrankMF
    Release v11.0.2 https://codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/11.0.2.md Ein Traum, wie einfach man das aktualisieren kann. root@forgejo:~# nano /etc/containers/systemd/forgejo.container In der Datei die Version anpassen [Container] Image=codeberg.org/forgejo/forgejo:11.0.2 AutoUpdate=registry Label=PODMAN_SYSTEMD_UNIT=%n PodmanArgs=--pod=forgejo-pod --name=forgejo Dann ein paar systemd Befehle systemctl daemon-reload systemctl restart forgejo.service Kurze Kontrolle systemctl status forgejo.service Dann sieht man diese Zeile in der Ausgabe Jun 18 17:52:45 forgejo forgejo[3035]: 2025/06/18 17:52:45 cmd/web.go:112:showWebStartupMessage() [I] Forgejo version: 11.0.2+gitea-1.22.0 built with GNU Make 4.4> Oder in der Webzeile im Browser [image: 1750269996102-26bc4e0c-0c97-4020-bf48-af369210fe1e-image.png]
  • Alles rund um den möglichen Nextcloud Ersatz OpenCloud

    6 13
    6 Topics
    13 Posts
    FrankMF
    Gestern hat das OpenCloud Team den Desktop Clienten v2.0.0-rc.1 released. https://github.com/opencloud-eu/desktop/releases/tag/v2.0.0-rc.1 Da fiel mir ein, das sollte man auch mal antesten. Leider gibt es nur ein AppImage, ich bevorzuge Flatpaks. Kommt ja vielleicht noch. Aber, ich wusste aktuell gar nicht, ob ich das AppImage auf meinem Manjaro gestartet bekomme. Versuch macht klug. Also heruntergeladen und mal gestartet. Kommt eine kurze Nachfrage, ob man dem Herausgeber vertraut usw. Danach startet das AppImage. Das erste Fenster fragt nach der Serveradresse. Nach der Eingabe kann man sich auf dem Server einloggen und die entsprechenden Rechte freigeben. So wie man das auch von anderen Tools her kennt. [image: 1749286168372-09d1e85c-5e3f-4cc2-9a34-a4fa8fe3a11f-image.png] Man hat halt die Grundfunktionen, die man auch von anderen Tools her kennt. Activity [image: 1749286328272-bcbd62ea-6e6d-4c0d-a327-909297018445-image.png] Settings [image: 1749286357993-b865d537-508f-4868-98fc-1fc0a96648ca-image.png] Optionen [image: 1749286392829-48c4f16f-bdd8-4c62-ae15-f58116758b72-image.png] Choose what to sync [image: 1749286423467-fbb10aa0-b044-4f77-8b5c-39b841b74cf1-image.png] So, das lasse ich jetzt hier mal zum Testen laufen. Mal sehen, wie es sich so schlägt.
  • Alles rund um Podman

    4 9
    4 Topics
    9 Posts
    FrankMF
    Schauen wir uns mal an, wie man die Container aktuell hält. In der postgres.container steht das hier (als Beispiel) [Container] Image=docker.io/library/postgres:17 AutoUpdate=registry Das AutoUpdate=registry ist die Voraussetzung, dass der Container aktualisiert werden darf. Mit diesem Befehl kann man sich anschauen, wie der Stand der DInge ist. root@debian-4gb-nbg1-2-forgejo:~# podman auto-update --dry-run UNIT CONTAINER IMAGE POLICY UPDATED forgejo-pod.service 6486189fb10c (postgres) docker.io/library/postgres:17 registry false forgejo-pod.service 7d5627e2d434 (forgejo) codeberg.org/forgejo/forgejo:11.0.1 registry false forgejo-pod.service 7fb26d4f8b58 (nginx) docker.io/library/nginx:latest registry false Podman hat aber standardmäßig einen systemd Dienst, der sich darum kümmert root@forgejo:/etc/containers/systemd# systemctl status podman-auto-update.service ○ podman-auto-update.service - Podman auto-update service Loaded: loaded (/usr/lib/systemd/system/podman-auto-update.service; enabled; preset: enabled) Active: inactive (dead) since Mon 2025-06-09 00:02:57 UTC; 12h ago Invocation: a098f0054b254a0888ee789200ac9507 TriggeredBy: ● podman-auto-update.timer Docs: man:podman-auto-update(1) Process: 68939 ExecStart=/usr/bin/podman auto-update (code=exited, status=0/SUCCESS) Process: 68947 ExecStartPost=/usr/bin/podman image prune -f (code=exited, status=0/SUCCESS) Main PID: 68939 (code=exited, status=0/SUCCESS) Mem peak: 14.4M CPU: 292ms Jun 09 00:02:55 forgejo systemd[1]: Starting podman-auto-update.service - Podman auto-update service... Jun 09 00:02:55 forgejo podman[68939]: 2025-06-09 00:02:55.368941 +0000 UTC m=+0.059687227 system auto-update Jun 09 00:02:57 forgejo podman[68939]: UNIT CONTAINER IMAGE POLICY UPDATED Jun 09 00:02:57 forgejo podman[68939]: forgejo-pod.service 6486189fb10c (postgres) docker.io/library/postgres:17 registry false Jun 09 00:02:57 forgejo podman[68939]: forgejo-pod.service 7d5627e2d434 (forgejo) codeberg.org/forgejo/forgejo:11.0.1 registry false Jun 09 00:02:57 forgejo podman[68939]: forgejo-pod.service f2e9eee72017 (nginx) docker.io/library/nginx:latest registry false Jun 09 00:02:57 forgejo systemd[1]: podman-auto-update.service: Deactivated successfully. Jun 09 00:02:57 forgejo systemd[1]: Finished podman-auto-update.service - Podman auto-update service. postgres Ok, die Container sollten automatisch aktualisiert werden. docker.io/library/postgres:17 Die Postgres DB ist auf die Version 17 festgezurrt. Aktuell ist root@forgejo:/etc/containers/systemd# podman exec postgres postgres --version postgres (PostgreSQL) 17.5 (Debian 17.5-1.pgdg120+1) Eine Version 17.6 wird jetzt automatisch installiert, eine Version 18 aber nicht. nginx docker.io/library/nginx:latest NGINX zieht sich also immer die letzte "latest" Version, die zur Verfügung gestellt wird. root@forgejo:/etc/containers/systemd# podman exec nginx nginx -v nginx version: nginx/1.27.5 Gerade mal gecheckt, 1.27.5 ist die letzte Mainline Version. Also sind wir aktuell. forgejo Der Eintrag codeberg.org/forgejo/forgejo:11.0.1 aktuelle Version, die installiert ist. root@forgejo:/etc/containers/systemd# podman exec forgejo forgejo -v Forgejo version 11.0.1+gitea-1.22.0 (release name 11.0.1) built with GNU Make 4.4.1, go1.24.2 : bindata, timetzdata, sqlite, sqlite_unlock_notify Ok, wir sind auf Version 11.0.1 Wenn jetzt die Version 11.0.2 herauskommt, wird diese nicht installiert, da wir im forgejo.container folgendes stehen haben. [Container] Image=codeberg.org/forgejo/forgejo:11.0.1 Das ist aber erst mal nicht so schlimm, ich lese da mit und bekomme das mit. Das mache ich auch lieber von Hand, dann kann ich besser sehen wo es klemmt
  • Vaultwarden ist eine Rust-Implementierung der Bitwarden Server API.

    Vaultwarden is a Rust implementation of the Bitwarden Server API.

    20 20
    20 Topics
    20 Posts
    FrankMF
    Ein Haufen Änderungen, viel Spaß! https://github.com/dani-garcia/vaultwarden/releases/tag/1.34.1 https://github.com/dani-garcia/vaultwarden/releases/tag/1.34.0 root@:~# vaultwarden -v Vaultwarden 1.34.1 Web-Vault Version file missing Danke @Nico
  • Automation for everyone

    6 10
    6 Topics
    10 Posts
    FrankMF
    Aktuell habe ich durch eine Erkrankung etwas mehr Zeit für die Konsole, sodass ich angefangen habe, die Setups aller meiner Server zu vereinheitlichen. Anfangen wollte ich dazu mit meinem lokalen Proxmox. Dabei kam mir wieder in den Sinn, das ich auch noch ein Debian Bookworm 12 Template brauchte. Also, das aktuelle Debian Image heruntergeladen. Mit diesem dann einen Debian Bookworm 12 Server aufgesetzt. Jetzt brauchte ich zu diesem Zeitpunkt einen Zugang mit SSH-Key (für mein Semaphore). Also habe ich schon mal zwei SSH-Keys eingefügt. Einmal meinen Haupt-PC und einmal den Semaphore Server. Danach den Server in ein Template umgewandelt. [image: 1694089227738-c552d99f-4aa1-480a-a4a1-c9ac711f24fb-grafik.png] 105 ist das Template, 106 ein damit erstellter Test-Server. Ok, das läuft wie erwartet, jetzt möchte ich den Server durch konfigurieren, so wie ich das gerne haben möchte. Da es hier um Ansible geht, brauche ich dazu ein Playbook. --- ############################################### # Playbook for my Proxmox VMs ############################################### - name: My task hosts: proxmox_test tasks: ##################### # Update && Upgrade installed packages and install a set of base software ##################### - name: Update apt package cache. ansible.builtin.apt: update_cache: yes cache_valid_time: 600 - name: Upgrade installed apt packages. ansible.builtin.apt: upgrade: 'yes' - name: Ensure that a base set of software packages are installed. ansible.builtin.apt: pkg: - crowdsec - crowdsec-firewall-bouncer - duf - htop - needrestart - psmisc - python3-openssl - ufw state: latest ##################### # Setup UFW ##################### - name: Enable UFW community.general.ufw: state: enabled - name: Set policy IN community.general.ufw: direction: incoming policy: deny - name: Set policy OUT community.general.ufw: direction: outgoing policy: allow - name: Set logging community.general.ufw: logging: 'on' - name: Allow OpenSSH rule community.general.ufw: rule: allow name: OpenSSH - name: Allow HTTP rule community.general.ufw: rule: allow port: 80 proto: tcp - name: Allow HTTPS rule community.general.ufw: rule: allow port: 443 proto: tcp ##################### # Setup CrowdSEC ##################### - name: Add one line to crowdsec config.yaml ansible.builtin.lineinfile: path: /etc/crowdsec/config.yaml #search_string: '<FilesMatch ".php[45]?$">' insertafter: '^db_config:' line: ' use_wal: true' ##################### # Generate Self-Signed SSL Certificate # for this we need python3-openssl on the client ##################### - name: Create a new directory www at given path ansible.builtin.file: path: /etc/ssl/self-signed_ssl/ state: directory mode: '0755' - name: Create private key (RSA, 4096 bits) community.crypto.openssl_privatekey: path: /etc/ssl/self-signed_ssl/privkey.pem - name: Create simple self-signed certificate community.crypto.x509_certificate: path: /etc/ssl/self-signed_ssl/fullchain.pem privatekey_path: /etc/ssl/self-signed_ssl/privkey.pem provider: selfsigned - name: Check if the private key exists stat: path: /etc/ssl/self-signed_ssl/privkey.pem register: privkey_stat - name: Renew self-signed certificate community.crypto.x509_certificate: path: /etc/ssl/self-signed_ssl/fullchain.pem privatekey_path: /etc/ssl/self-signed_ssl/privkey.pem provider: selfsigned when: privkey_stat.stat.exists and privkey_stat.stat.size > 0 ##################### # Check for new kernel and reboot ##################### - name: Check if a new kernel is available ansible.builtin.command: needrestart -k -p > /dev/null; echo $? register: result ignore_errors: yes - name: Restart the server if new kernel is available ansible.builtin.command: reboot when: result.rc == 2 async: 1 poll: 0 - name: Wait for the reboot and reconnect wait_for: port: 22 host: '{{ (ansible_ssh_host|default(ansible_host))|default(inventory_hostname) }}' search_regex: OpenSSH delay: 10 timeout: 60 connection: local - name: Check the Uptime of the servers shell: "uptime" register: Uptime - debug: var=Uptime.stdout In dem Inventory muss der Server drin sein, den man bearbeiten möchte. Also, so was [proxmox_test] 192.168.3.19 # BookwormTEST Playbook Wir aktualisieren alle Pakete Wir installieren, von mir festgelegte Pakete Konfiguration UFW Konfiguration CrowdSec Konfiguration selbst signiertes Zertifikat Kontrolle ob neuer Kernel vorhanden ist, wenn ja Reboot Uptime - Kontrolle ob Server erfolgreich gestartet ist Danach ist der Server so, wie ich ihn gerne hätte. Aktuell ufw - Port 22, 80 und 443 auf (SSH, HTTP & HTTPS) CrowdSec als fail2ban Ersatz Selbst signierte Zertifikate benutze ich nur für lokale Server Die erfolgreiche Ausgabe in Semaphore, sieht so aus. 12:38:16 PM Task 384 added to queue 12:38:21 PM Preparing: 384 12:38:21 PM Prepare TaskRunner with template: Proxmox configure Proxmox Template 12:38:22 PM Von https://gitlab.com/Bullet64/playbook 12:38:22 PM e7c8531..c547cfc master -> origin/master 12:38:22 PM Updating Repository https://gitlab.com/Bullet64/playbook.git 12:38:23 PM Von https://gitlab.com/Bullet64/playbook 12:38:23 PM * branch master -> FETCH_HEAD 12:38:23 PM Aktualisiere e7c8531..c547cfc 12:38:23 PM Fast-forward 12:38:23 PM proxmox_template_configuration.yml | 5 +++++ 12:38:23 PM 1 file changed, 5 insertions(+) 12:38:23 PM Get current commit hash 12:38:23 PM Get current commit message 12:38:23 PM installing static inventory 12:38:23 PM No collections/requirements.yml file found. Skip galaxy install process. 12:38:23 PM No roles/requirements.yml file found. Skip galaxy install process. 12:38:26 PM Started: 384 12:38:26 PM Run TaskRunner with template: Proxmox configure Proxmox Template 12:38:26 PM 12:38:26 PM PLAY [My task] ***************************************************************** 12:38:26 PM 12:38:26 PM TASK [Gathering Facts] ********************************************************* 12:38:28 PM ok: [192.168.3.19] 12:38:28 PM 12:38:28 PM TASK [Update apt package cache.] *********************************************** 12:38:29 PM ok: [192.168.3.19] 12:38:29 PM 12:38:29 PM TASK [Upgrade installed apt packages.] ***************************************** 12:38:30 PM ok: [192.168.3.19] 12:38:30 PM 12:38:30 PM TASK [Ensure that a base set of software packages are installed.] ************** 12:38:31 PM ok: [192.168.3.19] 12:38:31 PM 12:38:31 PM TASK [Enable UFW] ************************************************************** 12:38:32 PM ok: [192.168.3.19] 12:38:32 PM 12:38:32 PM TASK [Set policy IN] *********************************************************** 12:38:34 PM ok: [192.168.3.19] 12:38:34 PM 12:38:34 PM TASK [Set policy OUT] ********************************************************** 12:38:36 PM ok: [192.168.3.19] 12:38:36 PM 12:38:36 PM TASK [Set logging] ************************************************************* 12:38:37 PM ok: [192.168.3.19] 12:38:37 PM 12:38:37 PM TASK [Allow OpenSSH rule] ****************************************************** 12:38:37 PM ok: [192.168.3.19] 12:38:37 PM 12:38:37 PM TASK [Allow HTTP rule] ********************************************************* 12:38:38 PM ok: [192.168.3.19] 12:38:38 PM 12:38:38 PM TASK [Allow HTTPS rule] ******************************************************** 12:38:38 PM ok: [192.168.3.19] 12:38:38 PM 12:38:38 PM TASK [Add one line to crowdsec config.yaml] ************************************ 12:38:39 PM ok: [192.168.3.19] 12:38:39 PM 12:38:39 PM TASK [Create a new directory www at given path] ******************************** 12:38:39 PM ok: [192.168.3.19] 12:38:39 PM 12:38:39 PM TASK [Create private key (RSA, 4096 bits)] ************************************* 12:38:41 PM ok: [192.168.3.19] 12:38:41 PM 12:38:41 PM TASK [Create simple self-signed certificate] *********************************** 12:38:43 PM ok: [192.168.3.19] 12:38:43 PM 12:38:43 PM TASK [Check if the private key exists] ***************************************** 12:38:43 PM ok: [192.168.3.19] 12:38:43 PM 12:38:43 PM TASK [Renew self-signed certificate] ******************************************* 12:38:44 PM ok: [192.168.3.19] 12:38:44 PM 12:38:44 PM TASK [Check if a new kernel is available] ************************************** 12:38:44 PM changed: [192.168.3.19] 12:38:44 PM 12:38:44 PM TASK [Restart the server if new kernel is available] *************************** 12:38:44 PM skipping: [192.168.3.19] 12:38:44 PM 12:38:44 PM TASK [Wait for the reboot and reconnect] *************************************** 12:38:55 PM ok: [192.168.3.19] 12:38:55 PM 12:38:55 PM TASK [Check the Uptime of the servers] ***************************************** 12:38:55 PM changed: [192.168.3.19] 12:38:55 PM 12:38:55 PM TASK [debug] ******************************************************************* 12:38:55 PM ok: [192.168.3.19] => { 12:38:55 PM "Uptime.stdout": " 12:38:55 up 19 min, 2 users, load average: 0,84, 0,29, 0,10" 12:38:55 PM } 12:38:55 PM 12:38:55 PM PLAY RECAP ********************************************************************* 12:38:55 PM 192.168.3.19 : ok=21 changed=2 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 12:38:55 PM
  • IT-Monitoring mit Checkmk

    7 16
    7 Topics
    16 Posts
    FrankMF
    Seit heute ist Version 2.0.0p13 draußen. Diese Version soll auf Debian Bullseye laufen. Wie ich selber getestet hatte, lief die alte Version nicht auf Debian Buster. Wenn ich mal Langeweile habe, werde ich das mal testen. https://forum.checkmk.com/t/checkmk-2-debian-11-bullseye-download/26080/20
  • Alles rund um Let's Encrypt

    4 11
    4 Topics
    11 Posts
    FrankMF
    Der Monat ist um, es war Zertifikatsmonat. Und nichts lief mehr..... Was war passiert? Sonntags mache ich von meinem Haupt-PC ein Backup (per Hand) mittels Restic auf meinen Rest-Server. Doch ich bekam eine Fehlermeldung, blabla Zertifikat usw. Ok, ab auf den Server und mit der Fehlersuche gestartet. Das Zertifikat war erneuert worden, aber der Restart Command versuchte immer eine server.service zu starten, die es gar nicht gab!? Da musste ich doch beim @Nico mal kurz nachfragen. Und das kam dann dabei raus. Fehlerursache Der ReloadCmd versuchte einen server.service zu restarten, den es gar nicht gibt. Suche Im acme Pfad liegen die Ordner für die Domains. In diesem Ordner liegt eine Datei DOMAIN.conf In dieser Datei werden bei der Installation des Zertfikiates eine Reihe von Dingen eingetragen. Le_Domain='DOMAIN' Le_Alt='no' Le_Webroot='no' Le_PreHook='' Le_PostHook='' Le_RenewHook='' Le_API='https://acme-v02.api.letsencrypt.org/directory' Le_Keylength='2048' Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/<ID>' Le_LinkOrder='https://acme-v02.api.letsencrypt.org/acme/order/<ID>' Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/>ID>' Le_CertCreateTime='1680440374' Le_CertCreateTimeStr='2023-04-02T12:59:34Z' Le_NextRenewTimeStr='2023-05-31T12:59:34Z' Le_NextRenewTime='1685537974' Le_RealCertPath='/mnt/rest-server/DOMAIN/cert.pem' Le_RealCACertPath='' Le_RealKeyPath='/mnt/rest-server/DOMAIN/key.pem' Le_ReloadCmd='__ACME_BASE64__START_c3lzdGVtY3RsIHJlc3RhcnQgc2VydmVyLnNlcnZpY2U=__ACME_BASE64__END_' Le_RealFullChainPath='/mnt/rest-server/DOMAIN/fullchain.pem' Ok, da ist der ReloadCmd, aber der ist base64 kodiert!? Was machen. # echo c3lzdGVtY3RsIHJlc3RhcnQgc2VydmVyLnNlcnZpY2U= | base64 -d systemctl restart server.service Ok, hier sehen wir die fehlerhafte Eintragung, die genau meinem Beispiel oben entspricht (unter Installation Zertifikat) Man könnte jetzt die Installation des Zertifikates mit dem korrigierten EIntrag durchführen, oder diese Base64 Zeile korrigieren. Ok, wie geht das? # echo systemctl restart rest-server.service | base64 c3lzdGVtY3RsIHJlc3RhcnQgcmVzdC1zZXJ2ZXIuc2VydmljZQo= Diese Ausgabe kopieren wir dann in die Konfigurationsdatei. Kurze Kontrolle # echo c3lzdGVtY3RsIHJlc3RhcnQgcmVzdC1zZXJ2ZXIuc2VydmljZQo= | base64 -d systemctl restart rest-server.service Passt Und wieder jede Menge gelernt. Danke @Nico
  • Alles rund um MariaDB

    8 16
    8 Topics
    16 Posts
    FrankMF
    Ich hatte ja die Idee, das lokale Netz der Hetzner Cloud zu entfernen. Das kann man hier nachlesen. Dort hatte ich das mit der Redis Replication schon gemacht. Auf die Wireguard Installation gehe ich hier nicht nochmal ein, das sollte klar sein bzw. kann man im oben verlinkten Artikel nachlesen. Bedingungen 10.10.1.1 Datenbank Server 10.10.1.3 PHP Server 10.0.0.3 Alte lokale Adressen MariaDB IP-Adresse In der Datei /etc/mysql/mariadb.conf/50-server.cnf müssen wir die IP-Adresse einstellen, auf welcher MariaDB lauscht. # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 bind-address = 10.10.1.1 Die bind-address muss der Wireguard Adresse des Datenbank Servers entsprechen. Vorher sollte der Wireguard Tunnel natürlich funktionieren. Neustart service mysqld restart Jetzt greifen die Anwendungen ja auf die Datenbank zu, dazu muss man in der jeweiligen Konfiguration die entsprechende Adresse einstellen. Beispiel Joomla Webseite nano configuration.php Dort findet man folgende Zeile public $host = '10.10.1.1'; Die muss an die Wireguard Adresse des Datenbank Servers angepasst werden. Danach hatte ich immer noch Probleme die Datenbank zu erreichen. MariaDB Datenbank anpassen Schauen wir uns die User an. MariaDB [(none)]> SELECT User,Host FROM mysql.user; +-----------------+-----------+ | User | Host | +-----------------+-----------+ | joomla | 10.0.0.3 | | root | localhost | +-----------------+-----------+ 2 rows in set (0.001 sec) Ok, der User joomla hat nur Zugriff von 10.0.0.3, das war die alte lokale Adresse. Die Wireguard Adresse ist ja die 10.10.1.3 Somit bekommt der User auch keinen Zugriff auf die Datenbank. Also ändern. DROP USER 'joomla'@'10.0.0.3'; CREATE USER 'joomla'@'10.10.1.3' IDENTIFIED BY 'PASSWORD'; FLUSH PRIVILEGES; Dann sieht das so aus MariaDB [(none)]> SELECT User,Host FROM mysql.user; +-----------------+-----------+ | User | Host | +-----------------+-----------+ | joomla | 10.10.1.3 | | root | localhost | +-----------------+-----------+ 2 rows in set (0.001 sec) Gut, ich habe aber immer noch keinen Zugriff zur Datenbank. Es gibt ja noch folgenden Befehl in MariaDB grant all privileges on joomla.* to 'joomla'@'10.10.1.3' identified by 'PASSWORD'; Damit gewährt man dem User joomla ja den Zugriff zur Datenbank und zwar genau von der IP-Adresse die man da rein schreibt. Die steht ja noch auf der alten IP-Adresse. Also den Befehl eingeben. grant all privileges on joomla.* to 'joomla'@'10.10.1.3' identified by 'PASSWORD'; FLUSH PRIVILEGES; Danach funktioniert der Datenbank Zugriff. Das muss man jetzt für alle User und Datenbanken machen. Wenn man sehr viele PHP-Seiten hat, kann das sehr aufwendig werden. Somit sollte man sich beim Konzept der Server schon vorher Gedanken drüber machen. iptables Sollte klar sein, das man die entsprechenden Regeln ergänzt, bzw. ändern muss.
  • Alles rund um Nextcloud

    41 71
    41 Topics
    71 Posts
    FrankMF
    Neue Version 31.0.5 ist erschienen. Mit dieser Version scheint das Problem des Webupdater gelöst zu sein. Er lief durch https://nextcloud.com/de/changelog/#latest31
  • Alles rund um NGINX

    10 17
    10 Topics
    17 Posts
    H
    Hi, ja es ist zu Warm Hab mich vielleicht etwas falsch ausgedrückt. Ich suche ne möglichkeit bzw. ein Howto wie ich Seafile für einen bekannten auf ein Shared Hosting Paket installiert bekomme.
  • NodeBB Forum Software

    62 94
    62 Topics
    94 Posts
    FrankMF
    Dann mal flott aktualisieren. Update verlief ohne Probleme. We have released NodeBB versions v2.8.19, v3.12.6, and v4.4.3 to address a security issue involving a potential XSS vector. Github https://github.com/NodeBB/NodeBB/releases/tag/v4.4.3 Forum https://community.nodebb.org/topic/18846/security-release-nodebb-v2.8.19-v3.12.6-v4.4.3
  • Alles rumd um die pfSense Software

    4 8
    4 Topics
    8 Posts
    FrankMF
    Ich habe meine pfSense doch ein wenig vernachlässigt. Sie war doch noch auf v2.7.0 und wollte sich nicht upgraden lassen. Was machen? Dank der tollen Anleitung ließ sich das Problem fixen. https://docs.netgate.com/pfsense/en/latest/troubleshooting/upgrades.html#force-pkg-metadata-update pkg-static update -f führte zu einer Reihe von Fehlern. An error occured while fetching package In der Anleitung steht Try running certctl rehash from the console, a root shell prompt, or via Diagnostics > Command Prompt. This will allow pkg to utilize the system certificates until the next reboot. Also certctl rehash in die Konsole und er macht irgendwas. Nehme an, er hat die Zertifikate überprüft!? Danach ließ sich die pfSense aktualisieren. Jetzt ist sie wieder auf der letzten Version. [image: 1714682645553-b1dec071-fa1d-4880-b99a-19f386f25545-grafik.png] Übrigens, die Release Notes findet ihr hier
  • PHP für Einsteiger

    13 19
    13 Topics
    19 Posts
    FrankMF
    php8.2 am Start? Dann mal bitte aktualisieren. Debian Security Advisory DSA-5819-1 security@debian.org https://www.debian.org/security/ Moritz Muehlenhoff November 26, 2024 https://www.debian.org/security/faq Package : php8.2 CVE ID : CVE-2024-8929 CVE-2024-8932 CVE-2024-11233 CVE-2024-11234 CVE-2024-11236
  • Alles rund um die Virtualisierungs Lösung

    23 60
    23 Topics
    60 Posts
    FrankMF
    Ja, so als Server Spielkind baut man ab und zu, einfach alles um Zuletzt lief mein Proxmox auf folgender Hardware -> https://linux-nerds.org/topic/1450/asrock-n100dc-itx Mein Bericht damals zum Umzug auf die neue Hardware -> https://linux-nerds.org/topic/1452/proxmox-umzug-auf-neue-hardware-asrock-n100dc-itx/8 Lief alles tadellos, aber ich brauchte etwas schnelleres und mit mehr RAM. Ja, das kostet leider auch etwas mehr Strom (ca. 38W mit meinem aktuellen Ausbau) Ich habe hier ein Mini-ITX MSI B550i rumliegen. Das war jetzt auserkoren, meinen Proxmox zu beherbergen. Mein Netzwerksetup sieht ein drei LAN-Schnittstellen Setup vor. WAN LAN OPT1 Auf dem Board ist eine 2.5G Schnittstelle drauf, die macht dann WAN. Jetzt brauchte ich eine PCIe Karte mit zwei LAN Schnittstellen. Ich wollte die 1G nicht mehr nutzen, man muss ja auch was testen Meine Wahl fiel auf diese PCIe- Karte -> https://www.amazon.de/dp/B0C4H4KCRJ?th=1 Die Karte beinhaltet 2 * RTL8125B Controller. Danach pfSense eingerichtet, bzw. den Dump restored. Die Hardware an die neuen Netzwerkkarten angepasst und fertig. Gestartet - läuft. Schnell noch ein Speedtest root@nas:~# iperf3 -s ----------------------------------------------------------- Server listening on 5201 (test #1) ----------------------------------------------------------- ^Ciperf3: interrupt - the server has terminated root@nas:~# iperf3 -c 192.168.3.213 Connecting to host 192.168.3.213, port 5201 [ 5] local 192.168.3.19 port 33950 connected to 192.168.3.213 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 281 MBytes 2.36 Gbits/sec 0 3.58 MBytes [ 5] 1.00-2.00 sec 280 MBytes 2.35 Gbits/sec 0 3.58 MBytes [ 5] 2.00-3.00 sec 279 MBytes 2.34 Gbits/sec 0 3.58 MBytes [ 5] 3.00-4.00 sec 280 MBytes 2.35 Gbits/sec 0 3.58 MBytes [ 5] 4.00-5.00 sec 279 MBytes 2.34 Gbits/sec 0 3.58 MBytes [ 5] 5.00-6.00 sec 280 MBytes 2.35 Gbits/sec 0 3.58 MBytes [ 5] 6.00-7.00 sec 279 MBytes 2.34 Gbits/sec 184 2.70 MBytes [ 5] 7.00-8.00 sec 280 MBytes 2.35 Gbits/sec 0 2.91 MBytes [ 5] 8.00-9.00 sec 279 MBytes 2.34 Gbits/sec 0 3.08 MBytes [ 5] 9.00-10.00 sec 280 MBytes 2.35 Gbits/sec 0 3.22 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 2.73 GBytes 2.35 Gbits/sec 184 sender [ 5] 0.00-10.01 sec 2.73 GBytes 2.34 Gbits/sec receiver iperf Done. root@nas:~# iperf3 -R -c 192.168.3.213 Connecting to host 192.168.3.213, port 5201 Reverse mode, remote host 192.168.3.213 is sending [ 5] local 192.168.3.19 port 59378 connected to 192.168.3.213 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 280 MBytes 2.35 Gbits/sec [ 5] 1.00-2.00 sec 280 MBytes 2.35 Gbits/sec [ 5] 2.00-3.00 sec 280 MBytes 2.35 Gbits/sec [ 5] 3.00-4.00 sec 280 MBytes 2.35 Gbits/sec [ 5] 4.00-5.00 sec 280 MBytes 2.35 Gbits/sec [ 5] 5.00-6.00 sec 280 MBytes 2.35 Gbits/sec [ 5] 6.00-7.00 sec 280 MBytes 2.35 Gbits/sec [ 5] 7.00-8.00 sec 280 MBytes 2.35 Gbits/sec [ 5] 8.00-9.00 sec 280 MBytes 2.35 Gbits/sec [ 5] 9.00-10.00 sec 280 MBytes 2.35 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 2.74 GBytes 2.35 Gbits/sec 0 sender [ 5] 0.00-10.00 sec 2.74 GBytes 2.35 Gbits/sec receiver iperf Done. Und wer sich jetzt fragt, was ich als Switch genommen habe -> https://www.amazon.de/dp/B0CFQKYDRM Ein China Teil, was laut Kommentaren furchtbar heiß werden soll. In meinem Setup gar nicht. In den Kommentaren schreiben viele, das sie das Webinterface schlecht erreichen konnte. War kein Problem, man sollte halt auch im selben Netzwerk sein. Läuft jetzt hier seit einer Woche ohne Probleme. Setup Proxmox [image: 1746889927872-68eb573d-ca8e-462d-9903-4e8afaf6bea6-grafik.png] Den Proxmox eingerichtet, das ist ja jetzt nicht so die Herausforderung. Auf dem Board sind zwei NVMe Steckplätze, die auch beide bestückt sind, So mit 500GB jeweils. Da bot es sich an, bei der Installation eine ZFS Raid 1 Installation vorzunehmen. Das habe ich dann auch so gemacht. Macht dann root@pve2:~# dd if=/dev/zero of=test.img bs=1M count=4096 conv=fdatasync 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB, 4.0 GiB) copied, 1.08774 s, 3.9 GB/s Restore VMs Das ist wirklich so mit das Einfachste was es gibt. Mit scp vom alten Proxmox alle Dumps auf den Neuen kopiert. Dann braucht man den letzten Dump nur Auswählen auf Restore klicken, Datenspeicher auswählen und fertig. [image: 1746888482879-b25eb59a-e40f-412b-aa6e-dedccd9b2a18-grafik.png] Gut, das war jetzt nicht so die Herausforderung. NAS ZFS Pool Mein NAS beinhaltet einen ZFS Pool Raid 1, den ich damals mit Proxmox angelegt hatte und dann an die VM durchreiche. Ok, wie bekomme ich das auf den neuen Proxmox? Man kopiert die Einstellung vom alten Proxmox. zfspool: pool_NAS pool pool_NAS content rootdir,images mountpoint /pool_NAS nodes pve2 Man achtet auf den richtigen Namen bei nodes Danach muss man den Pool an die VM dran hängen. Meine neue VM für das NAS hat die ID 103, die alte hatte die ID 106. Ich habe das so gelassen, weil ich nicht wusste ob ich den Namen einfach so anpassen konnte. War aber nicht nötig, weil es auch so gut funktionierte. qm set 103 --virtio0 /dev/zvol/pool_NAS/vm-106-disk-0 [image: 1746889263149-0cc08e40-76d3-4292-9cf1-91ffefafe417-grafik.png] Der Rest war dann ganz normale Arbeit, VMs restoren, Backups einrichten, Domains konfigurieren, Mail Setup usw.
  • Ihr sprecht Python? 😉 Ich übe noch..

    75 138
    75 Topics
    138 Posts
    FrankMF
    Ich habe den Sonntag mal genutzt um ein wenig was einzubauen. Einmal habe ich mit datatables.net die Tabelle etwas funktionaler gestaltet. [image: 1736705735786-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
  • Alles zur NoSQL in Memory Datenbank!

    22 37
    22 Topics
    37 Posts
    FrankMF
    Ich hatte bei meinen Python Projekten drei Datenbanken am Start, als Beispiel Redis DB 0, 1, 2 Nun wollte ich das mal zusammenfassen, da ich das so nicht mehr brauche. Also alle Keys in DB 0. So soll das am Ende aussehen. [image: 1711127826778-c17e4998-859d-4c6d-bcc5-7ff244b9a817-grafik.png] settings, stock_list und stocks waren jeweils in einer eigenen DB. Die beiden STRING Werte dienen nur zum Zwischenspeichern, sind hier jetzt mal nicht so wichtig. Nur, wie kopiert man denn nun den KEY aus der einen DB in die andere? Es war eine lange Sitzung mit Chat_GPT da klemmte es doch öfter. Aber, am Ende stand der Erfolg Auf dem Redis Datenbank Server habe ich folgendes Script erstellt. #!/bin/bash # Define Redis host and optional authentication password REDIS_HOST="192.168.3.9" REDIS_PASSWORD="PASSWORD" # Remove or leave empty if no password # Function to execute Redis command with optional authentication execute_redis_command() { if [ -n "$REDIS_PASSWORD" ]; then redis-cli -h $REDIS_HOST -a $REDIS_PASSWORD "$@" else redis-cli -h $REDIS_HOST "$@" fi } # Fetch all fields (and their values) from the source hash in database 1 mapfile -t fields_values < <(execute_redis_command -n 2 HGETALL stock_list) # Loop through the fields_values array # Bash arrays are zero-indexed, fields_values contains field name followed by value, so we increment by 2 for ((i=0; i<${#fields_values[@]}; i+=2)); do field="${fields_values[i]}" value="${fields_values[i+1]}" # Use HSET to insert the field-value pair into the target database (database 0) execute_redis_command -n 0 HSET stock_list "$field" "$value" done echo "All fields from DB 1 copied to DB 0 successfully." Als erstes mal ein Hinweis. Sollten im Passwort Sonderzeichen sein, geht das so nicht. Dann muss man das so lösen. redis-cli -h $REDIS_HOST -a 'PASSWORD' "$@" Ich denke, das sollte als Hinweis reichen. Was macht das Script? # Fetch all fields (and their values) from the source hash in database 1 mapfile -t fields_values < <(execute_redis_command -n 2 HGETALL stock_list) Wir holen alle Fields und ihre Daten von der Datenbank 1 für den KEY stock_list. Dann loopen wir da durch # Use HSET to insert the field-value pair into the target database (database 0) execute_redis_command -n 0 HSET stock_list "$field" "$value" Und hiermit speichern wir dann die Daten in Datenbank 0 unter dem KEY Namen stock_list. Das hat soweit super geklappt, außer das ich immer eine leer Zeile in der Datenbank unter Fields hatte. Hab sie einfach gelöscht. Wenn man mal Langeweile hat, kann man mal suchen warum das so ist Am Ende hatte ich dann meine drei Datenbanken alle zu einer zusammengefasst. Eine Sünde aus meiner Anfangszeit ausgebessert. Nun hatte ich ja auch drei Datenbank Klassen, die jeweils die Redis Connection initialisiert hatten. Den dreifachen Code konnte ich auch gut entsorgen. So sah er aus. class PortfolioSettings: def __init__(self, host=config.SERVER_IP, port=6379, db=None): if db is None: # If db is not provided explicitly, use TEST_MODE to decide if config.TEST_MODE == 1: db = config.TEST[0] else: db = config.LIVE[0] # Verwende einen Connection Pool self.pool = redis.ConnectionPool( host=host, port=port, db=db, password=config.REDIS_PASSWORD, # Auto-Reconnect einstellen retry_on_timeout=True, # Optional: Weitere Einstellungen wie maximale Wiederverbindungsversuche, # Timeout-Werte, etc. können hier konfiguriert werden health_check_interval=30 # Überprüft die Verbindung alle 30 Sekunden ) # self.client = redis.StrictRedis(host=host, port=port, db=db, password=config.REDIS_PASSWORD) self.client = redis.Redis(connection_pool=self.pool) Danach so class PortfolioSettings: def __init__(self, connection_pool=config.shared_redis_pool): self.client = redis.Redis(connection_pool=connection_pool) Und unter meiner config.py initialisiere ich das Ganze so. # Initialize a single shared connection pool shared_redis_pool = redis.ConnectionPool( host=redis_host_ip, port=6379, db=LIVE[0] if TEST_MODE == 0 else TEST[0], password=REDIS_PASSWORD, retry_on_timeout=True, health_check_interval=30 ) Und wie immer, seid vorsichtig mit dem REDIS Passwort! Auf einem produktiven System danach bitte gut aufräumen. Für mich aktuell nicht so wichtig, der Server läuft hier lokal.
  • Backups done right!

    35 64
    35 Topics
    64 Posts
    FrankMF
    Restic v0.18.0 released Sec #5291: Mitigate attack on content-defined chunking algorithm Fix #1843: Correctly restore long filepaths' timestamp on old Windows Fix #2165: Ignore disappeared backup source files Fix #5153: Include root tree when searching using find --tree Fix #5169: Prevent Windows VSS event log 8194 warnings for backup with fs snapshot Fix #5212: Fix duplicate data handling in prune --max-unused Fix #5249: Fix creation of oversized index by repair index --read-all-packs und ganz viele andere.... https://github.com/restic/restic/releases/tag/v0.18.0
  • Alles rund um Linux

    17 27
    17 Topics
    27 Posts
    FrankMF
    Es gab wieder ein neues Update! [image: 1652207846229-bildschirmfoto-vom-2022-05-10-20-36-50.png] Wollen wir mal sehen, ob sich im Wireguard Bereich etwas getan hat. Es gibt jetzt einen eigenen Reiter, wenn ich mich korrekt erinnere. [image: 1652208116024-bildschirmfoto-vom-2022-05-10-20-35-04.png] Hier kann man jetzt die Wireguard Einstellungen sich anzeigen lassen, ein Feature was ich mir in der Feedback EMail gewünscht hatte. [image: 1652208256203-bildschirmfoto-vom-2022-05-10-20-35-47.png] Das sieht dann so aus. [image: 1652208437463-bildschirmfoto-vom-2022-05-10-20-36-06.png] [image: 1652208504112-bildschirmfoto-vom-2022-05-10-20-36-28.png] Ich denke, jetzt hat man ausreichend Informationen, um bei Problemfällen sich mit den Einstellungen zu beschäftigen. Danke AVM, das ihr so auf das Feedback der Kunden reagiert.
  • Von mir (aktuell) nicht mehr eingesetzte Software.

    42 60
    42 Topics
    60 Posts
    FrankMF
    Noch Joomla! am Start? Dann mal aktualisieren! https://www.linux-magazin.de/news/kritische-luecke-in-cms-joomla/
  • SSH sign_and_send_pubkey: signing failed: agent refused operation

    linux
    1
    1 Votes
    1 Posts
    273 Views
    No one has replied
  • DNS testen

    1
    0 Votes
    1 Posts
    105 Views
    No one has replied
  • This topic is deleted!

    2
    0 Votes
    2 Posts
    3 Views
  • Debian Buster 10.3 released

    1
    0 Votes
    1 Posts
    196 Views
    No one has replied
  • IPTables Logging

    linux iptables
    1
    0 Votes
    1 Posts
    320 Views
    No one has replied
  • ReactPHP auf einem ROCKPro64 testen

    reactphp linux composer
    1
    1
    0 Votes
    1 Posts
    214 Views
    No one has replied
  • Node.js Paketmanager npm Sicherheitsproblem!

    security nodejs linux npm
    1
    0 Votes
    1 Posts
    265 Views
    No one has replied
  • Proxmox - Offline

    linux proxmox
    1
    0 Votes
    1 Posts
    298 Views
    No one has replied
  • Hetzner Cloud - Server einrichten

    6
    5
    0 Votes
    6 Posts
    2k Views
    FrankMF
    Heute den Proxmox gekündigt. Warum? Das erzähle ich Euch die Tage...... Damit ist das Projekt Umzug für mich abgschlossen. [image: 1576179427474-dffa4a7c-b5d3-4363-8d8b-39961021ff09-image.png] Vier Server in der Hetzner Cloud machen jetzt da ihre Arbeit. Bis jetzt läuft das alles sehr geil, ich bin da echt von überzeugt. Würde ich mit dem Projekt Geld verdienen, würde ich das so nicht machen! Da käme nur ein eigener Root-Server in Frage. Aber, das soll mich bei meinen paar Hobby Seiten jetzt auch nicht stören. Da liegen sowieso keine Geheimnisse und alles was wichtig ist, lege ich eh verschlüsselt im Netz ab. Also, wenn ihr mal was sucht, hier ein wenig Werbung https://www.hetzner.de/cloud
  • IPv6 und Subnetze

    linux ipv6
    1
    0 Votes
    1 Posts
    255 Views
    No one has replied
  • Mail vom NAS verschicken

    Moved
    1
    0 Votes
    1 Posts
    635 Views
    No one has replied
  • Hetzner - Backupspace - Borgbackup

    borgbackup linux
    4
    0 Votes
    4 Posts
    1k Views
    FrankMF
    Ok, da gibt es doch wohl noch ein kleines Problem Hetzner hat die Dienste migriert und ich war der Meinung, der Borg funktioniert nicht mehr. Ok, das hat er auch gemacht, aber der Grund wurde mir dann vom Support mitgeteilt, Der Backup Space ist voll. Huch, was läuft denn da falsch!? Ich konnte den Backup Space noch per SFTP erreichen, Borg gab aber immer eine merkwürdige Fehlermeldung heraus. Also aufpassen, wenn ihr mal Probleme habt, schaut mal nach ob ihr noch genug Platz habt Und jetzt muss ich das Script mal ein wenig überarbeiten, irgendwas läuft da nicht so, wie ich mir das vorstelle.
  • Ryzen 4000 CPUs könnten 4 Threads pro Core haben

    amd ryzen4000
    1
    0 Votes
    1 Posts
    182 Views
    No one has replied
  • PHP Data Objects

    pdo php
    4
    0 Votes
    4 Posts
    361 Views
    FrankMF
    Datensatz löschen Voraussetzung ist, das man die ID des zu löschenden Eintrages kennt. $statement = $pdo->prepare("DELETE FROM feinstaub WHERE id = ?"); $statement->execute(array($id)); if ($statement->execute()) { echo "Der DB-Eintrag wurde erfolgreich gelöscht!"; } else { echo "Bitte den Administrator informieren!"; }
  • VS Code - entferntes Verzeichnis einbinden

    vscode linux
    2
    0 Votes
    2 Posts
    459 Views
    FrankMF
    Mein kleines Projekt liegt auch noch auf gitlab.com. Man kann prima die beiden Dienste (VSCode & gitlab.com) verknüpfen. Eine Änderung, ein commit und dann git push origin master Und die Änderungen sind oben. Aber, ich stecke da noch ganz am Anfang der Lernkurve
  • systemd - Scheduled restart job, restart counter is at 5

    linux systemd
    1
    0 Votes
    1 Posts
    1k Views
    No one has replied
  • Linux Befehle - ls & tail

    linux
    1
    0 Votes
    1 Posts
    488 Views
    No one has replied
  • Debian Buster 10.1 released

    debian linux
    1
    0 Votes
    1 Posts
    305 Views
    No one has replied
  • Gitlab - Projekt verwalten

    gitlab
    3
    1
    0 Votes
    3 Posts
    507 Views
    FrankMF
    Und mit git pull holt man dann die Änderungen usw. git pull remote: Enumerating objects: 11, done. remote: Counting objects: 100% (11/11), done. remote: Compressing objects: 100% (9/9), done. remote: Total 9 (delta 6), reused 0 (delta 0) Entpacke Objekte: 100% (9/9), Fertig. Von gitlab.com:xxxxxxxxxxxxxxxxxxxxxxxxxx 44b219c..bd2c333 master -> origin/master Aktualisiere 44b219c..bd2c333 Fast-forward backend/gulpfile_DEL.js | 135 ------------------------------------------------------------------------------------------------------------ backend/logout.php_DEL | 126 ---------------------------------------------------------------------------------------------------- backend/package.json_DEL | 49 --------------------------------------- 3 files changed, 310 deletions(-) delete mode 100644 backend/gulpfile_DEL.js delete mode 100644 backend/logout.php_DEL delete mode 100644 backend/package.json_DEL
  • Verschlüsseltes RAID1

    raid mdadm
    2
    0 Votes
    2 Posts
    153 Views
    FrankMF
    Mir war dann gestern, nach einigen Neustarts aufgefallen, das die Raids den Status [1/2] hatten. Also nur eine HDD im Raid-Verbund. Ursache - unbekannt! Normalzustand /dev/mapper/raid_pool_1_1: UUID="7b7a5028-165a-6d71-d51a-671216e353ec" UUID_SUB="109b5184-0d3a-b26b-cd72-8239f0f6a56e" LABEL="frank-mankel:0" TYPE="linux_raid_member" /dev/md0: UUID="6744030a-4c14-4cbc-a626-7365aab80e22" TYPE="ext4" /dev/mapper/raid_pool_1_2: UUID="7b7a5028-165a-6d71-d51a-671216e353ec" UUID_SUB="6f8da3a7-e86f-f3bf-5602-de7dcad62aa0" LABEL="frank-mankel:0" TYPE="linux_raid_member" /dev/mapper/raid_pool_2_1: UUID="aa6daa4e-0964-4446-22f0-e6e3a65ea34a" UUID_SUB="ffd29fd9-84ca-1d64-2671-a0d3c417ee8c" LABEL="frank-mankel:1" TYPE="linux_raid_member" /dev/md1: UUID="a56404ef-4525-473d-a616-2fdf79c314f6" TYPE="ext4" /dev/mapper/raid_pool_2_2: UUID="aa6daa4e-0964-4446-22f0-e6e3a65ea34a" UUID_SUB="29c67ccb-9582-75e5-8345-c5589680e663" LABEL="frank-mankel:1" TYPE="linux_raid_member" Status anzeigen (hier korrekt) root@frank-mankel:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid1 dm-25[1] dm-24[0] 1953360704 blocks super 1.2 [2/2] [UU] bitmap: 0/15 pages [0KB], 65536KB chunk md0 : active raid1 dm-23[1] dm-22[0] 1953359744 blocks super 1.2 [2/2] [UU] bitmap: 0/15 pages [0KB], 65536KB chunk unused devices: <none> Detaillierter Zustand root@frank-mankel:~# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Aug 26 15:52:03 2019 Raid Level : raid1 Array Size : 1953359744 (1862.87 GiB 2000.24 GB) Used Dev Size : 1953359744 (1862.87 GiB 2000.24 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Fri Aug 30 04:03:25 2019 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Consistency Policy : bitmap Name : frank-mankel:0 (local to host frank-mankel) UUID : 7b7a5028:165a6d71:d51a6712:16e353ec Events : 55682 Number Major Minor RaidDevice State 0 253 22 0 active sync /dev/dm-22 1 253 23 1 active sync /dev/dm-23 Problem Jetzt wird die ganze Sache kompliziert und man muss fürchterlich aufpassen, das nichts schief geht. Das Raid zeigt einem die UUID der noch enthaltenen Platte an. Somit muss man sich die andere raus suchen, siehe ganz oben. Annahme, vom Raid md0 fehlt das zweite Laufwerk. Dann machen wir mdadm --add /dev/md0 /dev/mapper/raid_pool_1_2 Mein md0 besteht ja aus /dev/mapper/raid_pool_1_1 /dev/mapper/raid_pool_1_2 Script Hier mein Script, was ich nach dem Starten des PCs ausführe. Das klappt auf meinem Proxmox perfekt, ich darf nur keine Einträge in der /etc/fstab haben und die eine Maschine, die eine Platte auf diesem Raid nutzt, erst später starten. Auf keinen Fall auf Autostart=1 stellen! Außerdem habe ich in dem Script auf /dev/disk/by-uuid/4dd45131-bf78-4a23-ad29-af1b24284ca0 umgestellt. Die UUID findet ihr mit ls -lha /dev/disk/by-uuid Ausgabe lrwxrwxrwx 1 root root 10 Aug 29 13:24 4dd45131-bf78-4a23-ad29-af1b24284ca0 -> ../../sdc1 lrwxrwxrwx 1 root root 10 Aug 29 13:24 a8234184-3c6a-44d1-a6a3-d06d0baedfcc -> ../../sdc2 lrwxrwxrwx 1 root root 10 Aug 29 13:24 857a73ca-199f-4e04-9651-088963e29fae -> ../../sdd1 lrwxrwxrwx 1 root root 10 Aug 29 13:25 ed78c5ce-5bc9-49aa-9bc7-000771610940 -> ../../sdd2 umgestellt. Das macht die Sache robuster, wenn man mal HDDs ansteckt usw. Weil dabei können sich ja mal gerne die Laufwerksbezeichnungen ändern. Die UUID bleibt aber immer gleich. #Passwort abfragen echo "Passwort eingeben!" read -s password echo "Bitte warten......" ## Passwörter abfragen echo -n $password | cryptsetup open /dev/disk/by-uuid/4dd45131-bf78-4a23-ad29-af1b24284ca0 raid_pool_1_1 -d - echo -n $password | cryptsetup open /dev/disk/by-uuid/857a73ca-199f-4e04-9651-088963e29fae raid_pool_1_2 -d - echo -n $password | cryptsetup open /dev/disk/by-uuid/a8234184-3c6a-44d1-a6a3-d06d0baedfcc raid_pool_2_1 -d - echo -n $password | cryptsetup open /dev/disk/by-uuid/ed78c5ce-5bc9-49aa-9bc7-000771610940 raid_pool_2_2 -d - ## Raid 0&1 mounten mount /dev/md0 /mnt/md0 mount /dev/md1 /mnt/md1 echo "Laufwerke erfolgreich gemountet!" Ich hoffe jetzt, das ich mich damit erst mal nicht mehr beschäftigen muss. Und immer nur machen, wenn man ganz viel Zeit hat Damit es immer so aussieht [image: 1567149668948-fcdf8c19-31e3-4933-a452-847f4415c750-grafik-resized.png]