Artikel top billede

(Foto: Computerworld)

Guide: Lav den ultimative hjemmeserver

Alt om DATA viser, hvordan du kan oprette en Debian-hjemmeserver, der beriger dit liv.

Af Torben Okholm, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Det at køre Linux på hjemmecomputeren er noget af en initiationsritus, og det gælder især, når Linux bliver ens dominerende operativsystem. Venner ser undrende til, når de besværgelser, man skriver på tastaturet, fører til esoterisk konsoloutput, fejlmeddelelser eller billeder af katte.

De spørger, om de også kan køre Linux, og du svarer noget uudgrundeligt i retning af: “Jeg kan kun vise dig døren, du må selv gå igennem den.” Efter det holder de hurtigt op med at være dine venner, men pyt med det. Du har ikke brug for venner, når du har Linux. Linux er nemlig et fremragende styresystem til en hjemmeserver.

I denne artikel viser vi, hvordan man kan konfigurere en maskine, der kan lagre dokumenter, dele fotos i hele hjemmet, afvikle cloudbackups og meget mere.

Frygt ikke, hvis du aldrig har prøvet sådan noget før: Som i mange andre aspekter af Linux er processen meget nemmere, end den plejede at være. I begyndelsen kan det virke lidt skræmmende at arbejde uden en grafisk brugerflade, men så snart den indledende opsætning er overstået, kan man klare alt andet fra skrivebordet.

[irp]

Hvis du allerede har prøvet det før, kan du måske lære nogle nye tricks. Eller også kan du skrive til os og fortælle, at vores strategi er helt hen i vejret. Vi venter med tilbageholdt åndedræt.

Hardware til hjemmeserver

En typisk hjemmeserver kræver ikke megen processorkraft.

En dual core Pentium-chip er fin, og 4 GB ram er mere end nok. En kabelforbindelse er at foretrække frem for en trådløs, og du kan overveje at købe netstrøm-adaptere, hvis din server skal bo langt fra routeren.

Det er klogt at investere i gigabit-ethernet (der kan kræve opgradering af hjemmerouteren), navnlig hvis du forventer at have masser af data til at flyde mellem din server og klientmaskinerne i dit hjem. Små kabinetter kan gemmes af vejen i hjørner og kroge, men de populære Mini-ITX-kabinetter kan ofte ikke rumme mere end et eller måske to 2,3”-drev, og det kan være et problem.

Vi installerer vores styresystem på ét drev (ideelt set et ssd, men ellers en harddisk eller sågar en hurtig USB-nøgle) og har et todrevs-RAID 1 array (mirrored) til lager. Vores styresystemdrev bør være på mindst 20 GB, Vi rutter ikke med pladsen her, men plads til at flytte kan være praktisk.

Store ssd’er er kostbare, og derfor er roterende diske at foretrække til lagerløsning i terabyte-klassen. Drev-mirroring kan virke unødvendig (navnlig når vi fortæller dig, at RAID ikke er nogen erstatning for backup), men der kan ske fejl, og servere fortjener mere omhu end en hjemmemaskine. Hvis du foretrækker en anden disk-strategi, er det helt fin

[irp]

Anlægsarbejdet: Saml maskinen, og sørg for, at den virker. Installer så Debian.

for ikke ret lang tid siden ville vi have været nødt til at bruge over en side på at gennemgå hardware-betragtninger. Dengang var hardwaresupport noget af et minefelt. I dag kan vi vride det hele ind i boksen forneden på siden.

Det er ikke alt, der er perfekt på Linux, men alvorlig hardware-inkompatibilitet er stort set forbeholdt laptops. De problemer, du måtte oplave andetsteds, er gerne beskedne og nemme at løse.

Dette er det minimalistiske Debian-sæt, vi lagde ud med. Installationen fyldte lidt over en gigabyte. Dette er det minimalistiske Debian-sæt, vi lagde ud med. Installationen fyldte lidt over en gigabyte.

I teorien kan du sammenstykke gamle dele og lave en server, men gamle komponenter (navnlig harddiske og strømforsyninger) har det med at gå i stykker, og det er ikke noget godt udgangspunkt for en server. Og hvis disse komponenter går i stykker, kan man i mange tilfælde kun erstatte dem med dele i brugt stand (og ofte til alt for høje priser).

Desuden er det ti år gamle IDE-drev, der bor på dit bord, næppe hurtigt nok eller rummeligt nok. Hertil kommer, at gamle enheder ofte varmer og støjer, og der er ingen, som ønsker sig ildebrand, ineffektivitet eller spektakel. Og hermed er vores betragtninger over risici ved gammel hardware ovre. Naturligvis kan du bruge ekstra enheder, hvis du har nogle liggende, men gør det kun, hvis du har tillid til deres holdbarhed.

[irp]

Vi vil bruge Debian til vores server, men alle de pakker, vi omtaler, kan man få på andre distroer, og du kan derfor vælge, hvad du har lyst til. Hvis du insisterer, kan du også bruge desktop-distroer, men vi har intet behov for GUI’er til dette formål. Sager som Ubuntu Server, CentOS og Arch Linux er mere fornuftige valg.

Vi vil have en virkelig enkel partition til vores styresystem-drev – blot en ext4-partition til styresystemet og en swap-partition – det er stort set, hvad man får, hvis man accepterer en standardinstallation. Nogle mennesker vil være fristet til at gøre noget mere eksotisk såsom snapshots, gendannelsespartitioner og LVM, men vi arbejder ud fra den teori, at hvis det værste skulle ske, er vores konfiguration nem at gendanne med en frisk installation. Det bliver endnu nemmere, hvis man tager backup af et par vigtige konfigurationsfiler.

Vores server, de herlige tjenester den leverer, og dens plads i det større netværk. Vores hjemmeserver, de herlige tjenester den leverer, og dens plads i det større netværk.

Det er nemt at installere Debian.

Hent blot ISO’et (enten den lille Network Install eller den første cd fra installationssættet) fra www.debian.org, og du er klar. Du bliver bedt om at angive et kodeord til rodbrugeren. Hvis du sætter til blank, fravælger du rodkontoen og installerer sudo, hvilket du muligvis vil foretrække. Du får afgjort brug for mindst én brugerkonto på dette trin. Senere kan du tilføje andre efter behov (med voldsomme lagerkvoter, hvis du den slags sysadmin). Funktionen “Guided – use entire disk” opretter en ext4- og en swap-partition, og det er alt, hvad din server har brug for.

[irp]

Når det hele er installeret, genstarter du i det nye system og logger på som rod (eller din bruger, hvis du har fravalgt rod-kontoen; vi bruger prompten # til at angive kommandoer, der kræver brug af sudo ). Der er god øvelse i at holde din server up to date, og vi begynder derfor med at opdatere pakkelister og hente de allerseneste opgraderinger:
[su_highlight background="#D3d3d3"]# apt-get update[/su_highlight]

Tilføj et RAID-setup: Opret et mirrored array af redundant lager, og gør så din server nem at finde med en statisk IP.

Det næste skridt

At oprette et software-RAID-array ved hjælp af mdadm. Lad os antage, at vi har to 1 TB-drev. Der findes en naturlig modvilje mod at give køb på kapacitet, og det er fristende at have to store partitioner (en på hvert drev). Men hvis det ene drev svigter, mister du halvdelen af dine data, og ifølge Murphys Lov bliver det den gode halvdel.

Du kan også være endnu mere skødesløs og samle flere drev i det, man kalder “Just a Bunch of Drives” (JBOD), men hvis et drev svigter her, mister du alle dine data. Lad være med at hade dine data. Der er også en udbredt fejlopfattelse, der siger, at ens drev skal være ens i et RAID. Der er faktisk et fornuftigt argument for at bruge forskellige drev eller i hvert fald drev fra forskellige produktionslinjer for at undgå produktionsfejl.

Tjek enheds-nodes

Når drevene er forbundet, skal du tjekke deres enheds-nodes ved at køre lsblk ; det ville være uheldigt, hvis vi slettede vores Debian-installation.

Vi antager, at vores datadrev er /dev/sdb and /dev/sdc. Det første trin er at partitionere drevene, og til dette formål vil vi bruge gdisk (afgjort nødvendig ved drev på over 2 TB). SSH ind i din server (som rod, hvis du tidligere har angivet et kodeord), og kør:

[su_highlight background="#D3d3d3"]# apt-get install gdisk

# gdisk /dev/sdb[/su_highlight]

Skriv p for at få opregnet eventuelle eksisterende partitioner.

Dem skal du slette ved at trykke d og følgende kommandoer, indtil der ikke er flere tilbage. Opret nu en ny partition ved at trykke n og acceptere 1 som standard for dens nummer. Accepter også standard-startsektoren ved at trykke Enter.

Wikipedia kan fortælle dig alt om de eksotiske RAID-niveauer, men du skal bruge mere end to harddiske, hvis de skal gøre nogen nytte.  Wikipedia kan fortælle dig alt om de eksotiske RAID-niveauer, men du skal bruge mere end to harddiske, hvis de skal gøre nogen nytte.

Vi kunne godt bruge hele drevet og lade den sidste sektor markere partitionens slutning, men det kan være risikabelt: Der er ofte afvigelser på nogle få megabytes mellem drev med den samme specificerede kapacitet (selv hos drev med identiske modelnumre).

Det er ikke noget problem til at begynde med, men vi kan være nødt til at erstatte et drev i fremtiden, og det vil være irriterende, hvis dette erstatningsdrev var en lille smule mindre. Derfor skriver vi i vores tilfælde -1G for den sidste sektor og ofrer dermed 1 GB. Det er sikkert overdrevent forsigtigt, men der er blot tale om 0,1 procent af den samlede kapacitet, og det kan spare os for meget besvær senere.

Brug en tilsvarende ratio, hvis dine drev har en anden størrelse, og prøv dig frem, hvis beregningerne er tvivlsomme. Du kan altid prøve igen. Skriv partirionatypen FD00 , når du bliver bedt om det, og tryk derefter p , så du sikrer dig, at det hele ser godt ud. Hvis det er tilfældet, trykker du w og skriver dermed tabellen til disken. Gå nu ud af gdisk, og gentag processen for /dev/sdc.

Vi skal også installere konfigurere mdadm. Installationen er blot # apt-get install mdadm , der spørger, om du har brug for nogen mdadm-enheder, som skal være til stede ved bootning. Det har vi ikke, og derfor skriver vi blot none . Til allersidst sletter vi drevets superblocks for det tilfældes skyld, at de stadig rummer data fra tidligere RAID-arrays:

[su_highlight background="#D3d3d3"]# mdadm --zero-superblock /dev/sdb /dev/sdc[/su_highlight]

Nu er drevene klar, og vi kan oprette vores spejlede array:

[su_highlight background="#D3d3d3"]# mdadm --create /dev/md0 --level=1 --raid-de-vices=2 /dev/sdb1 /dev/sdc1[/su_highlight]

Dette spørger, om der er metadata ved drevets begyndelse.

Tag det roligt: Her kan man altid trygt skrive y . Dernæst bliver der oprettet en ny enheds-node, og på dette stade ville det være upassende ikke at lægge et filesystem oveni: # mkfs.ext4 /dev/md0 .

[irp]

Vi skal oprette et mountpoint til vores RAID-enhed, og det gør vi ved at skrive # mkdir /mnt/mpcraid . Til sidst skal vi sikre, at vores array bliver automatisk tilgået ved bootning. Vi kunne sikkert slippe godt fra at referere til arrayet ved dets enheds-node (/dev/md0), men det er sikrere at bruges dets UUID, som vi erfarer med # blkid .

Udstyret med denne viden kan vi føje en linje af denne form til /etc/fstab, og så burde alt være godt.

[su_highlight background="#D3d3d3"]UUID=”90abcdef-...” /mnt/mpcraid ext4 defaults 0 0[/su_highlight]

 

DET, RAID - Beskytter og ikke beskytter

Med RAID 1 er det sådan, at hvis noget går galt på vores datadrev, kan vi gendanne data (hvis der er tale om et enkelt drev) eller fælde en tåre, fordi vi ikke havde fulgt en backupstrategi for nedbrud, og nu er hele vores array ulæseligt. Det kan lyde hysterisk, men det er vigtigt at erkende, at den slags sker. Drev kan også svigte stilfærdigt med tavse datanedbrud til følge, og det beskytter RAID ikke imod.

Når du læser sådan noget, bliver du måske fristet af tanken om at oprette LVM for at samle dine drev i én enkelt enhed. Det har den ulempe, at hvis et drev går ned, bliver det hele ulæseligt. Den praksis kalder man nogle steder “at hade sine data”. Lad være med at hade dine data. Sørg for at have en backupstrategi.

I øvrigt er mange af de data, som du agter at lagre, nemme at erstatte: Linux-ISO’er og Steam-biblioteker kan man downloade igen, cd’er og dvd’er kan man indlæse igen og så videre.

[irp]

Etabler en statisk ip-adresse: Det er på tide, at din server holder op med at være hjemløs.

Som standard beder Debian om en ip-adresse fra din router via DHCP. Det betyder imidlertid, at ved næste genstart kan den meget vel have fået en anden ip, der gør det besværligt at SSH’e ind fra et andet sted på netværket, og det laver også ravage i forbindelse med fremtidige port-arrangementer.

Nogle bredbåndsroutere gør det muligt at reservere en ip til en maskine på baggrund af dens MAC-adresse, og det kan være en løsning på dette problem, men vi kan også blot oprette en statisk ip på vores server. Vi skal bruge en adresse, der har samme facon (og hermed mener vi, at den tilhører det samme /24-subnet) som din router – den ip-adresse, som den allerede har fået tildelt, er et glimrende valg. Den kan du finde ved at køre denne kommando: # ip a.

Den viser en masse nyttige oplysninger om dine netværkinterfaces, og dem er der sandsynligvis mindst to af: et loopback-interface, lo , og dit ethernetkort, eth0 . Led efter en linje, der ser omtrent sådan ud:

[su_highlight background="#D3d3d3"]inet 192.168.1.100/24 brd 192.168.1.255 scope global

eth0[/su_highlight]

i eth0 -stanzaen. Delen 192.168.1.100 er din maskines IPv4-adresse (vi beskæftiger os ikke med IPv6-adresser i dag) på dit hjemmenet. Din vil ser anderledes ud (den kan endda begynde med 192.168), og du kan derfor ikke blot kopiere denne blindt. I dette tilfælde begynder routerens adresse også med 192.168.1. Du kan finde den sidste del, hvis du ikke allerede kender den, ved at se på det med småt på routeren eller ved at køre denne kommando:

[su_highlight background="#D3d3d3"]# netstat -nr[/su_highlight]

og se på dens Gateway (som regel 1 eller 254). Foruden at tildele ip’er giver DHCP også information om routing og DNS-information, og eftersom vi undgår DHCP, skal vi eksplicit fortælle vores maskine om vores nerværk. I Debian foregår alt det i en fil, som man tager backup af og åbner med disse kommandoer:

[su_highlight background="#D3d3d3"]# cp /etc/network/interfaces{,.bak}

# nano /etc/network/interfaces[/su_highlight]

Erstat linjen

[su_highlight background="#D3d3d3"]iface eth0 inet dhcp[/su_highlight]

med den følgende blok (idet du bevarer eventuelle foregående linjer såsom allow-hotplug eth0 ):

[su_highlight background="#D3d3d3"]iface eth0 inet static

address 192.168.1.100

netmask 255.255.255.0

gateway 192.168.1.254[/su_highlight]

hvor gatewayadressen tilhører routeren. Gem denne fil, og gå ud med Ctrl-x, y, Enter. Vi skal også bede Debian om at bruge routeren til hostname-lookups, og det inddrager endnu en fil:

[su_highlight background="#D3d3d3"]# nano /etc/resolv.conf[/su_highlight]

Denne gang sletter vi alle linjer, der begynder med nameserver, og sætter i deres sted linjen:

[su_highlight background="#D3d3d3"]nameserver 192.168.1.254[/su_highlight]

Igen hører ip’en til din router (der fremsender DNS-kald til din internetudbyder). Du vil måske foretrække at bruge Googles DNS-servere (8.8.4.4 og 8.8.8.8; flere nameserver -linjer er tilladte. Uanset hvad du gør, gemmer du, går ud og genstarter netværket med:

[su_highlight background="#D3d3d3"]# systemctl restart networking[/su_highlight]

Tjek nu, at du stadig har forbindelse med:

[su_highlight background="#D3d3d3"]# ping -c5 google.com[/su_highlight]

Første gang du SSH’er ind i en maskine, skal du bekræfte maskinens fingeraftryk. Kommandoen “ip” viser en masse information efter få tastaturtryk. Første gang du SSH’er ind i en maskine, skal du bekræfte maskinens fingeraftryk. Kommandoen “ip” viser en masse information efter få tastaturtryk.

Hvis du ser dette

[su_highlight background="#D3d3d3"]ping: unknown host google.com[/su_highlight]

er der noget galt med dine nameserver-indstillinger. Hvis du ser en anden fejlmeddelelse, trænger dine
interfaces -fil til justering. Prøv at gendanne indstillingerne – er backup ikke en herlig opfindelse? Måske skal din router bruge en anden netmask.

Det første, vi skal ordne, er SSH, således at vi kan logge ind på din server på afstand. Installer den med apt-get install openssh-server , der også starter serveren. Du kan prøve at logge ind ved at køre ssh 192.168.1.100 på en anden Linux-maskine eller ved at bruge PuTTY i Windows.

Det er en god ide at genstarte serveren på dette trin for at tjekke, at netværksindstillingerne overlever en genstart, og at vores SSH-server-starter. Nu, da SSH virker, er tastatur, mus og skærm måske midlertidigt slået fra, og vi kan fortsætte indstillingerne fra en anden maskine, hvis du har lyst.

Få remote access: Kontroller din server med dynamisk DNS og forwarding-porte.

Sådan ser port-forwarding ud på en billig Trendnet-router. Det er anderledes på anden hardware, men grund-ideen er den samme. Sådan ser port-forwarding ud på en billig Trendnet-router. Det er anderledes på anden hardware, men grund-ideen er den samme.

Det kan være praktisk at have adgang til sin server fra hele verden, men der er risici forbundet ved at køre internet-tilkoblede tjenester. Hvis vi tillader adgang til SSH-tjenesten udefra, bør vi afgjort have stærke kodeord eller (bedre) bruge nøgler.

Det er fornuftigt at frakoble adgang til rodkontoen (hvis du gav den et kodeord under installationen, ellers er den allerede slået fra) og logge ind som almindelig dødelig, idet du bruger sudo til privilegerede handlinger. Det kan man styre med indstillingen PermitRootLogin i /etc/ssh/sshd_config, som man man stille til No eller, hvis du vil tillade roden at logge ind med en nøgle, prohibit-password (standard i Debian).

Det er dog sikkert en god ide først at tjekke, at SSH virker. Prøv derfor at logge på fra en anden maskine:

[su_highlight background="#D3d3d3"]$ ssh user@192.168.1.100[/su_highlight]

hvor user er dit brugernavn på serveren (vi bruger konsekvent denne kombination af brugernavn og ip-adresse). Hvis det virker, logger du ud, hvorefter vi genererer vores nøgle (det behøver ikke at foregå på serveren). Hvis det ikke virker, skal du tjekke logs på serveren for fejl med journalctl _COMM=sshd .

Når vi skal generere et 2.048-bit RSA-nøglepar, kører vi kommandoen ssh-keygen , logget på en anden maskine som din bruger. Vi kopierer den til serveren bagefter. Accepter standardlokationen, og vælg et kodeord til din nøgle. Det tilføjer et ekstra sikkerhedslag, hvis nøglen bliver stjålet.

SSH-nøglelogin fungerer ved hjælp af en offentlig nøgle (det gør ikke noget, at andre ser den) på serveren, og en privat nøgle, der bliver beskyttet af brugeren. Begge nøgler skal bruges under loginprocessen til at verificere brugeren. Det betyder, at man er nødt til at have sin private nøgle på sig, hvor man går og står.

Forskellige mennesker vil have forskellige meninger om, hvordan man håndterer det bedst. Men hvis du har nøglen liggende på et USB-drev, skal du huske ikke at glemme dette drev i bussen.

Når man kører ssh-copy-id user@192.168.1.100 , bliver vores offentlige nøgle føjet fra standardlokationen (~/.ssh/id_rsa.pub) til filen /home/user/.ssh/authorized_keys på serveren. Det kan man også gøre manuelt, men hvorfor spilde tastaturtryk? Vi kan prøve, om det virker:

[su_highlight background="#D3d3d3"]$ ssh user@192.168.1.100[/su_highlight]

Hvis alt er godt, bliver vi nu afkrævet et koderod. Hvis du helt vil undgå kodeord, kan du tilføje

[su_highlight background="#D3d3d3"]PasswordAuthentication no[/su_highlight]

til /etc/ssh/sshd_config. Men det betyder, at du så ikke har adgang til din private nøgle (i filen ~/.ssh/id_rsa ). Hvis du kopierer din private nøgle, bør du sikre dig, at den kun kan læses af din bruger (det vil sige, at den har filtilladelser 600), ellers begynder SSH at råbe ad dig, fordi du er usikker.

Efter filsystemer, der normalt bruges på USB-drev (FAT32 og NTFS) ikke understøtter Linux-tilladelser, skal du kopiere nøglen fra den slags medier (og derefter køre chmod 600 id_rsa ), før du kan prøve at logge ind. Den private nøgle kan du kopiere til .ssh-mappen på den maskine, du arbejder på, og i så fald bliver den hentet automatisk, men man kan også omdøbe den eller gemme den andetsted. I så fald skal du bruge ssh -i /path/to/key .

Der resterer et sidste skridt, får fjernadgang virker, og det består i at bede din router sende SSH-trafik fra WAN til din hjemmerouter. Vores server lytter med på standardporten (22), men vi kan lade den lytte på en anden port, og det forhindrer i det mindste vores server i at blive opsnappet af robotscanninger. Konfigurationen afhænger af routeren, men målet er at videresende ekstern trafik fra en obskur tcp-port (8022, for eksempel til vores tcp-port 22 på vores server, 192.168.1.100.

Dynamisk DNS og SSH-magi

Fjernadgang til din server duer kun, hvis vi kender vores routers eksterne ip-adresse, og de fleste brugere får denne adresse dynamisk fra deres netudbyder, og derfor skifter den ofte. Løsningen er at lade en dynamisk DNS-udbyder (www.duckdns.org er gratis) levere et hostnavn og opdatere dets DNS-detaljer fra serveren.

Afhængig af udbyderen kan vi automatisere dette ved at køre et cronjob på serveren en gang om dagen. Vi kan bruge SSH til at administrere vores server på afstand, og vi kan sende og modtage filer via SFTP.

De fleste filmanagere tillader dig således at gå til sftp://mpcraid.duckdns.org:8022 og logge ind med dine brugerdetaljer, men det er ikke nogen ret effektiv måde at overføre store filer på. Det ville være bedre at oprette et webbaseret system med OwnCloud (https://owncloud.org).

I stedet for at håndtere flere tjenester via port-forwarding kan du overveje at sende dem over SSH. Hvis du har en webserver på dit LAN, kan du få adgang til den med: $ ssh user@mpcraid.duckdns.org -p 8022 -L8080:localhost:80 Åbn nu en browser, og peg den mod http://localhost:8080.

Der er blevet sendt trafik gennem tunnelen. Et godt tip: Du kan tilføje tunneler til en eksisterende SSH-session ved at trykke Enter, ~ , c og skrive L8080: ... etc. ved prompten.

Tilføj Samba: Det er kun smukt at dele med andre

Den af de mest ærefulde pligter, nogen hjemmeserver kan udføre, er deling af filer. Hvad enten det drejer sig om at lagre gigabytes af Wagner-operaer eller blot et sted, hvor du kan anbringe sager, mens du leder efter et USB-drev, som du kan smide i hovedet på din sambo – det er utrolig nyttigt at have noget central og fælles lagerplads.

Unix-agtige styresystemer har deres egen fildelingsprotokol ved navn NFS, og den har vi kendt siden 1980’erne. Den er bestemt en mulighed, men vil ikke bruge den i dag. I stedet vil vi arbejde med Samba, der er en implementering af de delte protokoller, som bliver brugt i Windows. Det har den fordel, at vores server vil være tilgængelig for enhver Windows-maskine eller Mac plus alle iOS- og Android-enheder.

Før vi konfigurerer Samba, er det en god ide først at oprette nogle mapper til netværksdelingerne. Vi vil lagre dem på vores RAID, der skal starte automatisk. Hvis det ikke er tilfældet, starter du nu med # mount /mnt/mpcraid . Lad os lave de mapper:

[su_highlight background="#D3d3d3"]# mkdir /mnt/mpcraid/{music,public,docs}[/su_highlight]

Vi vil give alle læseadgang til det hele, og vi vil også give alle mulighed for at skrive til den offentlige mappe. Hvis du har musik eller dokumenter, som du synes, at andre neværksbrugere kan få glæde af, er tiden inde til at befolke disse mapper. Man kan give Samba-delinger bruger- og kodeordsadgang, men til et hjemmenet er det enklere at tillade gæsteadgang til dine delinger. Det betyder, at vi skal gøre den

offentlige mappe skrivbar med # chmod 777 /mnt/ mpcraid/public .

Nu gælder det # apt-get install samba og oprettelse af vores delinger. Rediger filen /etc/samba/smb.conf, og tilføj følgende linjer i Share Definitions-sektionen:

[su_highlight background="#D3d3d3"]

[public]

path = /mnt/mpcraid/public

read only = No

browsable = Yes

guest ok = Yes[/su_highlight]

Genstart nu tjenesten med # systemctl restart smbd .

Du bør kunne browse på serveren ved at gå til smb://192.168.1.100 fra enhver filmanager (denne syntaks virker også på Mac; Windows skal du bruge \\192.168.1.100).

PCManFM beder dig om enten gæste- eller bruger-adgang til netværks-deling. PCManFM beder dig om enten gæste- eller bruger-adgang til netværks-deling.

Fra Linux-maskiner kan du starte delingen via kommandolinjen (forudsat at cifs-utils-pakken er installeret):

[su_highlight background="#D3d3d3"]# mount -t cifs //192.168.1.100/public /mnt/smbpublic/

-o user=guest[/su_highlight]

Indskriv musik- og dokumentdelinger i /etc/samba/smb.conf, som vi gjorde det med offentlig. Denne gang skal du udelade linjen guest ok og stille read only til Yes (selvom det ikke betyder meget, idet disse mapper – ihukommende Terence Hill – ikke henvender sig til nobody ).
De anbragte filer er ejet af nobody -brugeren, og det er her, Debian fører Sambas gæstebruger hen. Windows 10 er moralsk set modstander af at tilgå gæstedelinger.

Hvis man vil overtale Windows til at handle anderledes, skal man omkring https://techjourney.net/cannot-connect-to-cifs-smb-samba-network-shares-shared-folders-in-windows-10. Sikkerhed på brugerniveau (som Windows 10 sætter pris på) er ret nem at oprette, og man kan derfor oprette private netværksdelinger. Man kan synkronisere Samba-detaljer med brugerkonti på serveren, og på den måde kan man privat dele sin hjemmemappe over netværket (som beskrevet i smb.conf).

Hvis du får problemer med at konfigurere Samba (og du vil ikke være den første), kan progammet testparm ofte levere en brugbar diagnose. SMB-fejlmeddelelser er ikke kendt for deres anvendelighed.

Printning

SMB-protokollen (og den nyere og printer-specifikke IPP-protokol) gør det muligt for os at dele printere. Når printeren og serveren er gode venner, kan alle på netværket bruge printeren uden at skulle slås med fejlmeddelser om, at printeren ikke kan findes.

Men først skal du etablere kontakten mellem computer og enhed ved hjælp af Common Unix Print System (CUPS). Nogle printerproducenter tilbyder Linuxdrivere, men de er som regel lavet til ukendte eller forældede distroer, og brugen kalder tårerne frem.

Se i stedet på den hardware, der bliver understøttet af de gratis drivere på http://openprinting.org/printers. Sandsynligheden taler for, at din printer er der. Mange af de gratis drivere bliver installeret ved siden af CUPS, så du slipper nemt om ved det. Peg en browser mod http://192.168.1.100:631, og log ind som rod for at få adgang til CUPS’ webinterface. 

Gå til fanen Administration, og vælg “Add Printer.” Når den er fundet automatisk, kan du klikke “Continue.” På det næste skærmillede er der en praktisk tjekboks til deling af printeren. På det næste og sidste billede kan du vælge netop den driver, du skal bruge, eller du kan uploade din egen PPD-fil. Nu står din printer til rådighed for Windows- og Linux-maskiner via IPP-adressen http://192.168.1.100: 631/printers/.

Emby og Webmin: Stream medier og administrer din server fra din webbrowser.

En medieafspiller som VLC eller mpv kan snildt åbne en fil på din server på afstand. Men hvis du prøver at hoppe frem og tilbage, vil du opdage, at SBM ikke er nogen særlig god måde at streame medier på, navnlig ikke hvis du vil streame til flere brugere. Emby, derimod, er en medieserver, der kan håndtere indhold fra din server eller DLNA-enheder (DLNA står for Digital Living Network Alliance).

Emby leverer streams via HTML5, og den kan dynamisk komprimere dem i overensstemmelse med de aktuelle netværksbetingelser. Bemærk dog, at det kan bruge en masse cpu-kraft. Håndtering af flere brugere samtidig kan føre til hakkende (eller standset) afspilning. Emby kan bruge gpu-acceleration til dette formål.

Men det forudsætter, at de rigtige drivere er installeret. Det understøtter i øjeblikket Nvidia NVENC (på desktop-grafikkort i den dyre ende) og Intel QuickSync (der indgår i de fleste nyere cpu’er) som en eksperimentel funktion. Foruden webbrowsere kan dit indhold også streames via apps, der kan køre på Chromecast, Roku, iOS og Android.

Når vi skal installere Emby, skal vi tilføje den relevante nøgle og det relevante lager til APT:

 

[su_highlight background="#D3d3d3"] $ wget -qO - http://download.opensuse.org/

repositories/home:emby/Debian_8.0/Release.key |

sudo apt-key add -

$ sudo sh -c “echo ‘deb http://download.opensuse.org/

repositories/home:/emby/Debian_8.0/ /’ >> /etc/apt/

sources.list.d/emby-server.list”[/su_highlight]

Så kan du opdatere vores pakkelister og installere:
[su_highlight background="#D3d3d3"]$ sudo apt-get update $ sudo apt-get install emby-server[/su_highlight]

Emby er indbygget i Mono og har mange dependencies, med det burde APT klare i stiv arm. Når det er gjort, starter du tjenesten med:
[su_highlight background="#D3d3d3"]$ sudo systemctl start emby-server[/su_highlight]
Og hvis du vil starte på hver boot:
[su_highlight background="#D3d3d3"]$ sudo systemctl enable emby-server[/su_highlight]

Med Emby kan vi se de klassiske ’Qatsi-dokumentarer med deres rørende portrætter til musik af Philip Glass. Med Emby kan vi se de klassiske ’Qatsi-dokumentarer med deres rørende portrætter til musik af Philip Glass.

Hvis du går til http://192.168.1.100:8096, burde du få en setup-wizard, der guider dig gennem den basale konfiguration. Du vil tilføje din musikmappe fra Samba-sektionen og ideelt set have de videoer, du ønsker, anbragt i en overskuelig form – selvom Emby er ret god til at sortere sagerne.

Hvis du har en USB- eller PCI tv-tuner installeret, kan Emby bruge det til at streame live-tv til dine enheder og optage det med henblik på senere visning. Du kan vælge at oprette en Emby Connect-konto, der gør det nemt at få adgang til din Emby-installation på afstand. Det kan man nu også gøre på den traditionelle facon med port-forwarding og så videre.

Kontrol med Webmin

Vi kan bortøde timer på at se medier fra browseren, men vi kan også foretage seriøs systemadministration. Webmin er et webinterface, der er skrevet i Perl, og som kan administrere alle mulige facetter af din server.

Ikke alle er enige, og naturligvis er alt dette muligt via SSH, men nogle mennesker foretrækker at skulle huske syntaksen i hundrede forskellige configfiler. Med Webmin bliver alt dette styret via et enkelt grafisk kontaktpunkt.

Ligesom hos Emby tilføjer vi nøgler og repos’er for at være sikre på, at softwaren er opdateret:

[su_highlight background="#D3d3d3"]

$ wget -qO - http://www.webmin.com/

jcameron-key.asc | sudo apt-key add -

$ sudo sh -c “echo ‘deb http://download

.webmin.com/download/repository

sarge contrib’>> /etc/apt/sources.list.d /

webmin-server.list”[/su_highlight]

Og så er det blot et spørgsmål om:

[su_highlight background="#D3d3d3"]$ sudo apt-get install webmin sudo systemctl start webmin [/su_highlight]

Standard-konfigurationen starter en webserver i SSL-tilstand, og det betyder, at når man besøger URL’en https://192.168.1.100:10000, ser man en frygtindgydende SSL-fejl, fordi det er umuligt at få et gældende certifikat til privat IP-plads. Man kan roligt tilføje en undtagelse her – vi får kun adgang gennem vores LAN, og det kan anbefales at fortsætte sådan.

Når det er ryddet af vejen, kan vi logge ind som vores bruger og udføre alle mulige nyttige opgaver. Vi kan for eksempel konfigurere vores Samba-delinger (fra Servers-menuen), se logfiler, opdatere pakker, se ressourceforbrug og stort set alt muligt andet. Så megen kraft på ét sted udgør en rædselsvækkende sikkerhedssituation, hvis dette ene sted er forbundet med internettet. Derfor kan vi ikke anbefale at videresende ekstern trafik til Webmin uden yderligere forholdsregler.

Man kan dog sagtens køre trafik gennem SSH, som vi tidligere nævnte i afsnittet om dynamisk DNS. Webmin gør det muligt at bruge to-faktor-verifikation via et antal udbydere, således at fjernadgang kan finde sted på en klogere basis. Linux Raid-sektionen er særlig relevant for denne guide: Vi kan lave helbredsundersøgelse af vores array eller tage det offline med henblik på vedligeholdelse.

Hvis du konfigurerer Webmin, kort efter at du har oprettet dit array, kan du se, at det stadig resynkroniserer. Processen tager evigheder, selvom det faktisk blot drejer sig om at synkronisere en bunke nuller. Denne information kan man også finde i filen /proc/mdstat.

Udvid og forlæng: Grunden er lagt, og vi kan skræddersy vores serverprojekt til alt, hvad du begærer.

Vi har lavet det meste af forarbejdet for enhver server, men vi har faktisk ikke overvejet sikkerhed, og tiden er inde til et par ord om dette emne. Kun at have ét SSH, der er synligt for omverdenen, er en god begyndelse, navnlig hvis der kun er mulighed for nøglebaseret adgang. Hvis nøglen bliver stjålet, eller nogle gætter kodeordet (på grund af sjusk eller dovenskab), er hele din maskine dog sårbar, fordi den indtrængende bruger har sudo-rettigheder.

Nogle mennesker tillader, at brugere uden sudo-adgang logger ind, men det kræver en vis selvcensur. Det ses ofte, at der er en konflikt mellem sikkerhed og komfort. Når vores tjenester kun er synlige for vores LAN, satser vi på, at vores netværk ikke er blevet angrebet. Bevares, så længe vore hjemmenet er IPv4-baseret, er vores server garderet mod direkte adgang udefra. Men hvad nu, hvis vores router eller en anden maskine på vores netværk er inficeret, og der er hul igennem?

Lad os lade det kedelige og besværlige sikkerhedsspørgsmål hvile og se på, hvad vi nu kan. Du er i yderste instans kun begrænset af din fantasi. Hvis du har et overskydende par højttalere (eller hvis din server står i dagligstuen, hvor du kan slutte den til forstærkeren), kan du overveje mpd.

Det er en enkel Music Player Daemon, som man kan styre via et webinterface, klientprogrammer eller apps på mobile enheder. Med nogle klientprogrammer kan du få forbindelse til sociale tjenester som Spotify og Last.fm. Nogle (for eksempel det gloriøse ncmpcpp) kan køre direkte fra kommandolinjen.

Hvis du er forhippet på ideen, kan du forbinde din server med dit fjernsyn, men hvis du skal have mest muligt ud af dette arrangement, kræver det et gui på serveren. Og det er ikke vores emne i denne guide.

Cantata er en Qt5-baseret klient til MPD. Den kan håndtere alle former for onlinetjenester. Cantata er en Qt5-baseret klient til MPD. Den kan håndtere alle former for onlinetjenester.

Når man går på internettet fra et offentligt Wi-Fi, er det klogt at bruge VPN til at beskytte trafikken. Der findes kommercielle muligheder, men hvorfor ikke konfigurere sin egen VPN-server?

Igen kan det være bedst at føre det via SSH, eller i det mindste at ændre standardporten. Den er meget nem at konfigurere, men man skal forstå lidt om, hvordan certifikater og TLS fungerer. Med den viden i hus kan du sikre al trafik mellem det tvivlsomme hotspot og din server, og hvis du stoler på din internetudbyder (eller i det mindste browser via HTTPS), har du langt mindre at bekymre dig om. Af hensyn til energibesparelse er det en god ide at lade din server sove om natten, hvis der ikke er nogen, der skal bruge den.

Det kræver nyere hardware, men ingen yderligere software. Maskinen begynder at snorke, når du siger godnat:

[su_highlight background="#D3d3d3"]$ sudo systemctl suspend .[/su_highlight]

Apropos: Man kan også konfigurere Wake on Lan (WoL)m således, at man kan vække den igen fra hvor som helst på netværket. Programmet ethtool skal være installeret på serveren, og wol-pakken skal ligge på enhver maskine, som skal kunne vække maskinen.
Til sidst vil vi gennemgå nogle muligheder for at minimere skaden, hvis serveren bliver ramt af lynet eller af overdreven brug af kommandoen rm . Det ville sandsynligvis tage mindre end en halv time at geninstallere systemet, og det ville gå hurtigere, hvis vi havde kopier af de relevante konfigurationsfiler ved hånden. Små filer som disse er ideelle til backup i cloudlager (forudsat at de ikke indeholder kodeord eller andet følsomt materiale).

Vi bliver nødt til at tale om backup

Man kan automatisere backup for tjenester som Dropbox, men det er ikke nogen større ulejlighed at gøre det manuelt med regelmæssige mellemrum. I denne guide kunne vi tage backup af vores kildelister fra Samba, fstab og APT. En metode består i at rsync’e til en anden server via en vedligeholdt liste over filer, der skal backes up. Rsync er en avanceret protokol, som er god til effektivt at overføre store filer, forudsat at man har et passende sted at overføre dem til.

Det bliver tidskrævende og logistisk problematisk at sende store filer til et cloudlager. Man kan få gratis lagerplads, men det er ikke sikkert, at du kan finde plads nok, eller om du kan bruge denne plads uden en væmmelig special-app. Hvis du har en hurtig netværksforbindelse og penge som græs, er en fjernstyret rsync-maskine den bedste løsning.

Erfaringen viser, at offsite-backups er gode, men cloudlager er dyrt, og folk er ikke særlig gode til at slette ting, de ikke længere har brug for. Den næstbedste løsning ville være at tage backup af de vigtige filer på dit RAID til en ekstern harddisk (eller måske et NAS) og anbringe den offsite.