Kategorien
Streaming Server

Open Source Musikstreaming mit Koel

Ihre Famile würde auch gern Musik aus Ihrer MP3 Sammlung hören?

  • Auf dem Laptop kein Platz?
  • Auf dem Telefon nur 16 GB?
  • Aber auf Ihrer externen Festplatte mehr als 40GB Musik im MP3 Format?

Genau dieses Problem hatte Phan An, fand keine Lösung und startete das Projekt Koel, einen Streaming Server auf der Basis des PHP Frameworks Laravel und einem Client, basierend auf vue.js, der in jedem Browser läuft.

Laden Sie die 40 GB Musik einfach auf Ihren Server, installieren Sie Koel, richten Sie Benutzerkonten ein und alle können Musik hören!

Vorausetzungen

Auf dem Server müssen Laravel 5.1, MySQL oder MariaDB, PHP ab Version 5.6, sowie Node.js ab 0.10.40 installiert sein. Der Client läuft in jedem Browser.

Installation

Legen Sie sich zunächst eine MySQL Datenbank an

mysql -u root -p
Enter password:
mysql> CREATE DATABASE koel DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE USER 'koel'@'localhost' IDENTIFIED BY 'koel-passwort';
mysql> GRANT ALL PRIVILEGES ON koel.* TO 'koel'@'localhost' WITH GRANT OPTION;
mysql> exit;

Welchseln Sie in das Home Verzeichnis Ihres Users, in meinem Fall novatrend.

cd /home/novatrend

Laden Sie den Koel Quellcode von GitHub.

sudo git clone https://github.com/phanan/koel.git

Wechseln Sie in das koel Verzeichnis.

cd koel

und rufen Sie den Node Paketmanager npm auf.

npm install

Danach rufen Sie den PHP Paketmanager composer auf.

composer install

Anschliessend müssen Sie noch in die Konfiguurationsdatei .env die Datenbank Parameter, sowie E-Mail, Name und Passwort für den Administrator Account eintragen.

nano .env

Danach müssen Sie die Datenbank einmalig initialisieren.

php artisan init

Den Laravel Development Server starten Sie mit

php artisan serve --host=music.serverblogger.ch --port=8080

wobei die Werte für Host und die Portnummer natürlich von Ihrer individuellen Konfiguration abhängen.

Wenn Sie im Browser Ihren URL aufrufen, sehen Sie die Login Maske von Koel und können sich mit Ihren Admin Daten einloggen.

Koel - Login
Koel – Login
Nun müssen Sie noch Ihre MP3 Sammlung in ein Verzeichnis laden. Ich habe ein Verzeichnis music innerhalb des koel Verzeichnisses, aber ausserhalb des public Verzeichnisses angelegt (/home/novatrend/koel/music).

In den Settings von Koel müssen Sie diesen Pfad eintragen und auf den Button Scan klicken.

Koel - Musikverzeichnis
Koel – Musikverzeichnis
Das war es!

Nun können Sie im Bereich User Ihre Familie mit Benutzeraccounts versorgen.

Koel - Benutzer
Koel – Benutzer

Sie können Playlists erstellen und Herzchen vergeben. Auf dem Telefon läuft das Programm stabil und gut bedienbar, hier ein Beispiel unter iOS mit dem Safari Browser.

Koel - In Safari unter iOS
Koel – In Safari unter iOS
Na und nun kann die Party losgehen 🙂

Links:


tl;dr: Nutzen Sie Koel um Ihre MP3 Dateien von Ihrem Server zu streamen und zu hören!

Kategorien
Allgemein News Security

Transportverschlüsselung und HTTP/2 für alle – kostenlos!

Seit ein paar Tagen können Sie bei uns kostenlose TLS Zertifikate für Ihre Domain zu erzeugen und einzusetzen.
Diese Art der Verschlüsselung macht es möglich, dass wir Ihnen bei dieser Gelegenheit auch die Nutzung des schnelleren Übertragungsprotokolls HTTPS/2 SPDY anbieten.

Kurz: Ihre Website wird dadurch sicherer UND schneller 🙂

Aber der Reihe nach:

TLS Zertifikate für alle Domains aller Webhosting Kunden

Wie bereits in mehreren Blogposts angesprochen, ist es nun so weit. Die Zertifizierungsstelle Let’s encrypt hat Ihren Betrieb aufgenommen und bietet kostenlose X.509-Zertifikate für Transport Layer Security (TLS) an. Also genau das, was gemeinhin als SSL Zertifikat bezeichnet wird. Wie versprochen (Natürlich wird es kostenlose SSL/TLS Zertifikate geben – auch bei uns 🙂 ) haben wir so schnell wie möglich dieses Feature auch für unsere Webhosting Kunden bereitgestellt.
Innerhalb der Verwaltungsoberfläsche cPanel gibt es dafür im Bereich Sicherheit ein neues Dialog-Icon – Let’s Encrypt SSL.

cPanel - Sicherheit
cPanel – Sicherheit

In unseren FAQ ist detailliert beschrieben, wie Sie sich ein Zertifikat installieren können (Wie kann ich ein kostenloses Let’s Encrypt Zertifikat installieren?).
Das Zertifikat wird nach Ablauf automatisch für Sie verlängert und bietet handfeste Vorteile:

  1. Der Datenverkehr zwischen dem Browser eines Besuchers und Ihrer Website ist verschlüsselt und erhöht so die Sicherheit bei der Übermittlung von privaten Daten wie beispielsweise Passwörtern und Zahlungsinformationen.
  2. Verschlüsselter Datenverkehr erhöht allgemein das Vertrauen Ihrer Kunden in die Sicherheit Ihrer Website
  3. Für die Benutzung eines SSL-Zertifikats gibt es im Ranking Faktor Ihrer Website bei Google einen Bonus.

HTTP/2 – was ist das?

Das Hypertext Transfer Protokoll (HTTP) ist ein zustandsloses Protokoll und wird hauptsächlich dazu eingesetzt Websites von einem Server zu laden. Das Wort zustandlos beschreibt auch gleich das grösste Problem bei der Kommunikation. Bei jeder neuen Anfrage muss die Verbindung neu „ausgehandelt“ werden. Das kostet Zeit und Ressourcen. Hier ein Beispiel aus dem Leben.

Mein Browser auf meinem PC spricht HTTP in der Version 1.1 und fragt den Host mit dem Namen serverblogger.ch nach seiner Seite (GET / HTTP/1.1 …). Dabei schickt mein Browser alle möglichen Informationen mit. Diese Informationen enthalten beispielsweise den Typ des Browsers (user-agent), die Art des gewünschten Dokuments (Accept), die bevorzugte Sprache (Accept-Language) und weitere Informationen. Diese Daten sind unverschlüsselt und werden an den Webserver geschickt.

GET / HTTP/1.1
Host: serverblogger.ch
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:42.0) Gecko/20100101 Firefox/42.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

Der Server antwortet (HTTP/1.1 200 OK) und schickt seinerseits (je nach Konfiguration) alle möglichen Daten mit. Der Webserver ist ein Apache, Betriebssystem ist Ubuntu, etc.

HTTP/1.1 200 OK
Date: Fri, 18 Dec 2015 14:49:43 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.14
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 105
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

Nach diesen „Headern“ wird dann der eigentliche Text der Website übertragen, den der Browser dann entsprechend darstellt. Das Beispiel stammt von unserem Testserver, den wir für die Artikel des Blogs nutzen.

Hier ein weiteres Beispiel von der aktuellen novatrend.ch Website.

Die Anfrage meines Browser ist die gleiche, die Antwort des Servers ist aber unterschiedlich:

GET /de/ HTTP/1.1
Host: www.novatrend.ch
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:42.0) Gecko/20100101 Firefox/42.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cache-Control: max-age=0

Mein Browser bietet als Protokoll HTTP/1.1 an, der Server antwortet jedoch mit HTTP/2.0. Als Server wird nicht Apache, sondern LiteSpeed benutzt und als letzter „Header“ wird noch ein X-Firefox-Spdy Wert mitgegeben. Der Server hat also bemerkt, dass ich den Firefox Browser benutze und entsprechend darauf reagiert. Je nach Website wird mehrmals nachgefragt, um alle Grafiken, CSS Dateien und was es zum Aufbau der Site benötigt, herunterzuladen.

HTTP/2.0 200 OK
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Fri, 18 Dec 2015 15:04:30 GMT
Accept-Ranges: bytes
Server: LiteSpeed
X-Firefox-Spdy: h2

Nun sind wir in der Welt der vielen Protokolle angekommen und müssen etwas genauer hinsehen:

HTTP ist ein zustandloses Protokol, das jede Verbindung zwischen Client und Server neu aushandelt. Um das zu vereinfachen erfand man Cookies und Session-Ids und der Server seinerseits versucht mittels den Keep-Alive Einstellungen eine Verbindung so lange wie möglich „offen zu halten“. In Cookies und Sessions-IDs stecken jedoch hoch interessante Daten und viele offene Verbindungen machen den Server langsam, füllen dessen Speicher und machen ihn anfällig für Szenarien, bei denen ein Client nur eine GET Anfrage schickt aber nicht weiter kommuniziert. HTTPS ist die sichere Variante von HTTP, die noch einmal mehr Informationen hin und her schickt um eine verschlüsselte Verbindung zu ermöglichen.

HTTP/2 ist abwärtskompatibel zu HTTP1.1 und soll alles besser machen. Client Anfragen können zusammengefasst werden, Daten und andere Inhalte können binär kodiert und komprimiert übertragen werden und der Server kann selbst Datenübertragungen initieren (PUSH). Gerade das letzte Feature ist sehr hilfreich bei Web-Applikationen. HTTP/2 wurde massgeblich von Google (SPDY) und Microsoft (HTTP Speed) initiert. Googles SPDY setzte sich dann durch. Die Abkürzung SPDY steht übrigens für speedy, also schnell :).

Ursprünglich war geplant, das HTTP/2 standardmässig TLS, also verschlüsselte Verbindungen mit SSL Zertifikaten, nutzt. Im finalen Entwurf entfiel diese Option allerdings. Der Geschwindigkeitsvorteil des Protokolls wird in erster Linie über das Zusammenfassen von Anfragen erreicht.

Google (Chrome) und Mozilla (Firefox) kündigten jedoch an, HTTP/2 nicht ohne Verschlüsselung nutzen zu wollen und implementierten Googles SPDY in die Browser. Wenn nun ein Webserver wie Litespeed diese Technik mittels des Headers X-Firefox-Spdy: h2 anbietet, so nutzt der Firefox Browser das HTTP/2 Protokoll (für Chrome gibt es einen entsprechenden Header).

SPDY sorgt, wie der Name vermuten lässt, für eine Beschleunigung der verschlüsselten Kommunikation, verglichen mit dem HTTPS Protokoll. Die Kommunikation gesicherter Verbindungen wird „vereinfacht“ in dem die Wege der Datenpakete optimiert werden. Dadurch werden verschlüsselte Verbindungen ähnlich schnell wie unverschlüsselte Verbindungen.

An dieser Stelle kann man auch nachvollzieghen, warum Google verschlüsselten Verbindungen einen kleinen Bonus auf den Page Rank gibt. Zum einen setzt sich dadurch verschlüsselte Kommunikation schneller durch und zum anderen wird der Geschwindigkeitsnachteil ausgeglichen.

Im nächsten Schritt soll SPDY ebenfalls ein Standard werden. Der heisst dann Application-Layer Protocol Negotiation oder kurz ALPN und stellt eine Erweiterung von TLS dar.

Die HTTP Befehle zwischen Ihrem Browser und einem beliebigen Server lassen sich übrigens mit dem Live HTTP Headers Add-On für Firefox und Chrome beobachten.

Fazit

Auch wenn das jetzt vielleicht ein wenig zu technisch war, so bleiben hoffentlich zwei Dinge im Gedächtnis:
Ihre Website bei uns ist jetzt SICHERER und SCHNELLER 🙂

Links:


tl;dr: Novatrend bietet kostenlose TLS Zertifikate für Ihre Website und liefert sie mittels HTTP/2 aus. Das macht Ihre Website sicherer und schneller.

Kategorien
Content Management Systeme

Die Vernetzer: WordPress Calypso & Jetpack

In der letzten Woche haben wir gesehen, dass Drupal 8 jetzt mit Webservice Modulen ausgeliefert wird. Diese Services erlauben es externen Clients und mobilen Apps auf die Datenbasis eines Systems wie Drupal zuzugreifen. Natürlich ist das auch für andere Content Management Systeme ein grosses Thema und WordPress baut diese Funktionalität seit einigen Versionen Stück für Stück aus. Mit der Version WordPress 4.5 soll dann der Prozess dann abgeschlossen und eine vollständige REST-API für Webservices implementiert sein. In der Theorie sind die Paradigmen für solche verteilte Systeme seit etwa 15 Jahren bekannt, in der Realität sind funktionsfähige, produktiv eingesetzte Systeme, die auf Webservices basieren, nicht ganz so häufig anzutreffen.

One of the hardest things to do in technology is disrupt yourself.

Wenn man sich beruflich mit Websites befasst, so stellt man fest, dass auch immer mal wieder eine WordPress Site zum Portfolio hinzukommt. Ähnlich verhält es sich im privaten Umfeld. Der Schlüssel zum Erfolg: WordPress ist einfach zu installieren und zu bedienen und läuft fast überall in angemessener Geschwindigkeit.

Am 23. November 2015 veröffentlichte Matt Mullenweg in seinem Blog den Artikel Dance to Calypso. Darin stellt er die Frage

What would we build if we were starting from scratch today, knowing all we’ve learned over the past 13 years of building WordPress?

und stellt danach das Projekt Calypso vor. Calypso ist eine interessante Mischung aus Administrationsbereich, Newsreader und Social Timeline. Calypso ist Open Source Software und vollständig in JavaScript, mit der Hilfe von Bibliotheken wie Node und React, geschrieben. Es wird jetzt auf WordPress.com als Administrationsoberfläche im Browser genutzt und es gibt eine App für Mac OSX Rechner.

Mit Calypso können selbst gehostete WordPress Installationen (wie beispielsweise hier bei Novatrend) und Blogs, die auf WordPress.com laufen, administriert werden.

Hier eine Auswahl der WordPress Sites, mit denen ich das Programm in der Mac OSX App ausprobiert habe:

Calypso - Seitenübersicht
Calypso – Seitenübersicht
Ausserdem enthält Calypso einen Reader Bereich. Dort kann man WordPress Blogs oder einzelnen Tags folgen. Calypso zeigt die letzten Posts an.
Calypso - Reader
Calypso – Reader
Der dritte grosse Bereich umfasst Benachrichtigungen, Kommentare, Follower und Likes aus eigenen und abonnierten WordPress Blog.

Calypso - Benachrichtigungen
Calypso – Benachrichtigungen

Wie funktioniert das?

Um Calypso nutzen zu können, benötigen Sie ein WordPress.com Benutzerkonto. Nach der Anmeldung in Calypso sind alls auf WordPress.com betriebenen Seiten automatisch ansprechbar. Selbst gehostete WordPress Installationen können hinzugefügt und verwaltet werden, wenn Sie das WordPress Jetpack Plugin installieren.

Jetpack

Das Jetpack Plugin enthält mittlerweile 36 einzeln aktivierbare Plugins, die eine selbstgehostete Seite mit zusätzlicher Funktionalität versehen, um das mal vorsichtig auszudrücken. Die Installation ist einfach und ein sinnvolle Vorauswahl ist bereits aktiviert und konfiguriert.

WordPress - Jetpack
WordPress – Jetpack

Es ist schwer, den Funktionsumfang der im Jetpack enthaltenen Plugins im Rahmen eines einzigen Blogeintrages zu beschreiben. Hier ein Versuch aus dem letzten Jahr von Andreas Hecht – Fluch oder Segen? Das Plugin Jetpack für WordPress. Kurz gesagt enthält es viele nützliche Dinge, die man sich nach und nach erschließen kann.

Während der Installation des Jetpack Plugins wird die selbstgehostete WordPress Site mit Ihren WordPress.com Konto verknüpft.

Calypso greift per WordPress.com REST-API auf die Daten zu und fasst sie elegant zusammen.

Fazit

Was mir sehr gefällt an Calypso ist die offene Art der Verknüpfung. War es bisher schwer bis unmöglich, seine Daten selbst zu hosten und dennoch an sozialen Interaktionen beispielsweise auf WordPress.com teilzunehmen, so ist das mit Calypso kein Problem mehr. Auch wenn momentan „nur“ die WordPress.com API unterstützt wird, sieht man doch, was möglich sein wird, wenn mehr Open Source Content Management Systeme offene Schnittstellen zu Ihren Daten anbieten.

WordPress 4.5 und Joomla 3.6 werden diese Art Schnittstellen demnächst anbieten, in Drupal 8 sind Sie bereits integriert. Sie bilden damit eine Basis für eine neue Art von Applikationen, die wie proprietäre Netzwerke einen Newsfeed und soziale Kontakte bereitstellen, im Gegensatz zu Facebook und Google+ aber offen miteinander verknüpft sind.

Die Anbieter der Inhalte können frei entscheiden, wo Sie Ihre Daten speichern und wem sie sie zur Verfügung stellen.

Links:


tl;dr: Calypso bringt WordPress Websites, deren Betreiber und Leser, zusammen.

Kategorien
Infrastruktur Security Server

Let’s Encrypt serverblogger.ch

Tadaa, es ist es soweit!

SSL/TLS Zertifikate, die von allen Browsern anerkannt werden, können nun kostenlos erstellt werden. Am 3. Dezember 2015 startete die öffentliche Beta-Phase der Let’s Encrypt Zertifizierungsstelle und in diesem Blogeintrag werde ich ein solches Zertifikat auf unserem Blogserver erzeugen und für die Domain serverblogger.ch einrichten.

Basissystem

Ich nutze einen virtuellen root Server aus dem aktuellen Novatrend Angebot und habe dort Linux Ubuntu 14.04 und einen LAMP Stack installiert. Die Domain serverblogger.ch zeigt auf einen virtuellen Host mit dieser Minimalkonfiguration:

<VirtualHost *:80>
  ServerName serverblogger.ch
  ServerAlias www.serverblogger.ch
  DocumentRoot /var/www/serverblogger.ch/public_html/
</VirtualHost>

Let’s encrypt verspricht eine automatisierte Einrichtung von Konfigurationsdateien des Apache Webservers.

Let’s Encrypt serverblogger.ch

Da das Let’s Encrypt Softwarepaket natürlich noch nicht in den Distributionspaketen von Ubuntu 14.04 vorhanden ist, muss es individuell installiert werden. Die einfachste Variante ist die Installation über Git/GitHub. Git ist eine freie Software zur verteilten Versionsverwaltung von Dateien und GitHub ist ein kommerzieller Dateihoster für Softwareprojekte. Dort hostet auch das Let’s Encrypt Projekt seinen Quellcode (https://github.com/letsencrypt).

Um die Dateien installieren zu können, muss zunächst Git installiert werden

sudo apt-get install git

Danach wird das Let’s Encryt Repository auf GitHub geklont

git clone https://github.com/letsencrypt/letsencrypt

Das sieht dann so aus

Cloning into 'letsencrypt'...
remote: Counting objects: 25238, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 25238 (delta 2), reused 0 (delta 0), pack-reused 25227
Receiving objects: 100% (25238/25238), 6.61 MiB | 4.86 MiB/s, done.
Resolving deltas: 100% (17693/17693), done.
Checking connectivity... done.
novatrend@server1:~$

Das Let’s Encrypt Softwarepaket wurde im Verzeichnis /letsencrypt installiert. Also wechsele ich in das Verzeichnis und rufe das Programm auf

cd letsencrypt

Das folgende Kommando ruft letsencrypt auf

sudo ./letsencrypt-auto

Das Script läd alle notwendigen Bibliotheken, meldet dann aber folgenden Fehler

InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

Letsencrypt ist in Python geschrieben und es fehlen offenbar noch ein paar Python Bibliotheken, die mit diesem beiden Befehl nachinstalliert werde können:

sudo apt-get install python-pip
sudo pip install pyopenssl ndg-httpsclient pyasn1

Die Installationsparameter kann man sich unter ./letsencrypt-auto –help ansehen.

Der Konfigurationsprozess wird mit diesem Befehl gestartet

./letsencrypt-auto

Die installierten virtuellen Hosts erscheinen zur Auswahl

Let's Encrypt - Domainauswahl
Let’s Encrypt – Domainauswahl

Es wird eine E-Mail Adresse als Ansprechpartner für die Wiederherstellung von Schlüssel und dringenden Benachrichtigungen verlangt. Die anzugebende E-Mail Adresse muss nicht bei einer der ausgewählten Domains sein.

Let's Encrypt - E-Mail Ansprechpartner
Let’s Encrypt – E-Mail Ansprechpartner

Die Geschäftsbedingungen müssen bestätigt werden. Hier der Link zum angezeigten PDF: https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf

Interessant in diesem Zusammenhang ist vermutlich dieser Satz:

The parties agree that the laws of the State of California govern this Agreement, irrespective of California’s choice of law and conflicts of law principles.

Let's Encrypt - Geschäftsbedingungen
Let’s Encrypt – Geschäftsbedingungen

Im letzten Fenster kann festgelegt werden, ob HTTP und HTTPS angeboten werden sollen oder der gesamte Verkehr über HTTPS abgewickelt werden soll.

Let's Encrypt - Auswahl ob HTTPS erzwungen werden soll (Ja)
Let’s Encrypt – Auswahl ob HTTPS erzwungen werden soll (Ja)

Das wars! Es erscheint ein Hinweis auf eine Testsite …

Let's Encrypt - Erfolg
Let’s Encrypt – Erfolg

und dieser Hinweis …

IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to hagen@novatrend.ch.
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/serverblogger.ch/fullchain.pem. Your cert
   will expire on 2016-03-03. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Auf der Testsite erscheint dann auch ein leuchtendes Grün und ein grosses A!

Let's Encrypt – SSL Labs
Let’s Encrypt – SSL Labs

Fazit:

Es ist einfach, es funktioniert und im Ergebnis hat man eine SSL/TLS abgesicherte Website. Das ist zunächst mal gut!

Der Haken an der Sache ist, dass man nun auch eine Art Backdoor unter kalifornischem Recht auf dem Server hat. Hierzu hat sich Felix von Leitner ein paar Gedanken gemacht (https://blog.fefe.de/?ts=a89f4ed6) und auch eine Lösung angeboten. Diese Website (https://gethttpsforfree.com/) bietet die Möglichkeit ein Let’s Encrypt Zertifikat zu erzeugen und zu nutzen ohne das Let’s Encrypt Python Softwarepaket.

Links:

Weitere Artikel zum Thema hier im Blog:


tl;dr: Es funktioniert! Ein kostenloses SSL-Zertifikat per Knopfdruck!