BloggOm AudunRSSArkiv

Ubuntu som hjemmeserver

ubuntulogo.png

Flere og flere begynner å se nytten i å ha en hjemmeserver til diverse formål. Noen nøyer seg med å dele mapper i Windows XP, men hvorfor ikke dra det helt ut? De aller fleste har hørt om operativsystemet GNU/Linux, og distribusjonen Ubuntu. Mens mange kanskje tror det er vanskelig å sette opp diverse tjenester under Ubuntu, er det langt ifra realiteten. Greit nok, du burde være en smule komfortabel med konsollet, og klare det kunststykket å redigere tekstfiler, men mestrer du dette kommer du langt.

Selv har jeg flere bokser her hjemme som tar seg av forskjellige tjenester, men hvilke tjenester kan man dra nytte av hjemme? Her følger en liste over de tjeneste jeg benytter meg av.

Jeg vil her gjennomgå kjapt litt om hvert punkt, men står du fast anbefaler jeg at du søker på Google. Du finner mye informasjon om alle disse punktene på Google.

Installasjon

Jeg skal ikke gjennomgå installasjonen av Ubuntu her, men trenger du hjelp finnes det drøssevis av guider på nettet. En god start er selvfølgelig å velge rett installasjonsmedium. Det finnes trè forskjellige ISO-filer du kan brenne på CD for så og boote fra. Du trenger ikke være redd selv om du velger bort det grafiske miljøet, installasjonen er ikke komplisert, og alt jeg gjennomgår her krever kun at du har tilgang til konsollet.

Fjernstyring via SSH

Å ha tilgang til serveren fra andre maskiner har mange positive sider ved seg. For det første slipper du å ha skjerm tilkoblet serveren, og kan putte denne bakerst i klesskapet om du føler for det. For det andre kan det ofte lønne seg å sitte på sin egen arbeidsstasjon når man fikler med ting, siden man da både har en grafisk nettleser og IRC/MSN tilgjengelig om man skulle ha behov for hjelp fra andre.

OpenSSH er tjeneren som gjør det mulig for deg å koble deg til en *nix-server fra omtrent alle operativsystemer som finnes. Når man kobler seg til via SSH får man tilgang til det samme "skallet" som man gjør når man sitter fysisk foran skjermen, men altså ikke noe grafisk grensesnitt. Om man har installert et grafisk grensesnitt og ønsker å fjernstyre dette benytter man seg f.eks av VNC. Ubuntu kommer ferdig installert med en VNC-server som du kan skru på i menyen under System - Preferences - Remote Desktop.

Installasjon av OpenSSH er enkel, alt du trenger å gjøre er å kjøre denne kommandoen:

sudo apt-get install ssh

Pakken ssh er en metapakke som installerer både klient og server-programvaren. Når OpenSSH er installert kan koble til serveren ved å bruke programmet Putty under Windows og SSH under Linux/Mac/BSD etc. Å koble seg til med SSH-klienten er enkelt:

ssh bruker@ipadresse

Om du ønsker å kunne koble seg til serveren via SSH utenfor lokalnettet ditt, er du nødt til å åpne port 22 i routeren din, og peke denne mot serveren. Dette gjøres ulikt fra router til router, men du finner muligens din router og hjelp på portforward.com.

Webserver

En av de mest brukte tjenestene under Linux er webservere. Har du litt opplinje hjemme kan du fint ha en webside eller to kjørende, men litt avhengig av stabiliteten på linjen din er det noe du må vurdere. Man kan uansett dra nytte av en webtjener hjemme. Jeg selv benytter selvskrevne PHP-applikasjoner til å lagre notater, filer, samle systeminformasjon om serverene mine. Man kan også bruke det til å vise bilder fra overvåkning om man driver med slikt, eller vise informasjon fra annen type overvåkning (f.eks været utenfor døren din, om du ikke gidder å gå ut for å sjekke). Mange muligheter altså, men for å benytte deg av slikt trenger du altså en webserver med litt ekstra programvare installert.

Den mest brukte webserveren under *nix-plattformer heter Apache, og er den jeg også benytter. I tillegg får man gjerne bruk for scriptspråket PHP og databasen MySQL. Først installerer vi nødvendig programvare:

sudo apt-get install libapache2-mod-php5 libapache2-mod-auth-mysql
php5-mysql mysql-server phpmyadmin

Under installasjonen vil du blant annet få spørsmål om et root-passord på MySQL-serveren. Ønsker du muligheten til å vise systeminformasjon på webserveren din installerer du også pakken phpsysinfo.

Apache

I utgangspunktet ligger alle nettsidene lagret under /var/www/, men om du ønsker å endre dette gjøres det ved å redigere /etc/apache2/sites-enabled/000-default:

sudo nano /etc/apache2/sites-enabled/000-default

Om du har installert et grafisk grensesnitt og ønsker å bruke en grafisk editor kjører du sudo gedit istedet for sudo nano.

Om du har flere brukere av serveren, og ønsker at hver enkel bruker skal få sin egen mappe under webserveren, må du skru på modulen userdir og restarte Apache:

sudo a2enmod userdir & sudo /etc/init.d/apache restart

Hver enkelt bruker får nå sin egen mappe under webserveren. Disse kan nåes ved å bruke http://ipadresse/~brukernavn. Hver enkelt bruker må opprette en mappe i sitt eget hjemmeområde kalt public_html.

MySQL

Det er ikke så mye mer å gjøre med MySQL etter installasjonen. PhpMyAdmin, som ble installert tidligere, er et nettbasert verktøy du bruker til å administrere MySQL-databasene. Verkøyet finner du under http://ipadresse/phpmyadmin. Skulle det være tilfellet at det ikke ligger der, ordnes det ved en kommando:

sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin

PHP

Det er ikke mye å si om PHP heller, det fungerer som det skal etter installasjonen. Skulle du imidlertid ha behov for å endre noen innstillinger finner du konfigurasjonsfilen under /etc/php5/apache2/php.ini.

FTP

Det finnes flere FTP-tjenere i Ubuntu's pakkebrønner, blant dem VsFTPd som er høyt anbefalt på grunn av sin sikkerhet. Først installerer vi pakken:

sudo apt-get install vsftpd

Ferdig installert vil VsFTPd kun tillate anonyme tilkoblinger. Man vil hovedsaklig ikke tilby anonyme tilkobler, men ha muligheten til at hver bruker kan benytte FTP til å koble seg til sin egen hjemmemappe. Dette forandres under /etc/vsftpd.conf. Sørg for at følgende står i filen:

anonymous_enable=NO
local_enable=YES
write_enable=YES

Restart VsFTPd:

sudo /etc/init.d/vsftpd restart

Fildeling

En primæroppgave til en hjemmeserver er ofte å dele filer. Man kan benytte det som backup, jobbe direkte mot serveren, dele musikk, filmer og bilder med f.eks et mediacenter. Det finnes hovedsaklig to forskjellige måter å dele filer på. Om du har både Windows og Linux-klienter benytter man Samba, om du benytter bare Linux-klienter kan du benytte NFS. En kjapp guide til NFS finnes på blogg.izte.net, så det går jeg ikke inn på her.

Samba

Med Samba kan du dele mapper med både Windows, Linux og Mac. I tillegg kan man med CUPS bruke Samba til å dele skrivere ut til maskinene på nettverket, noe jeg dessverre ikke kommer til å gjennomgå her. Først installerer vi Samba:

sudo apt-get install samba

Konfigurasjonsfilen finner under /etc/samba/smb.conf. Den består av flere deler, med forskjellige oppgaver. Under global finner man innstillinger som hvilken arbeidsgruppe maskinen tilhører, og hva serveren skal beskrive seg som:

[global]
workgroup = ARBEIDSGRUPPE
server string = Server i ARBEIDSGRUPPE

Under authentication bestemmer man på hvilken måte man skal autentisere seg mot serveren. I utgangspunktet bruker Samba egne brukere, slik at man ikke trenger en lokal konto på serveren for å få tilgang. Dette er imidlertid ikke nødvendig iom at vi vil dele brukernes filer, kun til brukerne. Sørg for at følgende står under authentication:

security = user
invalid user = root

Under Share Definitions finner vi innstillingene for selve delingen av filer. Om man vil dele hjemmemappene til brukerne, sørg for at følgende står skrevet:

[homes]
comment = Home Directories
browseable = yes
valid users = %S
writable = yes

Deretter må du opprette et Samba-passord for brukeren din:

sudo smbpasswd -a brukernavn

Med dette skal du kunne koble til hjemmemappen din med ditt brukernavn og passord. Neste steg er å opprette et share der alle kan lese, og evt skrive til. Et eksempel ville vært følgende:

[musikk]
path = /media/musikk
browseable = yes
read only = yes
writeable = no
guest ok = yes

Dette plasserer du nederst i smb.conf. Navnet på sharet er da logisk nok musikk, som peker til /media/musikk på serveren. Resten av valgene burde være enkle og forstå, og slik det er satt opp vil hvem som helst få tilgang til å lese, men ikke til å skrive.

APT-cacher

Om man er som meg, har man mange maskiner i hjemmet. Og alle kjører selvfølgelig Ubuntu, eller en annen distro som benytter APT som pakkesystem. Så, hva skjer hver gang man skal oppgradere 5-6 maskiner? Jo, det hele tar unødvendig lang tid, fordi alle maskinene må laste ned de samme filene fra nettet. Løsningen på det heter apt-cacher, og er et program som fungerer som et mellomlager for maskiner som bruker apt.

Først installerer vi pakken:

sudo apt-get install apt-cacher

Kort fortalt stiller man inn alle klientene slik at de kommuniserer med apt-cache-serveren, istedet for direkte mot nett. Dette forandrer man i /etc/apt/source.list på klientene. I konfigurasjonsfilen finner man blant annet instillinger for hvilken port man skal lytte på, og hvilken mappe filene skal lagres i. Standard port er 3142, og filene blir lagret i /var/cache/apt-cacher. For å få klientene til å bruke apt-cacher redigerer man sources.list på klientene:

Orginal sources.list:

deb http://no.archive.ubuntu.com/ubuntu/ gutsy-updates main
deb-src http://no.archive.ubuntu.com/ubuntu/ gutsy-updates main

Oppdatert sources.list:

deb http://10.0.0.2:8080/no.archive.ubuntu.com/ubuntu/ gutsy-updates main
deb-src http://10.0.0.2:8080/no.archive.ubuntu.com/ubuntu/ gutsy-updates main

Som man ser føyer man til informasjon før selve adressen til pakkebrønnen. Det hele fungerer da slik at hver gang klienten ber om en pakke, sender den forespørsel til apt-serveren, som i dette tilfellet kjøres på port 8080 på maskinen 10.0.0.2. Om pakken finnes lokalt hentes den over lokalnettet, hvis ikke vil apt-cacher dra ned pakken til serveren før den sender den videre til klienten. Skal man da oppdatere 5 maskiner vil man da altså kun hente ned pakken fra nettet èn gang, slik at resten av maskinene henter pakkene direkte fra serveren din.

Nedlasting av torrenter

Torrent-teknologien har muliggjort nedlasting på en helt ny måte, og selv om mange nok forbinder det utelukkende med ulovlig nedlasting, finnes det også andre som benytter seg av teknologien. Nedlasting av torrent-filer kan man også gjøre via konsollet, og kan være en veldig grei måte å fjernstyre nedlastinger på. Et veldig bra program til akkurat det heter rTorrent

Et program som passer godt med rTorrent er Screen, et program som lar program kjøre i bakgrunnen selv om du logger ut av serveren. Du opretter sesjoner ved å kjøre screen, og derfra kan du starte programmet du skal kjøre. Når du vil logge av serveren trykker du ctrl+a+d, og programmet forsvinner i bakgrunnen. Neste gang du logger inn kan du innhente sesjonen med screen -r. Skal du starte flere screen-sesjoner kan du gi dem navn ved å legge på -S når du starter screen; screen -S torrent. Når du skal innhente programmet bruker du screen -r torrent. Veldig praktisk når du har flere sesjoner og holde styr på.

Så over til rTorrent. Det fine med rTorrent er at den kan konstant overvåke en mappe etter nye torrent-filer. Det vil si at du enkelt og greit kan flytte torrent-filen til en forhåndsinnstilt mappe, og nedlastingen vil automatisk starte. Konfigurasjonsfilen til rTorrent finner du på /home/brukernavn/.rtorrent.rc (den eksisterer sannsynligvis ikke, så opprett den selv). Min ser nogelunde slik ut:

download_rate = 450
upload_rate = 60
port_range = 12000-12009
directory = /mappe/for/lagring/av/torrenter
schedule = watch_directory,5,5,load_start=/mappe/for/lagring/av/torrenter/*.torrent

Her kan du altså bestemme maks opp/nedlastingshastighet, hvilke porter som skal benyttes, hvilken mappe selve filene skal lagres i, og hvilken mappe som skal overvåkes. Du kan altså lagre selve torrent-filene i en annen mappe enn selve nedlastingsfilene. Men før du kan benytte deg av dette må vi selvfølgelig installere programvaren:

sudo apt-get install rtorrent screen

Navnetjener (dns)

Selv om de fleste routerbokser man får fra nettleverandøren har en egen DNS-server installert, finnes det fordeler med å kjøre sin egen DNS-server, iallefall om man har litt størrelse på maskinparken. En DNS-server installert på routeren fra nettleverandøren din er som regel en forwarder, som knytter deg til DNS-serverne til nettleverandøren. I mitt tilfelle benytter alle maskinene 10.0.0.1 som DNS, som igjen sender forespørslene til NextGenTel's DNS-servere.

En av fordelene med å kjøre DNS-serveren selv er at du kan oppgi egne navn for enheter i nettverket. Du kan f.eks få server.lokalnett til å peke til din server, eller printer.lokalnett til å peke til din skriver. I tillegg må den selvfølgelig også sende forespørsler videre til din DNS-serverne til din nettleverandør. Først installerer vi programvaren:

sudo apt-get install bind9

Først setter vi opp forwarders til leverandørens DNS-servere, dette gjøres i /etc/bind/named.conf.options. Kommenter ut forwards-klammene, og fyll inn IP-adressene til DNS-serverne:

forwarders {
	217.13.4.24;
	217.13.7.140;
};

Deretter definerer vi en ny sone som skal inneholde informasjon om lokalnettverket. Dette gjøres i /etc/bind/named.conf.local (denne er sannsynligvis om fra før av):

zone ''lokalnett'' {
	type master;
	file ''/etc/bind/lokalnett.db'';
};

I filen /etc/bind/lokalnett.db legger vi inn følgende informasjon:


lokalnett.      IN      SOA  (
			2006081401
			28800
			3600
			604800
			38400
)

server	IN	A	10.0.0.1
printer	IN	A	10.0.0.2
desktop	IN	A	10.0.0.3

Her legger man altså inn navnet man vil bruke, og hvilken IP-adresse den skal tilhøre. Restart Bind med sudo /etc/init.d/bind restart, og det skal være i boks. Om du så konfigurerer klienten(e) til å bruke 10.0.0.1 som DNS-server, vil du følgelig få pinge server.lokalnett eller bare server, osv. Om du ønsker at klientene skal benytte DNS-serveren automatisk, kan du jo lese neste punkt om hvordan man setter opp en DHCP-server.

Dynamisk tildeling av IP-adresser (DHCP)

DHCP er protokollen som gjør at maskiner kan få tildelt informasjon som IP-adresse, gateway og DNS-servere. Den gir rett og slett maskinene i nettverket ditt en IP-adresse, og informasjon nok til å kunne bruke verdensveven som normalt. Å sette opp dette selv er veldig enkelt. Først installerer man programvaren:

sudo apt-get install dhcp3-server

Konfigurasjonsfilen finner man på /etc/dhcp3/dhcpd.conf. Den orginale filen inneholder en hel masse eksempler, men du kan klare deg med kun det som står her:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;

subnet 10.0.0.0 netmask 255.255.255.0 {
        range 10.0.0.30 10.0.0.50;
        option routers 10.0.0.1;
        option broadcast-address 10.0.0.255;
        option domain-name-servers 10.0.0.1;
        option domain-name "lokalnett";
}

host desktop {
        hardware ethernet XX:XX:XX:XX:XX:XX;
        fixed-address 10.0.0.3;
}

Her definerer man at man bruker subnettet 10.0.0.0/24. Serveren vil dele ut IP-adresser fra 10.0.0.30-50. Routers-opsjonen angir IP-adressen til routeren din, mens domain-name-servers angir DNS-serveren(e). Har du fra før av satt opp DNS-server, setter du denne til IP-adressen til DNS-serveren.

Host-delen gjør det mulig for deg å sette statisk dynamiske adresser. Det vil si at DHCP-serveren alltid vil utlevere den samme IP-adressen til maskinen som har angitt MAC-adresse. I dette tilfellet vil maskinen med MAC-adressen XX:XX:XX:XX:XX:XX (som logisk nok ikke er en gyldig MAC-adresse) få utlevert IP-adressen 10.0.0.3. Lagre endringene og restart DHCP-serveren:

sudo /etc/init.d/dhcp3-server restart

Bedre sikkerhet og hastighet på filsystemet med RAID.

RAID er en grei metode å bruke for å enten oppnå bedre hastighet eller bedre sikkerhet på diskene dine. Du kan f.eks dele dine data imellom flere disker, slik at når man åpner en fil leser man fra forskjellige disker, som igjen betyr mer hastighet samlet. Du kan også speile to disker; det vil si at innholdet på de to diskene er identiske. Man ville ikke nødvendigvis merke noen forskjell på hastighet, men om èn disk blir ødelagt, har man en nøyaktig kopi på den andre.

Jeg kommer ikke til å skrive noe om hvordan man oppretter RAID her. Istedet anbefaler jeg at man leser Martin Bekkelund's Hjemmeserver del 5: RAID med Ubuntu.

Noen ord til slutt

Her har jeg altså gjennomgått noen tjenester du kan benytte deg av på din server. Selv om jeg har tatt utgangspunkt i Ubuntu som distro, fungerer programmene nogenlunde likedan på alle distribusjoner, selv om konfigurasjonsfilene kan både ligge på andre steder og ha andre navn.

Som sagt trenger ikke det være vanskelig å sette opp en brukbar server, og som vanlig anbefaler jeg at man Googler om man står fast. Alle disse punktene er godt dokumenterte der ute på diverse fora og nettsider, og står man fortsatt fast kan man som regel få god hjelp på IRC (#linuxhelp.no @ Efnet). Kanskje du tilogmed kjenner en nerd som forstår seg på konsoller og kommandoer?

kalender.gif Publisert: 07. Mars 2008 kl. 03:57
arkiv.gif Arkivert under: Nerdeprat, GNU/Linux.
rss_small.gif Abonner på kommentarer

6 kommentarer

Martin Bekkelund07. Mars 2008 kl. 09:50

Gravatar

Her var det svært mye nyttig og lærerikt, Audun. Jeg har ikke lest alt i detalj enda, men kommer garantert til å besøke denne artikkelen mange ganger i tiden fremover.

Takk! :-)

Audun Wangen07. Mars 2008 kl. 10:26

Gravatar

Virkelig bra innlegg, navnebror.

En liten sak for de som blir litt skremt av kommandolinje:
Det er mulig å legge på noe programvare slik at du får opp det grafiske brukergrensesnittet over SSH også. Vi bruker NoMachine NX. Den bruker minimalt med båndbredde, så du kan fint fjernstyre maskinen din fra remote, selv om du kun har en dårlig ADSL-linje. SSH er jo en sikker protokoll, i motsetning til VNC, så du slipper å legge på andre sikkerhetsmekanismer.

Terje Runde07. Mars 2008 kl. 19:51

Gravatar

Knallbra innlegg, Audun! Var et par ting jeg ikke visste om, apt-cacher og RAID-howto-en til Bekkelund for eksempel. :)

Audun07. Mars 2008 kl. 23:32

Gravatar

Takktakk, alle tre :) Hyggelig å kunne bidra med noe. Skal ikke se bort ifra at det kan dukke opp noe mer slikt med tiden.

Audun Wangen: NoMachine er utvilsomt bra programvare, men det er en stund siden jeg sist så på det (og sist jeg satte det opp var det ikke gjort med noen få klikk heller). Er det ikke slik at NX oppretter nye sesjoner, istedet for å fjernstyre den man allerede har?

Frode Molland02. Januar 2009 kl. 13:04

Gravatar

Hei

Utrolig interessant lesning :) Jeg prøver meg med en webserver, har installert lamp, Prøver å få til att vnc (helst) starter auto ved boot av serveren.

Ellers tusen takk for gode guider :)

Frode

Audun03. Januar 2009 kl. 15:00

Gravatar

Flott at noen får bruk for guiden :) Har du problemer er det bare å spørre her, så skal jeg svare etter beste evne.





Tillatte HTML-tagger: <strong>, <em>, <a>, <ul>, <li>, <pre>, <quote>

Felter merket med * må fylles ut. Din e-postadresse blir ikke offentliggjort.
Din IP-adresse blir logget, men vil ikke bli publisert, og blir kun lagret av sikkerhetshensyn.
Les gjerne informasjonen om retningslinjer og formatering av kommentarer.

Kopirett: CC BY:NC:SA | XHTML & CSS | RSS