WordPress im Docker Container mit Nginx Proxy

Ich habe bereits unzählige WordPress Installationen durchgeführt. Datenbank Benutzer erstellen, WordPress herunterladen und installieren. Heute habe ich aber eine neue Infrastruktur gebraucht. Ich wollte mehrere WordPress Instanzen im Rahmen verschiedener Test und Entwicklungstätigkeiten nutzen und auch anderen Bereitstellen. Ich habe dabei drei Anforderungen:

  1. Die Instanzen sind isoliert.
  2. Die Instanzen lassen sich automatisiert aufsetzen und löschen.
  3. Die Instanzen sind öffentlich über ein Nginx Proxy zugänglich. Sie haben ihre eigenen Subdomains. Das Ganze wird als virtual host (vhost) umgesetzt.
Aufbau der Infrastruktur

Docker bedient zusammen mit Docker-Compose ein Teil dieser Anforderungen. Damit kann man Instanzen automatisiert erzeugen und löschen. Das Ganze befindet sich in einer isolierten Umgebung. Nginx Proxys erzeugen ist auch gut machbar. Aber die Kombination aus einem Nginx Proxy im Host-System und Docker Container kann manchmal nicht auf Anhieb funktionieren. Ich möchte in diesem Beitrag kurz meine Lösung erläutern.

WordPress im Docker Container mit Nginx Proxy weiterlesen

Etherpad für den Privatgebrauch: etherpad.oerdek.com

Etherpad ist ein webbasierter Editor um kollaborativ an Textdokumenten zu arbeiten. Mehrere Personen sehen dabei die Veränderungen gleichzeitig im Dokument. Ich nutze seit Jahren bereits Etherpad und betreibe auch private Instanzen. Für mich war das immer ein wertvolles Tool um Dokumente kurzfristig irgendwo zwischen zu speichern, verteilen oder mit anderen an diesen zu arbeiten.

Screenshot aus Etherpad

Ich profitiere sehr von dieser Software. Ich habe eine öffentlichen Etherpad Dienst aufgesetzt und sie steht ab sofort für alle zur Verfügung. Dieser Dienst ist hier verfügbar.

Etherpad für den Privatgebrauch: etherpad.oerdek.com weiterlesen

Zugangsdaten in Jenkins

Es ist keine gute Praxis, Zugangsdaten in Git-Repositories abzuspeichern. Es macht zugegeben aber einiges einfacher. Man brauch nicht mit zusätzlichem Aufwand die Zugangsdaten verteilen und bei jeder Änderung diese zu pflegen. Aber beim Speichern von Zugangsdaten in Git muss auch angenommen werden, dass die Zugangsdaten kompromittiert sind. Die Zugangsdaten können von allen, die Zugriff auf das Git haben, ausgelesen werden. Die einfachste Lösung ist, einfach keine Zugangsdaten in Git abzuspeichern und die Dateien mit Zugangsdaten mit der gitignore-Datei auszuschließen. Jeder Entwickler muss dann in seiner lokalen Entwicklungsumgebung selbstständig die Zugangsdaten pflegen.

Man kommt mit diesem Thema immer auch dann in Kontakt, wenn man mal DevOps für ein IT Projekt umsetzen muss. Es müssen im Rahmen dieser Arbeiten auch automatisierte Testfälle durchgeführt werden, die eventuell sogar an funktionsfähigen Testsystemen durchgeführt werden. Für manche Anwendungen müssen auch API Schlüssel mitgegeben werden, die ebenfalls geschützt werden müssen. In diesem Kontext benötigt es Lösungen. Oft bietet eine DevOps Lösung Datenstrukturen zum Speichern von Zugangsdaten. So etwas gibt es in Azure Devops. Dort lassen sich Zugangsdaten als Secret Variable speichern und nutzen. Ein ähnliches Konzept gibt es auch für Jenkins. In diesem Beitrag gehe ich auf ein paar Aspekte der Speicherung von Zugangsdaten („Credentials“) in Jenkins ein.

Zugangsdaten in Jenkins weiterlesen

SAP Data Warehouse Cloud

Data-Science ist genauso eine Kunst und Fähigkeit wie Software-Entwicklung. Data-Science erfordert Kenntnisse aus der Software-Entwicklung, Betriebswirtschaft und Mathematik, um aus Daten Wert zu schöpfen. Ich hatte ja bereits SAP Analytics Cloud (SAC) vorgestellt. Heute will ich ein weiteres Tool aus dem Hause SAP vorstellen, was bei Data-Science-Themen unterstützen kann. Es ist die SAP Data Warehouse Cloud (DWC).

Landing-Page einer DWC-Instanz
SAP Data Warehouse Cloud weiterlesen

Arten von Innovation

Innovation ist ein breit gefasster Begriff. Man kann so viel damit meinen, es kann aber auch nichts aussagend sein. Mit Innovation kommt man oft dann in Kontakt, wenn Unternehmen sich selbst mit ihrer hohen „Innovationskraft“ auszeichnen möchten. In diesem Kontext wird das Wort inflationär verwendet. Innovation ist jedoch mehr als nur ein Buzzword.

Für mich hat Innovation eine besondere Bedeutung. Ich selber habe bereits ein Unternehmen gegründet, mit Startups gearbeitet, habe in Innovationsbereichen von IT Unternehmen entwickelt und kann damit ein paar praktische Erfahrungen vorweisen. Ich will in diesem Artikel aber jetzt nicht unbedingt darauf eingehen, was Innovation ist. Da kann man nämlich so einiges sagen. Ich will in diesem Artikel auf die verschiedenen Arten von Innovation eingehen.

Arten von Innovation weiterlesen

Projekt mit Next.js

Als Webentwickler muss man kein Experte in jedem kleinsten Framework sein. Es gibt nämlich sehr viele. Aber man sollte doch die Fähigkeit haben, neues lernen zu können. Autodidaktisches Lernen ist vermutlich die kritischste Fähigkeit der kommenden Jahrzehnte.

Ich war bereits als NodeJS Entwickler bei SAP unterwegs, dort habe ich SAPUI5 als Frontend-Framework und Express als Backend-Framework kennen gelernt. Für meine privaten Projekte wollte ich einfach mal was neues lernen. Ich habe Next.js entdeckt und habe mir vorgenommen, mir das mit einem einfachen Projekt näher anzuschauen.

State of JS Ranking: Backend-Frameworks by Usage

Wie kam ich mit diesem Framework in Kontakt? Zum Einen dank meines Proxer-Kollegen Dravorle, der dieses Framework für weitere Proxer-Projekte empfohlen hat, zum Anderen aber auch über das State-Of-JS-Ranking. Hier ist klar sichtbar, dass Next.js bei der Usage an zweiter Stelle nach Express kommt. Usage ist meiner Meinung nach eine wertvolle Metrik. Der heutige Beitrag geht um meine ersten Erfahrungen mit Next.js als Backend-Framework.

Projekt mit Next.js weiterlesen

Nginx Error Logs

In der vorherigen Analyse hatten ich mir die Nginx Access Logs angeschaut. Nun komme ich zum dritten Teil dieser Reihe. Heute betrachte ich die Error Logs. Error Logs sind hilfreich, wenn es darum geht einen groben Überblick über bestehende Probleme zu gewinnen. Wenn man an größeren Projekten arbeitet, dann verliert man schnell den Überblick über Fehler und den Status von Fehlern. Eine konsolidierte Übersicht über die Fehler würde helfen. Man könnte Fehler kategorisieren und sie nach Priorität abarbeiten. Beispielsweise die am Häufigsten erscheinenden Fehler als erstes beheben.

Es gibt bereits Analyselösungen, die diese Logs verarbeiten und in Analysen darstellen. Ich möchte diese jedoch nicht nutzen, sondern will eine einfache, lokale und transparente Lösung. Ich habe solch eine konsolidierte Sicht mit Jupyter Notebook erstellt, und möchte ein paar Analysen teilen.

Nginx Error Logs weiterlesen

@oerdek.com: Matrix Server für den Privatgebrauch

In der EU gibt weiterhin Bestrebungen, die Verschlüsselung von digitalen Nachrichtendiensten wie Whatsapp und Signal auszuhebeln. Ich hatte auch vor ein paar Jahren ein Beitrag aus Heise in diesem Zusammenhang geteilt. Das Ganze ist also nichts neues.

Ich halte verschlüsselte Kommunikation für ein hohes Gut. Für mich gilt an erster Stelle, dass ich für mich und meine nächsten sichere Kommunikationskanäle schaffe. Ich habe zu diesem Anlass beschlossen, für mich ein Server des Messengers „Matrix“ zu betreiben. Der Server ist hier erreichbar. Das Web-UI dieses Messengers ist vergleichbar mit Discord.

Web UI von Element / Matrix

Dezentralisierung ist was großartiges: In einer dezentralisierten Infrastruktur ist jeder Host an erster Stelle für sich selbst verantwortlich. Ich werde den Matrix Server für mich betreiben und für mich nutzen. Ich werde ihn jedoch auch meiner Familie und allen Freunden bereitstellen, die vielleicht keine Ressourcen haben, solch eine Infrastruktur selber zu betreiben.

Aktuell belasse ich die Registrierungen offen. Jeder interessierte kann ich auf meinem Server registrieren. Ich selber bin unter @enes:oerdek.com erreichbar.

Nginx Access Logs Analyse

Access-Logs sind in Hinsicht auf Datenschutz sehr kritisch. Man kann sie als Nutzer einer Webseite nicht deaktivieren und sie fallen unter den sensiblen Daten, da sie IP Adressen beinhalten und Rückschlüsse auf einzelne Menschen erlauben. Ich hatte bereits angekündigt, dass ich für einen bestimmten Zeitraum die Access-Logs meines Blogs untersuchen möchte. Ich möchte heute meine ersten Erkenntnisse darüber teilen.

Nginx Access Logs Analyse weiterlesen

SAP Analytics Cloud

Heute präsentiere ich ein paar Eindrücke von Analysen, die ich in SAP Analytics Cloud (SAC) erstellt habe. Bei den Daten handelt es sich um die öffentlichen Bevölkerungsdaten von Mannheim. Mit diesem Prototypen soll man ein Eindruck davon gewinnen, wie SAC so aufgebaut ist und was damit alles möglich ist.

Bearbeiten einer Story in SAP Analytics Cloud

Ich war zum ersten Mal mit SAC vor ein paar Jahren im Rahmen eines Hochschulpraktikums bei SAP in Berührung gekommen. Ich hatte die Freude, bei dem Praktikum Elasticsearch/Kibana und SAC genauer zu untersuchen und die Vor- und Nachteile beider zu durchleuchten.

SAP Analytics Cloud weiterlesen