Sonntag, 19. Oktober 2008

Hack für mobiles Interface zu laconi.ca

Frage: Wie kann ich das "iphone"-Theme von laconi.ca auf m.meinserver.com legen und das "default"-Theme auf www.meinserver.com / meinserver.com?

Simpel, aber im moment geht's so einigermassen:
1. mkdir /home/dasbinich/laconimo
2. cd /var/www
3. cp -R * /home/dasbinich/laconimo/
4. cd /home/dasbinich/laconimo
5. mkdir /var/www/laconimo
6. cp -R * /var/www/laconimo
7. /etc/apache2/sites-available/default ergänzen um
<VirtualHost [IP Adresse]>
ServerName m.deinserver.com
DocumentRoot /var/www/laconimo
<Directory /var/www/laconimo>
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>

8. in /var/www/laconimo/config.php "theme" auf "iphone" setzen
9. in /var/www/laconimo/config.php "server" auf "m.deinserver.com" setzen
10. m.deinserver.com in DNS eintragen
11. webserver neustarten

Hab ich etwas vergessen? Eigentlich eine hässliche Lösung, denn bei Aenderungen musst Du alles doppelt machen: in /var/www/file.php und /var/www/laconimo/file.php Aber so als temporärer hack geht's knapp durch. Bis es eine offizielle Lösung gibt, die offenbar auf der Wunschliste ist.

Samstag, 4. Oktober 2008

Erste Skizze für MacBook stammt von 1620


Magie der Dinge Kunstmuseum Basel, ursprünglich hochgeladen von patapat

Das Bild hängt derzeit im Kunstmuseum Basel im Rahmen der Ausstellung "Die Magie der Dinge", gehört aber dem Städel Museum, Frankfurt a.M. Inventar Nr. 2236. Auf dem dazugehörenden Schild steht: "Deutscher Meister um 1620. Oel auf Holz". Es zeigt die erste, historisch gesicherte Skizze für das MacBook. Der unbekannte Maler rechnete wohl kaum damit, dass es ganze 388 Jahre dauern sollte, bis sein Design umgesetzt werden würde!

Mittwoch, 1. Oktober 2008

twitter-Klon identi.ca mit laconi.ca-Code

Es ist eine Baustelle. Und dies ist mehr ein handschriftliches Protokoll, denn eine Anleitung... Die offizielle Installationshilfe gibt's hier. Aber so hab ich die Grundkonfiguration von laconi.ca (basis von identi.ca) wenigstens mal hochbekommen beim Hoster slicehost: 1. Mit dem Slicemanager bei slicehost ein leeres Ubuntu 8.04.1 LTS (hardy) slice erstellen. Einloggen! Dann (letztmals aktualisiert am 18.10.08):
# mein Lieblingseditor:
aptitude install joe

# Instructions um aktuellste Versionen von php5 etc. bei slicehost zu installieren, weil's sont wegen eines php-Bugs nicht geht. Siehe hier:
# Using Dotdeb is very simple:
# 1. Add these two lines to your /etc/apt/sources.list file (choosing a mirror near you) :
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
# 2. Run apt-get update
# 3. You should now be able to use the Dotdeb packages with apt-get (or dselect, or aptitude as well…)

joe /etc/apt/sources.list

aptitude update
aptitude upgrade

# Zeitzone richtig setzen
cp /usr/share/zoneinfo/Europe/Zurich /etc/localtime

# mal rebooten zur sicherheit
reboot

# Der neuen, virtuellen Kiste Deutsch beibringen:
aptitude install language-pack-de language-pack-de-base (fakultativ: language-support-de)

ausgewählt: deutsch (New German 8bit)

# Achtung: Wenn Du die Uebersetzungsdatei /var/www/locale/de_DE/LC_MESSAGES/laconica.po editierst (auf dem Mac z.B. mit Poedit), dann musst Du sie danach in laconica.mo kompilieren. Dazu gettext installieren (aptitude install gettext) und dann "msgfmt -f -o laconica.mo laconica.po".
aptitude install gettext

# nachgeahmt von http://de.gentoo-wiki.com/Deutsche_Lokalisierung
# /etc/einvironment ergänzen um:
LANG="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"
GDM_LANG="de_DE.UTF-8"

# Den richtigen Zeichensatz einstellen:
# "Latin1 und Latin5 - westeuropäische und türkische Sprachen" auswählen.

sudo dpkg-reconfigure console-setup

reboot

# postfix installieren

aptitude install postfix

# lokal unbekannte mailadressen verarbeiten. So geht das:

in /etc/postfix/main.cf
local_recipient_maps = (leer!)
fallback_transport = laconicatrans

in /etc/postfix/master.cf
laconicatrans unix - n n - 1 pipe flags=X user=www-data argv=/var/www/scripts/maildaemon.php

# das hat allerdings zur Folge, dass alle mails
# angenommen werden und an die unbekannten
# fehlermeldungen abgeschickt werden.
# ACHTUNG: Posting-Mails müssen in UTF-8 kodiert sein.

# Jetzt MySQL installieren:
aptitude install mysql-server mysql-client libmysqlclient15-dev
#mysql root passwort setzen (daspasswort)
mysqladmin password daspasswort

# installation von apache und php:
aptitude install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5-cgi php5-cli php-pear php5-gd php5-mysql libgmp3c2 php5-curl php5-mailparse php5-dev php5-memcache

# rewrite- und include-Modul aktivieren:

a2enmod rewrite
a2enmod include
sudo /etc/init.d/apache2 reload

# einige Zusatzmodule installieren, die offenbar notwendig sind
# zusätzlich zu denen in /var/www/extlib
# diese landen in /usr/share/php
sudo pear install Mail_mimeDecode
sudo pear install Net_SMTP
#
# in /var/www/extlib habe ich
# PEAR.php
# umbenannt in
# PEAR.php.orig
# weil mal eine Fehlermeldung kam, es sei etwas doppelt definiert
# PEAR.php ist auch in /usr/share/php Seither keine errors

# den laconi.ca Code aus dem Repository holen:
cd
aptitude install darcs
cd
darcs get --partial http://laconi.ca/darcs/

#
# memcached installieren
# Achtung: bei low traffic ergeben sich merkwürdige
# Effekte: incoming omb-posts sind nicht auf public timeline
# bis jemand lokal postet.
# Drum bei low traffic in config.php deaktivieren!
aptitude install memchached
#
#
cd
cd darcs
# den laconi.ca Code ins Webs-Verzeichnis kopieren:
cp -R * /var/www
# Das Avatarverzeichnis öffnen für den Webserver:
chgrp www-data /var/www/avatar
chmod g+w /var/www/avatar

# Die Datenbank anlegen:
cd /var/www
mysql -uroot -p -e 'create database laconica';
mysql -uroot -p -e "grant all privileges on laconica.* to laconicauser@localhost identified by 'laconicapasswort'";
mysql -uroot -p laconica < db/laconica.sql

# in httpd.conf ergänzen:
AddType image/x-icon .ico

# in /etc/apache2/sites-available/default steht nur:
NameVirtualHost [IP-Adresse]

<VirtualHost [IP-Adresse]>
ServerName io3.ch
ServerAlias www.io3.ch
DocumentRoot /var/www/
<Directory /var/www/>
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>

#
# maildaemon.php muss ausführbar sein
#
chmod +rx /var/www/scripts/maildaemon.php

# ejabberd als Jabber Server installieren
# mit dieser version ("original" jabber) ging's nicht: aptitude install jabber
# damit aber ziemlich schnell schon:
# gemäss http://www.chimeric.de/wiki/howto_ejabberd_on_debian
#
aptitude install ejabberd python-twisted python-pyopenssl
dpkg-reconfigure ejabberd

#
# htaccess an richtigen Ort kopieren:
cp htaccess.sample .htaccess

# weil laconica in /var/www Zeile 5:

RewriteBase /

# config an den richtigen Ort kopieren und editieren
cp config.php.sample config.php

bei mir sieht sie sinngemäss so aus:

(...)
#$extra_path = array("/opt/php-openid-2.0.1", "/usr/local/share/php");
$extra_path = array("/var/www/extlib");
set_include_path(implode(PATH_SEPARATOR, $extra_path) . PATH_SEPARATOR . get_include_path());

# We get called by common.php, $config is a tree with lots of config
# options
# These are for configuring your URLs

$config['site']['name'] = 'io3';
$config['site']['server'] = 'io3.ch';
$config['site']['path'] = '';
$config['site']['fancy'] = true;
$config['site']['theme'] = 'default';
#For contact email, defaults to $_SERVER["SERVER_ADMIN"]
#$config['site']['email'] = 'admin@example.net';
#Brought by...
$config['site']['broughtby'] = '468 inno';
$config['site']['broughtbyurl'] = 'http://468.ch/';
#If you don't want to let users register (say, for a one-person install)
#Crude but effective -- register everybody, then lock down
#$config['site']['closed'] = true;

# If you want logging sent to a file instead of syslog
#$config['site']['logfile'] = '/tmp/laconica.log';

# This is a PEAR DB DSN, see http://pear.php.net/manual/en/package.database.db.intro-dsn.php
# Set it to match your actual database

$config['db']['database'] = 'mysql://db-user:db-pw@localhost/db-name';
$config['db']['ini_db-name'] = $config['db']['schema_location'].'/laconica.ini';
# *** WARNING *** WARNING *** WARNING *** WARNING ***
# Setting debug to a non-zero value will expose your DATABASE PASSWORD to Web users.
# !!!!!! DO NOT SET THIS ON PRODUCTION SERVERS !!!!!! DB_DataObject's bug, btw, not
# ours.
# *** WARNING *** WARNING *** WARNING *** WARNING ***
#$config['db']['debug'] = 0;
#$config['db']['db_driver'] = 'MDB2';

#Database type. For mysql, these defaults are fine. For postgresql, set
#'quote_identifiers' to true and 'type' to 'pgsql':
$config['db']['quote_identifiers'] = false;
$config['db']['type'] = 'mysql';

#session_set_cookie_params(0, '/'. $config['site']['path'] .'/');
session_set_cookie_params(0, '');

#Standard fancy-url clashes prevented by not allowing nicknames on a blacklist
#Add your own here. Note: empty array by default
#$config['nickname']['blacklist'][] = 'scobleizer';

# xmpp
$config['xmpp']['enabled'] = true;
$config['xmpp']['server'] = 'dein.jabber.server';
$config['xmpp']['host'] = NULL; # Only set if different from server
$config['xmpp']['port'] = 5222;
$config['xmpp']['user'] = 'der user';
$config['xmpp']['encryption'] = true;
$config['xmpp']['resource'] = '468io3';
$config['xmpp']['password'] = 'verrat ich nicht';
$config['xmpp']['public'][] = '';
$config['xmpp']['debug'] = false;

#Default locale info
$config['site']['timezone'] = 'Europe/Zurich';
$config['site']['language'] = 'de_DE';
#Email info, used for all outbound email
$config['mail']['notifyfrom'] = 'absender@io3.ch';
$config['mail']['domain'] = 'io3.ch';
# See http://pear.php.net/manual/en/package.mail.mail.factory.php for options
$config['mail']['backend'] = 'smtp';
$config['mail']['params'] = array(
'host' => 'localhost',
'port' => 25,
);
#For incoming email, if enabled. Defaults to site server name.
$config['mail']['domain'] = 'io3.ch';


#exponential decay factor for tags, default 10 days
#raise this if traffic is slow, lower it if it's fast
$config['tag']['dropoff'] = 86400.0 * 10;

#optionally show non-local messages in public timeline
$config['public']['localonly'] = false;

#Do notice broadcasts offline
#If you use this, you must run the six offline daemons in the
#background. See the README for details.
$config['queue']['enabled'] = true;

#The following customise the behaviour of the various daemons:
$config['daemon']['piddir'] = '/var/run';
#
# trivial: user 'runasthis' muss lokal existieren
$config['daemon']['user'] = 'runasthis';
$config['daemon']['group'] = 'runasthis';

#
# auf false wegen: siehe weiter oben
$config['memcached']['enabled'] = false;
$config['memcached']['server'] = 'localhost';
$config['memcached']['port'] = 11211;

#Twitter integration source attribute. Note: default is Laconica
$config['integration']['source'] = 'Laconica';
Die Baustelle ist hier, aber nur mit Helm zu betreten. Die Installation wird wohl mehr down als up sein bis Weiteres. Und in Sachen favicon hab ich gelernt:
upload this file to the root directory of your website. For some reason the execute bit has to be set on this file for apache to use it. If you have shell access, type: "chmod +rx favicon.ico".

Then edit "/etc/httpd/conf/httpd.conf" and inserted the following line:

"AddType image/x-icon .ico"

Then restart your apacheserver, and voila!
Was jeweils unter dem Logo steht, ist definiert für's Deutsch in /var/www/locale/de_DE/LC_MESSAGES/laconica.po

#
# monit gab trouble, aktuell läuft der nicht
#
# MONITBESCHREIBUNG START
#
mit monit die laconica-daemons checken:

aptitude install monit
in /etc/monit/monitrc am ende einkommentieren:
include /etc/monit.d/*
dann /etc/monit.d/laconica so füllen (ACHTUNG: den Teil "468io3" anpassen an "$config['xmpp']['resource'] = 'was-hier-bei-dir-steht';" in config.php!):
check process xmppdaemon with pidfile /var/run/xmppdaemon.468io3-listen.pid
group laconica
start program = "/var/www/scripts/startdaemons.sh"
stop program = "/var/www/scripts/stopdaemons.sh"
if 5 restarts within 5 cycles then timeout

check process jabberqueuehandler with pidfile /var/run/jabberhandler.468io3-queuehandler.pid
group laconica
start program = "/var/www/scripts/startdaemons.sh"
stop program = "/var/www/scripts/stopdaemons.sh"
if 5 restarts within 5 cycles then timeout


check process publicqueuehandler with pidfile /var/run/publichandler.468io3-public.pid
group laconica
start program = "/var/www/scripts/startdaemons.sh"
stop program = "/var/www/scripts/stopdaemons.sh"
if 5 restarts within 5 cycles then timeout


check process xmppconfirmhandler with pidfile /var/run/xmppconfirmhandler.468io3-confirm.pid
group laconica
start program = "/var/www/scripts/startdaemons.sh"
stop program = "/var/www/scripts/stopdaemons.sh"
if 5 restarts within 5 cycles then timeout


check process smshandler with pidfile /var/run/smshandler.generic.pid
group laconica
start program = "/var/www/scripts/startdaemons.sh"
stop program = "/var/www/scripts/stopdaemons.sh"
if 5 restarts within 5 cycles then timeout


check process ombhandler with pidfile /var/run/ombhandler.generic.pid
group laconica
start program = "/var/www/scripts/startdaemons.sh"
stop program = "/var/www/scripts/stopdaemons.sh"
if 5 restarts within 5 cycles then timeout
Dann /etc/init.d/monit start
Dann checkt monit alle 3 Minuten ob die daemons noch laufen. Und startet sie alle, falls einer nicht mehr tut. Das ist etwas grob, zugegeben, aber für den Moment OK.

#
# MONIT BESCHREIBUNG STOP (monit ist aktuell off)
#

Und weil die laconica-daemons manchmal trotzdem nicht mehr tun, wie sie sollten noch das da:
neues file /irgendwo/stop-start
(make it executable!) mit:
#!/bin/sh
/var/www/scripts/stopdaemons.sh
sleep 5
/var/www/scripts/startdaemons.sh

in /etc/crontab diese Zeile ergänzen
(jede Stunde 1 Mal laufen lassen):

35 * * * * root /irgendwo/stop-start >> /dev/null 2>&1