Neueste Einträge »

Firefox Sync Now mit eigenem Apache Server

Endlich die Bookmarks auf allen Firefox Browser haben, die man benutzt. Das ist seit Firefox 4 möglich.

Bis anhin hat mich immer davon abgehalten, dass meine Daten auf einem fremden Server liegen und ich nicht weiss, was damit passiert (auch wenn sie verschlüsselt sind). Irgendwie bin ich vor wenigen Wochen über die Mozilla Seite “Run your own Sync Server” gestolpert, dass dieses Problem löst.

Mittlerweile habe ich den Sync Server auf einer Debian Squeeze Box installiert und er funktioniert. Gemacht habe ich das so:

Die nötigen Pakete installieren:

$ apt-get install python-dev mercurial sqlite3 python-virtualenv apache2-mpm-prefork libapache2-mod-wsgi make

Benutzer ffsync erstellen:

$ adduser --system --home /usr/local/firefox-sync-server --disabled-login --disabled-password ffsync

Den Apache User zu der Gruppe ffsync hinzufügen:

$ adduser www-data ffsync

Den User wechseln:

$ su - ffsync

Die Source Files herunterladen:

$ hg clone https://hg.mozilla.org/services/server-full

Die Ordner data und tmp erstellen

$ mkdir data tmp

Den Sync Server kompilieren

$ cd server-full

$ make build

Nun müssen noch einige Config Files angepasst werden. Die Pfade zeigen zumeist auf /tmp, was etwas ungeignet ist, um Benutzerdaten zu speichern.

$ vi sync.wsgi
[..]

os.environ['PYTHON_EGG_CACHE'] = '/usr/local/firefox-sync-server/tmp/python-eggs'

[..]

$ vi development.ini

[..]

[handler_syncserver_errors]
class = handlers.RotatingFileHandler
args = (‘/usr/local/firefox-sync-server/tmp/sync-error.log’,)
[..]

$ vi etc/sync.conf

[..]

[storage]
backend = syncstorage.storage.sql.SQLStorage
sqluri = sqlite:////usr/local/firefox-sync-server/data/usersettings.db
[..]

[auth]
backend = services.auth.sql.SQLAuth
sqluri = sqlite:////usr/local/firefox-sync-server/data/usersettings.db

[..]

fallback_node = http://sync.mytestdomain.com/
[..]

Das wsgi Modul aktivieren, falls das noch nicht automatisch passiert sein sollte:

$ a2enmod wsgi

Und einen neuen Apache Virtual Host erstellen:

$ vi /etc/apache2/sites-available/firefox-sync

<VirtualHost *:80>
ServerName sync.mytestdomain.com
ServerAdmin webmaster@mytestdomain.com

DocumentRoot /usr/local/firefox-sync-server/server-full

CustomLog ${APACHE_LOG_DIR}/firefox-sync-server_access.log combined
ErrorLog ${APACHE_LOG_DIR}/firefox-sync-server_error.log

<Directory /usr/local/firefox-sync-server/server-full>
Order deny,allow
Allow from all
</Directory>

WSGIProcessGroup ffsync
WSGIDaemonProcess ffsync user=ffsync group=ffsync processes=2 threads=25
WSGIPassAuthorization On
WSGIScriptAlias / /usr/local/firefox-sync-server/server-full/sync.wsgi
</VirtualHost>

Den Virtual Host aktivieren:

$ cd /etc/apache2/sites-enabled

$ ln -s ../sites-available/firefox-sync .

Apache neu starten:

$ apachectl configtest && /etc/init.d/apache restart

Und nun kann man im Firefox über Tools > Sync Now seinen Account einrichten.

Was ich dann noch machen werde, ist den Dienst nur verschlüsselt (HTTPS) anzubieten. Das dürfte keine Hexerei mehr sein.

ActiveSync AutoDiscover (mit Z-Push und Courier IMAP)

Dies ist die Fortsetzung des ActiveSync Artikels. Der erste Teil “ActiveSync mit Z-Push und Courier IMAP” ist hier zu finden.

Damit die Mailbox-Konfiguration auf dem Mobile Phone etwas einfacher wird, gibt es AutoDiscover für ActiveSync. Das Prinzip ist relativ einfach:

Das Mobile Phone sendet einen XMLRequest an http(s)://autodiscover.mytestdomain.com/Autodiscover/Autodiscover.xml.

Der Request sieht so aus:

<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/mobilesync/requestschema/2006">
<Request>
<EMailAddress>meine.emailadresse@mytestdomain.com</EMailAddress>
<AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/mobilesync/responseschema/2006</AcceptableResponseSchema>
</Request>
</Autodiscover>

Die Response ist wie folgt:

<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
<Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
<Culture>en:en</Culture>
<User>
<DisplayName>meine.emailadresse@mytestdomain.com</DisplayName>
<EMailAddress>meine.emailadresse@mytestdomain.com</EMailAddress>
</User>
<Action>
<Settings>
<Server>
<Type>MobileSync</Type>
<Url>https://mail.mytestdomain.com/Microsoft-Server-ActiveSync</Url>
<Name>https://mail.mytestdomain.com/Microsoft-Server-ActiveSync</Name>
</Server>
</Settings>
</Action>
</Response>
</Autodiscover>

Nun weiss das Mobile Phone, welches der Mailserver ist (und allenfalls auch wie Vorname und Name des Benutzers lautet. Wurde aber von mir nicht implementiert.).

So hab’ ich’s gemacht:

  • DNS Eintrag für autodiscover.mytestdomain.com erstellen
  • Neuen VirtualHost erstellen (Hinweis: Das SmartPhone probiert zuerst mit https auf autodiscover zuzugreifen, was je nachdem zu einem Zertifikatsfehler führt.
  • Zusätzlich diese Aliase konfigurieren (insgesamt nur zwei Zeilen):


Alias /Autodiscover/Autodiscover.xml "/path/to/document/root/autodiscover/autodiscover.php"
Alias /AutoDiscover/AutoDiscover.xml "/path/to/document/root/autodiscover/autodiscover.php"

  • Das Script autodiscover.php ins DocumentRoot kopieren, nach .php umbenennen und Variablen anpassen. Fertig.

Das Script verfügt über eine Debug Funktion und loggt in den Ordner autodiscover-debug/, der auf der gleichen Ebene wie das Document Root liegt.

Ursprünglich habe ich das Script von hier, aber leider funktionierte dies nicht, worauf ich es nach meinem Gusto umgeschrieben habe.

ActiveSync mit Z-Push und Courier IMAP

Immer wieder fragen Kunden nach ActiveSync Unterstützung für ihre Mailbox. Bis anhin musste ich immer sagen: “Das wird leider nicht unterstützt”.

Doch heute Abend bin ich über Z-Push gestolpert und hab’ das mal ausprobiert. Hier ist eine ganz kurze und rudimentäre Installationsanleitung (und hier ist die Originalanleitung):
1. Tarball in Verzeichnis /var/www/z-push entpacken
2. Die config.php anpassen:

    • Timezone auf Europe/Zurich anpassen
    • $BACKEND_PROVIDER = “BackendIMAP”;
    • Für den Fall, dass der IMAP Daemon auf dem gleichen Server läuft, brauchen wir kein TLS oder SSL:
      • define('IMAP_SERVER', 'localhost');
      • define('IMAP_PORT', 143);
      • define('IMAP_OPTIONS', '/notls/norsh');
    • Ist Courier IMAP auf einem Remote Server, dann ist allenfalls TLS oder SSL angesagt (ungetestet).
      • TLS:
      • define('IMAP_SERVER', 'remote.server.net');
      • define('IMAP_PORT', 143);
      • define('IMAP_OPTIONS', '/norsh/novalidate-cert'); # falls das Zertifikat self-signed oder sonstwie nicht trusted ist
      • SSL:
      • define('IMAP_SERVER', 'remote.server.net');
      • define('IMAP_PORT', 993);
      • define('IMAP_OPTIONS', '/notls/norsh/novalidate-cert'); # falls das Zertifikat self-signed oder sonstwie nicht trusted ist
  • Die Datei backend/ics.php nach backend/unused/ics.php verschieben (wird nicht benötigt. Directory unused muss vorher erstellt werden).
  • Die Apache Config wie folgt ergänzen:
    <Directory /var/www/z-push>
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    php_flag magic_quotes_runtime off
    php_flag short_open_tag on
    </Directory>
    Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
  • Apache neu starten/reloaden und ausprobieren.

Einige Tipps habe ich übrigens von diesem Artikel.

Mir persönlich passt nicht so, dass das state Directory und das Debug-Logfile debug.txt innerhalb des Apache Document Roots liegen. Deshalb verschiebe ich das nach ausserhalb.

In der config.php gibt es zusätzlich folgende Änderung:

  • define('STATE_DIR', '/var/lib/zpush-state');

Natürlich muss das Directory auch noch erstellt werden:

  • mkdir /var/lib/zpush-state && chown www-data:www-data /var/lib/zpush-state

Damit das Debug Logfile nach /var/log/zpush/debug.log schreibt, braucht es folgende Änderung in der Datei debug.php:

In der Funktion debugLog folgende Zeile ändern:

  • @$fp = fopen('/var/log/zpush/debug.log', "a");

und das Directory inklusive File erstellen:

  • mkdir /var/log/zpush/ && touch /var/log/zpush/debug.log && chown -R www-data:www-data /var/log/zpush

Damit das Logfile nicht irgendwann die Platte füllt, sollte man sich überlegen logrotate entsprechend zu konfigurieren.

Nun kann man endlich das iPhone für ActiveSync konfigurieren. Autodiscover ist momentan noch nicht verfügbar. Das werde ich in einem nächsten Schritt aktivieren.

***UPDATE*** Wie man Autodiscover einrichtet wird im Nachfolgeartikel “ActiveSync Autodiscover” gezeigt.

Screen Lock

Wenn ich mich vom Arbeitsplatz entferne, will ich das mein Computer (sei es Linux, Mac OS X oder Windows) gesperrt ist. Ein Arbeitskollege hat mir mal gezeigt, wie ich das Schloss der “Menu Bar” hinzufügen kann, aber ich hab’s – wie’s halt so ist – nicht aufgeschrieben.

Screen Lock Icon in der Menu Bar

 

 

 

 

Damit ich das auf keinen Fall wieder suchen muss, veröffentliche ich es hier:

Das Programm “Keychain Access” öffnen.

Die “Preferences” aufrufen und “Show keychain status in menu bar” aktivieren.

Die Einstellungen von Keychain Access

 

 

 

 

 

Voilà, c’est ça.

Mac OS X Lion ist da…

Am Mittwoch wurde Mac OS X Lion veröffentlicht.

Einige Features und weitere Informationen wurde in diesem Post beschrieben

Debian Lenny DomU auf Debian Squeeze aktualisieren (Xen)

Zur Zeit stehen Upgrades von Debian Lenny auf Debian Squeeze an…

Da ich auf meinem Debian Lenny Server virtuelle Maschinen unter Xen laufen habe und auf einen fast unterbruchsfreien Upgrade angewiesen bin, habe ich den ersten Teil des Upgrades ausgiebig getestet. Es wäre gelogen, wenn mir das Ganze nicht etwas Kopfzerbrechen bereitet hätte…

Wo will ich hin:

  • Debian Lenny VMs (DomU) auf Debian Squeeze aktualisieren
  • Debian Lenny Xen Hypervisor (Dom0) auf Debian Squeeze aktualisieren

Der erste Teil befasst sich mit dem Upgrade der VMs. Nach einem finalen apt-get update && apt-get -u upgrade von Debian Lenny wird die sources.list für Squeeze angepasst. Anschliessend wird apt-get update && apt-get -u dist-upgrade ausgeführt. Hier kann man mehr oder weniger bestätigen, was vorgeschlagen wird (je nach installierten Applikationen kann es einige Anpassungen geben). Der Upgrade sah dann auch ziemlich gut aus. Leider kam nach einem erneuten Start der VM folgende Fehlermeldung:

dom0:~# xm create -c /etc/xen/guests/domU1.cfg
Using config file "/etc/xen/guests/domU1.cfg".
Error: Boot loader didn't return any data!

Na toll… Anzahl funktionierende VMs: -1

Nach unzähligen weiteren Versuchen (man arbeitet ja zum Glück mit LVM Snapshots und fängt mit einer Test VM an) und stundenlanger Recherche habe ich die Lösung herausgefunden.

Das Problem wird durch pygrub und grub2 verursacht. grub2 arbeitet neu mit “named partitions” und damit kommt pygrub nicht klar. Aus diesem Grund verzichten wir (vorübergehend) auf grub2 und installieren den alten grub wieder. Mehr Infos hier, hier und hier.

Die Lösung:

Nach dem Upgrade auf Debian Squeeze und vor dem Reboot muss grub-legacy installiert werden. Dabei wird auch gleich grub2 deinstalliert (ich habe die Config ebenfalls gelöscht (--purge)). Anschliessend habe ich zur Sicherheit das alte Kernel Image von Debian Lenny nochmals installiert. Dieses sollte man unbedingt zur Hand haben.

Anschliessend kann man rebooten. In meinem Fall hat das geklappt und die VM kommt wieder hoch.

Nun stellt sich die Frage was passiert, wenn nun Dom0 auf Squeeze aktualisiert wird. Ich gehe davon aus, dass man vorgängig auf allen VMs grub2 installieren muss, damit die VM auch mit Xen 4 wieder hochfährt. Das werde ich ebenfalls ausgiebig testen, um dann auf dem produktiven System keine Überraschungen erleben zu müssen.

Mac OS X Lion kommt im Juli / iCloud / iOS5

Apple hat vor einigen Tagen einen weiteren Release von ihrem Mac OS X angekündigt. Mac OS X Lion wird ab Juli verfügbar sein.

Interessante Features (für mich) sind FileVault 2, Launchpad und die neuen Sicherheitsfeatures. Leider fehlen aber nach wie vor Focus-follows-Mouse und Auto-Raise-Window. Das vermisse ich nach wie vor…

Alle Features im Überblick sind hier zu finden.

Desweiteren haben sie ihren neuen Dienst iCloud vorgestellt. Ein weiterer Anbieter, der dem Cloud Hype nachrennt. Ich verstehe nach wie vor nicht, wie man seine Daten extern lagern kann. Hauptsache es ist cool…

Und iOS5 wurde ebenfalls noch angekündigt. Mit iOS5 ist iCloud offenbar gratis dabei… Dabei wird mein iPhone schon seit geraumer Zeit nicht mehr unterstützt und mein Wecker wird am 1. Januar 2012 einmal mehr den Dienst verwehren.

Root Account aktivieren auf OS X 10.6

Der G E D U L D – Dealer war wieder einmal mehr aktiv. Dieses Mal ein Tipp, wie man root das Login erlaubt. Ich möchte hiermit betonen, dass dies auf keinen Fall eine gute Idee ist und man davon absehen möge.

Wenn man nur temporär als root arbeiten will, kann genauso gut folgenden Befehl verwenden, um die Bash Shell mit root Rechten zu starten:

sudo bash

Aber jetzt zum eigentlichen Vorhaben. So gehts:

Root Account aktivieren

  1. Terminal öffnen
  2. dsenableroot
  3. Passwörter eingeben, respektive setzen.

Live sieht das so aus:

apfeleimer:~ andy$ dsenableroot
username = andy
user password:
root password:
verify root password:

dsenableroot:: ***Successfully enabled root user.

Root Account deaktivieren

  1. dsenableroot -d
  2. Passwort eingeben

Und das Deaktivieren sieht dann so aus:

apfeleimer:~ andy$ dsenableroot -d
username = andy
user password:

dsenableroot:: ***Successfully disabled root user.

Shell Script via Doppelklick ausführen

Eigentlich dachte ich, diesen Artikel hätte ich bereits seit langem geschrieben, aber das scheint offenbar doch nicht so.

Wer ein Shell Script mit dem wohlklingenden Namen klickmich.sh auf dem Desktop hat und dies per Doppelklick ausführen möchte, muss leider feststellen, dass diese Datei nicht ausgeführt wird, sondern mit einem Programm (in meinem Fall XCode) geöffnet wird.

Das ist etwas schade… :)

Wenn man aber klickmich.sh in klickmich.command umbenennt, dann verhält sich Mac OS X so, wie man es eigentlich erwartet. Das Shell Script wird ausgeführt. Aber Achtung! Bedingung ist, dass das Shell Script mit dem executable Bit versehen ist. Dies wird erreicht, indem man im Terminal

chmod +x /path/to/klickmich.command

ausführt. Ein ausführlicher Artikel über Dateiberechtigungen findet sich ebenfalls auf apfelschwein.net.

Herunterfahren durch Tastenkombination

Wer schon immer danach gesucht hat, wie man den Mac ohne Maus herumschubsen neu starten, in den Sleepmodus oder herunterfahren kann, dem sei Ctrl + Eject empfohlen.  Folgendes Menu erscheint:

Shutdown Menu

Powered by WordPress. Theme: Motion by 85ideas.