KVM unter Ubuntu Linux 16.04 installieren und Bridged networking konfigurieren

HINWEIS: Eine Aktualisierte Version dieses Beitrages für Ubuntu 20.04 ist >hier< verfügbar

KVM ist eine Virtualisierungstechnik für Linux, welche die Hardwarevirtualisierung aktueller Intel und AMD Prozessoren nutzt und Teil des Linux-Kernels ist. Ich verwende KVM für meine virtuellen Maschinen. In diesem Beitrag beschriebe ich wie KVM unter Ubuntu Linux 16.04 installiert sowie Bridged networking konfiguriert werden kann. Mit Bridged networking kann jeder virtuellen Maschine ein eigenes virtuellen Netzwerk Interface zugewiesen werden, welches die VM nach außen als eigenen Host darstellt.

Weiterlesen

Meine genutzten WordPress Plugins

Nachfolgend die von mir auf dieser Seite genutzten WordPress Plugins. Ich werde versuchen diesen Beitrag immer zu aktualisieren, falls ich ein zusätzliches oder altes Plugin nicht mehr verwende.

Contact Form 7

Mit dem Plugin Contact Form 7 lassen sich relativ einfach Formulare Erstellen und in WordPress Seiten Einbinden. Es erlaubt Teile des Formulars als Pflichtangaben zu definieren und beim Absenden des Formulars E-Mails zu versenden. Ich verwende es zum Beispiel auf meiner Kontakt Seite.

Responsive Lightbox

WordPress setzt Standardmäßig einen Link zu den in Beiträgen eingebetteten Mediendateien, mit denen diese in voller Größe betrachtet werden können. Mithilfe des Plugins Responsive Lightbox wird bei einem Klick auf die Mediendatei die aktuelle Seite nicht verlassen, sondern die Mediendatei lediglich in voller Größe vor dem eigentlichen Beitrag angezeigt. So kann die Mediendatei mit einem einfachen Klick wieder ausgeblendet oder zwischen verschiedenen im gleichen Beitrag eingebauten Mediendateien gewechselt werden.

SyntaxHighlighter Evolved

Mithilfe von dem Plugin SyntaxHighlighter Evolved visualisiere ich Inhalte von Konfigurationsdateien oder Code-Schnipsel. Es erlaubt unter anderem die Anzeige von Zeilennummern, unterstützt die Syntax diverser Programmiersprachen und erlaubt es einzelne Zeilen hervorzuheben. In dem von mir verwendeten WordPress Theme Sparkling ist in der Standardkonfiguration der Text etwas nach unten verschoben. Wie dies behoben werden kann habe ich im Beitrag Textverschiebung in WordPress Plugin SyntaxHighlighter Evolved beheben beschrieben.

WP-Piwik

Das Plugin WP-Piwik erlaubt es einfach einen Piwik Tracking Code in WordPress einzubinden. Es bietet außerdem die Möglichkeit sich im Dashboard von WordPress die Statistik der letzten Besucher anzeigen zu lassen. Wie es installiert und konfiguriert werden kann habe ich im Beitrag Piwik Tracking-Code in WordPress einfügen beschrieben.

Textverschiebung in WordPress Plugin SyntaxHighlighter Evolved beheben

Ich verwende das WordPress Plugin SyntaxHighlighter Evolved zum Darstellen von Konfigurationsausschnitten oder Codebeispielen. Leider ist bei meinem eingesetzten WordPress Theme Sparkling der Text standardmäßig etwas nach unten verschoben.

Textverschiebung im SyntaxHighlighter Evolved
Textverschiebung im SyntaxHighlighter Evolved

Diese Verschiebung kann einfach durch nachfolgenden Code im Zusätzliches CSS des Themes behoben werden.

.syntaxhighlighter table td.gutter {
    vertical-align: middle !important;
}

Um das Zusätzliche CSS aufzurufen im Administrationsbereich von WordPress einfach in der Linken Menüleiste auf Design (1), anschließend auf Themes (2) und dort auf Customizer (3) klicken.

WordPress Theme Customizer aufrufen
WordPress Theme Customizer aufrufen

Um nun angezeigten Menü ganz unten auf Zusätzliches CSS klicken.

WordPress Theme Customizer - Zusätzliches CSS
WordPress Theme Customizer – Zusätzliches CSS

In der nun angezeigten Textbox (1) das oben gezeigte CSS Schnipsel hinzufügen und mit einem Klick auf Speichern & Publizieren (2) übernehmen.

WordPress Theme Customizer - Zusätzliches CSS bearbeiten
WordPress Theme Customizer – Zusätzliches CSS bearbeiten

Nach dem Speichern ist die Verschiebung sofort behoben.

Behobene Textverschiebung im SyntaxHighlighter Evolved
Behobene Textverschiebung im SyntaxHighlighter Evolved

WordPress mit Let’s Encrypt SSL Zertifikat unter Ubuntu Linux 16.04 mit nginx und MariaDB oder MySQL installieren

WordPress ist ein Content Management System (CMS), welches es erlaubt relativ einfach den Inhalt einer statischen Webseite oder eines Blogs zu pflegen. Es basiert auf PHP und benötigt einen Webserver sowie eine Datenbank zur Ausführung. Ich beschreibe in diesem Beitrag wie WordPress unter Ubuntu Linux 16.04 mit nginx als Webserver, SSL Zertifikate von Let’s Encrypt sowie MariaDB bzw. MySQL als Datenbank installiert werden kann. Wie diese Dinge Konfiguriert werden können habe ich bereits in folgenden Beiträgen beschrieben

Vorbereitung

Nginx / Let’s Encrypt

Zuerst sollte wie in den oben verlinkten Beiträgen eine nginx Konfigurationsdatei erstellt sowie ein Let’s Encrypt SSL Zertifikat beantragt werden.

Falls für das Beantragen der SSL Zertifikate ein dummy-Verzeichnis verwendet wurde muss zuerst ein Verzeichnis für die WordPress Dateien angelegt werden.

$ sudo mkdir -p /var/www/com.example.blog

Damit es später möglich ist WordPress über die Webseite zu aktualisieren sollten die Rechte an diesem Ordner dem Benutzer und der Gruppe www-data zugewiesen werden.

$ sudo chown www-data:www-data /var/www/com.example.blog

Danach muss die nginx Konfiguration unter /etc/nginx/sites/available/com.example.blog durch nachfolgende ersetzt werden – natürlich mit den eigenen Angaben für IP-Adressen, Domains, Pfade etc.

server  {
        listen          80;
        listen          [xxx:xxx:xxx::42]:80;

        server_name     blog.example.com;
        return          301 https://$server_name$request_uri;
}

server  {
        listen          443 ssl;
        listen          [xxx:xxx:xxx::42]:443 ssl;

        server_name     blog.example.com;

        ssl_certificate         /etc/letsencrypt/live/blog.example.com/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/blog.example.com/privkey.pem;
        add_header              Strict-Transport-Security "max-age=63072000; includeSubdomains;";

        root    /var/www/com.example.blog;

        index   index.php;

        location = /robots.txt {
                try_files $uri $uri/ /index.php?$args;
        }

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.php?$args;
        }

        # pass the PHP scripts to FastCGI server
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        # snippet for updating letsencrypt certificates
        include snippets/certbot-webroot.conf;
}

Nun muss die Konfiguration ggf. noch aktiviert werden.

$ sudo ln -s /etc/nginx/sites-available/com.example /etc/nginx/sites-enabled/

Bevor die neue Konfiguration geladen wird sollte geprüft werden, dass sie Fehlerfrei ist.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Anschließend kann sie geladen werden.

$ sudo /etc/init.d/nginx reload
[ ok ] Reloading nginx configuration (via systemctl): nginx.service.

WordPress

Damit ist nginx fertig konfiguriert und die WordPress Dateien können heruntergeladen, entpackt und ihre Rechte gesetzt werden. Falls die englische Version von WordPress installiert werden soll muss die Datei https://wordpress.org/latest.zip heruntergeladen werden.

$ cd /var/www/com.example.blog
$ sudo wget https://de.wordpress.org/latest-de_DE.zip
--2017-05-29 20:33:32-- https://de.wordpress.org/latest-de_DE.zip
Resolving de.wordpress.org (de.wordpress.org)... 66.155.40.249, 66.155.40.250
Connecting to de.wordpress.org (de.wordpress.org)|66.155.40.249|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9251402 (8.8M) [application/zip]
Saving to: ‘latest-de_DE.zip’

latest-de_DE.zip 100%[=================================================>] 8.82M 4.08MB/s in 2.2s

2017-05-29 20:33:35 (4.08 MB/s) - ‘latest-de_DE.zip’ saved [9251402/9251402]
$ sudo unzip latest-de_DE.zip
$ sudo rm latest-de_DE.zip
$ sudo mv wordpress/* ./
$ sudo rm -r wordpress
$ sudo chown -R www-data:www-data *

MariaDB / MySQL

Bevor die Installation gestartet wird muss noch eine Datenbank für WordPress angelegt werden. Wie eine Datenbank mit zugehörigem Benutzer angelegt werden kann habe ich im Beitrag MySQL oder MariaDB Datenbank über das Terminal erstellen beschrieben.

Installation

Nun, da nginx, Let’s Encrypt und MariaDB bzw. MySQL konfiguriert wurde kann die Installation gestartet werden. Dazu muss einfach die in nginx konfigurierte Domain aufgerufen werden, hier im Beispiel also https://blog.example.com. Auf der nun angezeigten Webseite kann einfach auf „Los geht’s!“ geklickt werden.

Schritt 1 der WordPress Installation
Schritt 1 der WordPress Installation

Im zweiten Schritt müssen die Verbindungsinformationen zur Datenbank eingegeben werden. Anschließend können diese mit einem Klick auf „Senden“ gespeichert werden.

Schritt 2 der WordPress Installation
Schritt 2 der WordPress Installation

Der dritte Schritt erlaubt es mit einem Klick auf „Installation ausführen“ die eigentliche Installation von WordPress zu starten.

Schritt 3 der WordPress Installation
Schritt 3 der WordPress Installation

Im vierten Schritt werden Angaben wie der Titel der Webseite sowie Benutzername und Passwort verlangt. Nachdem dies ausgefüllt wurde kann einfach auf „WordPress Installieren“ geklickt werden.

Schritt 4 der WordPress Installation
Schritt 4 der WordPress Installation

Der fünfte Schritt besteht lediglich aus einer Bestätigung, dass WordPress erfolgreich installiert wurde. Mit einem Klick auf „Anmelden“ wird der Browser auf die Anmeldeseite von WordPress weitergeleitet.

Schritt 5 der WordPress Installation
Schritt 5 der WordPress Installation

WordPress wurde damit erfolgreich installiert und kann genutzt werden.

WordPress Anmeldung
WordPress Anmeldung

E-Mail bei neuer SSH Verbindung senden

Ich habe gerne einen Überblick darüber wann eine SSH Verbindung auf einen Server aufgebaut wird. Deshalb lasse ich mir bei jeder neuen Verbindung eine E-Mail-Benachrichtigung schicken. Unter Ubuntu Linux 16.04 und anderen auf Debian basierten Linux Distributionen wird PAM (Pluggable Authentication Modules) zum Authentifizieren von Benutzern verwendet. Dies kann relativ einfach so konfiguriert werden, dass bei einer neuen SSH Verbindung ein bestimmtes Skript aufgerufen wird, welches dann eine E-Mail-Benachrichtigung versendet. In diesem Beitrag beschreibe ich, wie PAM so konfiguriert werden und ein Skript zum Versenden der E-Mail-Benachrichtigungen aussehen kann.

Weiterlesen

Namen der Netzwerkadapter unter Ubuntu Linux 16.04 auf eth0 bzw. wlan0 ändern

Unter neueren Ubuntu Linux Versionen wie 16.04 werden die Netzwerkadapter anders benannt. Ethernet Adapter wurden bisher immer mit eth0, eth1, etc. bezeichnet und WLAN Adapter mit wlan0, wlan1 etc. Seit Version v197 von systemd/udev werden die Namen der Netzwerkadapter vom BIOS vergeben, was in Namen wie enp0s3 resultiert. In diesem Beitrag beschreibe ich wie man wieder zum alten Namensschema zurückkehren kann.

Weiterlesen

Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server oder Raspbian Jessie Lite als nicht root automatisch erneuern

Let’s Encrypt stellt kostenfreie SSL Zertifikate bereit, welche über den offiziellen Client certbot abgefragt werden können. Wie Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server für Webseiten bzw. andere Dienste angefragt werden können habe ich in den Beiträgen Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen bzw. Let’s Encrypt SSL Zertifikate für Dienste ohne Website wie postfix oder dovecot unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen beschrieben. Die Zertifikate sind nur 90 Tage lang gültig und müssen spätestens danach erneuert werden. Dies wird durch einen bei der Installation von certbot automatisch angelegten timer erledigt. Dieser prüft alle 12 Stunden, ob ein Zertifikat in den nächsten 30 Tagen abläuft. Ist dies der Fall wird das Zertifikat erneuert. Der Befehl zum Überprüfen wird allerdings als root ausgeführt. In diesem Beitrag beschreibe ich wie die Zertifikate als nicht root Benutzer automatisch erneuert werden können.

Weiterlesen

Let’s Encrypt SSL Zertifikate für Dienste ohne Website wie postfix oder dovecot unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen

Im Beitrag Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen habe ich beschrieben, wie es mithilfe des certbot Tools möglich ist SSL Zertifikate von Let’s Encrypt über nginx und das webroot Plugin zu beziehen. Dieser Mechanismus funktioniert aber nur für Webseiten. Für Dienste, welche keine Webseite über nginx bereitstellen ist dieses Verfahren nicht geeignet. Mit einer leichten Modifikation können aber auch SSL Zertifikate für Dienste ohne Webseiten wie postfix oder dovecot bezogen werden. In diesem Beitrag beschreibe ich die notwendigen Anpassungen dafür.

Weiterlesen