Dualboot System mit Ubuntu und Windows – Zeit nicht korrekt

Auf meinen Dualboot-System ist Ubuntu und Windows installiert.

Die beiden Betriebssysteme interpretieren die Hardware-Clock nicht gleich. Linux interpretiert die Hardware-Clock als UTC. Windows aber als “Local-Time”. Daraus resultiert, dass in dem einen Betriebssystem die Zeit korrekt gesetzt wird und im anderen falsch angezeigt wird.

Ich korrigiere dies, indem ich Ubuntu beibringe die Local-Zime zu verwenden:

  1. Im Bios die HW-Clock auf die aktuelle Local-Zeit einstellen
  2. Dann im Linux die Local-Zeit konfigurieren

Man könnte dies auch so korrigieren, indem man Windows beibringt, die UTC zu verwenden. Aber umständlicher als die Korrektur über Linux.

Links

https://askubuntu.com/questions/169376/clock-time-is-off-on-dual-boot

Mailtest

Wenn man einen Mailserver für diverse Domains betreibt, möchte man nach Erstellung einer neuen Domain überprüfen, ob alles (Mailserver, DNS, etc.) auch korrekt konfiguriert ist und Mails von der neuen Domäne nicht irgendwo von einen Spam-Filter o.ä. abgefangen werden. Dafür gibt es ein tolles Web-Tool:

https://www.mail-tester.com

Hier kann man sich einen Mail-Empfänger generieren lassen, auf welchen dann ein Mail von der zu überprüfenden Mail-Adresse gesendet werden kann. Das Web-Tool listet dann den Score auf und zeigt was verbessert werden kann.

WordPress “Nativ-Installation” nach Docker Container umziehen

Nachdem ich nun meine WordPress Docker Container am laufen habe, ist es an der Zeit meine alten WordPress-Installationen umzuziehen. Der Use-Case ist simple:

  • Die WordPress-Installation, welche bisher “nativ” auf www.meinedomäne.ch lief soll nun neu vom neu erstellen Docker-Container beliefert werden.

Das Umziehen einer bestehenden WordPress-Installation war kniffliger als erwartet. Auf diesem Wege hat es dann für mich funktioniert:

  • Als Erstes einen Docker-Container erstellen. Siehe hier. Wichtig war, dass der Container erst ohne die SSL-Erweiterung (inkl. wpinit.sh und apache2vhosts.conf) gestartet wurde.
  • Das so erstellte Image ist nun über http://lokaleIp:port erreichbar.
  • Nun die Installations-Routine von WordPress durchlaufen.
  • Nun auf der WordPress-Installation, welche umgezogen werden soll, das Plugin “All-in-One WP Migration” installieren und damit die WordPress-Export (in ein File) erstellen.
  • Nun wieder auf die Docker-Wordpress Installation wechseln, auch hier das Plugin “All-in-One WP Migration” installieren und anschliessend einen WordPress-Import aus dem erstellten File durchführen.
  • Damit sollte der Umzug schon erledigt sein.
  • Ich habe dann noch das Plugin “SSL Insecure Content Fixer” installiert um sicherzustellen, dass die noch folgende SSL-Aktivierung sicher funktioniert => Das ist evtl. aber gar nicht nötig…
  • Nun Kann die Docker-Instanz gestoppt und wpinit.sh und apache2vhosts.conf im yml-File aktiviert werden. Anschliessend die Docker-Instanz wieder starten:

    Damit ist nun auch SSL aktiviert, so dass der Docker-Container über SSL die Seite ausliefert.

Photon 3.0 auf ESXi 5.5

Photon 3.0 installieren

Netzwerk einrichten

Das File updaten

Nach dem anschliessend Reboot sollte das Netzwerk erreichbar sein

root-login auf ssh erlauben

Natürlich ist es keine gute Idee, den root-User auf SSH zu erlauben. Damit man aber einigermassen angenehem die Konfigurationen vornehmen kann (über die ssh Konsole), wird dieser aktiviert. Sobald weitere User eingereichtet sind, kann der root-access wieder eingeschränkt werden.

Damit man sich als root per ssh einloggen kann muss man das File

editieren:

Anschliessend den Service restarten

Root Passwort ändern

Beim Installieren von Photon gebe ich ein einfaches Passwort ein, weil die locale (Tastatur-Layout) nicht wirklich für Deutsch funktioniert. Anschliessen, sobald über SSH connected werden kann, setze ich ein stärkeres Passwort:

Upgrade PhotonOS

PhotonOS upgraden

Docker aktivieren

Neuer User erstellen

Nun werden neue User erstellt.

Anschliessend rebooten

Ab sofort kann man sich mit dem neue erstellen User per SSH einloggen.

Root-User Rechter erhält man ab sofort mit

Docker Compose installieren

Nun wird Docker Compose installiert. Bitte darauf achten, dass die neueste Version installiert wird.

Siehe auch https://github.com/docker/compose/releases/

Root wieder deaktivieren

Nun kann das Root-Login über SSH wenn gewünscht wieder deaktiviert werden.

Ubuntu 18.4: Default Klang-Wiedergabegerät setzen

Mein Ubuntu setzt nach einem Reboot immer das falsche Klang-Wiedergabegerät. Das Default Wiedergabegerät kann folgendermassen gesetzt werden, so dass es auch nach einem Reboot noch gesetzt ist:

Als erstes die vorhandenen Wiedergabegeräte auflisten:

Dies listet die “Indexe” der Wiedergabegeräte auf. Der mit * markierte Index ist das aktuell als Default gesetzte Wiedergabegerät.

Nun den Index des gewünschten Default Wiedergabegerätes merken (bei mir ist es die “2”) und eintragen in

Nach einem Reboot ist das Wiedergabegerät Nr. 2 automatisch gesetzt.

Links

https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/DefaultDevice/

WordPress Container auf Docker

Dieser Blog-Eintrag beschreibt, wie man auf WordPress auf einem Docker-Host installieren und damit mehrere WordPress-Instanzen auf einem Host betreiben kann.
Ich betreibe die Docker-Container hinter einem Proxy-Server, der aber nicht als Container läuft. Der Proxy-Server leitet die HTTPS-Requests an die entsprechenden Docker-Container weiter.

Dieser Beitrag setzt ein vorinstalliertes Photon 3.0 inkl. Docker und Docker-Compose voraus. Siehe hier.

Die Docker-Container können über diverse Befehle gemanaged werden. Siehe dazu eine kleine Übersicht hier.

WordPress installieren

Wir installieren WordPress mit Hilfe von Docker Compose. Dazu erstellen wir ein template:

Im yml-Script erstellen wir eine WordPress- inkl. DB-Instanz.

WordPress-Instanz

  • Die WordPress-Instanz hat eine Abhängigkeit zur DB.
  • Die WordPress-Files werden unter /var/www/html abgelegt
  • der Host-Port 80 wird zur wordpress-Instanz port 80 weitergeleitet (“80:80”)
  • Die DB ist über Port 3306 anzusprechen (WORDPRESS_DB_HOST: db:3306)
  • Der DB-User ist wordpress (WORDPRESS_DB_USER: wordpress)
  • Das DB-Passowort ist zu setzen: WORDPRESS_DB_PASSWORD: <wordpress_db_password>

DB-Instanz

  • Die DB-Files werden hier abgelegt: db_data:/var/lib/mysql
  • Passort setzen: MYSQL_ROOT_PASSWORD: <mysql root password>
  • Datenbank definieren: MYSQL_DATABASE: wordpress
  • User definieren: MYSQL_USER <wordpress>
  • DB-Passwort setzen: MYSQL_PASSWORD: (wordpress db password)

 

Die letzten beiden Linien restellen lokale Verzeichnisse auf dem Photon-Host. Hier werden die WordPress- und SQL-Files abgespeichert. Diese Files überleben somit, wenn der container zerstört und neu generiert wird.

Die Volumes werden unter

erstellt und bleiben bestehen. Dies solange bis die Volumes mittels

zerstört werden.

WordPress Container starten

Nun kann der Container einfach gestartet werden. Dank Docker Compose braucht man nur noch einen Befehl. Docker Compose erkennt automatisch das YAML im aktuellen Verzeichnis, durchläuft die Konfiguration und startet die Container-Anwendung:

Den Prozess kann man anzeigen lassen

Nun ist über http://<ip>:8080 auf die WordPress-Instanz zugegriffen werden.

WordPress Container mit SSL erweitern

Das so bereitgestellte Container-Image bietet WordPress “out-of-the-Box” über Port 80 an. Port 443 ist nicht aktiviert. Man geht dabei davon aus, dass die Verschlüsselung (https) eine zusätzliche, neue Funktion darstellt und damit über einen weiteren Container abzubilden ist. Dazu kann ein Proxy-Container aufgebaut werden, für den es auch bereits fertige Docker-Images gibt. Architektonisch mag das Sinn machen.

Ich möchte das aber nicht so umsetzen. Ich betreibe bereits einen Proxy-Server und dieser soll auch so weiter beibehalten werden. Ich verzichte also auf einen Proxy-Container und erweitere das WordPress-Image durch die SSL-Funktionalität. Damit das geht, muss ich das docker-compose.yml bzw. die WordPress-Container Beschreibung erweitern.

Als erstes erstelle ich ein zusätzliches File

Dieses Bash-Script soll bei jedem Starten des Containers ausgeführt werden. Mittels diesem Script wird
– SSL nachinstalliert
– Die Default Konfig “000-default.conf” auf dem Apachen entfernt und stattdessen
– eine neue Konfig “apache2-vhosts.conf” installiert.
– Anschliessend wird der Apache neu gestartet.

Damit das Script funktioniert braucht es noch eine Apache-Config. Diese Config wird in den WordPress-Container gemappt und beim Container-Start aktiviert. Damit kann ich von ausserhalb des Containers, die Apache-Config manipulieren:

Nun ist das das docker-compose.yml zu erweitern (siehe die markierten Erweiterungen):

Wie man sieht wird
– das wp-init.sh Skript in den Container gemappt
– Die Apache-Config apache2-vhosts.conf in den Container gemappt.
– Der Container um den Port 8443 erweitert, der Container-Intern auf 443 routet und
– Das Commando “bash -c apache2-custom.sh” bei starten ausgeführt.

Damit startet der Container ab sofort mit aktiviertem SSL und der Apache-Container kann über das File apache2-vhosts.conf konfiguriert werden.

Reverse Proxy

Auf dem Reverse-Proxy wird nun einfach eine Reverse-Rule für den Container eingeführt. Der Reverse-Proxy leitet die HTTPS-Anfragen intern an den Container-Host mit Port 8443 weiter. Diese kann so aussehen:

SMTP auf WordPress-Container

Ich betreibe einen eigenen Mailserver. Ich stellte rasch fest, dass WordPress keine Mails über diesen Server versenden kann. Dies, weil das WordPress-Image einerseits grundsätzlich keinen SMTP-Agent mit dabei hat und andererseits mein Mailserver auch nicht aus dem Container heraus erreichbar war:

Um das Problem zu lösen habe ich mir einfach das Plugin “WP Mail SMTP” installiert. Dieses erweitert WordPress um die Mailfunktion. Das Connectivity-Problem konnte ich mit einer einfach Erweiterung von /etc/hosts lösen:

Man beachte, dass ich die interne IP des Mailservers verwende.

Damit diese Erweiterung auch bei einem neuen Create des Containers übernommen wird, muss wordpress/wp-init.sh noch modifiziert werden:

Links

Hot-Backup von ESXi VMs

Um Backups von ESXi VMs im laufenden Zustand machen zu können, braucht es

Exkurs VMWare-Snapshot

Bei einem VMware Snapshot wird eine weitere Festplattendatei erstellt welche ab Zeitpunkt des Snapshots alle geänderten Blöcke aufnimmt. Gleichzeitig wird der Exklusiv Zugriff auf die Basis Festplatte aufgehoben so das andere Prozesse lesen koennen.

Dieses “lesen” kann ein Kopierbefehl einens Backupprogramms sein. Da keine Schreibzugriffe mehr in die Datei erfolgen ist der Zustand also konsistent. Snapshots sind also keine Backups. Ein Snapshot “friert” lediglich einen Zustand ein (Basis Festplatte) und schreibt alle ab diesem Zeitpunkt anfallenden Änderungen in eine neue Snapshot Datei (Delta).

 

  • Die Basisplatte und der bzw. die Snapshots zusammen ergeben den akt. Stand. Fehlt ein Element in der Kette ist kein vollstaendiges Restore mehr moeglich. Beides muss zur gleichen Zeiten fuer den HOST zugaenglich sein.
  • Snapshots wachsen bis zur max. konfigurierten Festplattengroesse heran. Die Groesse des Datastores ist also zu ueberwachen.
  • Beim löeschen von mehr als 2 Snapshots ist zu bedenken das ein Helper angelegt wird und immer die Groesse der zusammen zufuehrenden Snaps benoetigt wird.
  • Laufende Snaps kosten ein wenig Performance. Die Gefahr von Fragmentierierung ignorieren wir da die Snaps immer in 16MB Bloecken wachsen.
  • Grosse Snaps loeschen, hier versteht VMware das einpflegen der Aenderungen, dauert lange

Beispiel:

  • Basisplatte
  • Snapshot1
  • Snapshot2
  • Snapshot3
  • Snapshotx

Löscht man jetzt Snapshotx wird dieser (und damit alle davorigen Snapshots) in die Basisplatte eingepflegt.
Löscht man Snapshot2 wird dessen Zustand und der von Snapshot1 in die Basisplatte eingepflegt und Snapshot3 usw. werden zu Snapshot1 usw,

Die .VMDK-Files (Virtuell Maschine Disk Files) können im laufenden Betrieb nicht kopiert oder verschoben werden, da sie ja in Gebrauch sind. Dies sieht aber nach einem Snapshot anders aus. Bei einem Snapshot werden die .VMDK-Files im Prinzip gekappt und neue Files (VMSN und VMSD) angelegt, in welche die kompletten Änderungen des Snapshots geschrieben werden. Wenn man ein Snapshot der VM macht, wird die Basis-Festplatte in den Read-Only Modus gesetzt, wordurch diese nun, da konsisten, kopiert werden kann. Das Verhalten von Snapshots kann also ausgenutzt werden um Backups im laufenden System erstellen zu können (Hilfsmittel zum Backup):

Komplettbackup 1

  1. Das Konfigurations-File der VM sichern/kopieren (VMX-File)-> nach dem Snaphsot der vituellen Maschine ändern sich die Verweise in der Konfiguration.
  2. Man erstellt einen ersten Snapshot einer VM. Es bestehen anonsten keine Snapshots dieser VM. Der Snapshot wird also gemacht, und die Basis-Festplatte kopiert. Anschliessend den Snapshot wieder loeschen. Dieses Vorgehen benötigt entsprechend viel Platz, wenn mehrere Backups der gleichen VM notwendig sind.

Komplettbackup 2

  1. Man macht täglich einen Snapshot und sicherst den Snapshot des Vortages. Bedeutet weniger Platz da quasi nur Aenderungen dann noch anfallen. Aber ein Restore erfordert Knowhow und dein ESX wird mehr belastet.

Soweit der Exkurs… Um ein Backup zu erstellen, können wir das mit den Snapshots manuell machen oder aber mit dem ghettoVCB-Script arbeiten. Das macht nämlich genau das oben beschriebene.

Installation von ghettoVCB

Die Installation ist simple. Einfach ein Verzeichnis auf dem ESXi-Datastore erstellen und die ghettoVCB-Scripts hineinkopieren. Das wird ganz schön auf Youtube gezeigt: http://www.youtube.com/watch?v=mVrjxzKEEu4

ghettoVCB konfigurieren und Backup durchführen

Die Konfigurationsmölgichkeiten findet man hier: http://communities.vmware.com/docs/DOC-8760

ghettoVCB.conf File

Ich habe mein ghettoVCB.conf File folgendermassen konfiguriert (ist eingentlich alles Standard):

VMs zum Backup

Habe ein File “vms_to_backup” erstellt, welches eine Liste der Namen der VMs beinhaltet. Bei den Namen handelt es sich um die Namen, welche auch im vSphereClient angezeigt werden:

Backup run

Nun kann die VM im laufenden Zustand gebackuped werden (Option -d dryrun führt einen Testlauf durch):

Backup automatisch durchführen (Cron-Tab)

Um das Backup automatisch durchzuführen, kann dies in der Cron-Tab von ESXi konfiguriert werden:

In Crontab registrieren, Job soll jeden Donnerstag um 17:00 Uhr durchgeführt werden

Wenn man dies Ausführt, wird der crontab automatisch an die richtige Datei angehängt.
Nun muss crond neu gestartet werden:

ESXi 4.1

Die Cron-Tab von ESXi wird bei jedem Start wieder neu geschrieben. Um die Zeile deswegen bei jedem Start auszuführen, muss diese noch in die /etc/rc.local eingetragen werden. Meine rc.local sieht anschliessend so aus:

ESXi 5.5

Die Cron-Tab von ESXi wird bei jedem Start wieder neu geschrieben. Um die Zeile deswegen bei jedem Start auszuführen, muss diese noch in die /etc/rc.local eingetragen werden. Meine rc.local sieht anschliessend so aus:

Nun nur noch autobackup durchführen, das ganze in der ESXi Konfuguration zu speichern:

Das wars! Jetzt werden die VMs automatisch regelmässig gesichert.

Restore durchführen

Um einen Restore druchzuführen, habe ich ein file vms_to_restore erstellt, wobei dieses pro Linie einen Restore-Parameter mit folgendem Format enthalten muss:

z.B.:

Anschliessend kann das Restore folgendermassen gestartet werden (Option -d 2 = Dryrun):

Dies stellt das von ghettoVCB erstellte Backup “TestVM32Bit-2013-01-03_13-25-54” unter dem Pfad “/vmfs/volumes/ESXi Raid1/TestVM” her bzw. kopiert diese dahin und registriert die VM neu beim ESXi-Host.

Die Fileformate

zeroedthick (default)

vmdk wird in voller Groesse angelegt – dieser Typ wird bei der Erstellung nicht mit Nullen ueberschrieben – das passiert erst spaeter im Betrieb

eagerzeroedthick

vmdk wird in voller Groesse angelegt – dieser Typ wird bei der Erstellung mit Nullen ueberschrieben

thick

vmdk wird in voller Groesse angelegt – und nie genullt

thin

vmdk waechst nach Bedarf – dies ist ein Feature des VMFS dateisystems – und ist auf den meisten NFS-servern nicht moeglich

2gbsparsed

vmdk wird in maximal 2 Gb grosse Stuecke aufgeteilt – die jeweils nach Bedarf wachsen – dieses Format ist it Workstation kompatibel

Firefox Security

Plugins

Folgende Plugins sind für Firefox empfehlenswert um spurenarmer zu surfen:

Firefox about:config Anpassungen

Suchfeld rechts oben wieder anzeigen

Anzeige von Vorschlägen bei der Eingabe deaktivieren

Suchvorschläge deaktivieren

Unterbinden, dass Firefox nach Hause telefoniert um festzustellen aus welchem Land man stammt. Das benutzt Firefox um zu entscheiden, welche Suchmaschine standardmässig genutzt werden soll (USA = Yahoo und alle anderen mit Google)

 

Links