De Linux mediaserver deel 3: Software installeren

In de voorgaande twee afleveringen van deze blog heb ik beschreven hoe ik mijn van origine onder Windows draaiende Mediaserver heb overgezet naar Ubuntu Linux en daarna hoe ik een paar vervelende probleempjes heb overwonnen. Aangezien de server nu netjes en betrouwbaar draait is het tijd om software te gaan installeren!

SAMBA

Als eerste ga ik een SAMBA server installeren op de server. In een omgeving die Windows machines heeft is dat een absolute must. De SAMBA server zorgt ervoor dat de schijven in de Mediaserver overal in het netwerk kunnen worden gezien en gebruikt. Ook door Windows machines.

Bij het installeren van de Ubuntu serverversie had ik aangegeven dat de SAMBA server direct mee moest worden geïnstalleerd. Het ‘enige’ wat ik nu nog moet doen is er voor zorgen dat de buitenwereld via SAMBA de juiste schijfpartities kan gebruiken. Om SAMBA te configureren openen we zijn configuratiebestand in de editor:

sudo gedit /etc/samba/smb.conf

Dit bestand bevat heel veel commentaar en een aantal belangrijke configuratieregels. De eerste die goed moet worden ingesteld is

workgroup = WORKGROUP

Wanneer je nooit iets hebt veranderd aan de standaard Windows groep, dan is dit correct. Heb je dat wel gedaan (ik heb bijvoorbeeld mijn werkgroep THUIS genoemd), dan vul je die hier in. Daarna moeten voor elke share die je wilt kunnen zien in de netwerkomgeving groepen worden aangemaakt in dit bestand. Dit gebeurt helemaal onderaan. Er staat al een voorbeeld met de naam [share]. Vervang dit door je eigen groep. De naam tussen de rechte haken wordt straks de sharenaam die zichtbaar is op het netwerk. Een voorbeeld is:

[films]
comment = Films schijf
read only = no
locking = no
path = /media/films/Films
guest ok = yes
create mask = 0775
directory mask = 0775

Hierin moet path wijzen naar een directory. Ik heb hier de plaats genomen waar ik één van mijn schijven heb gemount (/media/films, zie ook deel 2 van dit verhaal) waarvan dan weer de map Films (met hoofdletter dus) met de buitenwereld wordt gedeeld. De buitenwereld ziet dan alleen een map ‘films’ (de naam die tussen rechte haken staat) en ziet daarin de inhoud van /media/films/Films.  De andere parameters zorgen ervoor dat iedereen zonder restricties deze share kan gebruiken.

In Windows (of op bijvoorbeeld een mediaplayer die zich in het netwerk bevindt) is nu de Mediaserver zichtbaar. Wanneer we die openen dan verschijnen vervolgens de shares die we hebben aangemaakt op de Mediaserver. Door de bovengenoemde parameters kunnen we zowel lezen van als schrijven naar deze share. Nadat de wijzigingen zijn aangebracht en het bestand is opgeslagen, dan moet de SAMBA server opnieuw worden gestart, waarna hij zichtbaar wordt:

sudo service smbd restart

Het kan nu zijn dat de share die zo netjes is gedeeld niet de juiste rechten heeft, zodat niet iedereen daarnaar mag schrijven. Bekijk dat dan door naar die directory te gaan en het volgende commando te geven:

cd /media/films
ls -l

Dit geeft de rechten voor /media/films aan op de volgende manier:

De letterreeks links geeft de rechten aan: d=directory, rwx=read,write,execute voor achtereenvolgens de eigenaar, de group waarin hij zit en de overige users. In het voorbeeld hierboven heeft Films de rechten drwxrwxrwx. Maximaal dus. Zonder hier verder op in te gaan (lees anders hier even hoe het precies zit), je kunt eventueel de rechten goedzetten met het commando

sudo chmod -R 777 Films

Dit commando zet voor de directory Films en al zijn bestanden maximale rechten aan. hierna zal de share volledig toegankelijk zijn.
Wanneer de server eenmaal draait kan nog verder worden gesleuteld aan de parameters van SAMBA, lees daarvoor bijvoorbeeld dit artikel.

Logitech Mediaserver

Dit programma kan als een daemon (dat is de Linux benaming voor een proces dat op de achtergrond draait, Windows noemt dat een service) op de Mediaserver draaien en is in eerste instantie bedoeld voor het aansturen van diverse Logitech hardware zoals de Logitech Squeezeboxen, maar dient ook als server voor DLNA en uPNP clients. Kort gezegd: je kunt er je muziek mee streamen over je netwerk.

Om dit programma binnen te halen moet eerst een bron worden toegevoegd aan de lijst waaruit apt-get zijn programma’s haalt. Doe daarom het volgende:

sudo gedit /etc/apt/sources.list

voeg helemaal onderaan een regel toe:

deb http://debian.slimdevices.com stable main

en sla het bestand op. Werk daarna apt-get bij:

sudo apt-get update

En ga nu de “Logitech mediaserver” downloaden en installeren:

sudo apt-get install logitechmediaserver

De “Logitech mediaserver” wordt daarmee geïnstalleerd en gestart. Je kunt nu vanaf een willekeurige pc in het netwerk bij de “Logitech mediaserver” door in de browser het IP-adres van de Mediaserver (de computer dus, de naamgeving is hier ietwat verwarrend besef ik nu) te kiezen en poort 9000. Dus als je je Mediaserver bijvoorbeeld draait op IP-adres 192.168.1.5, voer dan in

http://192.168.1.5:9000 of (als de server ‘mediaserver’ heet) gewoon mediaserver:9000

De Logitech Mediaserver interface

De interface van de “Logitech mediaserver” verschijnt en je kunt nu een aantal vragen beantwoorden, bijvoorbeeld over welke muziek moet worden geïndexeerd. In Windows is

de “Logitech mediaserver” ook te vinden in de netwerk omgeving. Vaak zelfs meer dan één keer. Door één van deze Devices aan te klikken kom je ook in de interface, die in de Browser is opgestart.

Foobar 2000

Zoals gezegd kan de Logitech Mediaserver niet alleen bestanden leveren aan de diverse Logitech apparatuur, maar ook aan andere software. Onder Windows kan je bijvoorbeeld het fraaie gratis programma foobar2000 gebruiken om muziek van de Mediaserver te draaien.

SABnzbd

Dit is een veelgebruikt pakket voor het downloaden van zaken vanuit Usenet. Het pakket is zowel verkrijgbaar voor Windows als voor Linux (en ook voor de Mac trouwens). Het draait ook als een daemon op de achtergrond en is te benaderen via de browser.

Om SABnzbd te kunnen draaien moet ook de programmeertaal Python worden geïnstalleerd. Python en SABnzbd kunnen worden geïnstalleerd met de volgende commando’s:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:jcfp/ppa
sudo apt-get update
sudo apt-get install sabnzbdplus
sudo apt-get install sabnzbdplus-theme-mobile

De laatste regel is niet noodzakelijk, maar voegt een thema toe dat er voor zorgt dat SABnzbd ook goed werkt vanaf een mobiel apparaat. Nu moeten er nog wat instellingen goed worden gezet om te zorgen dat SABnzbd start als daemon. Open eerst het configuratiebestand:

sudo gedit /etc/default/sabnzbdplus

Zet hierin achter user= je inlognaam. Ik heb daar dus staan user=ronald.
Verder hoeft normaal gesproken niets te worden aagepast. Mocht e.e.a. niet starten dan moeten wellicht de execute rechten goed worden gezet:

sudo chmod +x /etc/init.d/sabnzbdplus

Maar waarschijnlijk staat dat al goed. Start de daemon dan met

sudo /etc/init.d/sabnzbdplus start

Je kunt nu SABnzbd vanaf het netwerk vinden op poort 8080 van je mediaserver:

http://192.168.1.5:8080 of (als de server ‘mediaserver’ heet) gewoon mediaserver:8080

De interface van SABnzbd op poort 8080

Configureer goed voordat je gaat draaien! Kijk indien nodig hier hoe alles het beste kan worden ingesteld.

Gebruiken vanaf het netwerk

Gekoppelde apparatuur

Nu de mediaserver draait en opgetuigd is met de juiste software kan ik er vervolgens mee koppelen. Ik gebruik daarvoor twee ‘kastjes’: een mediaplayer van het merk Mede8er voor films e.d. en een Logitech Squeezebox voor muziek. Dank zij de SAMBA server kan ik de Mede8er zonder enig probleem koppelen aan de schijven waarop al het beeldmateriaal staat en dankzij de Logitech Mediaserver kan ik muziek draaien die zich op de server bevindt.

Daarnaast kan ik de server natuurlijk ook gebruiken als fileserver. Voor het maken van backups bijvoorbeeld. In de volgende aflevering van deze blog ga ik onder andere OwnCloud installeren, waarmee – de naam zegt het al – een eigen cloud kan worden gerealiseerd.

Linux Mediaserver deel 2: betrouwbaar draaien

In mijn vorige blog heb ik beschreven hoe ik mijn Windows 7 mediaserver heb omgezet naar Linux (Ubuntu 12.04 LTS). De eerste fase ging daarbij weliswaar niet helemaal van een leien dakje, maar achteraf ben ik er best tevreden over. Helaas gaf de tweede fase wat meer problemen.

Bij het opnieuw starten van de server merkte ik dat hij soms helemaal niet startte (het scherm bleef zwart, de computer stil) of een vreemde melding gaf over één van de aanwezige schijven. Aangezien een server eerst vlekkeloos moet werken voordat je er verder mee gaat, besloot ik die problemen eerst eens op te lossen.

Een Linux BSOD?

Ik kon zelf het feit dat de server af en toe niet wilde starten helemaal niet plaatsen. Was het de Linux variant van het B(lack) S(creen) O(f) D(eath)? Ook het hierover nalezen op internet bracht me niet veel verder, maar ik heb wel veel opgestoken van de werking van Linux! Gelukkig kan ik als ik het echt niet weet terugvallen op anderen (bedankt, @wilboard!) om dit op te lossen. Het bleek dat de APIC instelling in mijn BIOS niet goed of onvoldoende werkte, maar een Kernel Boot Parameter kon dit verhelpen. Het blijkt zo te zijn dat dit zelden voorkomt bij de nieuwere moederborden, maar bij mijn moederbord uit 2010 dus wel helaas. Het was zaak om de noapic parameter toe te voegen aan het grub bestand. In dit bestand worden de default waarden die bootloader grub hanteert ingesteld. Geen dagelijkse kost dus. Tijd om mijn vaardigheden ‘aan de prompt’ te testen. Het betreffende bestand wordt geopend met het commando

sudo nano /etc/default/grub

grub default bestand

In het bestand moet de regel GRUB_CMDLINE_LINUX_DEFAULT worden aangepast. Als er al parameters in staan, dan dient de parameter noapic aan het eind te worden toegevoegd binnen de aanhalingstekens. Er staat dan bijvoorbeeld:

GRUB_CMDLINE_LINUX_DEFAULT=”noapic”

Sla het bestand op en voer het volgende commando uit:

sudo update-grub

en start daarna het systeem opnieuw op. Daar zijn verschillende commando’s voor, ik prefereer:

sudo shutdown -r now

waarmee eigenlijk aan het systeem wordt verteld dat er een shutdown moet plaatsvinden, dat hij daarna moet herstarten en dat dat direct moet gebeuren. Door de logica in de syntax zat dit commando al direct in mijn geheugen!

Grafische interface

In eerste instantie was ik van plan om voorlopig geen grafische interface te installeren, maar bij gebrek aan een editor die ook voor mensen die niet al 5 jaar Linux draaien te begrijpen is besloot ik toch maar aan de grafische interface te gaan. Dan kon ik tenminste de editor gedit gaan gebruiken…

In een eerder artikel heb ik een aantal mogelijke interfaces behandeld. Omdat het voor een server niet nodig is om een hele uitgebreide interface te hebben heb ik gekozen voor xfce. En aangezien het er mij alleen maar om gaat om een beetje makkelijker te kunnen werken als dat nodig is en ik het meeste toch op de console blijf doen, kies ik voor de minimale versie. Daarna installeer ik gelijk de grafische editor gedit. Gebruik de volgende commando’s:

sudo apt-get install xfce4
sudo apt-get install gedit

Het installeren wijst eigenlijk zichzelf. Wanneer alles geïnstalleerd is, dan kan je de grafische interface starten met het commando

startx

De xfce grafische interface

De xfce interface is mooi opgeruimd en doet een beetje Windows XP achtig aan, maar dan met de toolbar aan de bovenkant. Linksboven het Applications Menu, met daarin alle programma’s, inclusief het onvolprezen gedit! De eenvoudige filemanager Thunar is ook aanwezig en is voldoende om snel door de bestanden je weg te zoeken, maar niet voor geavanceerde taken.

Schijfperikelen

Nu de server niet meer bleef hangen bij het starten en de grafische interface draaide was het tijd voor het tweede probleem. De machine is uitgerust met 4 schijven van elk 2 TB. Op één van die schijven is een deel ingeruimd voor Linux, opgedeeld in 2 partities. De ene partitie is geformatteerd als ext4, de andere is een swapfile. De rest van de schijven zijn (omdat ze eerst onder Windows hebben gedraaid) als NTFS geformatteerd.

Linux gaat met schijven heel anders om dan Windows. Dat was echt even wennen als je al je leven lang met die schijfletters werkt. De schijven zijn te vinden in de Linux boomstructuur onder /dev en worden aangeduid volgens een logisch schema. Hier staat precies uitgelegd hoe dat in elkaar zit, mijn 4 schijven werden door Linux aangeduid als /dev/sda, /dev/sdb, /dev/sdc en /dev/sdd. Partities op die schijven worden dan weer aangeduid met een cijfer, bijvoorbeeld /dev/sda1. Heel logisch als je het eenmaal weet.

Om in de grafische omgeving commando’s te kunnen geven vanaf de prompt staat onderaan een launcher met een paar veelgebruikte programma’s. De tweede van links opent de terminal emulator:

Veel informatie over je schijven kan je tevoorschijn halen met het commando

sudo fdisk -l

Windowsgebruikers zijn gewend dat alle schijven altijd direct beschikbaar zijn, maar onder Linux is dat niet zo. In Linux moet een schijf, of beter gezegd een partitie op de fysieke schijf, eerst worden ‘gemount’. Dit gebeurt door de gewenste partitie met het mount commando te koppelen aan een fysieke map op schijf. Meestal wordt daar een map in /media voor genomen. Maak daarom eerst een nieuwe map aan:

sudo mkdir /media/drive_a

En mount dan de schijf naar die map:

sudo mount /dev/sda1 /media/drive_a

Dit is allemaal heel leuk als je af en toe iets moet gebruiken, maar voor een harde schijf in de machine is dat knap lastig. Ik wilde daarom dat die schijven bij het starten van de server automatisch worden gemount. Toen ik had geregeld (het hoe en wat sla ik over, omdat het zinloze informatie is) en de machine opnieuw startte, traden er de raarste verschijnselen op. De schijven waren dan weer wel en dan weer niet goed toegankelijk en uiteindelijk bleek dat Ubuntu NIET bij elke opstart dezelfde schijfletters toekende aan de diverse schijven! Misschien is dat normaal gedrag onder Linux, ik weet het niet, maar ik vond het knap lastig en behoorlijk vreemd. Zeg maar gerust irritant. Uiteindelijk vond ik na wat zoekwerk uit dat je daarom de IDs van de schijven moet gebruiken, aangeduid als de UUID…. Volgt u me nog? Wanhoop niet als het niet zo is, want ik ga het hierna stapsgewijs beschrijven.

Stap 1: Maak voor alle partities die moeten worden gemount een map aan in /media. Neem daarvoor logische namen, bijvoorbeeld /media/films of /media/muziek, dat maakt het leven straks een stuk gemakkelijker.

Stap 2: We bepalen nu de UUIDs van alle partities in de machine en schrijven deze naar een bestand. Ik schrijf het bestand naar mijn homedirectory /home/ronald, omdat ik daar altijd alles mag schrijven:

sudo blkid > /home/ronald/UUIDs.txt

Stap 3: Open het bestand fstab, dat het mounten van de verschillende schijven regelt (belangrijk: ga niet rommelen met dit bestand als je niet zeker bent! Test desnoods eerst of alles werkt met het mount commando voordat je dit wijzigt!):

sudo gedit /etc/fstab

Het bestand bevat een aantal algemene richtlijnen en de informatie over de partities van Linux. Wellicht is het raadzaam eerst bijvoorbeeld deze verhandeling over fstab eens door te lezen!

Open nu ook het bestand met de UUIDs om deze straks te kunnen kopiëren:

sudo gedit /home/ronald/UUIDs.txt

In mijn geval had Ubuntu zelf al de UUIDs van de opstartpartitie en de swap-partitie in fstab gezet. Er stond bij dat dit eerder de partities /dev/sdd5 en /dev/sdd6 waren. Dat heb ik dus vooral zo gelaten en ik heb alleen de andere partities toegevoegd als UUID. Voor elke partitie die automatisch moet worden gemount wordt een regel toegevoegd die er als volgt uitziet:

[Device] [Mount Point] [File_system] [Options] [dump] [pass]

Welke parameters er moeten worden gebruikt hangt van de toepassing af en van het bestandssysteem. Aangezien ik bestaande NTFS schijven gebruik, die door iedereen moeten kunnen worden gelezen en geschreven, kom ik op de volgende regel (voorbeeld):

UUID=32B8C7ADB8C76E43  /media/muziek  ntfs  nls=iso8859-1,users,umask=000,user  0  0

Hierin zijn de volgende onderdelen te herkennen:

[Device]
UUID=32B8C7ADB8C76E4
Het reeds besproken ID van de schijfpartitie

[Mount Point]
/media/muziek
Plaats waar de gemounte schijf kan worden teruggevonden

[File_system]
ntfs 

Bestandssysteem. Voor Windowsschijven is dat tegenwoordig meestal ntfs

[Options]
nls=iso8859-1,users,umask=000,user
Opties om goed met de schijven te kunnen werken. De eerste optie is handig om Nederlandse namen goed weer te geven (accenten e.d.), maar is niet echt noodzakelijk. De laatste 3 zorgen ervoor dat iedereen onbeperkte rechten heeft. Dat is straks noodzakelijk vanwege het gebruik in een netwerk.

[dump]
0
Houdt verband met een (verouderde) backup optie. Altijd 0 laten.

[pass]
0
Wanneer deze optie 2 is, wordt hij gecheckt op fouten bij het opstarten. Indien 0 niet.

Met behulp van de UUIDs die ik nu heb, veel informatie van internet en wat uitproberen lukt het me uiteindelijk om de juiste parameters te kiezen (de bovenstaande dus) en fstab is nu goed ingesteld!

Pfff…. Alles werkt!

Achteraf kan ik dus gerust stellen dat ik heel wat tijd zwetend heb doorgebracht voordat dit echt goed en naar mijn zin liep, maar nu start alles perfect en worden mijn NTFS schijven ook netjes gemount bij het opstarten. Ruim voldoende lijkt me voor deze keer.

In een volgende blog ga ik onder andere de SAMBA server behandelen die nodig is om de schijven met media te delen met de rest van het netwerk….