vsftp mit chroot für sehr eingeschränktes FTP

Für verschiedene Dienste bekommen wir stündlich, beziehungsweise täglich Daten von unseren Partnern. Diese Systeme verwenden FTP für den Transfer, weshalb wir einen eigenen FTP-Server (vsftp) betreiben müssen. Der Zugriff wird mehrstufig abgesichert: Firewall-Regeln, die den Dienst auf das Subnetz des Partners einschränken FTP-Zugriff auf die entsprechenden User einschränken. Dazu wird die vsftp.conf um folgende Einträge ergänzt: userlist_deny=NO userlist_enable=YES userlist_file=/etc/vsftpd.user_list Das entsprechende /etc/vsftpd.user_list File enthält nur die Benutzernamen der erlaubten FTP-Accounts (einer pro Zeile) [Weiterlesen]
chroot  ftp  Ubuntu 

Cordova/Phonegap Plugin als Android Service

Das Problem App-Entwicklung mit Cordova funktioniert großartig. Beim Aufzeichnen von GPS Tracks stößt man aber an die Grenzen der Technologie, da es keine Möglichkeit gibt, einen Prozess zu starten, der nicht automatisch vom System beendet werden kann. Dazu benötigt man ein Plugin… Ein Android Service Mit ein wenig Java Kenntnissen ist es einfach einen Hintergrund-Dienst (Service) als Plugin für Cordova zu realisieren. Android kann den Service zwar auch beenden, startet ihn aber sofort wieder, wodurch das GPS tracking fortgesetzt wird. [Weiterlesen]

Snapshot Backups der virtuellen Maschinen

Nach dem letzten Crash bin ich dazu übergegangen die virtuellen Maschinen jede Nacht per lvm-snapshot mit lzop komprimiert zu sichern. Eine separat eingebaute Festplatte (/mnt/backup) hält diese backups. Das ultra-kurze Skript dazu sieht so aus: #!/bin/bash LVMS="snowhow komplett root" VG=vg0 BUP_DST=/mnt/backup/snapshot_vms NICE=15 VERBOSE=0 ## cron needs full path to commands LVCR=/sbin/lvcreate LVRM=/sbin/lvremove LVS=/sbin/lvs VIRSH=/usr/bin/virsh while getopts ":vl:" opt; do case $opt in v) VERBOSE=1 ;; l) LVMS=$OPTARG ;; esac done function doBackup { logger -t SNAPSHOT_BACKUP "starting backup for $LV" if [ -f $BUP_DST/$LV-snap. [Weiterlesen]

Mapnik tiles für einen Ausschnitt neu erzeugen

Mapnik tiles für einen Ausschnitt neu erzeugen
Unsere Basiskarte wird laufend um Informationen ergänzt (zum Beispiel ein Shapefile mit Skipisten). Nach einer solchen Ergänzung soll nicht der gesamte Karten-Cache (mod_tile/renderd) neu gerechnet werden, sondern nur der Ausschnitt in dem Veränderungen stattgefunden haben. Lösung Drei Schritte um die Kartenkacheln neu zu erzeugen: Extent des Shapefiles ermitteln ogrinfo -geom=SUMMARY pp.shp pp ... Extent: (11.015149, 46.848712) - (11.085476, 46.911385) ... Liste der Tiles für diesen Ausschnitt erzeugen Die maximale Zoomstufe meiner Karte ist 17. [Weiterlesen]

HTTP requests aus Javascript auf der Entwicklermaschine

Ein Problem, das vermutlich mehrere Entwickler haben, die in einer Web-Applikation mit Javascript auf ein backend zugreifen: Entwicklet wird auf der lokalen Maschine, das backend liegt (zum Entwickeln) auf einem anderen Server. Browser lassen HTTP-Requests in Javascript von localhost auf eine andere Domain nicht zu (hier gilt die same origin policy). Auf den Seiten des Mozilla Developer Network wird sehr übersichtlich erklärt, wie man diese Einschränkung sicher umgehen kann. Da wir im content der requests json verschicken müssten unsere Zugriffe recht aufwändig als preflighted requests behandelt werden. [Weiterlesen]

OSMAnd-App

OSMAnd-App
Die tolle OSMAnd-App für Android bietet ein reichhaltiges Set von Funktionen für mobile Kartenanwendungen. Unter anderem ist es auch möglich, eigene Tile-Layer einzubinden. Hier die einfache Variante für Tiles vom mapnik Server: Im Verzeichnis /sdcard/osmand/tiles einen Ordner anlegen (hier snowhow). In diesem Ordner die Datei .metainfo mit folgendem Inhalt erzeugen: shell@android:/sdcard/osmand/tiles/snowhow $ cat .metainfo [url_template] http://mein.tileserver.com/osm/{0}/{1}/{2}.png [ext] .png [min_zoom] 1 [max_zoom] 17 [tile_size] 256 [img_density] 8 [avg_img_size] 18000 Und wenn die Tiles im TMS-Format vorliegen (also mit umgedrehter y-Achse), auch kein Problem: [Weiterlesen]

Server-backup mit duplicity auf Amazon S3

Das Backup für PCs und Laptops macht Backuppc sehr fein, aber für die Root-Server braucht es eine andere Lösung. Duplicity macht gpg-verschlüsselte Backups und unterstützt die unterschiedlichsten Endpunkte wie ftp, rsync, scp, ssh, webdav[s] und auch Amazon S3. Hier mein Mini-Bash-Skript mit dem ich meine Server dorthin sichere: Das Skript entstand in Anlehnung an ein Backup-Skript von Hetzner, wobei ich es noch weiter vereinfacht und auf S3 umgestellt habe. Backups werden 60 Tage aufbewahrt, wobei alle 30 Tage ein volles Backup gemacht wird. [Weiterlesen]

No space left on device?

Nachdem der Server eigenartige Verhaltensweisen an den Tag legte und im syslog die Meldung „No space left on device“ erschien, war ich einigermaßen verwundert: Immerhin zeigte df an, dass alle relevanten Partitionen mehr als 50% freien Speicher haben. Ein Lesefehler auf der (virtuellen) Festplatte? Glücklicherweise nicht. Das Kommando tune2fs -l /dev/mapper/vg0-var brachte die entscheidende Information ans Licht: ... Filesystem OS type: Linux Inode count: 10076160 Block count: 40296448 Reserved block count: 2014822 Free blocks: 12087119 Free inodes: 9 First block: 0 Block size: 4096 . [Weiterlesen]
df  inodes  linux 

SSD – Super Speed Disk

Ja, ich weiß, das ist inzwischen ein alter Hut, aber auch mir hing die Kinnlade herunter und die Augen starrten ungläubig auf den Laptop: Boot in 5 Sekunden (mit Apache/MongoDB/MySQL) und Firefox-Start in unter einer Sekunde. Hardware-Upgrade Nach langem Zögern wurde jetzt doch investiert: Der Dell-Laptop L502x (Core i5-2410M) mit 4GB Ram bekommt eine Samsung-SSD und wird auf den maximalen Arbeitsspeicher von 8GB aufgerüstet. Rund 150 EUR kostet die Hardware dafür und der Unterschied ist wie eingangs beschrieben, unbeschreiblich. [Weiterlesen]
hdparm  SSD 

Von jqplot Diagrammen zu einer PDF Datei

Von jqplot Diagrammen zu einer PDF Datei
ich sags gleich, ein steiniger Weg. Die Anforderung Zum Zweck der analogen Archivierung musste ich für ein aktuelles Projekt (CHES) eine moderne HTML-Seite (mit mehreren Canvas-Elementen) in eine druckbare Form bringen. Mit CSS-Anweisungen ist es mir nicht gelungen, nur in zwei modernen Browsern ein halbwegs vergleichbares Layout zu Papier zu bringen. Mit viel Javascript ging es eher in diese Richtung, aber im dritten Browser war dann auch da wieder alles anders. [Weiterlesen]