Archiv der Kategorie: Schule

A Time Tracker

Ich nutze seit dem 01.08.2016 A Time Tracker (bei FDroid zu haben) als Zeiterfassungssoftware auf dem Smartphone – und das für mich überraschend diszipliniert und an vielen Stellen evtl. auch übergenau. Verlasse ich den Schreibtisch oder die SItzung etc., stoppe ich die Zeiterfassung.

Da das RP wie jedes Jahr um Pfingsten meinen Tätigkeitsbericht haben wollte, wollte ich mir die Arbeit nun erleichtern und zum ersten Mal einen echten Stundenzettel einreichen. Das klappte nur bedingt. Einerseits ist das RP-Formular dafür nicht gemacht, weil es sich nicht interessiert, wie viel man gearbeitet hat, sondern nur dafür, wie viele Stunden Unterricht ausgefallen sind, während man als Landesbeamter andere Dienstaufträge erfüllte.

Andererseits ging ich zuerst den falschen Weg und exportierte mir die SQLite Datenbank aus A Time Tracker (Mehr – Auf Speicher sichern). Mit der konnte ich lokal auf dem Rechner aber wenig anfangen: die Zeiten sind als Unix timestamps abgelegt, müssen also zuerst konvertiert werden und auch die Zuordnung von IDs zu den Tätigkeitsbezeichnungen ist derart auf einzelne Tabellen verteilt, dass das Zusammenführen viel zu viel Mühe macht.

Eine Übersicht über die eigene Arbeitszeit lässt sich aus dem CSV Export viel zügiger erstellen:

  1. Mehr – Zeitbereich ändern – Alle
  2. Mehr – Ansicht nach CSV exportieren

A Time Tracker legt die timetracker.db wie auch die all.csv auf der obersten Ebene des Nutzerverzeichnisses auf dem Smartphone ab – hier ist das /storage/emulated/0/.

Die Konvertierung von Unix timestamps ins Format YYYY-MM-DD HH-MM-SS wird von der App vorgenommen. Der Import nach LibreOffice gelingt ohne Mühe.

Formatiert man die Zellen für die Summen im Format [HH]:MM:SS, unterlässt LibreOffice jegliche Umrechnungen und addiert schlicht die Zeiten in Richtung Stunden. Entscheidend ist die eckige Klammer um das HH!

Man kann dann mit dem üblichen =SUMME(FeldA:FeldZ) rechnen, statt sich permanent zu wundern, was LibreOffice da gerade macht, und die Daten auch grafisch darstellen etc. pp.

Ganz hübsch erhellend für mich war, dass ich schon vor Monaten meine vorgesehene Jahresarbeitszeit „durch“ hatte. Dabei ist das Schuljahr noch nicht einmal zu Ende. Auch erhellend war die Verteilung meiner Stunden auf die von mir in A Time Tracker angelegten Kategorien. Ich weiß nun, wo ich mehr darauf achten muss, mich nicht zu sehr vereinnahmen zu lassen. Ich muss „Nein“ noch üben.

DocSearch

Zum Thema Dokumentenindexierung in DokuWiki habe ich heute für meine Schule gebastelt. Hier der technischere Teil der Dokumentation dazu.

Nach der Installation des Plugins DocSearch in DokuWiki den Konverter Apache Tika als JAR Datei nach /opt/tika legen. Den Ordner /opt/tika an www-data rekursiv und mit den Rechten 750 übergeben. Evtl. openjdk JRE nachinstallieren. Die headless Version reicht aus.

Kontrollieren, ob PHP genug RAM erhält. Das memory_limit in /etc/php5/apache2/php.ini sollte über 256MB liegen.

Die /pfad/zu/dokuwiki/lib/plugins/docsearch/conf/converter.php.dist nach converter.php kopieren und anpassen. Meine sieht nun so aus:

#<?php die() ?>
# PHP include hack

#
# Use this file to setup the document to text converter.
#
# The plugin trys to convert every media document to a text file. On this
# progress it uses a given set of external tools to convert it.
# This tools are defined per file extension.
#
# The config stores one extension and it's tool per line.
# You can use %in% and %out% for the input and output file.
#
pdf     /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
doc     /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
odt     /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
docx    /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
ppt     /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
odp     /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
pptx    /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
rtf     /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
xls     /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
ods     /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%
xlsx    /usr/bin/java -jar /opt/tika/tika-app-1.13.jar -t -eUTF-8 -r %in% > %out%

Dann einen Testlauf starten und die Fehler einsammeln:

sudo -u www-data php /var/www/dokuwiki/lib/plugins/docsearch/cron.php

Evtl. sollte das Paket ttf-mscorefonts-installer nachinstalliert werden, um weniger Fontmeldungen um die Ohren gehauen zu bekommen. Ein

touch /var/www/.pdfbox.cache
chown www-data.www-data /var/www/.pdfbox.cache
chmod 750 /var/www/.pdfbox.cache

behebt noch ein paar Kleinigkeiten in der Fehlerausgabe.

Der Lauf frisst Zeit und Ressourcen. Der cronjob sollte dies berücksichtigen. Mein Eintrag in die /etc/crontab sieht so aus

23 1     * * *  www-data /usr/bin/php /var/www/dokuwiki/lib/plugins/docsearch/cron.php > /var/log/tika.log

läuft also nur einmal in der Nacht los.

Was nicht in den Griff zu bekommen sein wird, sind die vielfältigen Windows-only-Fonts, die in vielen Dokumenten verbaut sind. Da wird Tika auch in Zukunft maulen müssen. Das heißt konkret: www-data erhält E-Mails! Es empfiehlt sich deswegen einen Alias für www-data anzulegen und die Mails auf das eigene Konto zu lenken, will man nicht vom Mailserver mit Fehlern zu unzustellbaren E-Mails zugemüllt werden. Oder man lenkt die Ausgabe des Cronjobs nach /dev/null um, erfährt dann aber auch nix über reparable Fehler.

LDAPs von MRBS 1.5 auf LD-Server

Ein auf einem externen Server (z.B. bei Hetzner) gehostetes MRBS kann mit den folgenden Einstellungen per LDAPs gegenüber dem internen SBE-Serverchen mit openLDAP authentifizieren:

$auth["type"] = "ldap";
unset($auth["admin"]);
$auth["admin"][] = "admin";

$ldap_host = "ldaps://123.123.123.123"; // IP des Schulservers
$ldap_port = 636;
$ldap_v3 = true;
$ldap_tls = true;
$ldap_base_dn = "ou=users;dc=schule,dc=ort,dc=schule-bw,dc=de";
$ldap_user_attrib = "uid";
$ldap_filter = "|(ldRole=teacher)(uid=admin)";
$ldap_disable_referrals = TRUE;

//$ldap_debug = TRUE; // Nur drin lassen wenn es nicht funzt

Die obigen Einträge beziehen sich auf die Datei config.inc.php im Verzeichnis /pfad/zu/mrbs/web. Debugmeldungen von MRBS (sofern oben einkommentiert) finden sich in der error.log des Apachen. Der Filter stellt hoffentlich sicher, dass nur Lehrer/innen sich anmelden können. Um MRBS zusätzlich gegenüber Einsichtnahmen durch Zweite abzusichern, muss der Login erzwungen werden. Dazu

// Datenschutz

 if( ! getAuthorised(1))
   {
    showAccessDenied($day,$month, $year, $area);
    exit();
   }

nach den Includes in alle nur erdenklichen und über Netz erreichbaren PHP Dateien (month.php, day.php, week.php, search.php, report.php usw) setzen.

Die anderen hier im Blog zu findenden Hinweise zur Konfiguration von LDAPs gegen einen SBE Server sollte man sich ebenfalls mal ansehen, wenn es mit den Einträgen oben nicht tun will. Es gibt einige Wände, vor die man laufen kann.

Writer2DokuWiki

Bisher nutzte ich für die Konvertierung von Texten für DokuWiki das Plugin Writer2Dokuwiki und hatte wenig Probleme. Das jetzt frisch verfügbare LibreOffce 5.1 schmiert mir hierbei jedoch kommentarlos ab, so dass ich auf die Schnelle eine andere Möglichkeit brauchte. Diese ist nun eine Kombination aus tidy und pandoc.

loexportformat

In LibreOffice wird das Exportformat für HTML Dateien zuerst unter /Extras /Optionen /Laden-Speichern /HTML-Kompatibilität auf UTF-8 umgeschaltet.

Über /Datei /Speichern unter wird nun das HTML-Format ausgewählt und die Datei gespeichert.

Hinweis: Der Exportdialog unter /Datei /Exportieren… erzeugt XHTML Dateien, die noch schwerer zu putzen sind. Also nutze ich diese Funktion nicht.

Der von LibreOffice erzeugte HTML-Code ist grauenhaft. Also muss dieser mit tidy geputzt werden. Die tidy.conf liegt hierbei in meinem Stammordner im dortigen ~/bin Verzeichnis:

# /home/dirk/bin/tidy.conf

clean: yes
drop-proprietary-attributes: yes
drop-empty-paras: yes
output-html: yes
input-encoding: utf8
output-encoding: utf8
join-classes: yes
join-styles: yes
show-body-only: yes
force-output: yes

Ein

tidy -q -config /home/dirk/bin/tidy.conf -i inputdatei.html | sed 's/ class="c[0-9]*"//g' > geputzt.html

wirfft weg, was wir nicht brauchen. Ein bischen class=western kann dabei übrig bleiben, tut aber nicht weiter weh.

Als nächstes kommt pandoc in einer Version größer gleich 1.13 zum Einsatz (unter Ubuntu 15.10 vorhanden):

pandoc -s -r html geputzt.html -t dokuwiki > fuerdokuwiki.txt

Die TXT Datei dann mit einem Editor öffnen und den Inhalt in DokuWiki einfügen. Voila. Zusammen macht das dann

tidy -q -config /home/dirk/bin/tidy.conf -i inputdatei.html | sed 's/ class="c[0-9]*"//g' | pandoc -s -r html -t dokuwiki > dokuwiki.txt ; kate dokuwiki.txt

oder gleich als Skript verpackt:

#!/bin/bash
tidy -q -config /home/dirk/bin/tidy.conf -i $1 | sed 's/ class="c[0-9]*"//g' | pandoc -s -r html -t dokuwiki | leafpad

Das klappte hier mit less und leafpad, das von mir sonst bevorzugte kate wollte nicht von stdin lesen. Da muss ich noch einmal nachsehen, woran das lag.

Man kann auch den Aufruf von LibreOffice und damit den ersten Schritt in das Skript integrieren, sofern die (angelieferten) Dokumente mit Formatvorlagen erstellt wurden. Das ist in meinem Kollegium hoffnungslos – aber im Prinzip ginge ein

soffice --headless --convert-to html:HTML datei.doc

Quellen: [1] [2]

Redis Server und HSTS für ownCloud

Im Backend vermeldete ownCloud schon längere Zeit, dass es einen funktionierenden PHP Memory Cache vermisse. Bisher war mir das relativ egal, weil ich nicht viele Dateien und auch nicht viele Nutzer/innen hatte. Das hatte sich in den letzten Wochen und Monaten aber gründlich geändert, so dass ich bei drei meiner oC Installationen tätig werden musste. Nach dem Update auf oC 8.2.2 und Dank etwas freier Zeit ging ich das Problem endlich an.

APC und APCu waren zwar bei allen Servern an Bord, aber unter Ubuntu 14.04 und PHP5 „zu alt“. Ich probierte es mit Redis. Hier ist das PHP5 Modul von Ubuntu 14.04 zwar ebenfalls zu alt, aber es gibt in den PECL Repositories einfach zu installierenden Ersatz.

Ein

dpkg -l | grep php5-redis

klärt, ob ein solches PHP Modul installiert ist. Wenn ja, dann muss dieses zuerst runter vom Server. Danach kann der Redis Server an Bord:

apt-get install redis-server

Ein Blick in

/etc/redis/redis.conf

sollte ergeben, dass Redis an 127.0.0.1 lauscht und somit nicht von außen zu erreichen ist. Wer sich nicht sicher ist, kann von außen mit telnet nachsehen. Weiter sollte ein

service redis-server status

zeigen, dass der Redis-Server auch läuft.

Um PECL nutzen zu können benötigen wir noch die folgenden Pakete

apt-get install php-pear php5-dev

Wer, wie ich hier, Horde5 über PEAR bezieht, hat die Pakete schon. Ein

pecl install redis

bringt dann ein frischeres php Modul für Redis an Bord. Am Ende der Installation weißt PECL darauf hin, dass dieses Modul der vorhandenen PHP Umgebung bekannt gegeben werden muss. Da hilft

echo 'extension=redis.so' > /etc/php5/mods-available/redis.ini
php5enmod redis
service apache2 restart

Dann wird der Memory Cache ownCloud in

/pfad/zu/owncloud/config/config.php

bekannt gegeben, indem der folgenden Code ans Ende gehängt wird (vor die letzte schließende Klammer):

  'memcache.local' => '\\OC\\Memcache\\Redis',
  'filelocking.enabled' => 'true',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' =>
    array (
      'host' => 'localhost',
      'port' => 6379,
      'timeout' => 0,
      'dbindex' => 0,
     ),

Im Backend von ownCloud herrscht nun etwas mehr Ruhe.

Was ownCloud leider nicht überprüft ist, ob es überhaupt über HTTP zu erreichen ist. Es schimpft immer über eine fehlende HSTS Konfiguration, bis eine solche eingerichtet ist.

Das ist mit

a2enmod headers

und dem Eintrag

Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"

für die ownCloud Domain dann nach einem Neustart des Apachen auch erledigt, hat aber Nebenwirkungen: HTTP Verbindungen sind hiermit für die gesamte Domain ab dem ersten Aufruf über HTTPS für den Client-Browser erledigt. Muss man wollen.

Geholfen beim Einrichten haben mir die folgenden empfehlenswerten Quellen: 1, 2, 3, 4

HWS, Korrekturen und Schwerkraft

IMG_20151129_105834

Menschen mit HWS-Schäden sollten nicht lange nach Unten blicken. Und: Es gibt Tage (leider auch Wochen) in denen der Blick nach Unten überhaupt nicht geht. Die Krümmung der Halswirbelsäule erzeugt umgehend starke Schmerzen und auch Ausfallerscheinungen neurologischer Art.

Am Rechner kann man sich seinen Arbeitsplatz dann so einrichten, dass der Bildschirm oben steht. Die Arbeit am Laptop (Blick geht da meist nach Unten) muss ja nicht sein und wenn kein anderes Arbeitsgerät vorhanden ist, dann hilft ein externer, höher gestellter Monitor.

Dumm nur, wenn man korrigieren sollte und das zu Korrigierende lediglich in Papierform vorliegt. Denn: Alle von mir bisher verwendeten Korrekturstifte (ich hab eine Vorliebe für die Tintenroller von Mitsubishi, wenn ich nicht mit Füller arbeite) brauchen Schwerkraft, um die Tinte von der Patrone zur Spitze zu bringen. Man kann mit derartigen Geräten nicht im Stehen arbeiten (waagrechte Stiftausrichtung, Klemmbrett an der Wand mit der Schülerarbeit daran) und selbst die Neigung des Stiftes beim Arbeiten mit Klemmbrett auf den hochgestellten Knien im Sitzen, was zumindest die HWS-Krümmung reduziert, führt schnell zu Aussetzern beim Tintenfluss. Der Korrekturgriffel muss schnell pausieren, wieder nach unten gerichtet eingeschrieben werden und erst nach einer Weile darf man weitermachen. Das nervt. Drei bis vier Stifte im Paralleleinsatz sowie ein Stiftständer kompensieren dies ein wenig. Das Einschreiben entfällt jedoch nicht zuverlässig. Also: Alle Arbeiten zuerst auf den Scanner legen und dann mit der Bildbearbeitung korrigieren? Das klang für mich nach der allerletzten Möglichkeit. Den enormen Arbeits- und Zeitaufwand hätte ich gerne vermieden.

Mir scheint, es gibt nur zwei Schreibgeräte, mit denen man dem Zusammenhang zwischen Tinte und Schwerkraft ein Schnippchen schlagen kann: Buntstifte (Blei) und Weltraum-Kugelschreiber.

Buntstifte, dachte ich, fallen aus, weil diese nicht Dokumentenecht sind. Da kam ich heute Morgen ins Umdenken.  Ich beschloss, dass mir das egal ist. Ich wollte die Arbeiten schlicht fotografieren und so den Korrekturstand sichern. Außerdem zeigten erste Radiertests, dass weiche Buntstifte so ölig sind, dass Löschungen sichtbar bleiben. Also auf in den Schreibwarenladen. Und da stellte ich dann fest: Es gibt dokumentenechte Buntstifte. In rot! Die Rettung für den Moment war gefunden.

Das Problem bleibt für die Zweit- und Drittkorrektur bestehen. Grüne dokumentenechte Stifte sind zwar auch vorhanden – aber braun fehlt und außerdem ist mir das zu heikel für das rechtliche Tamtam rund ums Abitur.

Bestellt habe ich mir nun den Fisher Space Pen. Außerdem soll es mit dem Mitsubishi SNP-7 einen weitaus günstigeren uniball Stift mit Gasdruckmine geben, den ich auch noch auftreiben will. Für beide gibt es zumindest rot, für den Fisher auch noch die anderen benötigten Farben. Weiter habe ich bei meiner Suche noch eine Firma “nebenan” gefunden. Schmidt sitzt in St. Georgen und stellt Gasdruckminen mit farbigem Inhalt unter der Bezeichnung Schmidt MegaLIne Pressurized Refills her, die allerdings hier kaum im Handel zu finden sind.

Gasdruckminen müssten Korrekturen auf der ISS möglich machen. Da fühlt man sich nach einigen Klausuren so oder so besser aufgehoben.

7ZIP Gui

7-ZipDateimanager_001

Ich kann kaum einem meiner Kollegen zumuten, Befehlsfolgen wie

7za a archiv.7z -mhe -p datei.end

einzugeben, nur um ein verschlüsseltes Archiv mit 7ZIP zu erstellen und nicht einmal ein

7za x archiv.7z

würde sich verkaufen lassen. Shell ist schwarz. Schwarz ist böse. Was sich nicht klicken lässt, geht nicht. Also muss ein GUI her.

Da wir schulisch KDE einsetzen (mit einem Theme, das so schwer nach Win7 aussieht, dass sicherlich manche noch nicht einmal gemerkt haben, dass es gar kein Windows ist) war auch die Integration in das Kontextmenü gewünscht.

Alles das wird geliefert von: http://tomtomtom.org/p7zip-gui/

Eine evtl. auftretende Fehlermeldung ala

Fehler traten auf beim Bearbeiten von:

wird mit einem

sudo apt-get install -f

beantwortet, das die fehlenden Pakete nachzieht.

Bonding

IMG_20150805_162906-cut

Zwischenstadium beim Einrichten. Ein Upllink zu BelWue und der erste 4-er-Bond/Trunk zum Server.

Mit vier Netzwerkkabeln vom Server zum Core-Switch und vom dem aus weiter mit jeweils 4 Kabeln zum nächsten …

apt-get install ifenslave-2.6 net-tools ethtool

Die /etc/network/interfaces dazu

# The loopback network interface
auto lo
iface lo inet loopback

# Erst alle echten Interfaces hochziehen
auto eth0
iface eth0 inet manual
        bond-master bond0

auto eth1
iface eth1 inet manual
        bond-master bond0

auto eth2
iface eth2 inet manual
        bond-master bond0

auto eth3
iface eth3 inet manual
        bond-master bond0

# Trunk0 / Bond0
auto bond0
iface bond0 inet manual
        bond-slaves eth0 eth1 eth2 eth3
        bond-mode 0

# VLAN   FARBE   INHALT
# 100    BLACK   KABEL BW / Fritz BOX
# 101    GREY    Infrastruktur (Switches etc.)
# 102    RED     BELWUE Netze
# 20     BROWN   VWNetz
# 40     GREEN   paedagogisches Netz
# 41     BLUE    WLAN public (päd. Netz)
# 50     PINK    WLAN lehrer

# The LINK to BELWUE
auto bond0.102
iface bond0.102 inet static
        address xxx.xx.xx.194
        netmask 255.255.255.240
        network xxx.xx.xx.192
        broadcast xxx.xx.xx.207
        gateway xxx.xx.xx.193
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers xxx.xx.xx.4
        dns-search domain.tld
        # iptables vorbereiten - evtl. unnoetig
        up sysctl -w net.ipv4.ip_forward=1
        up modprobe ip_tables iptable_nat
        # Portweiterleitung von K9393 auf B443 fuer OMD
        up iptables -t nat -A PREROUTING -p tcp -i bond0.102 --dport 9393 -j DNAT --to-destination 192.168.0.2:443
        up iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 9393 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


auto bond0.101
iface bond0.101 inet static
        vlan-raw-device bond0
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        dns-nameservers 127.0.0.1
        dns-search grey
        # add NAT / Masquerade for grey network
        up sysctl -w net.ipv4.ip_forward=1
        up modprobe ip_tables iptable_nat
        up iptables -A FORWARD -o bond0.102 -i bond0.101 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
        up iptables -A FORWARD -o bond0.102 -i bond0.101 -s 192.168.0.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
        up iptables -t nat -A POSTROUTING -o bond0.102  -j MASQUERADE

auto bond0.40
iface bond0.40 inet manual
        vlan-raw-device bond0
        up ifconfig $IFACE up
        down ifconfig $IFACE down

auto bond0.41
iface bond0.41 inet manual
        vlan-raw-device bond0
        up ifconfig $IFACE up
        down ifconfig $IFACE down

auto bond0.50
iface bond0.50 inet manual
        vlan-raw-device bond0
        up ifconfig $IFACE up
        down ifconfig $IFACE down

auto bond0.20
iface bond0.20 inet manual
        vlan-raw-device bond0
        up ifconfig $IFACE up
        down ifconfig $IFACE down

Im Switch die Trunks einrichten und die VLANs den Trunks zuweisen. Reboot. Tut.

IMG_20150810_165043-2

Die zentralen Switches sind nun verkabelt und auch der Neubau hängt mit immerhin 2 Glasfasterleitungen an der Strippe.

Zuerst hatten wir Mode 4 eingerichtet. Die Geschwindigkeit war aber enttäuschend. Mit Round Robin / Mode 0 geht jetzt aber heftig mehr durch die Leitungen, wenn auch nicht das 4-fache. Außerdem: Einzelne Räume bleiben etwas magerer angebunden – z.B. der Neubau, der nun mit „nur“ 2 Glasfaserleitungen am Core-Switch hängt.

Tunnelbau

Die OMD steht in der Schule hinter der Dom0, die für diesen Rechner gleichzeitig das Gateway ins Netz ist:

cat /proc/sys/net/ipv4/conf/eth0/forwarding 
cat /proc/sys/net/ipv4/conf/eth0/forwarding

Die Ausgabe muss jeweils 1 lauten.

Zwei iptables Regeln sorgen dafür, dass die Ports und der Traffic zur OMD durchgereicht werden:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 9393 -j DNAT --to-destination 192.168.0.2:443
iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 9393 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Ein Aufruf von https://domnullundgateway.tld:9393/checkmk/ sorgt so dafür, dass Anfragen an die OMD, die intern unter https://192.168.0.2 zu erreichen ist, weiter geleitet werden.

Damit man diese Regeln nicht immer wieder neu setzen muss, stehen sie in /etc/network/interfaces am Ende der Konfiguration der Netzwerkkarte eth0 jeweils nach einem up.

Redmine

Der Projektmanager und Bugtracker Redmine hatte es Daniel und mir angetan. Also kam dieser auf einen unserer Ubuntu 14.04 Server.

apt-get install redmine redmine-sqlite libapache2-mod-passenger

Dann die Konfigurationsdateien anpassen:

# /etc/apache2/mods-available/passenger.conf
PassengerDefaultUser www-data

und

# /etc/apache2/sites-available/default-ssl.conf
<Directory /var/www/pfad/zu/redmine>
    RailsBaseURI /redmine
    PassengerResolveSymlinksInDocumentRoot on
</Directory>

Wichtig ist hier, dass der Eintrag für den DocumentRoot des bearbeiteten VirtualHost nicht ganz woanders hinzeigt, sonst fliegt PassengerResolveSymlinksInDocumentRoot auf die Nase (weitere Infos hier). Also im zugehörigen VirtualHost Eintrag prüfen, ob er stimmt:

DocumentRoot /var/www/pfad/zu

Redmine versymlinken:

ln -s /usr/share/redmine/public /var/www/pfad/zu/redmine

Die Konfigurationsdatei für Redmine an Ort und Stelle kopieren:

cp /usr/share/redmine/config/configuration.yml.example /etc/redmine/default/configuration.yml

Dort Sendmail für den Default Mode freischalten (funktioniert selbstverständlich auch mit Postfix):

# default configuration options for all environments
default:
  email_delivery:
    delivery_method: :sendmail

Bei Bedarf ebenda den Pfad für die Attachments überarbeiten. Der Default Pfad ist

/var/lib/redmine/default/files

wo dann Unterordner nach Datum des Uploads angelegt werden. Wer das anders haben will kann sich z.B. unter /var/www/pfad/zu/redmin_files anlegen, dem Apachen daran alle Rechte geben und den veränderten Pfad dann in configuration.yml eintragen:

# attachments_storage_path: /var/www/pfad/zu/redmine_files
  attachments_storage_path:

Das Apache Modul aktivieren und die Konfiguration neu laden:

sudo a2enmod passenger
sudo service apache2 restart

Leider enden hier viele Installationsanleitungen. Ich musste wie folgt weiter bauen:

Zuerst schien es mir so, als ob Ruby ohne bundler und sqlite3 Fähigkeiten nichts mit Redmine anzufangen wusste. Ich sah beim Aufruf nur eine leere Seite. Das hier half weiter:

gem install bundler sqlite3

Jetzt bekam ich wenigstens eine Fehlermeldung über eine fehlende und nicht beschreibbare Gemfile.lock Datei zu sehen. Ein

touch /usr/share/redmine/Gemfile.lock
chown www-data.www-data /usr/share/redmine/Gemfile.lock
service apache2 restart

setze die Datei an die gewünschte Stelle und machte Redmine läuffähig. Mit admin admin kann man sich anmelden und aus Redmine heraus die restliche Konfiguration anpassen.

Was dann noch fehlt war die Anbindung über LDAPs an den hausinternen Server. Redmine bringt ein LDAP Modul schon mit, also muss man nur die richtigen Einträge für einen LD-Server herausfinden. Geklappt hat es hiermit:

Name: Anbindung_LD-Server
Host: ip.adresse.des.servers
Port: 636 
BaseDN: dc=schule,dc=ort,dc=schule-bw,dc=de

On the fly Benutzererstellung: True

Login = uid
Firstname = givenName
Lastname = sn
Email = mailPrimaryAddress

Geholfen haben mir bei der Arbeit die folgenden Anleitungen: [1] [2] [3]