Das meiste wird besser

    Jetzt sollten die Tagesthemen diese Nachricht nicht nur “einmal” veröffentlichen sondern vielleicht mal die Nachrichten verändern.

    Jeden Tag eine gute Nachricht.

    21.9.18
    Weitere Beiträge zu: GuteNachrichten

    Protokoll eines Festplattenwechsels im MDM Raid

    Es war mal wieder so weit. Eine Festplatte auf dem produktiven Webserver musste getauscht werden. So ein Festplattentausch in einem produktiven Web- und Mailserver ist für mich immer noch mit etwas leicht erhöhtem Blutdruck verbunden. Das letzte Mal hat es zwar ohne Probleme geklappt aber …..

    Seit einiger Zeit waren recht niedrige “Gesundheitswerte” meiner ersten Festplatte gemeldet worden

      smartd[626]: Device: /dev/sda [SAT], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 63 to 64
    

    So das ich für heute morgen ein Festplattentausch bei Hetzner beantragt habe. Sicherheitshalber habe ich auch gleich noch eine KVM Session beantragt um im Notfall direkt auf den “Bildschirm” schauen zu können. Bei der Vorgehensweise habe ich mit an diese Doku von Hetzner gehalten. Diese Dokument ist “nur” meine exakte Dokumentation für mich selber aber vielleicht hiflt was ja auch jemandem.

    Der Status zu Beginn war dieser

     cat /proc/mdstat
     Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
     md2 : active raid1 sdb3[1] sda3[2]
           1073610560 blocks super 1.2 [2/2] [UU]
    
     md3 : active raid1 sdb4[1] sda4[2]
           1847478528 blocks super 1.2 [2/2] [UU]
    
     md0 : active raid1 sdb1[1] sda1[2]
           8384448 blocks super 1.2 [2/2] [UU]
    
     md1 : active raid1 sdb2[1] sda2[2]
           523968 blocks super 1.2 [2/2] [UU]
    

    Zur Vorbereitung galt es zuerst die “altersmüde” Festplatte /dev/sda aus dem Raid zu nehmen

    Schritt 1: markieren der Partitionen als “ausgefallen”

     mdadm --manage /dev/md0 --fail /dev/sda1
     mdadm: set /dev/sda1 faulty in /dev/md0
     mdadm --manage /dev/md1 --fail /dev/sda2
     mdadm: set /dev/sda2 faulty in /dev/md1
     mdadm --manage /dev/md2 --fail /dev/sda3
     mdadm: set /dev/sda3 faulty in /dev/md2
     mdadm --manage /dev/md3 --fail /dev/sda4
     mdadm: set /dev/sda4 faulty in /dev/md3
    

    Schritt 2: Entfernen der Partitionen aus dem Raid

     mdadm /dev/md0 -r /dev/sda1
     mdadm: hot removed /dev/sda1 from /dev/md0
     mdadm /dev/md1 -r /dev/sda2
     mdadm: hot removed /dev/sda2 from /dev/md1
     mdadm /dev/md2 -r /dev/sda3
     mdadm: hot removed /dev/sda3 from /dev/md2
     mdadm /dev/md3 -r /dev/sda4
     mdadm: hot removed /dev/sda4 from /dev/md3
    

    Wie schaut es jetzt aus?

     more /proc/mdstat
     Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
     md2 : active raid1 sdb3[1]
           1073610560 blocks super 1.2 [2/1] [_U]
     md3 : active raid1 sdb4[1]
           1847478528 blocks super 1.2 [2/1] [_U]
     md0 : active raid1 sdb1[1]
           8384448 blocks super 1.2 [2/1] [_U]
     md1 : active raid1 sdb2[1]
           523968 blocks super 1.2 [2/1] [_U]_
    

    Pünktlich zu der vereinbarten Uhrzeit wurde mein Server gestoppt. 5 Minuten später war er wieder online.

    Jetzt hat man eine leere Festplatte bei der die Partitionen von der “guten” auf die “neue” kopiert werden müssen und die Partitionen müssen dort dann neue “Nummern” bekommen

     fdisk -l /dev/sda
     Disk /dev/sda: 2,7 TiB, 3000592982016 bytes, 5860533168 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 4096 bytes
     I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    

    Die Partitionen werden von der guten auf die neue Platte übertragen

     sgdisk -R /dev/sda /dev/sdb
     The operation has completed successfully.
    

    (Hier war dann ein Fehler. Eigentlich hätte das auf sda gemacht werden sollen.)

     sgdisk -G /dev/sdb
     Warning: The kernel is still using the old partition table.
     The new table will be used at the next reboot or after you
     run partprobe(8) or kpartx(8)
     The operation has completed successfully.
    

    Wie schaut’s aus?

     fdisk -l /dev/sda
     Disk /dev/sda: 2,7 TiB, 3000592982016 bytes, 5860533168 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 4096 bytes
     I/O size (minimum/optimal): 4096 bytes / 4096 bytes
     Disklabel type: gpt
     Disk identifier: E6C5E876-F160-4D89-8FBF-D431C4AD1D63
    
     Device          Start        End    Sectors  Size Type
     /dev/sda1        4096   16781311   16777216    8G Linux RAID
     /dev/sda2    16781312   17829887    1048576  512M Linux RAID
     /dev/sda3    17829888 2165313535 2147483648    1T Linux RAID
     /dev/sda4  2165313536 5860533134 3695219599  1,7T Linux RAID
     /dev/sda5        2048       4095       2048    1M BIOS boot
    

    Dann konnte ich die neuen leeren Partitionen in das Raid einfügen

     mdadm --manage /dev/md0 --add /dev/sda1
     mdadm: added /dev/sda1
     mdadm --manage /dev/md1 --add /dev/sda2
     mdadm: added /dev/sda2
     mdadm --manage /dev/md2 --add /dev/sda3
     mdadm: added /dev/sda3
     mdadm --manage /dev/md3 --add /dev/sda4
     mdadm: added /dev/sda4
    

    Und die Synchronisation beginnt

     more /proc/mdstat
     Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
     md1 : active raid1 sda2[2] sdb2[1]
           523968 blocks super 1.2 [2/1] [_U]
           	resync=DELAYED
    
     md3 : active raid1 sda4[2] sdb4[1]
           1847478528 blocks super 1.2 [2/1] [_U]
           	resync=DELAYED
    
     md2 : active raid1 sda3[2] sdb3[1]
           1073610560 blocks super 1.2 [2/1] [_U]
           [======>..............]  recovery = 32.4% (348329536/1073610560) finish=74.7min speed=161716K/sec
    
     md0 : active raid1 sda1[2] sdb1[1]
           8384448 blocks super 1.2 [2/2] [UU]_
    

    Irgendwann ist dann alles fertig. Bei 2,7TB hat das hier um die 8 Stunden gedauert.

    Leider habe ich zwischendurch bemerkt das ich den Befehl zu Neugenerierung der Partitionsnummern vergessen habe und dann habe ich ihn auch noch auf der falschen (der gesunden) Platte ausgeführt. Da es aber um das generieren von eindeutigen IDs geht habe ich das gelassen da sich ja damit eigentlich die IDs der beiden Platten unterscheiden sollten.

    Anpassungen für den Bootmanager

      grub-mkdevicemap -n
    
      grub-install /dev/sda
      i386-pc wird für Ihre Plattform installiert.
      installation beendet. Keine Fehler aufgetreten.
    

    Wegen des angesprochenen Fehlers habe ich das auch noch mal für die alte Platte gemacht.

     grub-install /dev/sdb
     i386-pc wird für Ihre Plattform installiert.
     installation beendet. Keine Fehler aufgetreten.
    

    Da ich mir nicht sicher war ob die IDs in der Grub Konfiguration noch stimmen habe ich das auch noch mal upgedated

     update-grub
     GRUB-Konfigurationsdatei wird erstellt …
     Linux-Abbild gefunden: /boot/vmlinuz-4.9.0-8-amd64
     initrd-Abbild gefunden: /boot/initrd.img-4.9.0-8-amd64
     Linux-Abbild gefunden: /boot/vmlinuz-4.9.0-7-amd64
     initrd-Abbild gefunden: /boot/initrd.img-4.9.0-7-amd64
     erledigt
    

    Sicherheitshalber habe ich dann noch mal eine KVM beantragt und einen Neustart getestet (Man weiß ja nie) aber der Server hat schön neu gestartet.

    20.9.18
    Weitere Beiträge zu: Hetzner Raid Debian

    Mailman 3 auf Docker

    Vor einiger Zeit habe ich meinen ersten Dockerserver aufgesetzt. Ziel war es die Möglichkeit zu schaffen weitere Komponenten auf dem Server zu installieren und Konflikte zwischen Softwarevoraussetzungen zu vermeiden.

    GNU Mailman war damals schon mein erster Fall den ich vor Augen hatte. Ich möchte diesen Listserver verwenden um Maillinglisten für Schulklassen und Elternpflegschaften zu verwalten.

    Die Installation von Mailman per Docker wird von den Entwickler befürwortet und die Dokumentation erweckt den Eindruck das der Autor weiß was er tut.

    Da ich generell noch etwas misstrauisch bin wollte ich mir diese Installationsweise vorab etwas genauer ansehen.

    Es gib 3 Dockercontainer die über ein eigenes internes Netz verbunden sind. Diese “sprechen” nach außen über die internen Docker IP Adressen und sollten damit nicht von extern ansprechbar sein. Es gibt 3 Schnittstellen nach außen

    • Konfigurationsverzeichnisse in die Container
    • Zwei Ports über die die Kommunikation des Core Service angesprochen werden kann
    • Ein Port über den der Webserver arbeiten kann.

    Damit sollte nach meinem Kenntnisstand die Installation erst einmal recht risikoarm sein da an sich der Dockercontainer abgekappselt ist.

    Die eigenen Konfigurationen werden in einem Verzeichnis des Host Servers gehalten und in den Docker Container “an die richtige Stelle” gemappt. Die Daten werden in /opt/mailman/databases gehalten

    Backup:

    Um die Daten und Konfigurationen des Mailman Servers zu sichern sollte es ausreichen man das Verzeichnis /opt/mailman in das Backup mit aufzunehmen. Dort müssten alle Daten und eigenen Konfigurationen enthalten sein.

    Installation

    Die Installation müsste recht einfach sein. Aber das scheint wahrscheinlich nur so. Mal sehen.

    16.9.18
    Weitere Beiträge zu: Mailman3 Docker Debian

    Cisco SIP Telefone für Asterisk mit Ansible verwalten

    Ich verwende seit kurzem wieder ausschließlich Asterisk als Telefonanlage und dazu Cisco 7960 SIP Telefone.

    Generell ist diese Konfiguration in diesem Privathaushalt mit Homeoffice recht einfach. Jeder darf mit jedem telefonieren und ich lege zentral fest welches Telefon bei welcher externen Nummer klingel soll. Also keine Benutzer mit Kennwörtern sondern nur Geräte mit Nummern. Das macht es mir möglich einen Großteil der Konfiguration in Ansible zu verwalten.

    Die Konfiguration ist im Prinzip nicht schwer, geschieht aber an verschiedenen Stellen und ist deshalb etwas fusselig.

    Telefongeräte

    Für jedes Telefongerät muss eine Konfiguration erstellt werden die sich das Telefon beim Booten von einem TFTP Server zieht. Dort stehen also schon mal Namen und Kennwörter. Diese Konfigurationsdatei muss in dem Namen die MAC Adresse des Telefons haben.

    Asterisk

    Auch hier wird für jedes Telefon ein “Account” angelegt und es muss festgelegt werden unter welcher Nummer es extern erreichbar ist, welche Nummer es beim telefonieren verwenden soll und das man es intern erreichen kann.

    Neuanlage eines Telefons

    Man trägt also für jedes Telefon zuerst die Nummer in der SIP Configuration ein, legt einen Eintrag für die Extension an und dann noch mal diese SIP Konfiguration auf dem FTP Server.

    Und überall stehen im wesentlichen nur ein paar Informationen wiederholt drin.

    Automatisierung mit Ansible

    (Der folgende Text setzt schon Ansible Wissen voraus.)

    Das Playbook besteht aus folgenden Dateien

     roles/asterisk/
     ├── handler
     │   └── main.yml
     ├── tasks
     │   └── main.yml
     └── templates
         ├── interne-erreichbarkeit-sip-conf.j2
         ├── sip-config-xml.j2
         └── sip-conf.j2
    

    In der Konfiguration des Asterisk Servers sind folgende Variablen für jedes Telefon enthalten

    - sipname: "311"
      name: "311"
      callerid_name: "Familie Bauer"
      callerid_num: "+49222xxxx"
      logo_url: "http://server.domain.lcl/eigenes-cisco-logo.bmp"
      mac: "0016Cxx228E"
    

    Asterisk Extensions

    Es wird für jedes Telefon eine Datei angelegt in der steht unter welcher Nummer ein Telefon erreichbar ist

      - name: create config directory in asteriskdir
        file:
          path: "/etc/asterisk/my/"
          state: directory
          mode: 0750
      - name: Create a rule for internal-calls.conf
        template:
          src=interne-erreichbarkeit-sip-conf.j2
          dest=/etc/asterisk/my/internal-calls-{{ item.name }}.conf
          owner=asterisk
          group=asterisk
          mode=0750
        with_items: "{{ sipphones }}"
    

    Das Template sie so aus und enthält nur eine Zeile.

     exten =>  {{ item.name }} ,1,Dial(SIP/{{ item.name }})  
    

    In der extension.conf werden alle diese Konfigurationen eingebunden

      #include "my/internal-calls-\*.conf"
    

    Damit ist gibt es für jedes Telefon eine Anrufmöglichkeit.

    Telefon Definition

    Ähnlich baue ich die SIP Definitionen

    Task:

      - name: Create a sip1.conf
        template:
        src=sip-conf.j2
        dest=/etc/asterisk/my/sip-{{ item.name }}.conf
        owner=asterisk
        group=asterisk
        mode=0750
        with_items: "{{ sipphones }}"
    

    Template:

     [{{ item.name }}] ; Name
    
     type=friend
     username = {{ item.name }}
     secret = {{ item.name }}
     pickupgroup = 1
     callgroup = 1
     context=mycontext;
     setvar=EXTERNAL_CALLERID=”{{ item.callerid_name }}” <{{ item.callerid_num }}>;
      ....
      .....
      .....
     {% if item.mailbox is defined %}
     mailbox= {{ item.mailbox }}
     {% endif %}
    

    In der /etc/asterisk/sip.conf steht dann

       #include /etc/asterisk/my/sip-\*.conf
    

    Telefonkonfiguraton

    Bleibt noch die Konfiguration der Telefone selbst. Auch die ist recht einfach gehalten aber mit etwas Logik kann man das auch komplizierter machen.

    Tasks:

     - name: Create a Phone XML Configuration
       template:
        src=sip-config-xml.j2
        dest=/opt/tftp/diskless/SIP{{ item.mac }}.cnf
        owner=asterisk
        group=asterisk
        mode=0750
      with_items: "{{ sipphones }}"
    

    Template:

     phone_label: "{{ item.name }}"
     proxy_register: 1
     line1_name: "{{ item.name }}"
     line1_displayname: "{{ item.name }}"
     line1_shortname: "{{ item.name }}"
     line1_authname: "{{ item.name }}"
     line1_password: "{{ item.name }}"
     {% if item.logo_url is defined %}
     logo_url: "{{ item.logo_url }}"
     {% endif %}
    

    Ergebniss

    Jetzt trage ich nur noch in der Ansible Server Konfiguration ein neues Telefon mit der gewünschten Nummer und der Mac Adresse ein und mit einem Befehl wird der Account definiert, die Nummer eingerichtet und die Telefonkonfiguration erstellt.

    ansible-playbook asterisk.yml -b
    
    10.9.18
    Weitere Beiträge zu: Ansible Asterisk Cisco7960

    Raspberry Pi offline @ Amsterdam

    Leider geht die Zeit für meinen kleinen RaspberryPi in Amsterdam zu ende.

    We are reaching out to inform you that, as of the 10th of January 2019, we will stop with our Raspberry Pi colocation service. As you might remember, we started this adventure over five years ago and while its been really fun and way more successful than we could ever imagine, we have decided to no longer continue with the service in 2019.

    Ja es hat wirklich Spaß gemacht aber die Zeit ist gekommen. Der Pi wird gespendet.

    pcextrem.nl ist mir dadurch aber als verlässlicher Partner für ein Hosting außerhalb von Deutschland ans Herz gewachsen.

    6.9.18
    Weitere Beiträge zu: raspberrypi pcextrem

    Installation Docker auf Debian 9

    Ziel war es einen Docker Dienst auf einem öffentlichen Server zu installieren um zukünftig über den Mechanismus der Container einfacher verschiedene Dienste zu fahren die sich mit Ihren Abhängigkeiten nicht in die Quere kommen sollen.

    Die bisherigen Beschreibungen sahen allesamt recht einfach aus. Zusätzlich wollte ich noch vorhandene Sicherheitsempfehlungen nachgehen und bin auf Docker Bench gestoßen das wohl die gängigen Empfehlungen im System prüft.

    Eigentlich lief alles nach Doku. Dies sind meine Notizen ohne Anspruch auf Korrektheit.

    Die Basisbeschreibung stammt von hier

       sudo apt-get update
       sudo apt-get install apt-transport-https ca-certificates  curl gnupg2 software-properties-common
       curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
       sudo apt-key fingerprint 0EBFCD88
           pub   rsa4096 2017-02-22 [SCEA]
                 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
           uid        [ unbekannt ] Docker Release (CE deb) <docker@docker.com>
           sub   rsa4096 2017-02-22 [S]
       sudo add-apt-repository \
          "deb [arch=amd64] https://download.docker.com/linux/debian \
          $(lsb_release -cs) \
          stable"
       sudo apt-get update
       sudo apt-get install docker-ce
       sudo systemctl status docker
       sudo usermod -aG docker meinuser
       id -nG
          meinuser docker ..
       docker run hello-world
           Hello from Docker!
           This message shows that your installation appears to be working correctly.
      sudo systemctl enable docker
         Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
         Executing: /lib/systemd/systemd-sysv-install enable docker
    

    Damit war Docker installiert, das Hello World Beispiel erfolgreich gestartet und der Dienst sollte sich automatisch starten.

    Jetzt der Sicherheitsscheck auf Basis dieser Beschreibung

    git clone https://github.com/docker/docker-bench-security.git
    cd docker-bench-security/
    ./docker-bench-security.sh
    

    Der Check selbst brachte das gleiche Ergebnis wie in dem Dokument und bis auf die separate Partition konnte ich allen Empfehlungen folgen

    Die Überwachung der Dockerverzeichnisse

       sudo apt-get install auditd
       vi /etc/audit/rules.d/audit.rules
          -w /usr/bin/docker -p wa
          -w /var/lib/docker -p wa
          -w /etc/docker -p wa
          -w /lib/systemd/system/docker.service -p wa
          -w /lib/systemd/system/docker.socket -p wa
          -w /etc/default/docker -p wa
          -w /etc/docker/daemon.json -p wa
          -w /usr/bin/docker-containerd -p wa
          -w /usr/bin/docker-runc -p wa
       sudo systemctl restart auditd
    

    Die Beschränkungen des Docker Daemons

       sudo vi /etc/docker/daemon.json
    
       {
           "icc": false,
           "userns-remap": "default",
           "log-driver": "syslog",
           "disable-legacy-registry": true,
           "live-restore": true,
           "userland-proxy": false,
           "no-new-privileges": true
       }
    

    Docker Trust

      echo "DOCKER_CONTENT_TRUST=1" | sudo tee -a /etc/environment
    

    Dann blieben noch zwei Warnungen übrig.

      ./docker-bench-security.sh  |  grep WARN
      [WARN] 1.1  - Ensure a separate partition for containers has been created
      [WARN] 2.11 - Ensure that authorization for Docker client commands is enabled
    

    Die Partition kann ich aktuell nicht separieren und die andere Warnung kann man wohl erst mal ignorieren kann da man keinen externen Zugriff erlaubt.

      The audit will continue to flag this test as a WARN, though access to the default local-only Docker socket is protected by requiring membership in the docker group so this can be safely ignored.
    
    5.9.18
    Weitere Beiträge zu: debian docker

    Wie eine Türklingel Telefonanrufe auslösen kann

    Ein echtes Vater / Sohn Projekt das echt viel Spaß gemacht hat. Die Löt- und Arduinokenntnisse von meinem Sohn wurden kombiniert mit meine bescheidenen MQTT Kenntnissen und meiner Asterisk Anlage.

    Das Problem

    Wenn jemand in unserem Haus klingelt und man sich oben in einem der Zimmer mit geschlossener Zimmertür aufhält dann hört man nichts. Das Ziel war das es ein einem bestimmten Zimmer eine Benachrichtigung gibt. Das Zimmer ist auch mit einem Telefon ausgestattet.

    Der Wunsch

    Schon seit langem wollte ich die Klingel “irgendwie” mit dem LAN verbinden hatte aber noch nicht die richtige Idee.

    Dann kam dieser Heise Artikel. Dort sollte zwar eine Fritzbox angeschlossen werden aber es gab auch die Möglichkeit eine MQTT Nachricht zu versenden.

    Das Netz für die ganzen IOT Geräte ist vollkommen abgeschottet. Das Netz für Telefonanlage ist ebenfalls abgeschottet darf aber in das IOT Netzwerk. In jedem Netzwerk ist ein RaspberryPi mit einem MQTT Server

    Die Bauteile waren meinem Sohn aufgrund seiner Arduino Workshop schon bekannt. Die Kosten waren im 10 Euro Bereich. Der Bauplan war für Ihn recht einfach und sieht gemäß CT so aus

    Das ganze wurde noch etwas provisorisch an der Klingel angeschlossen

    Das Programm für den ESP8266 ist recht simpel.

      #include <ESP8266WiFi.h>
      #include <PubSubClient.h>
      #define WLAN_SSID "wlan-it"
      #define WLAN_PASSWORD "xxxxxx"
      #define MQTT_HOST "iot-mqtt.yourlan.lcl"
      #define MQTT_USER "doorbell"
      #define MQTT_PASSWORD "geheim"
      #define MQTT_PORT 1883
      #define MQTT_TOPIC "doorbell/ring"
      #define MQTT_MESSAGE "true"
    
      WiFiClient wifiClient;
      PubSubClient mqtt_client(wifiClient);
    
      void setup_wifi() {
        WiFi.begin(WLAN_SSID, WLAN_PASSWORD);
        while (WiFi.status() != WL_CONNECTED) {
          delay(500);
        }
      }
    
      void connect_mqtt() {
        while (!mqtt_client.connected()) {
          if (mqtt_client.connect("Klingelanlage", MQTT_USER, MQTT_PASSWORD)) {
          } else {
            delay(5000);
          }
        }
      }
    
      void setup() {
        setup_wifi();
        mqtt_client.setServer(MQTT_HOST, MQTT_PORT);
        if (!mqtt_client.connected()) {
          connect_mqtt();
        }
        mqtt_client.loop();
        mqtt_client.publish(MQTT_TOPIC, MQTT_MESSAGE);
        delay(4000);
        ESP.deepSleep(0);
      }
    
      void loop() {
      }
    

    Es meldet sich im unsicheren IOT WLAN an und versendet eine MQTT Nachricht an den dortigen MQTT Broker.

    Die Asterisk Telefonanlage befindet sich auf einem weiteren Rapsberri Pi. Dort läuft der MQTT-Launcher von jpmens und immer wenn das relevante Topic im IOT VLAN erscheint kopiert dieser eine sogenannte Call Datei in das richtige Verzeichnis für die Telefonanlage. In der Call Datei steht welche Telefonnummer für wie lange angerufen werden soll:

     Channel: SIP/Wunschummer
     Callerid: Pforte
     MaxRetries: 0
     WaitTime: 14
     Context: internercontext
     Extension: Wunschnummer
     Priority: 2
    

    Wenn es also klingelt “wacht” der Doorbellbaustein auf und sendet eine MQTT Nachricht. Der Asteriskserver “hört” das und ruft die richtige Nummer an.

    Bis jetzt läuft das die ersten Tage schon recht stabil

    Weitere Ideen:

    • V2 Ich möchte im Urlaub benachrichtigt werden wenn jemand klingelt und ein Bild der Videokamera zu gesendet bekommen.
    • V3 die alte Gegensprechanlage wird an Telefon angeschlossen und kann angerufen werden.
    2.9.18
    Weitere Beiträge zu: MQTT Asterisk

    Froscon 13: Mein Vortrag und ein Resümee

    Bei Konferenzen wie der Froscon13 kann man ja immer mehr oder weniger Glück haben. Dieses Jahr hatte ich Glück. Es waren viele für mich interessanten Vorträge dabei und bei meinem eigenen Vortrag zu Sichere Netzwerke mit pfsense hatte ich ein aktives Publikum mit vielen Nachfragen und gutem Feedback zum Schluss.

    Die Logistik war wie die vergangenen Jahre sehr gut. Auch wenn ich schon mal weniger Glück hatte kann ich diesen Event wirklich zu jedem ans Herz legen der sich mit freier Software beschäftigt.

    Den einen oder anderen Vortrag der mit besonders gut gefallen hat werde ich in den nächsten Tagen noch vorstellen.

    27.8.18
    Weitere Beiträge zu: Froscon pfsense

    Froscon 13: Documentation with any editor

    Der Froscon13 Vortrag auf den ich am gespanntesten war da ich mit Christoph schon im Vorfeld darüber gesprochen hatte.

    Create beautiful documentation in the editor of your choice and organize your stuff in git and co

    Und ich wurde nicht enttäuscht. Dieses asciidoctor werde ich auf jeden Fall in dem nächste Dokumentationsprojekt verwenden.

    Also jeder der mit seiner aktuellen Art Dokumentation zu schreiben nicht zufrieden ist sollte sich dieses Replay unbedingt ansehen.

    25.8.18
    Weitere Beiträge zu: Froscon Documentation asciidoctor

    Der Ransomware Angriff bei Maersk

    Die Reederei Maersk war einer der am härtesten betroffenen weltweiten Unternehmen des Verschlüsselungstrojaner NotPetya.

    Diese Geschichte liest sich wie eine Kriminalgeschichte.

    Lessons learned: Nachlässigkeiten in der Sicherheitskonzeption werden bestraft. Wenn nicht heute dann morgen.

    $10 billion: Total damages from NotPetya, as estimated by the White House

    24.8.18
    Weitere Beiträge zu: Sicherheit notpetya

    Ubuntu 18.04 Bootprobleme nach Update

    Nach dem Update auf Ubuntu 18.04 hatte ich bei dem Rechner meiner Tochter das Problem das er bei dem Ubuntu Splashscreen bei “einem Punkt” hängen geblieben ist.

    Hier gab es dazu eine Lösung. In den Recoverymodus booten und Wayland für den Login Manager ausschalten. (Keine Ahnung was dann wegfällt. Aber dafür kann meine Tochter wie bisher weiter arbeiten)

     vi b/etc/gdm3/custom.conf.
         WaylandEnable=false
    
    21.8.18
    Weitere Beiträge zu: Ubuntu

Dies ist ein privater Blog von Hagen Bauer- berufstätiger Vater, Ehemann, Naturliebhaber, Läufer, Zelter, technikverliebt.


Creative Commons License
This blog is licensed under a Creative Commons License