OVA mit Proxmox nutzen

Vorwort

Manche Lösungen werden als fertige VMs in Form von OVA-Downloads angeboten, hier beschreibe ich kurz, wie man OVA mit Proxmox nutzen kann.

Dateien extrahieren

Zunächst die Dateien aus der OVA extrahieren:

tar -xvf vm.ova

Nun kann die Konfiguration der VM eingesehen werden.

Konfiguration

Die Konfiguration befindet sich in der .ovf, hier ein Beispiel (stark gekürzt) für den Inhalt:

<?xml version="1.0"?>
<Envelope ovf:version="1.0" xml:lang="en-US" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vbox="http://www.virtualbox.org/ovf/machine">
  <References>
    <File ovf:href="VM-disk1.vmdk" ovf:id="file1"/>
  </References>
  <DiskSection>
  </DiskSection>
  <NetworkSection>
  </NetworkSection>
  <VirtualSystem ovf:id="VM">
    <Info>A virtual machine</Info>
    <OperatingSystemSection ovf:id="96">
      <Info>The kind of installed guest operating system</Info>
      <Description>Debian_64</Description>
      <vbox:OSType ovf:required="false">Debian_64</vbox:OSType>
    </OperatingSystemSection>
    <VirtualHardwareSection>
    </VirtualHardwareSection>
  </VirtualSystem>
</Envelope>

Danach wird die .vmdk konvertiert.

VMDK konvertieren

Die .vmdk muss konvertiert werden:

qemu-img convert -f vmdk vm-disk1.vmdk -O qcow2 vm-disk1.qcow2

Dies .qcow2 wird später in der VM verwandt.

VM erstellen

In Proxmox wird nun eine neue VM erstellt. Die Hardware (Netzwerk, HDDs, etc.) an die Informationen aus der .ovf anpassen.

qcow2 verschieben

Vor dem Start, wird die eben extrahierte Disk zur neuen VM verschoben, 999 ist hier durch die entsprechende ID der VM zu ersetzten:

mv vm-disk1.qcow2 /var/lib/vz/images/999/vm-999-disk-1.qcow2

Das waren alle notwendigen Schritte, nun kann die VM genutzt werden.

VM starten

Jetzt kann die VM gestartet werden.

Have fun!

Docker unter Debian

Einleitung

„Docker unter Debian“ beschreibt, wie die Open Source Software mit Debian genutzt werden kann. Docker dient der Virtualisierung von Anwendungen in Linux Containern. Der Artikel wurde unter Debian Jessy realisiert.

Vorbereitung

Für die weiteren Schritte wird curl benötigt:

apt-get install curl

Anschließend wir das Docker Repository eingerichtet. Daraus kann Docker schließlich installiert und aktulisiert werden.

Docker Repository

Los gehts…

apt-get install apt-transport-https ca-certificates software-properties-common

GPG-Key:

curl -fsSL https://yum.dockerproject.org/gpg | apt-key add -

Stable Repository hinzufügen:

add-apt-repository "deb https://apt.dockerproject.org/repo/ debian-$(lsb_release -cs) main"

Docker installieren:

apt-get update && apt-get -y install docker-engine

Das wars…

Test

Ein erster Test:

docker run hello-world

 

Have fun!

OwnTracks recorder – Speichern und Verwalten von Positionsdaten

Einleitung

Mit OwnTracks recorder können die von OwnTracks übermittelten Positionsdaten gespeichert und verwaltet werden. 

Installation

Für Debian 7 und 8, CentOS 7 und Raspbian (wheezy) steht ein Repository zur Verfügung. Hier für Debian 8:

wget http://repo.owntracks.org/repo.owntracks.org.gpg.key
apt-key add repo.owntracks.org.gpg.key
echo "deb  http://repo.owntracks.org/debian jessie main" > /etc/apt/sources.list.d/owntracks.list
apt-get update
apt-get install ot-recorder

Weiter mit der Konfiguration.

Konfiguration

Wer nach dem hier veröffentlichten Beitrag Mosquitto installiert hat, kann zunächst für den OwnTracks recorder einen Benutzer erstellen:

mosquitto_passwd /etc/mosquitto/passwd <BENUTZERNAME>

Im Anschluss muss dieser Benutzer in der Konfigurationsdatei /etc/default/ot-recorder hinterlegt und der Port auf 8883 angepasst werden.

OTR_PORT=8883
OTR_USER="<BENUTZERNAME>"
OTR_PASS="<PASSWORT>"

Nun kann der OwnTracks recorder mittel ot-recorder ‚owntracks/#‘ gestaret werden, die Ausgabe wie folgt:

ot-recorder[30465]: version 0.6.9 starting with STORAGEDIR=/var/spool/owntracks/recorder/store
ot-recorder[30465]: connecting to MQTT on localhost:8883 as clientID ot-recorder-openhab-30465 without TLS
ot-recorder[30465]: HTTP listener started on 127.0.0.1:8083
ot-recorder[30465]: Using storage at /var/spool/owntracks/recorder/store with precision 7
ot-recorder[30465]: Subscribing to owntracks/# (qos=2)

Wird vom Handy eine Position übermittelt, sieht das auf der Shell dann so aus:

- 21:15:09 owntracks/test/stefan             t=  tid=tt loc=49.xxxxx,7.xxxxx [DE] Musterstraße 1, 12345 Musterstadt, Germany (u0v0b7s)

Läuft bis hierhin alles, sollte noch dafür gesorgt werden, dass OwnTracks recorder automatisch mit dem Betriebssystem startet.

Service

Der Service sollte sich wie folgt einrichten lassen:

systemctl enable ot-recorder
systemctl start ot-recorder

Allerdings lässt er sich in meiner Konfiguration nicht starten. Als Workaround starte ich OwnTracks recorder stattdessen in /etc/rc.local:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

ot-recorder 'owntracks/#'

exit 0

Nach einem Neustart der Maschine wird der OwnTracks recorder dann ebenfalls gestartet. Weiter mit der Darstellung der Positionsdaten.

Web / Apache

Es wird empfohlen, den Zugriff über einen Reverse-Proxy zu realisieren, hier am Beispiel Apache. Zunächst einige Module aktivieren:

a2enmod proxy_wstunnel
a2enmod proxy_http
a2enmod proxy_html

Nun erstellen wir eine Kofiguration /etc/apache2/conf-available/ot-recorder.conf mit folgendem Inhalt:

ProxyPass        /owntracks/ws        ws://127.0.0.1:8883/ws keepalive=on retry=60
ProxyPassReverse /owntracks/ws        ws://127.0.0.1:8883/ws keepalive=on

# Static files
ProxyPass /owntracks                  http://127.0.0.1:8883/
ProxyPassReverse /owntracks           http://127.0.0.1:8883/

… und aktivieren diese:

a2enconf ot-recorder
service apache2 reload

Abschluss mit einem Test.

Ergebnis

Browser starten und http://<rechnername/ip>/owntracks/ öffnen. 🙂

Have fun!

Sonos Lautsprecher in openHAB einbinden

Einleitung

Der nachfolgende Artikel beschreibt, wie das openHAB Sonos-Binding installiert und eingesetzt werden kann. Weitere Informationen sind unter https://github.com/openhab/openhab/wiki/Sonos-Binding einzusehen.

Installation

Die Installation mittels apt:

apt-get install openhab-addon-binding-sonos

Nun kann die Konfiguration erfolgen.

Konfiguration

Zur Konfiguration der einzelnen Lautsprecher wird ihr UDN benötigt. Im obigen Link zum Plugin wird beschrieben, wie diese ermittelt werden kann, dort wird das Programm UPNP-Test empfohlen. Details siehe Link zum openHAB Sonos-Binding. Die Lautsprecher mit ihrer UDN werden dann in unter openhab/configurations/openhab.cfg wie folgt hinterlegt:

sonos:Wohnzimmer.udn=RINCON_123456789ABC01400
sonos:Bad.udn=RINCON_23456789ABCD01400
# [...]

Danach können die Items und zugehörige Rules konfiguriert werden.

Items

Wir nutzen einen Switch für Start/Stop der Wiedergabe sowie einen Slider zum Anpassen der Lautstärke:

//Gruppen
Group   gSonos                  "Sonos"                         <sonos>         (gALL)
Group   gSonosWZ                "Wohnzimmer"                    <sonos>         (gSonos)
Group   gSonosBad               "Bad"                           <sonos>         (gSonos)
// [...]

//Items
Switch  Sonos_Pwr_Bad           "ein/aus"               (gSonosBad)     { sonos="[ON:Bad:play], [OFF:Bad:stop]" }
Dimmer  Sonos_Vol_Bad           "Lautstärke"            (gSonosBad)     { sonos="[Bad:volume]" }
String  Sonos_CurTit_Bad        "Titel: [%s]"           (gSonosBad)     { sonos="[Bad:currenttitle]", autoupdate="false" }
String  Sonos_CurArt_Bad        "Interpret: [%s]"       (gSonosBad)     { sonos="[Bad:currentartist]", autoupdate="false" }
String  Sonos_CurAlb_Bad        "Album: [%s]"           (gSonosBad)     { sonos="[Bad:currentalbum]", autoupdate="false" }
String  Sonos_CurTrk_Bad        "Track: [%s]"           (gSonosBad)     { sonos="[Bad:currenttrack]", autoupdate="false" }
Switch  Sonos_Next_Bad          "nächster Titel"        (gSonosBad)     { sonos="[Bad:next]" }
Switch  Sonos_LED_Bad           "LED Status"            (gSonosBad)     { sonos="[ON:Bad:led], [OFF:Bad:led]", autoupdate="false" }
String  Sonos_State_Bad         "Status: [%s]"          (gSonosBad)     { sonos="[Bad:transportstate]", autoupdate="false" }
// [...]

Schließlich müssen noch entweder die Gruppen (gSonos oder gSonosBad, etc.) oder aber einzelne Items in die Sitemap eingebunden werden. Dann kann getestet werden.

Have fun!

Stefan Kraus' WordPress-Blog