Skip to content

Linux

Alles rund um Linux

605 Themen 1.2k Beiträge

Unterkategorien


  • Vaultwarden ist eine Rust-Implementierung der Bitwarden Server API.

    Vaultwarden is a Rust implementation of the Bitwarden Server API.

    14 Themen
    14 Beiträge
    FrankMF

    Dani Garcia released Version 1.32.5. Die Version ist ein Security Fix. Bitte unbedingt aktualisieren!

    This release further fixed some CVE Reports reported by a third party security auditor and we recommend everybody to update to the latest version as soon as possible. The contents of these reports will be disclosed publicly in the future.

    Link Preview Image Release 1.32.5 · dani-garcia/vaultwarden

    Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs - Release 1.32.5 · dani-garcia/vaultwarden

    favicon

    GitHub (github.com)

    @Nico Danke!

  • Automation for everyone

    6 Themen
    10 Beiträge
    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.

    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 Themen
    16 Beiträge
    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.

    Link Preview Image Checkmk 2 - Debian 11 (Bullseye) Download

    Hallo checkmk-Freunde, seit dem vergangenen Wochenende (17.07.2021) ist Debian 11 in die “Full Freeze”-Phase übergegangen. Bedeutet, ein Release ist in nicht mehr allzu weiter Ferne. Wird man zum Release von Debian 11…

    favicon

    Checkmk Community (forum.checkmk.com)

  • Alles rund um Let's Encrypt

    4 Themen
    11 Beiträge
    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 Themen
    16 Beiträge
    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

    38 Themen
    67 Beiträge
    FrankMF

    Heute kam das Update 30.0.1 raus.

    Link Preview Image Nextcloud server changelog

    We recommend you follow our release channels to always have the latest and most secure Nextcloud server version which fits your needs.

    favicon

    Nextcloud (nextcloud.com)

    Update lief auf meiner Installation reibungslos.

  • Alles rund um NGINX

    10 Themen
    17 Beiträge
    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

    55 Themen
    77 Beiträge
    FrankMF

    Neues Update.

    Link Preview Image NodeBB 3.9.0

    Thank you. Nice work.

    favicon

    NodeBB Community (community.nodebb.org)

    Es gibt ne Menge deprecated Warnings. Laut Julian ein Bootstrap Problem. Also, erst mal ignorieren..

    Deprecation Warning: Sass's behavior for declarations that appear after nested rules will be changing to match the behavior specified by CSS in an upcoming version. To keep the existing behavior, move the declaration above the nested rule. To opt into the new behavior, wrap the declaration in `& {}`. More info: https://sass-lang.com/d/mixed-decls ┌──> ../../../bootstrap/scss/_type.scss 40 │ font-weight: $display-font-weight; │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declaration ╵ ┌──> ../../../bootstrap/scss/vendor/_rfs.scss 136 │ ┌ @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) { 137 │ │ @content; 138 │ │ } │ └─── nested rule ╵ ../../../bootstrap/scss/_type.scss 40:5 @import bootstrap/scss/bootstrap.scss 17:9 @import - 2:9 root stylesheet
  • Alles rumd um die pfSense Software

    4 Themen
    8 Beiträge
    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.

    Link Preview Image Troubleshooting Upgrades | pfSense DocumentationNetgate Logo

    favicon

    (docs.netgate.com)

    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.

    b1dec071-fa1d-4880-b99a-19f386f25545-grafik.png

    Übrigens, die Release Notes findet ihr hier

  • PHP für Einsteiger

    12 Themen
    18 Beiträge
    FrankMF

    Nach dem Upgrade meines PHP-Servers von Debian Bullseye 11 auf Debian Bookworm 12, hatte ich einen Haufen von PHP-Fehlern in meinen selbstgeschriebenen PHP Webseiten. Wie sollte ich die fixen, wo ich doch fast nur noch Python mache!? Der Code war teilweise Jahre alt, ihr kennt das, man weiß kaum noch was man da gemacht hat. Aber, ich wollte die Projekte nicht sterben lassen.

    Etwas gegrübelt, da fiel mir ChatGPT ein. Das hatte ich schon mal kurz angetestet. Ok, wir probieren es.

    3f3ac8a0-dc22-499d-a222-d191151c2dad-grafik.png

    Ich habe ein Projekt, welches EMails versenden kann. Das ging nach dem Upgrade auf Debian 12 und php8.2 nicht mehr. ChatGPT konnte mir nicht direkt helfen, gab aber wertvolle Hinweise.

    Die PHP Konfiguration konnte ich ausschließen, die sollte einwandfrei sein. Die File Permissions, das wußte ich das die alle korrekt sind.

    Somit blieb nur die 3. PHPMailer...

    Grübel und die Webseite des PHPMailer besucht. Kurz nachgedacht und gedacht es sollte gut sein, wenn ich das mal aktualisiere. Gemacht und siehe da, die Mails werden wieder versendet 🙂

    Noch ein Beispiel

    3cfee036-4407-4da2-ad4f-cca8d6b57f41-grafik.png

    Mein alter Code sah so aus (php7.4)

    $options = array ( '1' => 'Januar', '2' => 'Februar', '3' => 'März', '4' => 'April', '5' => 'Mai', '6' => 'Juni', '7' => 'Juli', '8' => 'August', '9' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Dezember', );

    Ausgetauscht mit

    $options = [ 1 => "Januar", 2 => "Februar", 3 => "März", 4 => "April", 5 => "Mai", 6 => "Juni", 7 => "Juli", 8 => "August", 9 => "September", 10 => "Oktober", 11 => "November", 12 => "Dezember", ];

    Problem gelöst. Ohne ChatGPT wäre ich immer noch dabei die PHP Doku zu lesen 😉

  • Alles rund um die Virtualisierungs Lösung

    21 Themen
    57 Beiträge
    FrankMF

    Ich hatte dieses Video schon ganz lange als Tab in meinem Firefox offen, aber erst gestern bin ich dazu gekommen es zu schauen und die Tipps darin auszuprobieren.

    Dieser junge Mann ist klasse, dem englisch kann ich meistens sehr gut folgen (ja, bin da nicht so gut drin). Aber das Wichtigste sind seine Inhalte.

    Ich kann dieses Video nur allen empfehlen, die einen Proxmox am Rennen haben. Besonders das mit TLS und DNS habe ich sofort umgesetzt.

    Danke Christian Lempa, astreiner Content.

  • Ihr sprecht Python? 😉 Ich übe noch..

    73 Themen
    135 Beiträge
    FrankMF

    Da ich viele Linux News lese, bin ich irgendwann auch mal über den Bitwarden Authenticator gestolpert.

    Kurze Erläuterung, ich nutze als Passwortspeicher einen selbst gehosteten Vaultwarden Server. Diesen kann man über die Bitwarden Apps erreichen.

    Da man heutzutage ja auch immer einen 2FA nutzen sollte, setze ich dafür schon lange auf die Android App FreeOTP+. Ich spiele aber schon länger mit dem Gedanken, diese App zu ersetzen.

    Innerhalb von FreeOTP+ ist man in der Lage die Daten in zwei Formaten zu exportieren.

    JSON TXT

    Ich habe mich für das TXT Format entschieden. Ein Beispiel.

    otpauth://totp/Radforum%20D%C3%BCsseldorf%3Afrankm%40radforum-duesseldorf.de?secret=<SECRET>&algorithm=SHA1&digits=6&period=30

    Das müssen wir jetzt in ein vernünftiges Format umwandeln, was wir mit Bitwarden Authenticator importieren können. Beispiel

    { "encrypted": false, "items": [ { "favorite": false, "id": "52A4DFB0-F19E-4C9D-82A1-BBEE95BBEF81", "login": { "totp": "otpauth://totp/Amazon:alice@bitwarden.com?secret=IIO5SCP3766LMSAB5HJCQPNDCCNAZ532&issuer=Amazon&algorithm=SHA1&digits=6&period=30", "username": "alice@bitwarden.com" }, "name": "Amazon", "type": 1 },

    Doku Bitwarden -> https://bitwarden.com/de-de/help/authenticator-import-export/

    Damit haben wir dann ja die Grundlagen, um mal eben mit Python und der freundlichen Unterstützung von ChatGPT einen Converter zu bauen.

    Ein paar Tests und so weiter und nach ca. 2 Stunden war alles fertig.

    Die CLI Anwendung benutzt man dann wie folgt.

    python converter.py -i import.txt -o output.json

    Das File output.json dann innerhalb der Bitwarden Authenticator App importieren - fertig. Leider werden die Favicons beim Import nicht erstellt. Ich habe bis jetzt keinen Fehler in meinen importierten Daten festgestellt, hat alles so weit geklappt.

    Schnell noch ein Gitlab Repo dazu erstellt, damit andere nicht wieder von vorne anfangen müssen 🙂

    Link Preview Image Frank / freeotpplus-export-to-bitwarden-authenticator · GitLab

    GitLab.com

    favicon

    GitLab (gitlab.com)

  • Alles zur NoSQL in Memory Datenbank!

    22 Themen
    37 Beiträge
    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.

    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!

    34 Themen
    63 Beiträge
    FrankMF

    Restic v0.17.2 released

    Fix #4004: Support container-level SAS/SAT tokens for Azure backend Fix #5047: Resolve potential error during concurrent cache cleanup Fix #5050: Return error if tag fails to lock repository Fix #5057: Exclude irregular files from backups Fix #5063: Correctly backup extended metadata when using VSS on Windows

    Link Preview Image Release restic 0.17.2 · restic/restic

    Fast, secure, efficient backup program. Contribute to restic/restic development by creating an account on GitHub.

    favicon

    GitHub (github.com)

    root@:~# restic self-update writing restic to /usr/bin/restic find latest release of restic at GitHub latest version is 0.17.2 download SHA256SUMS download SHA256SUMS.asc GPG signature verification succeeded download restic_0.17.2_linux_arm64.bz2 downloaded restic_0.17.2_linux_arm64.bz2 saved 25362584 bytes in /usr/bin/restic successfully updated restic to version 0.17.2 root@:~# restic version restic 0.17.2 compiled with go1.23.2 on linux/arm64
  • Alles rund um Linux

    17 Themen
    27 Beiträge
    FrankMF

    Es gab wieder ein neues Update!

    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.

    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.
    Bildschirmfoto vom 2022-05-10 20-35-47.png

    Das sieht dann so aus.
    Bildschirmfoto vom 2022-05-10 20-36-06.png

    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 Themen
    60 Beiträge
    FrankMF

    Noch Joomla! am Start? Dann mal aktualisieren!

    Link Preview Image Kritische Lücke in CMS Joomla

    Im freien Content Management System Joomla in den Versionen 4.0.0 bis 4.2.7 steckt eine kritische Sicherheitslücke. Ein Update ist verfügbar.

    favicon

    Linux-Magazin (www.linux-magazin.de)

  • ASRock N100DC-ITX

    Angeheftet
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    FrankMF

    Ich sehe gerade, das ist schon wieder 1 Jahr her. Ich betreibe dieses Board seitdem als Proxmox Server 24/7. Das Ding läuft immer, ab und zu gibt es dann mal einen Reboot wegen neuer Kernel. Ansonsten treibt das Board mittlerweile folgende VMs an.

    pfSense Semaphore DokuWiki DNS (Werbeblocker) NAS MongoDB Home Assistant CheckMK

    Alle VMs laufen mit Debian 12.

    37fba92d-48aa-4e09-80a0-282996a8f661-grafik.png

  • NAS 2023 - Software Teil 2

    Angeheftet Verschoben
    1
    0 Stimmen
    1 Beiträge
    194 Aufrufe
    Niemand hat geantwortet
  • NAS 2023 - Software Teil 1

    Angeheftet Verschoben
    1
    0 Stimmen
    1 Beiträge
    215 Aufrufe
    Niemand hat geantwortet
  • NAS 2023 - Hardware

    Angeheftet Verschoben
    3
    0 Stimmen
    3 Beiträge
    829 Aufrufe
    FrankMF

    Ich war nicht so ganz zufrieden 🙂 Die zwei 4TB 5 1/4 Zoll HDDs müssen jetzt mal weichen.

    20230520_091729.jpg

    Ich habe jetzt wieder einen Proxmox Backup Server im Einsatz, da brauche ich nicht mehr so viel Speicherplatz im NAS. Kleiner, aber wichtiger Nebeneffekt ist der, das ich jetzt ca. 7W eingespart habe. In Zeiten wie diesen, rechnet sich das. Nein, die Investitionskosten rechnen wir jetzt nicht dagegen 😉

    Screenshot_20230520_140727_Voltcraft SEM6000_ergebnis.jpg

    Aktuelle Platten Ausstattung

    1 TB NVMe SSD (Proxmox Systemplatte) 2 * 2,5 Zoll 1TB SSD WD Red (ZFS Pool für mein NAS) 1 * 2,5 Zoll HDD 2TB für Datensicherung
  • Vaultwarden auf Debian Bookworm 12 installieren!

    Angeheftet
    6
    0 Stimmen
    6 Beiträge
    3k Aufrufe
    I

    Vielen lieben Dank Nico!
    Jetzt läuft vaultwarden.

  • Bitwarden_RS auf einem Debian Buster 10 Server installieren!

    Angeheftet
    85
    1 Stimmen
    85 Beiträge
    6k Aufrufe
    N

    Immer wieder gerne. Dieses mal gab es richtig etwas zu tun:
    13 files changed, 137 insertions(+), 96 deletions(-)
    Und das nur, damit es überhaupt wieder baut. Danach folgten noch 5 Bugfixing Runden, wobei zwei davon (lediglich) das Packaging betrafen.

    Ergänzend noch ein Hinweis:
    Port 3012 für die Websocket Verbindungen ist jetzt offiziell deprecated und wird demnächst vollständig aus Vaultwarden entfernt. Genau jetzt wäre der richtige Zeitpunkt die Apache/Nginx Konfiguration dahingehend anzupassen.

    Hierfür habe ich neue Templates online gestellt.
    Apache: https://bitwarden-deb.tech-network.de/Apache-VirtualHost.example.conf
    Nginx: https://bitwarden-deb.tech-network.de/Nginx-VirtualHost.example.conf

    Schönen Sonntag!

  • WLan auf der Konsole einrichten

    Angeheftet
    3
    0 Stimmen
    3 Beiträge
    589 Aufrufe
    FrankMF

    Ich kann im Manjaro keine WPA3 Sicherheit auswählen, dann bekomme ich keine Verbindung. Es geht nur WPA2 Personal. Gegenstelle ist eine FRITZ!Box 6591 Cable.

    2021-11-28_16-37.png

    In der Fritzbox sieht das so aus

    50d23aa8-5f67-485e-a994-244ef4f6a270-image.png

    Das kam als Fehlermeldung

    Nov 28 11:03:07 frank-pc wpa_supplicant[700]: wlan0: Trying to associate with SSID 'FRITZ!Box 6591 Cable AK' Nov 28 11:03:07 frank-pc wpa_supplicant[700]: wlan0: WPA: Failed to select authenticated key management type Nov 28 11:03:07 frank-pc wpa_supplicant[700]: wlan0: WPA: Failed to set WPA key management and encryption suites

    Ich denke, der Treiber unterstützt das nicht.

  • ClusterSSH

    Angeheftet
    4
    0 Stimmen
    4 Beiträge
    826 Aufrufe
    FrankMF

    Mal wieder lange dran rumgefummelt, bis es passte.

    I have figured out how to use any font in xterm. So for the case of the mentioned Inconsolata font size 14, the following works:

    Add these 2 lines into ~/.Xresources (create it if it does not exist)

    XTermfaceName: Inconsolata
    XTermfaceSize: 14

    Then, tell xterm to use this file:

    export XENVIRONMENT="${HOME}/.Xresources"

    Preferably add this export into .bashrc, so that it is persistent.

    comment out the font settings in ~/.clusterssh/config, if it exists: # terminal_font=6x13

    Quelle: https://unix.stackexchange.com/questions/230106/cluster-ssh-specify-terminal-font

  • IPTables dauerhaft speichern

    Angeheftet
    1
    0 Stimmen
    1 Beiträge
    528 Aufrufe
    Niemand hat geantwortet
  • Ubuntu Bionic - IP Adresse ändern

    Angeheftet Verschoben
    1
    0 Stimmen
    1 Beiträge
    2k Aufrufe
    Niemand hat geantwortet
  • SSH Login ohne Passwort

    Angeheftet
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    FrankMF

    Wie ihr ja wisst, benutze ich das Forum hier auch gerne als Notizbuch 🙂 Also mal wieder was hier notieren. Mein Windows Systemadmin sagte mir heute, das es auch folgendes gibt

    # ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519): /tmp/ed Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /tmp/ed Your public key has been saved in /tmp/ed.pub The key fingerprint is: SHA256:D33HCTW7Dy0p5kQdFTkPudx1PQh0EHFgkBvxy8KwhGM root@frank-ms7c92 The key's randomart image is: +--[ED25519 256]--+ | o=O*o=+=| | . oo o+oB+| | E o o.o.o+*| | . o +o...oo=o| | .So.o= O .| | o.= o + | | . . .| | | | | +----[SHA256]-----+

    Der Key liegt nur in /tmp kopieren lohnt also nicht 🙂

    Ob das jetzt die Zukunft ist, kann ich nicht beantworten. Ich wollte es aber hier mal festhalten, weil es wohl mittlerweile auch von vielen Projekten benutzt wird.

    Link Preview Image ssh-keygen - Wikipedia

    favicon

    (en.wikipedia.org)

  • Liste von Linuxbefehlen

    Angeheftet
    3
    0 Stimmen
    3 Beiträge
    680 Aufrufe
    FrankMF
    systemd Anzeige der geladenen Dienste root@host:/etc/systemd/system# systemctl --type=service UNIT LOAD ACTIVE SUB DESCRIPTION atd.service loaded active running Deferred execution scheduler blk-availability.service loaded active exited Availability of block devices cloud-config.service loaded active exited Apply the settings specified in cloud-config cloud-final.service loaded active exited Execute cloud user/final scripts cloud-init-local.service loaded active exited Initial cloud-init job (pre-networking) cloud-init.service loaded active exited Initial cloud-init job (metadata service crawler) console-setup.service loaded active exited Set console font and keymap cron.service loaded active running Regular background program processing daemon crowdsec-firewall-bouncer.service loaded active running The firewall bouncer for CrowdSec crowdsec.service loaded active running Crowdsec agent dbus.service loaded active running D-Bus System Message Bus getty@tty1.service loaded active running Getty on tty1 ifupdown-pre.service loaded active exited Helper to synchronize boot up for ifupdown keyboard-setup.service loaded active exited Set the console keyboard layout kmod-static-nodes.service loaded active exited Create List of Static Device Nodes lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling mariadb.service loaded active running MariaDB 10.11.3 database server networking.service loaded active exited Raise network interfaces nginx.service loaded active running A high performance web server and a reverse proxy server qemu-guest-agent.service loaded active running QEMU Guest Agent resolvconf.service loaded active exited Nameserver information manager semaphore.service loaded active running Ansible Semaphore serial-getty@ttyS0.service loaded active running Serial Getty on ttyS0 ssh.service loaded active running OpenBSD Secure Shell server systemd-binfmt.service loaded active exited Set Up Additional Binary Formats systemd-fsck@dev-disk-by\x2duuid-1E22\x2dDC00.service loaded active exited File System Check on /dev/disk/by-uuid/1E22-DC00 systemd-journal-flush.service loaded active exited Flush Journal to Persistent Storage systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running User Login Management systemd-modules-load.service loaded active exited Load Kernel Modules systemd-random-seed.service loaded active exited Load/Save Random Seed systemd-remount-fs.service loaded active exited Remount Root and Kernel File Systems systemd-sysctl.service loaded active exited Apply Kernel Variables systemd-sysusers.service loaded active exited Create System Users systemd-timesyncd.service loaded active running Network Time Synchronization systemd-tmpfiles-setup-dev.service loaded active exited Create Static Device Nodes in /dev systemd-tmpfiles-setup.service loaded active exited Create Volatile Files and Directories systemd-udev-trigger.service loaded active exited Coldplug All udev Devices systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files systemd-update-utmp.service loaded active exited Record System Boot/Shutdown in UTMP systemd-user-sessions.service loaded active exited Permit User Sessions ufw.service loaded active exited Uncomplicated firewall user-runtime-dir@0.service loaded active exited User Runtime Directory /run/user/0 user@0.service loaded active running User Manager for UID 0 LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 44 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
  • Fedora 41 - Standby Problem

    3
    0 Stimmen
    3 Beiträge
    123 Aufrufe
    FrankMF

    Temporäre Lösung findet man hier.

  • Standby Problem mit Mediatek MT7921e

    1
    0 Stimmen
    1 Beiträge
    70 Aufrufe
    Niemand hat geantwortet
  • Restic v0.17.3 released

    1
    0 Stimmen
    1 Beiträge
    75 Aufrufe
    Niemand hat geantwortet
  • Pycharm und Autoupload

    1
    0 Stimmen
    1 Beiträge
    50 Aufrufe
    Niemand hat geantwortet
  • Debian Bookworm 12.8 released

    1
    0 Stimmen
    1 Beiträge
    92 Aufrufe
    Niemand hat geantwortet
  • Test3

    1
    0 Stimmen
    1 Beiträge
    43 Aufrufe
    Niemand hat geantwortet
  • Fedora erhebt KDE zur offiziellen Workstation Alternative

    1
    0 Stimmen
    1 Beiträge
    85 Aufrufe
    Niemand hat geantwortet
  • Ubuntu wird 20

    1
    0 Stimmen
    1 Beiträge
    99 Aufrufe
    Niemand hat geantwortet