zopfli für deutliche kleinere PNG Dateien einsetzen

Der (sehr gute) Artikel von Jeff Atwood (hier) hat mich dazu gebracht, mal mit zopfli etwas herumzuprobieren.
Vorab das Fazit: Gut! PNG Dateien werden deutlich kleiner, ergo weniger Traffic und Datenverbrauch.
Gerade für Webseiten, die auch häufig Mobil abgerufen werden lohnt es sich also, seine statischen Bilder mal „nachzukomprimieren“.

Hier was ich gemacht habe:

  1. Die aktuellen Sourcen von zopfli klonen und zopflipng kompilieren
    $ git clone https://github.com/google/zopfli
    $ cd zopfli
    $ make zopflipng

    Hier fällt dann ein binary „zopflipng“ heraus, mehr braucht es nicht.

  2. zopflipng auf alle PNG Dateien anwenden.
    Testweise kann man das auch erstmal mit ein, zwei Dateien ausprobieren, der Aufruf ist einfach:

    $ zopflipng -m testfile.png testfile-compress.png

    Um dann alle Dateien im Ordner (und den Unterordnern) zu komprimieren einfach diesen One-Liner starten:

    $ for f in `find -maxdepth 5 -iname "*.png"`; do  zopflipng -y -m $f $f; done

Das Komprimieren dauert einige Zeit, ist also nichts, um Ad-Hoc erzeugte Bilder zu verkleinern.
Statische Ressourcen, wie Hintergrundbilder, Avatare und ähnliches können aber z.B. in einem nächtlichen Cron
komprimiert werden.

Bei mir war die Kompressionsrate zwischen 10% und 50%, also durchaus lohnend für einen sehr überschaubaren Aufwand.

SMTP Walker

Ich habe immer wieder mit SMTP Verbindungen zu tun, und diese per telnet zu durchzuführen ist
auf Dauer ziemlich müssig. Es gab damals ein einfaches Tool („smtpexp.exe“), das mittlerweile
allerdings sehr „alt“ geworden ist. Daher hatte ich vor ein paar Jahren mal was in C# neu zusammen-
gehackt. Das Tool („SMTP Walker“) funktioniert grundsätzlich, hat aber an allen Ecken und Enden
noch Bugs und Fehler. Außerdem ist der Funktionsumfang noch nicht so groß, wie ich ihn mir
wünsche, ich möchte mit dem Tool auch noch POP3 und IMAP debuggen können.

Nichtsdestotrotz stelle ich das hier jetzt mal online, über Kommentare würde ich mich freuen,
ich werde das Tool in unregelmäßigen Abständen aktualisieren.

Installierbar ist das Tool von hier: SMTP Walker

Weiterlesen >>

C#, SMTP

OpenLDAP 2.4 – Replikation einrichten

Im folgenden möchte ich beschreiben, wie ich in OpenLDAP 2.4 eine Replikation eingerichtet habe.

Für eine Dovecot / Postfix Installation welche die Benutzer in einem LDAP sichert nutzen wir OpenLDAP zur
Ablage der Benutzerobjekte. Damit die Umgebung auch beim Ausfall des LDAP Servers weiter funktioniert,
benötigen wir eine Replikation aller Objekte im LDAP von einem Server zu einer zweiten OpenLDAP Instanz.
Darum soll es in diesem Artikel gehen.

Die Instanzen laufen auf einem Ubuntu 14.04, das LDAP ist auf beiden Servern entsprechend dieser Anleitung
vorbereitet worden https://wiki.ubuntuusers.de/OpenLDAP_ab_Precise

Anmerkung: Dieser Artikel kommt original von hier. Ich habe diesen übersetzt, stellenweise ergänzt und
angepasst und für mich als Erinnerung aufgeschrieben.

Weiterlesen >>

Windows Server 2008 (R2) Datenträgerbereinigung

Der Windows Server 2008 (R2) ist zwar schon ein paar Tage älter, hin und wieder trifft man trotzdem noch auf ihn. Über die Jahre füllt sich die Systempartition mit Daten die nicht mehr unbedingt notwendig sind. Bei Desktop Windows Versionen hilft hier die Datenträgerbereinigung (cleanmgr.exe) weiter, bei Windows Server 2008 R2 findet sich diese leider nicht mehr an der gewohnten Stelle in den Laufwerkseigenschaften.

Grundsätzlich ließe sich dies durch die Installation des Features „Desktop Erfahrung“ („Desktop Experience“) beheben, dies erfordert allerdings einen Serverreboot, der nicht immer erwünscht ist.

Einfacher geht es allerdings so:
Bei Windows Server 2008 (und R2) sind die notwendigen Dateien (im Grunde nur die .exe) schon mitgeliefert, und zwar im winsxs Ordner:

Betriebssystem Architektur Dateiort
Windows Server 2008 R2 64-bit C:\Windows\winsxs\amd64_microsoft-windows-cleanmgr_31bf3856ad364e35_6.1.7600.16385_none_c9392808773cd7da\cleanmgr.exe
Windows Server 2008 R2 64-bit C:\Windows\winsxs\amd64_microsoft-windows-cleanmgr.resources_31bf3856ad364e35_6.1.7600.16385_en-us_b9cb6194b257cc63\cleanmgr.exe.mui
Windows Server 2008 64-bit C:\Windows\winsxs\amd64_microsoft-windows-cleanmgr.resources_31bf3856ad364e35_6.0.6001.18000_en-us_b9f50b71510436f2\cleanmgr.exe.mui
Windows Server 2008 64-bit C:\Windows\winsxs\amd64_microsoft-windows-cleanmgr_31bf3856ad364e35_6.0.6001.18000_none_c962d1e515e94269\cleanmgr.exe.mui
Windows Server 2008 32-bit C:\Windows\winsxs\x86_microsoft-windows-cleanmgr.resources_31bf3856ad364e35_6.0.6001.18000_en-us_5dd66fed98a6c5bc\cleanmgr.exe.mui
Windows Server 2008 32-bit C:\Windows\winsxs\x86_microsoft-windows-cleanmgr_31bf3856ad364e35_6.0.6001.18000_none_6d4436615d8bd133\cleanmgr.exe

Die Datei cleanmgr.exe gehört nach c:\windows\system32, die Datei cleanmgr.exe.mui nach c:\windows\system32\en-US. Auf anderssprachigen Installationen kommt die .mui Datei natürlich in den entsprechenden Ordner, bei Deutsch etwa c:\windows\system32\de-DE.

Danach lässt sich über einen Command Prompt „cleanmgr.exe“ problemlos aufrufen und verwenden.

(Original hier, ich habe das auf Deutsch übernommen, damit ich es wiederfinde 😉 )

„Perfect Forward Secrecy“ und Windows < 8.1

Dankenswerterweise hat Microsoft im April diesen Jahres einen Patch veröffentlicht, der für Windows 8.1 und Windows Server 2012 R2 die TLS Ciphers derart umsortiert, dass Verbindungen die per PFS (Perfect Forward Secrecy) gesichert sind bevorzugt werden, siehe hier: http://support.microsoft.com/kb/2929781

Allerdings ist Microsoft offensichtlich der Meinung, das ältere Betriebssysteme sowieso niemand mehr benutzen sollte und enthält diese Änderung allen anderen eigentlich noch aktiv supporteten Windows Versionen vor (Vista, Server 2008(R2), Server 2012, 7, 8).

Also müssen wir selbst aktiv werden und diese Änderung vornehmen.

Weiterlesen >>

Heartbleed und nginx

Der Heartbleed-Bug in OpenSSL wurde zur genüge durch alle Medien beackert.
Auch meine Webserver waren hiervon betroffen (natürlich), daher musste ein neues
Kompilat vom nginx her. Debain hatte zu dem Zeitpunkt seine Repositories für libssl-dev
noch nicht aktualisiert, daher habe ich nginx direkt gegen die aktuellen OpenSSL Sourcen
kompiliert.

Hier mein aktueller configure Aufruf, zum einen zur Dokumentation für mich, zum anderen falls
jemand ihn mal braucht…

./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/sbin/nginx 
--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log 
--http-log-path=/var/log/nginx/access.log --user=nginx --group=nginx 
--with-http_ssl_module --with-openssl=/usr/src/openssl 
--with-http_spdy_module --pid-path=/var/run/nginx.pid --with-http_geoip_module 
--with-ipv6 --add-module=/usr/src/nginx/ngx_http_auth_pam_module

Weiterlesen >>

TLS und nginx

Wo ich im letzten Beitrag schon etwas über den HSTS Header geschrieben habe, habe ich die Gelegenheit genutzt
und meine TLS Einstellungen im nginx etwas zu optimieren und strikter zu konfigurieren.

Ziel: Konsquenter Einsatz von Forward Secrecy und nur noch Nutzung von starken Verschlüsselungen.
Nach etwas Recherche und herumspielen schaut der entsprechende Bereich meiner nginx Konfiguration jetzt so aus:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
            ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:
            ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
            ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:
            ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
ssl_session_cache shared:DEVHSSL:10m;

Erklärung zu den einzelnen Punkten:
Weiterlesen >>

HSTS in nginx aktivieren

Eine zunehmende Anzahl an Webseiten (so wie auch dieser Blog hier) ist mittlerweile erfreulicherweise nur
noch per SSL geschützer Verbindung zu erreichen („https://“).

Durch einige Magic ist es jedoch trotzdem möglich, einem unachtsamen Benutzer ungewollten Code unterzuschieben.
Diesem Problem nimmt sich der RFC 6797 an, welcher eine Funktion namens „HTTP Strict Transport Security“ oder
kurz „HSTS“ beschreibt. In aller Kürze erklärt sorgt dieser Header dafür, das der Browser weiß, das eine Webseite
ausschließlich per HTTPS besucht werden möchte. Wer mehr über HSTS erfahren möchte sollte sich einige der Links
am Ende des Artikels anschauen.

Wie aktiviere ich nun HSTS für meine SSL gesichterte Webseite wenn ich nginx als Webserver einsetze? Sehr einfach:
Zu der bestehenden Konfiguration wird einfach in den Server Abschnitt diese Zeile eingefügt:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

Nach dem reload von nginx sollte dieser Header bereits ausgeliefert werden, ganz einfach zu testen mittels curl:

# curl -Ik https://blog.devh.de
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 05 Feb 2014 10:12:50 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: https://blog.devh.de/xmlrpc.php
Strict-Transport-Security: max-age=31536000; includeSubDomains

Das wärs also schon, damit haben wir die (Internet-)Welt mal wieder ein kleines wenig sicherer gemacht.
Links nach dem Klick.

Weiterlesen >>

Headless VirtualBox auf Linux Server

Auf einem Linux Server sollen ein paar zusätzliche (virtuelle) Maschinen laufen. Diese
sollen dann einzelne Dienste übernehmen, wie z.B. mySql oder auch einen Starboundserver.

Hierbei habe ich folgende Anforderungen:

  • Eine beliebe Anzahl an zusätzlichen Maschinen
  • Eingermaßen einfache Administration
  • Keine zusätzlichen IPs nötig; das Host-Linux muss den Traffic routen
  • Virtuelle Maschinen müssen von extern erreichbar sein

KVM, Xen und wie sie alle heißen waren mir zu komplex und übertrieben für diese eigentlich
einfachen Aufgaben. Daher kam ich auf die Idee, auf dem Server die zusätzlichen Gäste mit
VirtualBox zu virtualisieren. Der Traffic wird dann über iptables zu / von den virtuellen Machinen
geroutet. Hier meine Schritte.
Weiterlesen >>

Starbound Server unter Windows

Zwischendurch muss auch mal ein Spielchen sein. Und zur Zeit spiele ich gerne Starbound (http://playstarbound.com/).Das Ganze ist zwar noch Beta, macht aber so schon eine Menge Spaß. Am meisten Spaß macht es mit mehreren Spielern und dafür bietet sich ein Server an. Ich beschreibe hier also mal den (eigentlich recht einfachen) Prozess einen Server unter Windows ans Laufen zu bekommen.
Weiterlesen >>