LVM

November 28, 2017 - Lesezeit: 4 Minuten

Hat man einen Linux Server mit LVM (Logical Volume Manager) und möchte z.B. eine weitere Partition oder eine neue Festplatte in den LVM aufnehmen, kann man dies wie folgt erledigen.
Achtung! Wie immer gilt, eine Sicherung kann nicht schaden, die Arbeit am Dateisysstem oder den Festplatten kann immer auch nach hinten losgehen. In meinem Szenario ging es vor allem darum eine neue Platte im LVM zu nutzen.

Um zu sehen was man überhaupt für Platten und Partitionen hat empfiehlt sich ein:

(sudo) fdisk -l

sowie ein Überblick über die bereits für den LVM verfügbaren Physical Volumes mit:

(sudo) pvs

und

(sudo) pvdisplay

Wenn das System die Platte noch nicht erkannt hat, muss man ggf. zuerst einen Neustart durchführen und danach eine leere Partition anlegen. Dies geht sehr gut mit

(sudo) cfdisk /dev/sdb

Zuerst die gewünschte Platte oder Partition als PV (Physical Volume) initalisieren, in meinem Fall für /dev/sdb1 :

(sudo) pvcreate /dev/sdb1

Danach kann man mit pvs erneut nachsehen ob es auch geklappt hat. Jetzt hat man die Möglichkeit entweder eine vorhandene Volume Group (VG) zu erweitern (z.B. / oder /home) oder eine neue Volume Group anzulegen. Ähnlich wie oben gibt es auch hier wieder die Befehle vgs und vgdisplay.

Ich lege eine neue VG an mit (samba ist der Name der VG und kann beliebig sinnvoll benannt werden) und füge das gewünschte PV hinzu. Vorteil eine Volume Group kann aus mehreren Physischen Volumes bestehen und so in der Größe variieren:

(sudo) vgcreate samba /dev/sdb1

Jetzt muss in der VG ein Logical Volume erstellt werden, dies können wir dann später mit einem Dateisystem bestücken und damit arbeiten. Auch das LV kann später wieder erweitert werden und somit mehr Platz geschaffen werden.

(sudo) lvcreate -L 500G -n files samba

files ist der Name der LV und Samba der VG.

Möchte man den ganzen Platz der neuen Partition für das Logical Volume verwenden, geht dass über das Flag mit dem kleinen "L":

(sudo) lvcreate -l 100%FREE -n files samba

Dateisystem erstellen:

(sudo) mkfs.ext4 /dev/samba/files

Und mounten, dazu den LV Path benutzen (ggf. über lvdisplay rauszufinden)

(sudo) mount /dev/samba/files /samba

Damit der Mount dauerhaft zur Verfügung steht muss er in die /etc/fstab eingetragen werden.

Vergrößern und erweitern kann man bei Bedarf. Dazu immer erst die VG erweitern mit vgextend, dann die LV erwietern mit lvextend, außer in der VG wäre noch Platz, dann reicht natürlich ein lvextend, z.B.

lvextend ‐L +10G files

Erweitert das LV um 10 GB. Lässt man das + weg kann man die gewünschte Gesamtgröße angeben oder auch +100%FREE für die maximale Größe verwenden.Jetzt sollte man auf jeden Fall mit resizefs -p /dev/name das Dateisystem auch erweitern um den neuen Platz nutzen zu können. Verkleinern geht auch, habe ich aber noch nie benutzt, dazu gibt es den Befehl lvreduce

Schön ist auch die Möglichkeit Snapshots zu erstellen, dazu ein ander Mal mehr.


Ubuntu 14.04 auf 16.04

September 26, 2017 - Lesezeit: 2 Minuten

Für September hatte ich mir vorgenommen einige Ubuntu Server von 14.04 LTS auf 16.04 LTS zu bringen. Die 14er LTS erhält zwar noch bis ca. April 2019 Updates, aber die 16er gibt es jetzt ja auch schon etwas über ein Jahr und bringt zudem offiziell PHP7 mit (ja ich weiß man kann es auch in der 14er installieren). Wie üblich empfiehlt sich ein Backup vom System und allen benötigten Daten auf dem Server zu haben. Neben den Backups habe ich das Glück das meine Ubuntu Server alle virtualisiert auf über ESX Server laufen und sich somit Snapshots anfertigen lassen.

Vor jedem Release upgrade sollte man das momentane System so aktuell wie möglich halten. Also vorher nochmal:

apt-get update
und
apt-get upgrade

durchführen. Außerdem empfiehlt sich auch ein

apt-get autoremove

um nicht mehr benötigte Pakete zu entfernen. Das lässt sich übrigens auch automatisieren.

Außerdem sollte man mit df -h auch mal schnell checken ob genügend Platz auf den Partitionen zur Verfügung steht. Auf einem Server war die /boot Partition so ziemlich voll und enthielt noch einige alte Kernel Versionen die ich dann vorher entfernt habe. Bevor man das macht sollte man sich aber mit uname -r vergewissern welcher Kernel aktuell verwendet wird und diesen natürlich auf keinen Fall entfernen.

Dann kann es mit

do-release upgrade

losgehen. Ubuntu leitet euch dann etwas durch den Vorgang und fragt bei neueren Configs nach ob diese eingebunden werden sollen oder lieber die alten verwendet werden sollen. Ich bleibe zu 99% bei den alten, sollten einige Dienste mit den alten Configs Probleme machen, lassen sich diese später noch verstehen und beheben, was ich deutlich besser finde als angepasste Configs zu verlieren.

Wenn das Upgrade durchgelaufen ist hatte ich meistens immer Probleme mit dem Netzwerk, was wohl auch an der Virtualisierung liegt. Auf jeden Fall wurde aus eth0 meistens irgendwas anderes. Mit ip link lässt sich aber schnell der neue Name der Netzwerkkarte rausfinden. Danach dann unter /etc/network/interfaces eth0 durch den neuen Namen ersetzen und das Netzwerk oder den Server neustarten. Danach sollte der Server wieder laufen und mann kann seine Dienste checken und z.B. PHP 7 installieren.


https und www erzwingen (Apache 2.4)

März 28, 2017 - Lesezeit: 2 Minuten

Hat man für eine Webseite SSL (https) eingerichtet kann man den Benutzer automatisch dazu zwingen die Seite nur noch verschlüsselt aufzurufen. Verwendet man als Webserver Apache geht dies wie folgt: Im Netz finden sich viele Beispiele im Zusammenspiel mit mod_rewrite, allerdings empfehlen die Apache Entwickler diese Technik für diesen Fall nicht unbedingt (hier nachzulesen: http://httpd.apache.org/docs/2.4/rewrite/avoid.html). Stattdessen reicht in der Seitenkonfiguration ein einfaches:

<VirtualHost *:80>
...
Redirect / https://www.domain.de
...
</VirtualHost>

Wer es trotzdem mit mod_rewrite machen will oder muss, kann dazu folgende Zeilen verwenden, ebenfalls in der Config oder über eine .htaccess Datei:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.doamin.de%{REQUEST_URI} [R=301,L]

Soweit so gut, wer jetzt noch eine ordentliche URLmag und auch immer das www in der Adresszeile haben will, egal ob der Benutzer es eingibt oder nicht, der muss etwas tricksen. Zumindest habe ich keinen einfacheren Weg gefunden. Und zwar muss man seine SSL Config klonen, bzw. zwei Virtual Hosts für SSL einrichten. Der erste ist für die URL ohne www

<VirtualHost *:443>
    ServerName domain.de

    ....

    Redirect / https://www.domain.de

</VirtualHost>

Und der zweite dann für eure URL mit www.

<VirtualHost *:443>
    ServerName www.domain.de

    ....

</VirtualHost>

Was passiert? Alle https Anfragen ohne www werden dann umgeleitet auf mit www. Wichtig ist das beide Virtual Host Konfigurationen ansonsten identisch sind, also mit Directory und SSLEngine On etc.

Über mod_rewrite habe ich keinen Weg gefunden https ohne www auf https mit www umzuleiten. Hat bei mir alles mit der Kombination aus SSL erzwingen nicht funktioniert.


Einfaches DLNA Streaming unter Ubuntu

März 21, 2017 - Lesezeit: 2 Minuten

Wer einen einfachen DLNA / Chromecast Streaming Server für Ubuntu sucht dem kann ich Pulseaudio-dlna empfehlen. Damit lässt sich einfach und schnell Ton vom Desktop/Laptop zu einem DLNA fähigem Abspielgerät schicken. In meinem Fall kann ich so vom PC aus dem Arbeitszimmer, Musik im Wohnzimmer über den TV oder die Soundanalge hören. Netter Nebeneffekt: Musikdienste wie z.B. Deezer sind in der Desktop Version über den Browser völlig kostenfrei nutzbar. Auf diese Weise lässt sich die Musik in den eigenen vier Wänden problemlos vom PC verteilen und man benötigt keinen kostenpflichtigen Account um z.B. die Smart TV App zu nutzen. Alle Info dazu gibt es hier:

https://github.com/masmu/pulseaudio-dlna

Im wesentlichen sind aber nur folgenden Schritte nötig:

sudo apt-add-repository ppa:qos/pulseaudio-dlna
sudo apt-get update
sudo apt-get install pulseaudio-dlna

Fügt das Repository zu den apt Quellen hinzu und installiert den Server. Dieser lässt sich dann einfach mit

pulseaudio-dlna

über die Konsole starten. Zusätzlich installiert man noch den Pulseaudio Lautstärkeregler, der sowieso schon in den offiziellen Quellen enthalten ist. Entweder über das Ubuntu Software Center oder wieder über die Konsole mit:

sudo apt-get install pavucontrol

Jetzt einfach die Musik nach Wahl abspielen, z.B. Deezer über den Browser oder auch Dateien von der Platte mit VLC oder was auch immer man als Audioplayer benutzt. Dann das DLNA fähige Gerät starten auf dem die Musik ankommen soll (z.B. TV oder Anlage im Wohnzimmer), den Lautstärkeregler im Ubuntu starten und im Reiter Wiedergabe das Zielgerät auswählen. Möglicherweise muss man am Zielgerät noch die Quelle erlauben, ist bei meinem Samsung Smart TV z.B. so, aber dann war es das schon.

Bildbeschreibung


Eigener Radiosender mit Icecast2 und Ezstream

März 14, 2017 - Lesezeit: 8 Minuten

Wer ein Internetradio besitzt kann durchaus auf die Idee kommen dort auch seine eigene Musik zu hören. Das geht bei den meisten Geräten per USB Stick, Medienserver (DLNA), Bluetooth oder auch per AUX-In. Das genügte mir jedoch nicht, denn ich halte es gerne einfach, Radio an, Musik ab. Kein koppeln und kein Zusatzgerät in Reichweite notwendig. In dem Fall lohnt sich eine eigene Radiostation, die lässt sich dank Icecast schnell und einfach einrichten und läuft auch auf schmaler Hardware gut, z.B. auf einem alten Server oder günstigem vServer, einem Rasperry Pi etc. Bei Debian und/oder Ubuntu als Betriebssystem ist Icecast teil der offiziellen Quellen, also reicht ein: apt-get install icecast2

zur Installation.

Falls man nicht automatisch dazu aufgefordert wird muss man danach nur noch die Konfiguration anpassen:

(sudo) vi /etc/icecast2/icecast.xml

Die meisten Settings kann man für den privaten Gebrauch lassen wie sie sind.

<clients>5</clients>
<sources>1</sources>

Habe ich auf 5 und 1 gesetzt. Wer später nur über ein Gerät hören will kann hier theoretisch auch beides auf 1 setzen. Das hängt davon ab von wie vielen Geräten man später gleichzeitig den Sender hören will. Wichtig ist noch der Bereich zwischen:

<authentication>
        <!-- Sources log in with username 'source' -->
        <source-password>******</source-password>

        <!-- Admin logs in with the username given below -->
        <admin-user>admin</admin-user>
        <admin-password>******</admin-password>
</authentication>

Dort sollte man auf jeden Fall Passwörter vergeben, zum einen für das Webinterface des Admins und zum anderen um später Musik über den Sender verbreiten zu können. Ohne Passwort könnte theoretisch jeder Musik über euren Sender schicken. In der Configdatei kann man nach Wunsch auch den Port des Senders ändern (Default 8080) und auch das Directory Listing. Ich empfehle das Listing deaktiviert zu lassen, sonst wird euer Sender auch öffentlich gefunden (sofern euer Server im Internet erreichbar ist) und dann sollte man sich vorher auf jeden Fall mit Musikrechten beschäftigen.

Das war es dann schon und man kann den Server starten:

/etc/init.d/icecast2 start

oder auch

service icecast2 start

Ob alles klappt kann man einfach über den Browser probieren. http://ip-eures-servers:8000 aufrufen und ihr erhaltet die Statusseite des Icecast Servers. Jetzt läuft also der Radioserver, aber ohne Musik. Also muss man den Server füttern. Dazu gibt es viele Möglichkeiten, aber eine einfache über die Kommandozeile ist Ezstream. Vorteil: Ezstream kann auch mit mp3 Dateien umgehen. Also erfolgt ein:

apt-get install ezstream

auf dem Server/PC auf dem die Musik liegt die man senden will. Hier muss man dann erst eine XML Konfiguration erstellen, es gibt verschiedene Vorlagen unter:

/usr/share/doc/ezstream/examples/

Eine fertige Konfiguration für mp3 Dateien könnte wie folgt aussehen:

<ezstream>
    <url>http://eure-server-ip:8000/stream</url>
    <sourcepassword>Icecast Source Passwort (s.o.)</sourcepassword>
    <format>MP3</format>
    <!-- Pfad zur Musikplaylist  -->
    <filename>/pfad/zu/eurer/mp3/playlist.m3u</filename>
    <!-- Playlist wird endlos wiederholt mit Zufallswiedergabe -->
    <stream_once>0</stream_once>
    <shuffle>1</shuffle>
    <!-- ein paar Zusatzinfos, wird später am Radiodisplay zu sehen sein-->
    <svrinfoname>Radio Brice</svrinfoname>
    <svrinfogenre>Mix</svrinfogenre>
    <svrinfodescription>Best music on the planet</svrinfodescription>
    <svrinfobitrate>128</svrinfobitrate>
    <svrinfochannels>2</svrinfochannels>
    <svrinfosamplerate>44100</svrinfosamplerate>
    <!--
      Prohibit the server to advertise the stream on a public YP directory:
     -->
    <svrinfopublic>0</svrinfopublic>
</ezstream>

Die Konfiguration kann man radio_config.xml nennen oder wie auch immer und z.B. im Homeverzeichnis ablegen.

UPDATE: Seit Anfang 2020 gibt es ezstream in der Version ezstream-1.0.0 und momentan auch 1.0.1 Aktuelle Linux Distributionen liefern über APT mittlerweile ebenfalls diese Versionen aus. Nun könnte man theoretisch auch Videos streamen und es wird auch TLS angeboten (sehr sinnvoll z.B. wenn der Icecast Server nicht im gleichen Netz steht). Ab der Version 1.0 hat sich auch das Konfigurationsschema geändert und obiges Beispiel funktionierte bei mir nicht mehr. Es müssen jetzt 3 Blöcke bestehend aus Servers, Streams und Intakes definiert werden. Beispiel für eine funktionierende Konfiguration mit ezstream-1.0.1 und Icecast2 für einen mp3 Stream:

<ezstream>
  <servers>
    <server>
      <hostname>eure Server IP</hostname>
      <password>Icecast Source Passwort (s.o.)</password>
      <port>8080</port> <!-- Optional, default ist 8000 -->
    </server>
  </servers>

  <streams>
    <stream>
     <public>No</public>
     <mountpoint>/stream</mountpoint>
     <format>MP3</format>
     <stream_name>Name eures Radios</stream_name>
     <stream_quality>1.5</stream_quality>
     <stream_bitrate>16</stream_bitrate>
     <stream_samplerate>44100</stream_samplerate>
     <stream_channels>2</stream_channels>
    </stream>
  </streams>

  <intakes>
    <intake>
     <type>playlist</type>
     <filename>/pfad/zu/eurer/mp3/playlist.m3u</filename>
     <!-- Setting to shuffle playlists -->
     <shuffle>Yes</shuffle>
    </intake>
  </intakes>

</ezstream>

Jetzt muss man nur noch eine Playlist erstellen und dort ablegen wo man es in der Config angegeben hat. Dabei hilft z.B. der folgende Befehl:

find /pfad/zu/eurern/mp3s/ -name "*.mp3" > /pfad/zu/eurer/mp3/playlist.m3u

So werden alle mp3 Dateien unter dem Pfad in die Playlist geschrieben.

Jetzt einfach ezstream starten und fertig.

ezstream -c name_und_pfad_der_ezstream_config.xml

Alternativ lässt sich der Prozess auch mit nohup in den Hintergrund schicken, dann endet der Stream nicht wenn man die Konsole verlässt:

nohup ezstream -c name_und_pfad_der_ezstream_config.xml &

Am Internetradio oder am Player nach Wahl http://eure-server-ip:8000/stream öffnen und es sollte etwas zu hören sein. Über die Icecast Webpage (s.o.) lässt sich der Status des Streams verfolgen.


Debian Upgrade Wheezy nach Jessie

Februar 27, 2017 - Lesezeit: 2 Minuten

Ich hatte noch einen etwas älteren Debian Server mit Wheezy, auf dem momentan keine Dienste aktiv waren. Für ein neues Projekt war der Server aber ausreichend und so war es dann sinnvoll diesen von Wheezy auf Jessie zu updaten. Wie immer gilt: vorher unbedingt eine Sicherung von allen wichtigen Dateien und Konfigurationen machen.

  1. Das momenten System sollte alle verfügbaren Updates haben.

    apt-get update
    apt-get upgrade
  2. Dann die Apt Sources List auf Jessie umstellen, dort werden die Paketquellen des System verwaltet

    vi /etc/apt/sources.list

Dort finden sich Einträge in der folgenden Form:

deb http://ftp.de.debian.org/debian/ wheezy main
deb-src http://ftp.de.debian.org/debian/ wheezy main

Jetzt einfach wheezy durch jessie tauschen und das bei allen offiziellen Quellen. Hat man noch andere Quellen hinzugefügt sollte man dort genau prüfen ob es eine neue Quelle für das neue Release gibt.

  1. Jetzt wieder ein

apt-get update und ruhig auch ein apt-get upgrade

fahren. Dabei sieht man direkt ob die neuen Quellen ansprechbar sind. Ist das nicht der Fall die Quellen checken und durch erreichbare ersetzen. Durch apt-get upgrade wird aber hier noch kein richtiges System Upgrade gemacht. Es kann aber nicht schaden.

  1. Jetzt kommt das richtige Upgrade mit

    apt-get dist-upgrade
  2. Danach empfiehlt sich noch zum aufräumen ein apt-get autoremove

Die neue Version kann man mit einem der folgenden Befehlen prüfen:

cat /etc/issue
uname -a (Kernel Info)
cat /etc/debian_version

Die volle Dröhnung mit allen Infos gibt es übrigens bei Debian direkt:

https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.de.html