Raspberry Pi Let’s-Encrypt-Zertifikat

0
Network Cables Network Connector  - blickpixel / Pixabay
blickpixel / Pixabay

Seit ein paar Tagen lässt sich der Certbot von Let’s encrypt nicht mehr via Github auf dem Raspberry Pi OS, wie im Artikel “Let’s Encrypt auf dem Raspberry Pi” beschrieben, installieren.

Skipping bootstrap because certbot-auto is deprecated on this system.
Your system is not supported by certbot-auto anymore.
Certbot cannot be installed.
Please visit https://certbot.eff.org/ to check for other alternatives.

Das ist aber nicht weiter schlimm, da hierzu mittlerweile ein offizielles Paket in den Repositories des Systems zur Verfügung steht.

Installation

Um den Certbot, wie in meinem Fall, in einem Apache-Webserver zu integrieren, reicht es, das Paket python-certbot-apache zu installieren. Durch die bestehenden Abhängigkeiten wird certbot ebenfalls aus den Paketquellen heruntergeladen und installiert.

sudo apt-get install python-certbot-apache

Danach wird der Client gestartet.

sudo certbot --apache

Hierbei arbeitet man die gewohnte Routine durch, gibt die entsprechende Domain an, tippt eine valide Mail-Adresse ein und bestätigt die zukünftige Weiterleitung der Anfragen auf SSL.

Das so erstellte Zertifikat liegt wie gewohnt im Verzeichnis /etc/letsencrypt/live/domain.tld/.

Erneuerung

Das Let’s-Encrypt-Zertifikat wird wie folgt erneuert:

sudo certbot certonly --renew-by-default --apache --rsa-key-size 4096 -d domain.tld

Dies kann natürlich via Script mit einem Cronjob automatisiert werden.

Viel Spaß!

Frohes Fest!

1
Couleur / Pixabay

Ich wünsche allen Besuchern des Blogs intux.de ein frohes und besinnliches Weihnachtsfest sowie einen guten Rutsch ins neue Jahr 2021.

VNC – schwarzer Bildschirm

0
Ipad Tablet Android Remote Work  - arthur_bowers / Pixabay
arthur_bowers / Pixabay

Seit einiger Zeit kommt es am Raspberry Pi zu ein Phänomen, welches den Zugang via VNC betrifft. Ist am RasPi kein Monitor angeschlossen, bekommt man bei Verbindung aus der Ferne nur einen “Black Screen”. Das System erkennt, dass kein Monitor am HDMI-Port angeschlossen ist und überträgt somit auch keinen Desktop.

Lösung des Problems

Um dieses Problem zu umgehen, kommentiert man mit

sudo nano /boot/config.txt

die Zeile 

#hdmi_force_hotplug=1

aus. Hierbei wird # vor dem Eintrag entfernt. Nach einem Reboot des Raspberry Pi, sollte dieser über VNC den Desktop wie gewünscht freigeben.

Viel Spaß!

Sicheres Upgrade Mastodon Docker

0
Ship Cargo Vessel Container  - papazachariasa / Pixabay
papazachariasa / Pixabay

Wie man ein vernünftiges Upgrade von Mastodon dockerized macht, habe ich lange Zeit nicht wirklich verstanden. Wie es nun richtig geht, möchte ich an dem Beispiel meiner Instanz kurz zeigen.

Vorbereitung

Zu allererst gehe ich in das Verzeichnis meiner Mastodon-Installation. Dort rufe ich die YAML-Datei docker-compose.yml auf.

# nano docker-compose.yml

Diese beinhaltet welche Container benötigt werden und wie diese miteinander in Verbindung stehen. Damit beim Start der Docker-Installation nicht alle Container neu gebaut werden müssen, kommentiere ich build: in web, steaming und sidekiq ein. Weiterhin füge ich in der Zeile image: in den zuvor erwähnten drei Sektionen hinter tootsuite/mastodon die gewünschte Version (:v3.2.2) ein.

version: '3'
services:

  db:
    restart: always
    image: postgres:9.6-alpine
    shm_size: 256mb
    networks:
      - internal_network
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "postgres"]
    volumes:
      - ./postgres:/var/lib/postgresql/data

  redis:
    restart: always
    image: redis:5.0-alpine
    networks:
      - internal_network
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
    volumes:
      - ./redis:/data

#  es:
#    restart: always
#    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.1.3
#    environment:
#      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
#    networks:
#      - internal_network
#    healthcheck:
#      test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
#    volumes:
#      - ./elasticsearch:/usr/share/elasticsearch/data

  web:
#    build: .
    image: tootsuite/mastodon:v3.2.2
    restart: always
    env_file: .env.production
    command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000"
    networks:
      - external_network
      - internal_network
    healthcheck:
      test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:3000/health || exit 1"]
    ports:
      - "127.0.0.1:3000:3000"
    depends_on:
      - db
      - redis
#      - es
    volumes:
      - ./public/system:/mastodon/public/system

  streaming:
#    build: .
    image: tootsuite/mastodon:v3.2.2
    restart: always
    env_file: .env.production
    command: node ./streaming
    networks:
      - external_network
      - internal_network
    healthcheck:
      test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1"]
    ports:
      - "127.0.0.1:4000:4000"
    depends_on:
      - db
      - redis

  sidekiq:
#    build: .
    image: tootsuite/mastodon:v3.2.2
    restart: always
    env_file: .env.production
    command: bundle exec sidekiq
    depends_on:
      - db
      - redis
    networks:
      - external_network
      - internal_network
    volumes:
      - ./public/system:/mastodon/public/system
## Uncomment to enable federation with tor instances along with adding the following ENV variables
## http_proxy=http://privoxy:8118
## ALLOW_ACCESS_TO_HIDDEN_SERVICE=true
#  tor:
#    image: sirboops/tor
#    networks:
#      - external_network
#      - internal_network
#
#  privoxy:
#    image: sirboops/privoxy
#    volumes:
#      - ./priv-config:/opt/config
#    networks:
#      - external_network
#      - internal_network

networks:
  external_network:
  internal_network:
    internal: true

Neue Container bauen

Über den Befehl

# docker-compose build

werden nun die neuen erforderlichen Container zur aktuellen Version (v3.2.2) gebaut.

Start der neuen Mastodon-Version

Mit

# docker-compose up -d

werden nun alle Container in das System geladen und die Docker-Installation neu gestartet.

Datenbank anpassen

Abschließend wird die Datenbank an die Mastodon-Version angepasst.

# docker-compose run --rm web rails db:migrate

Dies ist zwingend erforderlich, da Mastodon sonst mit Fehlern läuft.

Docker aufräumen

Zum Schluss wird Docker aufgeräumt, um ungenutzte Docker-Images und -Container loszuwerden. Das ist sehr wichtig, da sonst die Images und Container alter Versionen weiter vorgehalten werden und so unnötig große Mengen an Speicher blockieren und nicht freigegeben werden können.

# docker system prune -a

Viel Spaß!

WordPress 5 – Das umfassende Handbuch

0

WordPress 5 – Das umfassende Handbuch“ von Richard Eisenmenger ist 2019 in der 1. Auflage im Rheinwerk Verlag erschienen und umfasst 1076 Seiten. Dieses umfangreiche Fachbuch ist für Einsteiger, fortgeschrittene Benutzer sowie ambitionierte Plugin- oder Theme Entwickler ein sehr guter Begleiter. Der Autor erläutert wie eine  Webseite professionell aufgebaut, konfiguriert und den eigenen Wünschen perfekt angepasst werden kann. Der Leser wird von Anfang an mit der umfangreichen Thematik nicht allein gelassen. Gezeigt werden etliche Anwendungsszenarien, aber auch Verweise auf einschlägige Internet-Foren, wo der Webmaster weiterführende Hilfe erwarten kann.

Einleitend gibt es eine Erklärung der gängigsten Begrifflichkeiten. Ob man die erste Seite bei wordpress.com betreiben oder sich doch lieber mit einer selbstgehosteten Instanz für die volle Kontrolle und Erweiterbarkeit entscheidet, bleibt jedem selbst überlassen. Ist die Idee geboren, kann es los gehen.
Das Buch ist in vier Teile gegliedert.

Teil I – WordPress installieren und bedienen zeigt, wie man das CMS WordPress richtig aufsetzt. Hierbei wird sowohl die lokale Installation in einer Virtualisierung auf Windows-, MacOS- und Linux-Systemen, aber auch die Installation bei einem Webhoster bzw. auf einem Server umfangreich besprochen. Den Umgang mit dem in Version 5 eingeführten Gutenberg-Editor, als auch mit dem Classic-Editor beschreibt dieser Teil des Buches hinreichend. Es gibt Unmengen von nützlichen Hinweisen zum richtigen Aufbau der ersten eigenen Webseite. Die Formatierung von Beiträgen und Seiten ist dabei essentiell, speziell der Umgang mit den zu integrierenden Medien, wie Bildern und Videos. Auch die Kommentarfunktion sowie die richtige Handhabung von Spam-Kommentaren wird ausreichend behandelt.

TEIL II WordPress-Website anpassen und erweitern gibt einen Einblick in die vielen Möglichkeiten von WordPress. Angefangen bei der allgemeinen Ansicht der Webseite, über das Responsive Design, bis zum Umgang mit Widgets und Plugins, wird der grundsätzliche Aufbau einer Internetpräsentation mit WordPress erläutert und wichtige Hinweise über einen funktionellen Aufbau dieser gegeben. Ein vielschichtiges Thema, wie die Datenschutzgrundverordnung (DSGVO) und die für Besucher wichtige Einwilligung zur Verwendung von Cookies kommen ebenfalls nicht zu kurz. So werden eine Banner- und eine kostenpflichtige Opt-In-Lösung zur Auswahl notwendiger und nicht notwendiger Cookies aufgezeigt. Der Leser wird weiterhin u.a. auf Möglichkeiten zur statistischen Besucher-Erfassung mit Hilfe eines Open-Source-Webanalytik-Tools, dem Einbau von Werbebannern aber auch der Erweiterbarkeit der Webseite zu einem Online-Shop aufmerksam gemacht.

TEIL III WordPress optimieren und warten beschreibt die Wichtigkeit eine WordPress-Installation stets aktuell zu halten, um nicht Ziel von Hackerangriffen zu werden. Was das System selbst vermag, was sinnvoll nachzukonfigurieren bzw. nachzuinstallieren ist, um sich ausreichend abzusichern, wird in diesem Teil des Buches intensiv dargelegt. Backupstrategien aber auch die Suchmaschinenoptimierung (SEO) werden thematisiert.

TEIL IV WordPress für Entwickler taucht abschließend noch tiefer in das CMS ein. In diesem Teil werden viele Tipps und Hinweise zur Entwicklung von Themes, Plugins und Widgets gegeben, aber auch hilfreiche Tools vorgestellt und beschrieben. Wer gerne selbst programmiert, wird so innerhalb kürzester Zeit seiner WordPress-Installation die eigene Handschrift verleihen können.

Das Buch umfasst 23 Kapitel.

  • Was Sie mit WordPress vorhaben und wo Sie jetzt weiterlesen
  • WordPress-Installation in wenigen Minuten
  • WordPress-Installation – flexibel
  • Online-Installation beim Webhoster
  • Administration und Konfiguration von WordPress
  • Inhalte veröffentlichen
  • Benutzer und Besucher
  • Design anpassen
  • Neue WordPress-Funktionen mit Plugins hinzufügen
  • Das Blog
  • Die Community
  • Die Geschäfts-Website mit Online-Shop
  • WordPress-Wartung und -Pflege
  • Migrationen, Synchronisationen und Deployments
  • Sicherheit ausbauen
  • Performance- und Suchmaschinenoptimierung
  • Notfallmaßnahmen
  • Grundwissen für WordPress-Entwickler
  • Seitentyp entwickeln
  • Widget entwickeln
  • Theme entwickeln
  • Plugin entwickeln
  • Rechtliche Aspekte: Newsletter, Datenschutz und Cookies

Leseproben und Downloads

Fazit

„WordPress 5 – Das umfassende Handbuch“ bietet viel Grundwissen für Anfänger und ist ein guter Leitfaden für routinierte WordPress-User. Richard Eisenmenger lässt keine Fragen rund um das Content Management System WordPress unbeantwortet. Es finden sich zahlreiche Tipps und Hinweise zum erfolgreichen Aufbau der ersten eigenen Webseite in diesem Buch. Auch für Entwickler ist die Lektüre mehr als nur interessant. 

Für diejenigen, die sich das erforderliche Wissen nicht mühsam im Internet erarbeiten möchten, ist dieses Handbuch eine klare Empfehlung.

Nextcloud via CLI upgraden

0
Terminal Coding Programming Code  - Godfrey_atima / Pixabay
Godfrey_atima / Pixabay

In letzter Zeit führe ich das Upgrade der Hauptinstanz meiner Nextcloud oft am Terminal durch. Das Ganze ist relativ einfach. Hierzu betritt man das Hauptverzeichnis der Nextcloud, schaltet dort den Wartungsmodus ein, wechselt in das Verzeichnis updater und startet die Upgrade-Routine.

cd /var/www/html/nextcloud
sudo -u www-data php occ maintenance:mode --on
cd updater
sudo -u www-data php updater.phar

Nun listet das System auf, was zu tun ist und fragt, ob das Update gestartet werden kann. Das wird mit einem y bestätigt.

[ ] Check for expected files
[ ] Check for write permissions
[ ] Create backup
[ ] Downloading
[ ] Verify integrity [ ] Extracting
[ ] Enable maintenance mode
[ ] Replace entry points
[ ] Delete old files
[ ] Move new files in place
[ ] Done

Start update? [y/N]

Nach dem Einspielen des Updates wird nun die Ausführung des Upgrades angezeigt und mit y ausgeführt.

[✔] Check for expected files
[✔] Check for write permissions
[✔] Create backup
[✔] Downloading
[✔] Verify integrity
[✔] Extracting
[✔] Enable maintenance mode
[✔] Replace entry points
[✔] Delete old files
[✔] Move new files in place
[✔] Done

Update of code successful.

Should the "occ upgrade" command be executed? [Y/n]

Ist auch dies erfolgreich durchgelaufen, wird der Wartungsmodus mit n wieder aufgehoben.

Keep maintenance mode active? [y/N]

Viel Spaß!

Handybildschirm auf Desktop übertragen

0
Screen Mirroring für Android

Heute möchte ich zeigen, wie man den Handybildschirm auf den Desktop unter Debian 10 Buster mit dem Tool scrcpy übertragen kann. Dies ist ganz hilfreich, wenn es u.a. in einem Vortrag Funktionen einer App real darzustellen gilt. Diese Anleitung bezieht sich dabei auf Android-Smartphones.

Vorbereitung am Smartphone

Zuerst muss man im Smartphone den Entwicklermodus freischalten. Hierzu geht man wie folgt vor: Einstellungen -> Über das Telefon -> Build-Nummer. Auf Letzteres tippt man so lange, bis das Telefon signalisiert, dass die Entwickler-Optionen aktiviert sind. Dann geht man zurück und schaltet den Entwicklermodus folgendermaßen frei: Einstellungen -> System -> Entwickleroptionen. Hier wird nun USB-Debugging zugeschaltet. Danach können die Einstellungen wieder verlassen werden.

Einstellung Entwickleroptionen

Installation

Da Debian Buster leider über kein scrcpy-Paket verfügt, bietet im konkreten Fall Snap eine Alternative. Hierzu wird Snap über die Paketverwaltung installiert (falls dies noch nicht geschehen ist).

# apt install snapd
# snap install core

Im Anschluss kann scrcpy eingespielt werden.

# snap install scrcpy

Programm starten

Zuerst wird das Smartphone mit dem PC müssen via USB-Kabel verbunden. Um den Bildschirm nun zu übertragen, reicht dann ein einziger Befehl.

scrcpy --max-size 1024

Hierbei wird der Bildschirm in einer maximalen Größe von 1024 Pixeln auf dem PC angezeigt. Das Seitenverhältnis bleibt unverändert. Am Handy muss der Zugriff des vertrauenswürdigen Gerätes aber noch bestätigt werden (USB-Debugging zulassen).

Handybildschirm (Android 10)

Hinweis

Das Display des Smartphones lässt sich nun auch vom Desktop aus bedienen und steuern.

Schaufensterwerbung

0
Raspberry Pi Computer Electronics  - kevinpartner / Pixabay
kevinpartner / Pixabay

Heute möchte ich über ein kleines Projekt berichten, welches mit einem Raspberry Pi 3 für den produktiven Einsatz realisiert werden konnte.

Die Aufgabenstellung war, für eine Fahrschule eine preiswerte Schaufensterwerbung zu konfigurieren. Ein Flatscreen soll um eine bestimmte Zeit verschiedene Folien zur Außenwerbung im Schaufenster abspielen. Hierzu wurden vorab Grafiken im FullHD-Format (1920 x 1080) als PNG-File erstellt (ca. 10 Folien). 

Installation und Konfiguration

Zuerst wird das Programm Feh, welches es ermöglicht Grafiken im Vollbildmodus darzustellen, auf dem Raspberry Pi installiert.

sudo apt install feh

Ein Verzeichnis Grafiken wurde in /home/pi des Raspberry Pi erzeugt:

cd ~/
mkdir Grafiken

Die zuvor erstellten PNG-Files wurden nun dort hinein kopiert und der Dienst schaufenster

sudo nano /etc/init.d/schaufenster

mit folgendem Inhalt erstellt:

#! /bin/sh
### BEGIN INIT INFO
# Provides: noip
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: noip server
# Description:
### END INIT INFO
 
case "$1" in
    start)
        echo "schaufenster wird gestartet"
        # Starte Programm
        feh -F -D 10 /home/pi/Grafiken/*.png
        ;;
    stop)
        echo "schaufenster wird beendet"
        # Beende Programm
        killall animate
        ;;
    *)
        echo "Benutzt: /etc/init.d/schaufenster {start|stop}"
        exit 1
        ;;
esac
 
exit 0

Danach musste dieser noch ausführbar gemacht werden.

sudo chown +x /etc/init.d/schaufenster

Mit folgendem Befehl kann schaufenster wahlweise gestartet und auch gestoppt werden. Jede PNG-Folie hat eine Abspieldauer von 10 Sekunden. Die Grafiken werden später in einer Endlosschleife dargestellt.

sudo /etc/init.d/schaufenster start | stop

Damit der Dienst schaufenster nach dem Reboot selbstständig startet, muss dieser zuvor noch im Autostart eingetragen werden. 

sudo update-rc.d schaufenster defaults

Da der Bildschirm aber nach einer gewissen Zeit automatisch abschaltet und auch der Mauszeiger noch zu sehen ist, müssen zwei weitere Pakete installiert und der Autostart feinjustiert werden.

sudo apt install x11-xserver-utils unclutter

In der Datei /etc/xdg/lxsession/LXDE-pi/autostart 

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

werden nun folgende Einträge vor die Zeile sudo /etc/init.d/schaufenster start gesetzt.

@xset s off
@xset s noblank
@xset -dpms
@unclutter -idle 0

Dualboot auflösen

2
Hard Drive Inside Macro Read Head  - Mike_68 / Pixabay
Mike_68 / Pixabay

Ich nutze seit vielen Jahren ausschließlich Linux auf dem PC und auch auf dem Notebook. Distributions-Hopping war mir immer fremd. Aus diesem Grund hatte ich bisher auch immer nur ein Betriebssystem auf dem Rechner gehabt. Nicht jeder sieht das so wie ich und manch ein User würde sich gern ein Dual-Boot einrichten. 

Wie wird man das Zweitsystem aber wieder los?

Wenn man die entsprechenden Partitionen löscht und das System wieder hochfährt, ist oft das Geschrei groß, weil der Grub-Bootloader dann defekt ist.

Ich habe das nun einmal auf meinem Experimentier-PC nachgebaut. Die Grundlage war ein Ubuntu 20.04 LTS.

Wie entfernt man das Zweitsystem also richtig?

Ich habe den ersten Teil der Festplatte mit Ubuntu 20.04 belegt. Auf der zweiten Hälfte arbeitet ein Unbuntu 20.10. Nun soll der “Groovy Gorilla” aber wieder Platz für das Hauptsystem machen.

Hierzu boote ich in der Ubuntu 20.04 und entferne über GParted die entsprechenden Partitionen der Version 20.10. Dann werden die Paketquellen des Betriebssystems neu eingelesen.

sudo apt update

Nun installiere ich die Grub-Pakete neu ins vorhandene System. Da ich eine EFI-Installation habe, verwende ich folgenden Befehl:

sudo apt --reinstall install grub-common grub-efi-amd64 os-prober

Anschließend wird die Konfiguration des Grub2 neu erstellt und eingelesen.

sudo update-grub

Nach einem Reboot startet der PC mit dem einzig verbliebenen Betriebssystem Ubuntu 20.04 LTS.

sudo reboot

Im Nachgang kann ich meine Home-Partition via Gparted wieder auf Maximalgröße erweitern.

ESP6288 mit Ubuntu flashen

0
Arduino Diy Microcontroller  - federicoag / Pixabay
federicoag / Pixabay

Heute möchte ich zeigen, wie man einen ESP8266-Mikrocontroller mit einer neuen Firmware über Ubuntu 20.04 LTS flashen kann. Leider habe ich bisher dazu keine einfachen Lösungswege im Netz finden können. Deshalb diese kleine Gedankennotiz.

Mit einem Windows-Betriebssystem ist das Vorhaben mit entsprechenden grafischen Tools, wie dem NodeMCU-flasher etc., allerdings recht einfach. Da ich das aber auf dieser Basis nicht erledigen wollte, habe ich nun ein wenig experimentiert und kann das via Terminal recht einfach mit Linux umsetzen.

Flashen der Firmware

Zuerst installiere ich mir das esptool aus den Paketquellen.

sudo apt install esptool

Dann wechsle ich in das Download-Verzeichnis, wo meine Binärdatei liegt.

cd ~/Downloads

Der Microcontroller wird nun über ein USB-Kabel mit dem PC verbunden und mit folgendem Befehl über den seriellen Port /dev/ttyUSB0 geflasht.

sudo esptool --port /dev/ttyUSB0 write_flash -fm dout 0x0000 example.bin

Viel Spaß!