Notfunk Telefonanlage
der DARC startete vor einiger Zeit eine Beta-Phase für eine Notfunkanlage, die auf Dockerbasis und einem kleinen Linux läuft. Nach der ersten Vorstellung habe ich diese bei mir auf einen DELL Optiplex 3070 installiert. Die Dokumentation ist super und die kleine Telefonanlage lief sehr schnell. (Link: https://www.darc.de/der-club/referate/notfunk/news/nachricht/news/notfunk-telefonanlage-geht-in-den-darc-internen-beta-test-1/)
OpenStreetMap Tile Server
Nach dem die pbx nun läuft, kam die nächste Idee, was würde man benötigen, wenn man irgendwo offline steht? Genau, eine Karte, weil in gedruckter Form hat man ja den Bereich, den man gerade braucht sowieso nicht. Auch den OpenStreetMap Server gibt es als Docker. Die Anleitung und Beispiele sind ausreichend für die Konfiguration. Der Import dauert aber einige Stunden, nach etwa 10h Import konnte ich dann die erste Map aufrufen. Dem Container sollte man etwas mehr Power geben und ich wollte, dass der sich die Map Daten selbst downloaded. Zudem noch ein paar Angeben, wann Tiles neu gerenderd werden und Updates aktiviert, geht aber nur solange, wie auch der Client online ist.
Die Dockerkonfig von mir habe ich mir mal dazu:
- name: Create docker volume
become: true
docker_volume:
name: "{{ item }}"
with_items:
- osm-data
- osm-tiles
register: osmvolume
- name: Import Docker Container
become: true
docker_container:
name: osm-server
image: overv/openstreetmap-tile-server:{{ osm_tile_server_version }}
state: started
restart: none
restart_policy: none
interactive: false
tty: yes
ports:
- "8080:80"
env:
DOWNLOAD_PBF: "https://download.geofabrik.de/europe/germany-latest.osm.pbf"
DOWNLOAD_POLY: "https://download.geofabrik.de/europe/germany.poly"
OSM2PGSQL_EXTRA_ARGS: "-C 8096"
THREADS: "16"
volumes: 'osm-data:/data/database/'
command: import
when: osmvolume.changed
- name: Get Docker details
docker_container_info:
name: osm-server
register: result
- name: Run Docker Container
become: true
docker_container:
name: osm-server
image: overv/openstreetmap-tile-server:{{ osm_tile_server_version }}
shm_size: 8g
state: started
restart: no
restart_policy: always
interactive: true
tty: yes
ports:
- "8080:80"
env:
OSM2PGSQL_EXTRA_ARGS: "-C 8096"
THREADS: "16"
EXPIRY_MINZOOM: "13"
EXPIRY_TOUCHFROM: "13"
EXPIRY_DELETEFROM: "19"
EXPIRY_MAXZOOM: "20"
UPDATES: "enabled"
REPLICATION_URL: "https://planet.openstreetmap.org/replication/hour/"
MAX_INTERVAL_SECONDS: "60"
volumes:
- 'osm-data:/data/database/'
- 'osm-tiles:/data/tiles/'
command: run
register: osmrun
when: not osmvolume.changed and (result.container['Config']['Cmd'] is search("import") and not result.container['State']['Running']) or result.container['Config']['Cmd'] is search("run")
Für das Pre-Rendering führt man im Container folgenden Befehl aus:
render_list -a -m default -z 0 -Z 13 &
In dem Container ist eine kleine Demo vorhanden, die die Karte anzeigt, in meinem Fall Deutschland. Marker und andere Elemente können nicht gesetzt werden. Dadurch kam der nächste Service gleich dazu.
HamNetDB
hamnetdb.net ist eine Datenbank mit allen hamnet Knoten, IPs und Links. Die Knoten und Links werden auch interaktiv auf einer Map angezeigt und es können Höhenprofile berechnet werden. Die ganze Seite Projekt gibt es auch als GitHub Repository: https://github.com/hamnetdb/hamnetdb. Die Installationsanleitung war jetzt nicht unbedingt die beste, aber es ist machbar. Folgende Pakete habe ich auf meinem Ubuntu installiert:
- apache2
- perl
- libdbd-mysql-perl
- mysql-server
- mysql-client
Für die ausführung der .cgi Scripten musste der Apache noch etwas angepasst werden. Dazu muss das Modul CGI (a2enmod CGI) aktiviert werden und zusätzlich habe ich in der VirtualHost Config folgendes ergänzt:
<Directory /var/www/hamnet/>
AddHandler cgi-script .cgi .pl
AddDefaultCharset UTF-8
Options FollowSymlinks ExecCGI
DirectoryIndex index.cgi index.html
AllowOverride All
Require all granted
</Directory>
Die anderen Konfigurationen können wie im Github beschrieben übernommen werden. Damit ist die HamNetDB Seite lauffähig. Nun musste nur noch der Verweis her, damit ich auch die lokale OpenSteetMap benutzen kann. Dazu muss eine Datei bearbeitet werden: /var/www/hamnet/osm/hamnetdb-lf.js
Sucht am besten nach openstreetmap und ihr findet einen "if (soure == 3)//hamnet" Block. Nach dem if, fügt ihr den else if Block hier ein und speichert das ganze.
else if (source == "local") //local
{
var mapnikUrl = 'http://' + window.location.hostname + ':8080/tile/{z}/{x}/{y}.png';
var mapnikUrl1 = 'http://' + window.location.hostname + ':8080/tile/{z}/{x}/{y}.png';
var landscapeUrl = 'http://' + window.location.hostname + ':8080/tiles_topo/{z}/{x}/{y}.png';
var cycleUrl = 'http://' + window.location.hostname + ':8080/tiles_cyclemap/{z}/{x}/{y}.pn';
var satUrl= 'http://' + window.location.hostname + ':8080/tiles_sat/{z}/{x}/{y}.jpg';
var mapnikZoom = 16 ;
var landscapeZoom =16;
var cycleZoom = 16;
var satZoom = 11;
}
Nun könnt ihr die source in der URL mit übergeben ==> http://hamnetdbserver/map.cgi?source=local. Damit holt die die Map die Tiles von eurem lokalen Tile Server und das funktioniert auch offline.