SchlagwortDebian

TvHeadend, libiconv unter Wheezy

Da die libiconv nicht von Debian mit ausgeliefert wird, diese aber gerne genutzt wird  im TvHeadEnd hier eine quick Guide zu selber kompilieren:

mkdir /root/libiconv/
cd /root/libiconv/
wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz
tar xvzf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure && make && make install

Das sollte es gewesen sein, jetzt meckert auch TvHeadEnd nich mehr rum.

OpenVZ und Debian Wheezy

Heute möchte ich Euch keine kurze Einleitung geben, wie Ihr Euch zu Hausen einen eigenen OpenVZ Server einrichtet.

Falls Ihr Euch noch nicht mit OpenVZ auseinander gesetzt habe, habe ich Euch mal den Wikipedia Artikel verlinkt.

Als erstes muss man das Repository in der sources.list eintragen. Hierzu einfach folgenden Befehl als root ausführen.

cat << EOF > /etc/apt/sources.list.d/openvz-rhel6.list
deb http://download.openvz.org/debian wheezy main
# deb http://download.openvz.org/debian wheezy-test main
EOF

Um auch Pakete aus dem Repository installien können müssen wir noch den GPG-Key installieren.

wget http://ftp.openvz.org/debian/archive.key
apt-key add archive.key

Als nächstes machen wir ein Update der Paketlisten:

apt-get update

Nachdem jetzt alle Vorbedingen erfüllt sind gehts an die eigentliche Installation. Zunächst müssen wir bestimmen ober wir ein 32bit oder 64bit System als Host haben. Abhängig davon müssen wir den OpenVZ Kernel für 32 oder 64 bit installieren. Mit dem folgenden Befehl könnt Ihr den notwendigen Kernel bestimmen.

apt-cache search linux-image-openvz

Der Befehlt lieferte auf meinem System das 64bit Paket zurück.

apt-get install linux-image-openvz-amd64 vzctl vzquota vzdump

Alle abhängigen Pakete müssen natürlich mitinstalliert werden 😉

Um muss das Dateisystem noch eingebunden werden:

ln -s /var/lib/vz /vz

Jetzt nehmen wir noch einige systemspezifische Änderungen vor und fügen folgenden Code in die /etc/sysctl.conf ein

net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp=1

Jetzt geschwindt noch die Einstellungen anwenden:

sysctl -p

Um standardmäßig den notwendigen OpenVZ Kernel  zu booten, muss der Grub Bootloader noch angepasst werden:

nano /etc/default/grub

In der Konfigurationsdatei dann einfach den Defaultwert auf 2 setzen. Warum? das Ihr noch 2 Einträge davor habt und Grub bei 0 anfängt zu zählen.

...
GRUB_DEFAULT=2
...

Grub kann nun geupdated werden und der original Kernel deinstalliert.

update-grub
apt-get remove linux-image-amd64 linux-image-3.2.0-4-amd64
update-grub

Nach dem Neustart könnt Ihr nun Prüfen ob der richtige Kernel gebootet wurde.

uname -r

Wenn alles OK war, geht es mit dem OpenVZ Web Panel (OWP) weiter:

Es gibt eine automatische Installationsroutine für das OWP, welche durch den folgenden Befehl runtergeladen und direkt ausgeführt wird.

wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh

Wenn Ihr jetzt einen Fehler bezüglich ruby Version 1.9 bekommt führ bitte folgende Befehle aus:

apt-get install ruby1.8 ruby-switch
ruby-switch --set ruby1.8

Jetzt wiederholt bitte der Schritt zur Installation des OWP.

Euer OpenVZ Server ist nun fertig installiert 😉 Öffnet das Web Panel und ändert butte den Login.

http://<serverip>:3000/

Bestimmen der globalen ipv6 Adresse hinter einer FritzBox unter Debian

So langsam habe ich die Vermutung, dass niemand meine Posts versteht … OK :/

Was ist das Problem? Das wesentliche Problem besteht darin, dass Ihr ein Linux-Server hinter einer FritzBox mit Ipv6 betreibt und diesen öffentlich zugänglich via Ipv6 machen möchtet. Dazu richtet man in der FritzBox noch die Freigabe ein und gut ist. Jetzt kommt aber das Problem.

Ich glaube nicht, dass sich jemand die Ipv6 Adressen merken kann. Also brauch man dyndns. Ruft man per Cronjob jetzt das Update-Script beim DynDns hoster auf, bekommt dieser aber nur die “public” Adresse der Fritzbox mitgeteilt. Wir sind also gekniffen.

Um die “global scope” Adresse unter debian zu besimmen hab ich mal diesen Command zusammen gebaut:

/sbin/ip -6 addr |grep  "scope global dynamic" | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

Als Ergebnis bekommt Ihr die reine Ipv6 Adresse des Systems mit dem dynamischen globalen scope.

[HowTo] Openmediavault + SSL Shared Host in NGINX + owncloud App + Server Name Indication

Der Titel hört sich super kompliziert an, und das Problem was auch nicht ganz so einfach zu knacken 🙂

Was will ich eigentlich erreichen? Ich hab zu Hausen einen OpenMediaVault NAS am laufen. Hier kann man im App Prinzip Pakete nachinstallieren (teschnisch einfach ein apt-get ;)). Es gibt auch eine ownCloud app, die sich um die generelle Konfiguration von Nginx, PHP und den Pfaden kümmert. Mein Problem liegt jetzt aber darin, dass ich verschiedene SSL-Seiten zu Hause hosten möchte. und jetzt beginnt das Problem.

omv_apps

Nun habe ich mich mal näher mit OMV auseinander gesetzt. Um herauszufinden, welche Pakte im OMV-Plugin sind, habe ich einfach per dpkg die Dateien des installieren Paketes anzeigen lassen:

dpkg-query -L openmediavault-owncloud

So sah dann das Ergebnis aus:

/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/openmediavault-owncloud
/usr/share/doc/openmediavault-owncloud/changelog.gz
/usr/share/openmediavault
/usr/share/openmediavault/locale
/usr/share/openmediavault/locale/pl_PL
/usr/share/openmediavault/locale/pl_PL/openmediavault-owncloud.po
/usr/share/openmediavault/locale/da_DA
/usr/share/openmediavault/locale/da_DA/openmediavault-owncloud.po
/usr/share/openmediavault/locale/de_DE
/usr/share/openmediavault/locale/de_DE/openmediavault-owncloud.po
/usr/share/openmediavault/locale/es_ES
/usr/share/openmediavault/locale/es_ES/openmediavault-owncloud.po
/usr/share/openmediavault/locale/fr_FR
/usr/share/openmediavault/locale/fr_FR/openmediavault-owncloud.po
/usr/share/openmediavault/locale/gl
/usr/share/openmediavault/locale/gl/openmediavault-owncloud.po
/usr/share/openmediavault/locale/openmediavault-owncloud.pot
/usr/share/openmediavault/locale/no_NO
/usr/share/openmediavault/locale/no_NO/openmediavault-owncloud.po
/usr/share/openmediavault/locale/it_IT
/usr/share/openmediavault/locale/it_IT/openmediavault-owncloud.po
/usr/share/openmediavault/locale/pt_PT
/usr/share/openmediavault/locale/pt_PT/openmediavault-owncloud.po
/usr/share/openmediavault/locale/uk_UK
/usr/share/openmediavault/locale/uk_UK/openmediavault-owncloud.po
/usr/share/openmediavault/locale/zh_CN
/usr/share/openmediavault/locale/zh_CN/openmediavault-owncloud.po
/usr/share/openmediavault/locale/hu_HU
/usr/share/openmediavault/locale/hu_HU/openmediavault-owncloud.po
/usr/share/openmediavault/locale/gl_ES
/usr/share/openmediavault/locale/gl_ES/openmediavault-owncloud.po
/usr/share/openmediavault/locale/zh_TW
/usr/share/openmediavault/locale/zh_TW/openmediavault-owncloud.po
/usr/share/openmediavault/locale/ru_RU
/usr/share/openmediavault/locale/ru_RU/openmediavault-owncloud.po
/usr/share/openmediavault/locale/nl_NL
/usr/share/openmediavault/locale/nl_NL/openmediavault-owncloud.po
/usr/share/openmediavault/locale/tr_TR
/usr/share/openmediavault/locale/tr_TR/openmediavault-owncloud.po
/usr/share/openmediavault/locale/ko_KR
/usr/share/openmediavault/locale/ko_KR/openmediavault-owncloud.po
/usr/share/openmediavault/locale/sv_SV
/usr/share/openmediavault/locale/sv_SV/openmediavault-owncloud.po
/usr/share/openmediavault/locale/el_GR
/usr/share/openmediavault/locale/el_GR/openmediavault-owncloud.po
/usr/share/openmediavault/locale/ja_JP
/usr/share/openmediavault/locale/ja_JP/openmediavault-owncloud.po
/usr/share/openmediavault/mkconf
/usr/share/openmediavault/mkconf/owncloud
/usr/share/openmediavault/mkconf/nginx.d
/usr/share/openmediavault/mkconf/nginx.d/owncloud
/usr/share/openmediavault/mkconf/avahiservices.d
/usr/share/openmediavault/mkconf/avahiservices.d/owncloud
/usr/share/openmediavault/engined
/usr/share/openmediavault/engined/module
/usr/share/openmediavault/engined/module/owncloud.inc
/usr/share/openmediavault/engined/rpc
/usr/share/openmediavault/engined/rpc/owncloud.inc
/var
/var/www
/var/www/owncloud
/var/www/owncloud/apps
/var/www/owncloud/apps/user_openmediavault
/var/www/owncloud/apps/user_openmediavault/appinfo
/var/www/owncloud/apps/user_openmediavault/appinfo/version
/var/www/owncloud/apps/user_openmediavault/appinfo/info.xml
/var/www/owncloud/apps/user_openmediavault/appinfo/app.php
/var/www/owncloud/apps/user_openmediavault/group_openmediavault.php
/var/www/owncloud/apps/user_openmediavault/user_openmediavault.php
/var/www/owncloud/3rdparty
/var/www/openmediavault
/var/www/openmediavault/js
/var/www/openmediavault/js/omv
/var/www/openmediavault/js/omv/module
/var/www/openmediavault/js/omv/module/admin
/var/www/openmediavault/js/omv/module/admin/service
/var/www/openmediavault/js/omv/module/admin/service/owncloud
/var/www/openmediavault/js/omv/module/admin/service/owncloud/Shares.js
/var/www/openmediavault/js/omv/module/admin/service/owncloud/OwnCloud.js
/var/www/openmediavault/js/omv/module/admin/service/owncloud/Settings.js
/var/www/openmediavault/images
/var/www/openmediavault/images/owncloud.svg
/var/www/openmediavault/images/owncloud.png
/etc
/etc/php5
/etc/php5/fpm
/etc/php5/fpm/pool.d
/etc/php5/fpm/pool.d/openmediavault-owncloud.conf
/var/www/owncloud/3rdparty/openmediavault

Für mich interessant war jetzt eben die Konfiguration des NGINX Web-Servers. Dies passiert in dieser Datei /usr/share/openmediavault/mkconf/nginx.d/owncloud.

Hier werde ich jetzt einige Anpassungen für meine Bedürfnisse vornehmen.

[HowTo] Froxlor, SSL und Apache richtig konfigurieren

Was brauchen wir? Fangen wir mit den Zertifikaten an. Zunächst legen wir einen Ordner unter /etc/apache2 namens ssl an.

mkdir /etc/apache2/ssl/
cd /etc/apache2/ssl/

Im Anschluss erzeugen wir die notwendigen Zertifikate. Hierbei legen wir der einfachheitshalber zunächst ein Skript an.

nano create_certs.sh

In die Datei bitte folgendes einfügen:

#!/bin/sh
# Ersetzen mit Zerifikatsnamen
keyname=MyCert

openssl genrsa -out $keyname.key 2048
openssl req -new -key $keyname.key -out $keyname.csr
openssl rsa -in $keyname.key -out $keyname.key
openssl x509 -req -days 365 -in $keyname.csr -signkey $keyname.key -out $keyname.crt
cat $keyname.crt $keyname.key > $keyname.pem
chmod 664 *.crt
chmod 600 *.key
chmod 600 *.pem

Jetzt noch die Zertifikate erzeugen lassen:

sh create_certs.sh

Nun geht es im Froxlor Interface weiter. Hier müsst Ihr nun unter  Server -> Einstellungen -> SSL Einstellungen SSL aktivieren.

frox_ip1 frox_ip2

Falls es beim neustart des Appache zu folgendem Fehler kommt, muss ssl noch aktiviert werden:

Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
 failed!

Wenn man nun das Modul aktiviert sollte es wieder funktionieren.

a2enmod ssl

Jetzt ist alles geschafft!

Fritzbox, Linux clients und statische IPs

Wer kennt das Problem nicht, man hat eine Linux Box im Heimnetz. Ob visualisierte test Maschinen, Raspberries oder ähnliches. Bei mir haben alle “stationären” Systeme feste IPs. Jetzt beginnt das Problem, da diese Systeme meist nicht hinausposaunen. Die Fritzbox muss sich nun überlegen, wie sie an den Namen kommt. 2 Wege funktionieren typischerweise. Zu einen kann die Fritzbox den Namen via Netbios bestimmen oder aber via Bonjour.

Hier die Anleitung wie Ihr Bonjour auf Debian, Raspbian, Raspbmc nachinstallieren könnt (der Name kommt dann aus /etc/hostname)

apt-get install avahi-daemon

 

[HowTo] – Portsharing für ssl, ssh und openvpn

Wer kennt es nicht, das leidige Thema um IP und Ports, gewürzt mit restriktiven Proxy-Servern die nur Port 80 und 443 durchlassen? Häufig steht man ja vor dem Problem, dass man ein VPN betreiben will, welches “selbstverständlich” durch alle Firewalls durchgeht, aber nicht einen dedizierten VPN Gateway betreiben möchte. Oder aber Ihr wollt in Eurem Heimnetzwerk eine “Cloud” betreiben mittels https, brauch aber auch VPN access. Das sind die typischen Probleme wo der ssl-Multiplexer sslh unter Linux oder genauer unter Debian zu Einsatz kommt. Wie Ihr sicherlich mitbekommen habt, bin sich sehr Debian lastig, aber das es funktioniert genau so unter CentOS, RedHat, SuSE …. Natürlich funktioniert das HowTo auch mit OpenMediaVault, ist ja schließlich Debian 😉

Der Einfachheit halber installier ich heute das Paket aus den Quellen und kompiliere es NICHT neu 🙂

Los gehts!

Zuerst updaten wir unsere Paketlisten und installieren dann aus dem Repository das sslh package.

apt-get update 
apt-get install sslh

Du bekommst wahrscheinlich eine ähnliche Meldung, einfach mit “Y” bestätigen und Pakete installieren.

root@server2.tschoerner.eu:~# apt-get install sslh
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libconfig9 libfile-copy-recursive-perl update-inetd
Suggested packages:
  openbsd-inetd inet-superserver
The following NEW packages will be installed:
  libconfig9 libfile-copy-recursive-perl sslh update-inetd
0 upgraded, 4 newly installed, 0 to remove and 40 not upgraded.
Need to get 124 kB of archives.
After this operation, 425 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y

Bei der Installation wird man gefragt, ob der Service via ineid gestartet werden soll oder aber als standalone Dienst, Ich habe mich für die Standalone Konfiguration entschieden.

sslh

Nach der Installation wirst du wahrscheinlich eine ähnliche Meldung bekommen, das der Dienst nicht gestartet wurde. Dies passiert, da bei der Initial-Konfiguration, des Flag auf “unkonfiguerte=Yes” eingestellt ist.

sslh_install

Vor der Konfiguration stellen wir noch sicher, dass kein Dienst auf 443 mehr läuft, typischerweise SSL (Apache, Nginx, Lighttpd) oder aber ssh und OpenVPN. Diese Dienste müssen auf einen der ungelich 443 konfigueriert werden. das interne Mapping auf 443 übernimmt dann der SSL Multiplexer sslh.

sslh_sym

Zurück zur sslh Konfiguration. Unter Debian und Ubuntu liegt die Konfiguration unter “/etc/default/”.

nano /etc/default/sslh

In Zeile 12 muss der Dienst aktiviert werden, indem das RUN=no in RUN=Yes geändert wird.

Innerhalb der Daemon option können nun die Ziele der verschiedenen Dienste definiert werden, aber ACHTUNG, die Reihenfolge ist wichtig!!

Meine sslh sieht so aus:

# Default options for sslh initscript
# sourced by /etc/init.d/sslh

# Disabled by default, to force yourself
# to read the configuration:
# - /usr/share/doc/sslh/README.Debian (quick start)
# - /usr/share/doc/sslh/README, at "Configuration" section
# - sslh(8) via "man sslh" for more configuration details.
# Once configuration ready, you *must* set RUN to yes here
# and try to start sslh (standalone mode only)

RUN=yes

# binary to use: forked (sslh) or single-thread (sslh-select) version
DAEMON=/usr/sbin/sslh

DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --openvpn 127.0.0.1:1194 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

Nach getaner Arbeit, muss der SSLH noch einmal neu gestartet werden und wir sind fertig.

/etc/init.d/sslh restart

 

Virtualisierung @ Home

Immer mehr gibt es den Trend “Cloud”. Was ist die Cloud? Cloud, also Wolke ist etwas sehr undurchsichtiges. Spätestens jetzt sollten alle Alarmglocken klingeln. Ich habe für mich entschieden, dass ich den Trend des Daten “sharings” nicht ungebremst mit machen möchte. Ich möchte weiterhin der alleinige Besitzer meiner Daten sein und auch wissen wo diese liegen.

Wie ich bereits schon früher geboggt habe, gibt es auch alternativen zum Mainstream Cloudstorage. Hier setzt ich auf ein ownCloud, gehostet in Frankfurt auf einem Filesystem mit militärischer Verschlüsselung.

Wem das immer noch nicht reicht, der hostet seine Server zu Hause. Hier kommt das Thema Virtualisierung zum Einsatz. Mittlerweile betreiben ca. 30% aller Haushalte ein NAS-System (Network Attached Storage) zu hause. Was wäre nun, wenn man eine Stromsparende CPU mit 64bit Architektur drinnen hätte? Der Stromverbrauch immer noch niedrig, aber deutlich mehr Leistung. Willkommen in 2014! Der NAS-Hersteller QNAP hat seinen neuen NAS-Systemen Intels Celeron verpasst und bietet jetzt Virtualisierung auf dem NAS an. Für mich war das Anreiz genug mit ein solches System zusammen zu stellen und das ganze einmal zu testen.

Was kam zu Einsatz?

Beim Board habe ich mich für das ASRock Q1900M M-ATX J1900 entschieden. Es hat zwar nur 2 SATA Schnittstellen aber mein OS soll ja eh auf ein USB3 Stick. Zudem hab ich noch einen Riegel mit 8GB reingepackt. Für ein NAS ABSOLUT überdimensioniert, aber für ein Virtualisierungshost notwendig. On-Top noch ein bisschen Kleinkram aus den Kramskisten und fertig.

Der Stromverbrauch mit einer 2,5″ 500GB Platte liegt unter Vollast bei 25W und einem Transcendent Extrem 780 32GB Stick!! Ok, es ist nur eine Platte im Moment drinnen, aber jetzt kommen noch 3x 6TG WD Red im RAID 5 rein. Für alle Kritiker von ext4 auf USB Sticks: Der USB Stick ist sehr schnell 210MB/s und unterstützt dynamic Level Wearing.

Nachdem das System eigentlich als reine V-Host gedacht war habe ich sehr mit der Stabilität von ProxMox VE gehardert. Zudem war der Kernel kein 3.2er womit kein USB 3 nativ unterstützt wurde.

Jetzt läuft auf dem System OpenMediaVault. Eigentlich wollte ich das NAS OS als Gast laufen lassen, aber es hat sich als Schweizer Taschenmesser herausgestellt und bietet dank VirtualBox auch eine gute Virtualisierung.

Hier noch ein paar Stats vom System. Und für alle Kritiker, das System war im Stress, bin ja nicht hier zum Waffeln backen 🙂

[HowTo] Hinzufügen eines virtuellen NIC (Network Interface) unter debian/ubuntu

Unter Linux ist es relativ einfach mehrere IP Adressen auf eine Netzwerkkarte zu binden. Bei Debian Distributionen, so wie auch Ubuntu, muss man nur eine Datei bearbeiten.

Hierzu einfach folgenden Befehlt ausführen:

sudo nano /etc/network/interfaces

Bei mir sieht das file wie folgt aus:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.1.1.100
gateway 10.1.1.1
netmask 255.255.255.0
broadcast 10.1.1.255

Der einfachste Weg eine Virtuelle Schnittelle anzulegen, ist das eth0 Interface zu kopieren und beim Namen ein :0, :1 … anzuhängen.

auto eth0:0
iface eth0:0 inet static
address 10.1.1.101
gateway 10.1.1.1
netmask 255.255.255.0
broadcast 10.1.1.255

Im Anschluss einfach das Netzwerk neu starten und die Einstellungen übernehmen. Das spart den Reboot.

sudo ifup eth0:0

Und das war’s dann auch schon!

[HowTo] UTC, CEST Zeiteinstellungen unter Debian

Heute hatte ich kurzzeitig das Problem, dass mein Debiansystem mit einer Bios-zeit, welch nicht UTC war, durcheinander kam.

Meine Bios-Zeit war auf CEST eingestellt. Um Debian oder Ubuntu das beizubringen muss in der Datei /etc/default/rcS folgende Zeilt geändert, oder eingefügt werden.

UTC=no

Jetzt das System nochmal neu starten und mit dem Zeitserver syncen. Das wars dann auch schon.