In Het Kort:
Ik heb sinds jaren een home-server 24/7 draaien op een PC-minitower platform. In het verleden WXP, later Ubuntu Linux.
Dat verbruikte ca. 80 Watt, dat is 80 * 24 / 1000 * 365 * 0.22 = ca. € 154,= per jaar aan elektra kosten.
Ik heb die functies overgezet op een Banana-Pi, die verbruikt samen met de harddisk ca. 15 Watt, of € 29,= per jaar, dus de aanschaf van pakweg € 60,= heb je er in een paar maanden uit.
En ja, het kan allemaal ook anders, ik vertel hier alleen maar hoe ik het gedaan heb.
Een aantal configuratiebestanden staan in deze zip-file.
De snelle weg
Om zelf een server in deze trant op te bouwen kun je het verhaal hieronder volgen, maar er is een snellere weg: Zorg dat je in het bezit komt van de juiste Banana-Pi en een SD-kaart van 16GB. Zorg dat ik die dingen krijg, dan maak ik een kloon van mijn server, test die op jouw banaan en verander een paar privacy instellingen en krijg je'm terug, gratis. Onderaan dit verhaal staat wat je dan nog zelf moet doen.
18 oktober 2016 had ik een crash, de banaan wilde niet meer opstarten. Dat heeft een hoop gedoe gegeven om weer bij mijn bestanden te kunnen,
in het bijzonder bij dit verhaal dat ook op die harddisk staat.
Mijn advies is: zorg dat je een geteste mogelijkheid hebt om de harddisk aan te kopppelen aan een ander systeem.
De oorzaak is onbekend gebleven, een vermoeden dat de SD-kaart in het ongerede is geraakt doordat ik diverse (intensieve) logging op die kaart deed is niet bevestigd, die bleek na herinstallatie ook perfect te werken.
Ik heb met een nieuwe SD kaart alles opnieuw geïnstalleerd, en daarbij zijn er nogal wat wijzigingen in dit verhaal gekomen.
O.m. installeer ik Krusader nu heel vroeg in het proces, en gebruik diens F4 editor voor het aanpassen van configuratiebestanden. Een editor in een terminal window is niet meer nodig. Ook installeer ik Samba zo snel mogelijk; het verdere configuren kan nu vrijwel geheel vanaf een Windows PC
Klik voor groter.
Van links naar rechts de Harddisk, een HDMI naar VGA converter, bovenaan de voeding, midden de banaan en rechts een USB hubje.
Buiten beeld een USB Harddisk interface, die gebruik ik zo af en toe voor een back-up.
Hieronder het eisenpakket, en daarna de manier waarop je e.e.a. zou kunnen installeren en configureren.
De server moet voorzien in:
a/ Een harrddisk waarop alle belangrijke bestanden staan, zodat die vanaf iedere computer in huis toegankelijk zijn.
b/ Die bestanden moeten toegankelijk zijn voor zowel Windows- als Linux computers in mijn huis.
c/ Die bestanden moeten ook met mijn laptop op een veilige manier toegankelijk zijn vanuit de wereld buiten mijn huis.
d/ Een bepaalde groep bestanden moet als web toegankelijk zijn voor de rest van de wereld.
e/ Het onderhouden van de server moet ook vanaf andere computers in huis kunnen, maar beslist niet vanuit buitenshuis via het internet.
In a/
wordt voorzien door de Banana-Pi-Pro, deze heeft een SATA
aansluiting
voor een
harddisk en een gigabyte Ethernet poort.
b/ betekent dat
er zowel samba- als nfs-export moet zijn.
c/ betekent dat
er een beveiligde verbinding moet kunnen bestaan tussen mijn
laptop,
waar ook
ter wereld, en de server. De keuze is gevallen op OpenVpn.
d/ betekent dat
er een webserver moet zijn. De keuze is gevallen op Apache2.
e/ vereist dat ssh-server geinstalleerd is. Je kunt dan met een
terminal emulator als bijv. PUTTY inloggen op de server. Maar
zorg dat
op je ADSL modem/router de ssh poort(en) dicht zitten.
Formattering van deze tekst:
In het verdere gebruik ik het font Courier in paars voor alle commando's, bestandsnamen en -paden, en voor de inhoud van configuratie bestanden.Alle commando's die ik aangeef worden in een terminal-window gegeven, hier heet dat LXTerminal (ctr-alt-T werkt niet). Even verderop kan het ook via een login vanaf een andere computer. Let erop dat spaties in commando's belangrijk zijn.
Als editor gebruik ik de F4- editor van Krusader, die gestart is als root.
Linux voor beginners:
Voor diegenen die (nog) niet zo bekend zijn met linux geef ik hier de belangrijkste commando's:Veel (systeem) commando's mogen alleen door een super-user gegeven worden. Een gewone gebruiker kan zich superuser maken door vóór elk commando de kreet sudo (superuser do) te zetten of door 1-malig het su commando te geven (maak mij superuser). Het superuser password is normaliter hetzelfde als het gebruikerspassword.
Het linux bestandsysteem begint bij / uit te spreken als "root", niet te verwarren met het root account, dat is voor de gebruiker "root" die alles mag.
De meeste configuratie bestanden staan in /etc
Navigeren door het bestandssysteem: cd /pad-vanaf-root of cd pad-vanaf-huidige-positie
Overal waar een bestandsnaam opgegeven kan worden kan ook een pad+bestandsnaam opgegeven worden waarbij het pad relatief kan zijn t.o.v. de huidige positie, of absoluut, en dan begint het met / Bestands- en padnamen zijn hoofdlettergevoelig.
Een pad dat begint met ../ is relatief en start 1 nivo hoger dan waar je bent.
Lijst van bestandsnamen: ls of ls -al, evt. gevolgd door <pad>
Aanmaken van een directory (map) mkdir directorynaam of verwijderen: rmdir directorynaam (dir moet leeg zijn)
Aanmaken van een (configuratie / tekst) bestand nano bestandsnaam Als het bestand al bestaat kun je het nu editen, anders wordt er een nieuw bestand gemaakt. Nano kun je niet met de muis bedienen! Alles moet met de cursor toetsen.
Bekijken van een (configuratie / tekst) bestand: cat bestandsnaam
Copiëren van een bestand: cp bestaande-bestandsnaam nieuwe-bestandsnaam
Hernoemen of verplaatsen van een bestand: mv bestaande-bestandsnaam nieuwe-bestandsnaam
Verkrijgen van gedetailleerde informatie over 1 of ander commando of programma: man commando (alleen engels)
Bij twijfel: Vraag het aan het internet.
BananaPi:
Let erop dat er
een paar verschillende smaken zijn. Kies een versie met
10/100/1000 MB
ethernet
en een SATA aansluiting.
Als je een USB harddisk wilt gebruiken kun je bijna alle
versies
van Raspberry / Banana -Pi en veel andere vergelijkbare Pietjes
gebruiken. De procedures en configuraties zijn veelal zo goed
als het
zelfde.
Benodigd:
Banana Pi. Neem een model met SATA poort. Ik heb de Pro-versie.
Heeft
ook wifi maar dat wordt (nog) niet gebruikt)
Een voeding die +5Volt en +12Volt levert voor met een geschikte
stekker
voor de SATA Harddisk.
Een SD-kaart van 8 GB of groter, neem de snelste klasse (10)
Een (usb) card-reader/writer om de software op de SD-kaart te
kunnen
flashen.
Op een Windows-PC zorg dat de volgende software geïnstalleerd is
(voor
Linux zijn er vergelijkbare programma's te vinden):
- SDFormatter voor het formatteren van de SD-kaart
- Win32DiskImager voor het flashen van de SD-kaart.
- Putty terminal emulator voor communicatie met de banaan.
Installatie:
Ik heb gekozen
voor het Operating Systeem: Raspbian
For
BananaPi_v1412. Dat leek aardig te werken en andere
OS-versies heb ik niet geprobeerd.
link: http://www.lemaker.org/product-bananapi-download-23.html.
Download het image, en zet dat op de SD-kaart voor de banaan.
Zelfde
procedure als
voor de
RaspberryPi.
Het is een .tgz bestand en moet uitgepakt worden van .tgz >
.tar
> .img Mogelijk moet je een geschikt uitpak programma voor
opzoeken.
Je hebt een ding nodig waarmee je een
(micro)
SD-kaart kunt programmeren.
De kaart moet eerst geformat worden. Dat kan met SDFormatter.
Neem
QUICK FORMAT en Format Size Adjustment ON.
Dan de .img file naar de SDkaart copiëren met DiskImager.
(gewoon
copieren werkt niet)
Kaart in de banaan, sluit een monitor, keyboard, muis en
netwerkkabel
aan. 5V power van een USB stekkervoeding.
Start een terminal window door op het
icoon
"LXTerminal" te klikken.
Tip: De tekst van het terminal window staat in lichtgrijs en
is op
sommige monitoren slecht leesbaar. Klik op Edit-Preferences en
dan
Foreground. Maak die wit door de naam #FFFFFF
in te vullen. Terminal window een keer netjes afsluiten,
anders
beklijft het niet.
Root
account:
Het eerste dat ik
na een linux installatie altijd doe is het activeren van het
root-account. Ik
ben dat ge-sudo-nder al heel snel zat. Ja, je introduceert
daarmee een
veiligheids risico, maar als je de hele configuratie achter de
rug hebt
kun je
het root-account eenvoudig weer uitzetten.
In dit OS is het
voldoende om sudo
passwd root te geven en dan je root-password 2x op te
geven.
Na een sudo
reboot kun je inloggen als root en is sudo niet meer
nodig. Het initiële password is bananapi
Vergroot de Linux partie:
Standaard werd er
maar
zo'n 3GB gebruikt van mijn 32 GB kaartje.
We
doen het
volgende:
- In het programma fdisk vragen we eerst de
partitietabel op met p.
Een block is 512 bytes groot.
Je ziet dat die hier 32GB groot is, maar de 2e partitie
(mmcblk0p2) is maar 3138560 * 512 =1.6 GB groot
- Met d en 2
deleten we die
partitie (wees gerust, de data blijven ok)
- Met n en p maken we een
nieuwe
primaire partitie 2 (accepteer de 2)
- We geven de
startpositie op, moet exact gelijk zijn aan de oude
startpositie, hier
122800.
- We
accepteren
de default voor de laatste sector en schrijven het naar de
partitietabel met w
- Dan
doen we
een reboot en daarna maken we de partitie effectief met resize2fs /dev/mmcblk0p2
Hieronder de in te tikken commando's in paars. De rest in is wat de banaan terug zegt.
root@Pisang:~# fdisk
/dev/mmcblk0
Command (m for help): p
Disk /dev/mmcblk0: 32.2 GB, 32227983360 bytes
4 heads, 16 sectors/track, 983520 cylinders, total 62945280
sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00090806
Device
Boot
Start
End Blocks Id
System
/dev/mmcblk0p1
8192
122879
57344
c W95 FAT32 (LBA)
/dev/mmcblk0p2
122880
6399999
3138560 83 Linux
Command (m for help): d
Partition number (1-4): 2
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3
free)
e extended
Select (default p): p
Partition number (1-4, default 2):
Using default value 2
First sector (2048-62945279, default 2048): 122880
Last sector, +sectors or +size{K,M,G} (122880-62945279,
default
62945279):
Using default value 62945279
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16:
Device or
resource busy.
The kernel still uses the old table. The new table will be
used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
root@Pisang:~# reboot
Broadcast message from root@Pisang (pts/0) (Sat Oct 22
11:05:40 2016):
The system is going down for reboot NOW!
root@Pisang:~#
Na reboot:
root@Pisang:~#
resize2fs
/dev/mmcblk0p2
resize2fs
1.42.5
(29-Jul-2012)
Filesystem
at
/dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks
=
1, new_desc_blocks = 2
The
filesystem on /dev/mmcblk0p2 is now 7852800 blocks long.
root@Pisang:~#
Met
het commando df
kun je checken wat de grootte van de partitie nu is (rootfs is
bij mij nu 30918588 blokken van 1K, of ruim 30 GB)
Update en upgrade:
update en upgrade de lijsten met beschikbare applicaties
Geef het commando apt-get update en dan apt-get upgrade. Dat laatste duurt wel een minuutje of wat.
Tijdzone:
Standaarinstelling is UTC.
dpkg-reconfigure tzdata
Er verschijnt een window waarin je eerst kunt kiezen Europa en
dan Amsterdam. Hierna moet de tijd goed staan.
Controleer met date
Op tijd
zetten na storing:
sudo /etc/init.d/ntp stop
ntpd -q -g
sudo /etc/init.d/ntp start
Krusader:
Krusader is een
grafische 2-panelen file manager (bestandsbeheerder) die erg
verwant is
aan
Total Commander voor M$Windows en Norton Commander voor DOS.
Ik
zweer bij dergelijke file managers, maar er zijn ook andere
mogelijkheden.
apt-get
install krusader
Hierna kun je
Krusader vanuit het terminal window starten met krusader
& De & zorgt ervoor dat het
terminal window
direct weer vrij komt, zonder de & blijft het window
onbruikbaar
totdat je krusader afsluit.
Opm: Er kan een foutmelding komen met een advies om export $(dbus-launch)
uit te voeren. Dat werkte.
De eerste keer dat je Krusader draait vraagt het om wat
instellingen.
Accepteer de defaults.
Als je in het terminal window ingelogd bent als root (of met
sudo of
su) dan
draait
krusader ook als root en kun je ook beveiligde bestanden
wijzigen.
Om bestanden op inhoud te vergelijken is er
nog een ding nodig: apt-get
install kompare
Zet een icoon
voor Krusader op de dekstop:
Copieer (met
Krusader F5, want nu is dat gemakkelijker) een .desktop
bestand vanuit bijv.
/home/bananapi/Desktop/
naar
/root/Desktop/ Geef
het de naam Krusader door langzaam dubbelklikken.
Edit die file met
Krusader F4 zodat er komt te staan:
[Desktop
Entry]
Version=1.0
Name=Krusader
Comment=File Manager
Exec=/usr/bin/krusader
Icon=/usr/share/icons/hicolor/32x32/apps/krusader_user.png
GenericName=file manager
Terminal=false
Type=Application
Als je hetzelfde bestand ook in /home/bananapi/Desktop/ zet krijg je het Krusader icon ook als je inlogt als bananapi, maar dan kun je geen beveiligde (sudo) operaties doen.
Verwijder de items die je niet nodig hebt uit de Desktop directories.
Noot: Zo af en toe komt er bij het gebruik van Krusader een foutmelding van Knotify. Ik heb nog niet kunnen uitvinden hoe je daar vanaf komt. Wegklikken.
Grafische
interface komt op als root:
In /etc/lightdm/lightdm.conf
wijzig autologin-user=root
Copieer uit /home/bananapi/Desktop
de .desktop bestanden naar /root/Desktop Dat gaat nu gemakkelijk met Krusader F5.
Na reboot en
inloggen als
root komt het frambozen logo op zonder icons.
Computer naam:
Verander
desgewenst de naam van de computer met nano
/etc/hostname Bij
mij heet 'ie
nu Pisang. De naam wijzigt pas na reboot.
Wijzig de standaard gebruiker:
Niet strikt nodig, maar het maakt sommige dingen wat gemakkelijker. Password wijzigen is in alle gevallen nodig.De standaard gebruiker is /home/bananapi met password bananapi
Je kunt die laten bestaan, of verwijderen met deluser --remove-all-files
Maak een nieuwe user aan met adduser nieuwe_user_naam
Geef 2 x een password voor deze user op. Daarna worden er nog wat overbodige gegevens gevraagd, antwoord met de entertoets.
Muis dubbelklik snelheid:
Standaard staat de dubbelkliktijd erg kort ingesteld en standaard methodes als met de OpenBox configurator obconf werken niet.Wat wel werkt is dit: Maak in het home directory /root en/of /home/<jouwgebruikersnaam> een tekst bestandje .gtkrc-3.0 en zet daarin de tekst: gtk-double-click-time=500
Vast IP adres:
Dat is niet strikt nodig, maar het voorkomt wat problemen. Met
vaste IP
adressen kun je iedere computer in je netwerk uniek benaderen.
Dat kan
ook met
variabele IP-adressen, maar dan moet je overal de naam van de
computer
gebruiken.
Ik heb mijn
ADSL-modem zo geconfigureerd dat hij de adressen 1 t/m 199 als
vaste
IP's
beschouwt en 200+ uitdeelt als DHCP.
Zie de handleiding van je modem/router voor hoe je dat
instelt.
Edit het bestand
/etc/network/interfaces
zodat het er zo uitziet:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.2.182
gateway 192.168.2.254
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
Vul de waardes
van jouw eigen netwerk in. Het stuk 192.168.2
kan bij jou anders zijn, en het adres van de server (hier 182)
kun je
vrij kiezen.
Geef na het
editen de commando's ifdown
eth0 en ifup
eth0 om de nieuwe configuratie
effectief te maken
Test met ifconfig
-a of alles doorgekomen is.
SSH
SSH is nodig als je vanaf andere computers wilt kunnen inloggen op je server voor onderhoud.SSH is al
aanwezig in de standaard installatie. Probeer
vanaf een andere computer in te loggen met bijv. putty. Kies
ssh als
protocol en geef het ip-adres van je server op. Je moet nu
kunnen
inloggen als gebruiker met het gebruikerspassword en als root
met het
rootpassword.
Verifieer dat telnet toegang niet mogelijk is: apt-get remove telnet. Waarschijnlijk was het er niet en dat vertelt de foutmelding dan wel.
Samba
Samba is nodig
als er ook MS-Windows computers contact moeten kunnen maken
met je
server.
Samba kent ongeloofelijk veel opties om de Linux en Windows
werelden
met elkaar te laten praten. Denk maar eens aan belangrijke
verschillen
als het toegangsbeheer, het feit dat in Linux paden en
bestandsnamen
hoofdlettergevoelig zijn en die in Windows niet, en nog een
heleboel
andere dingen.
Toch kan toegang vanuit Windows computers met een vrij
eenvoudige
configuratie gerealiseerd worden.
Op de server: apt-get install samba samba-common-bin -y
Ga naar de samba configuratie: cd
/etc/samba
Maak voor de zekerheid een copie van het originele samba
configuratiebestand: cp
smb.conf smb.conf.org
Wijzig het bestand /etc/samba/smb.conf
zodat er staat: (dit is het complete bestand zoals het nu bij
mij is)
[global]
workgroup = WORKGROUP
//
Dit is meestal de standaard werkgroep voor windows computers
server string = Pisang //
kies je
eigen naam voor hoe de server zich meldt in het netwerk
dns proxy = no
log file = /nfsexport/Logs/samba/log.%m //
Ik heb de
logfiles gezet op een plek die ook geëxporteerd wordt
max log size = 1000
read only=no
security = user
encrypt passwords = true
lanman auth = yes
client lanman auth = yes
dnsproxy = no
follow symlinks = yes
wide links = yes
unix extensions = no
mangle prefix=6
interfaces = 192.168.2.0/24 10.1.0.1 //
Aanpassen
aan je eigen netwerk. Die 10.1.0.1 is voor het VPN. Zie aldaar.
[Homes]
browseable = yes
read only = no
create mask = 0777
//
iedereen mag alles
directory mask = 0777
(dit pad heb ik tijdelijk gebruikt om met een
windows
PC toegang te krijgen tot het hele bestandsysteem, voor
configuratie
doeleinden.
Daarna is het uitgecommentarieerd)
#path = /
path= /nfsexport
guest ok = no
#
testen met testparm
#
herstarten met service samba restart
De opdracht testparm test de syntax van configuratie, doet verder niets. Als die geen foutmeldingen geeft kun je samba herstarten met service samba restart
Windows computers kunnen alleen
toegang krijgen
na het invoeren van een samba gebruikersnaam en password.
Zet een samba gebruiker en password: smbpasswd
-a gebruikersnaam en vul dan twee keer een geschikt
password in.
Deze combinatie heb je op de windows computers nodig om toegang
te
krijgen.
Zie ook man
samba
Harddisk
De BananaPi heeft
een SATA aansluiting die direct geschikt is voor een 2.5"
harddisk
(laptop
formaat) en via een apart kabeltje gevoed wordt met 5 Volt uit
de banaan. Er zijn hiervoor speciale kabeltjes te koop. (Dit
vereist waarschijnlijk een zwaardere voeding, mogelijk gaat dat
niet
via de USB-voedingsaansluiting) Als je -zoals ik- een 3.5" HD wilt gebruiken is er een extra 12-Volt voeding nodig. Ik heb in mijn rommelbak een voeding gevonden die 5 Volt en 12 Volt levert, zelfs met de juiste stekkers. Een andere mogelijkheid is een voedingsunit uit een afgedankte PC (o.m. volop te vinden op vrije markten en in HackerSpaces)
Configureren
van de harddisk.
(Ik ga ervan uit
dat je een HD hebt die reeds geformat is als ext4 en data
bevat.)
Bij het opstarten
blijkt er geen automatische mount plaats te vinden, en lshw
(list harware) werkte niet.
(je kunt het lshw command installeren met apt-get
install lshw)
Met ls
-l
/dev/disk/by-uuid kwam ik de code van de harddisk te
weten, in
mijn geval 61e4306f-fa2b-48c3-9dc0-3cbb348fca83
voor
sda1.
Voor elke HD zal dit anders zijn, maar het principe blijft.
Maak een
mountpoint voor de HD: mkdir
/mnt/MyDisk
MyDisk is een naam voor jouw Harddisk. Bij mij heet 'ie sd4t2.
Voeg in
bestand /etc/fstab
toe de regel:
UUID=<jouw
UUID> /mnt/MyDisk ext4 errors=remount-ro 0 0
Geef het commando
mount
-a en
check met ls
-al /mnt/MyDisk of met Krusader dat de inhoud
van de
HD nu zichtbaar is in /mnt/MyDisk
NFS
NFS (Network File System) is nodig als er ook linux computers contact moeten kunnen maken met je server.Op de server: apt-get install nfs-common nfs-kernel-server
Maak een export map: mkdir /nfsexport
Om de inhoud van de harddisk te exporteren maken we een z.g. bind-mount.
edit /etc/fstab en voeg een regel toe als:
/mnt/MyDisk /nfsexport none rw,bind 0 0
Geef hierna het commando mount -a
De mappen van de HD moeten nu zichtbaar zijn in /nfsexport
Configuratie van de nfs-server:
Check dat in /etc/default/nfs-common staat (identiek met client)
# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD=yes
# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=no
in /etc/default/nfs-kernel-server
NEED_SVCGSSD=no
in /etc/idmapd.conf:
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
Nu moeten we de nfs server nog vertellen wat er geëxporteerd moet worden.
Edit: /etc/exports
/nfsexport 192.168.2.0/255.255.255.0(rw,crossmnt,sync,fsid=0,nohide,insecure)
Verander de IP-adressen zonodig naar jouw groep.
Merk op dat de laatste 0 in 192.168.2.0 betekent dat alle computers met IP 192.168.2.xxx kunnen deelnemen.
Er zijn mogelijkheden om dat te beperken, maar dat behandel ik hier niet.
Na wijzigen geef commando /etc/init.d/nfs-kernel-server restart
Er kan een warning komen: Not starting, portmapper is not running
Geef dan: service rpcbind restart Dit overleeft mogelijk een reboot niet. Doe dan:
update-rc.d rpcbind enable &&
update-rc.d nfs-common enable
Op de client
Installeer: apt-get install nfs-common
Check dat in /etc/default/nfs-common staat (identiek met server):
# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD=yes
# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=no
Maak mountpoint, bijv: mkdir /nfsimport
Maak een entry in /etc/fstab: om het geimporteerde filesysteem te mounten.
# mount remote filesystem
192.168.2.182:/nfsexport /nfsimport nfs rsize=8192,wsize=8192,timeo=14,intr 0 0
Wijzig het IP adres naar jouw situatie.
Geef het commando mount -a en check met ls /nfsimport of met Krusader dat de inhoud van de import nu zichtbaar is in /nfsimport
Apache2
Apache2 is nodig
als je 1 of meerdere websites aan de wereld wilt tonen.
Apache
is een uiterst complex geheel met extreem veel mogelijkheden.
Ik
geef hier alleen de instellingen die ik gemaakt heb om alles
wat op de
harddisk in de map WAN staat beschikbaar te maken voor de hele
wereld
en omstreken. Ik kan niet van elk configuratie-item uitleggen
wat het
doet en waarom het er zo staat, maar dit werkt, anders kon je
dit niet
lezen.
Als je interactieve pagina's gebruikt wordt het wellicht ingewikkelder.
Installeren: apt-get
install
apache2
Apache komt met een default website. Test dat: Ga met de browser
op een
andere computer naar 192.168.2.182
Je
moet dan die testsite zien.
De default weblocatie is /var/www
en daar staat een testpagina.
Ga met je browser naar het IP nummer van de server en test dat.
Maar wellicht wil je de sites op je harddisk zichtbaar maken.
Zorg dat de web inhoud minimaal 755 als permissie heeft
Configuratie in /etc/apache2/apache2.conf
(niets
gewijzigd)
Default virtual host in
/etc/apache2/sites-available/default en
..../sites-enabled/000-default (mogen identiek
zijn)
<VirtualHost
*:80>
ServerAdmin webmaster@localhost
DocumentRoot
/nfsexport/WAN // dit wil ik zichtbaar maken
<Directory /nfsexport/WAN>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /nfsexport/Logs/apache2/error.log
# Possible values include: debug,
info,
notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /nfsexport/Logs/apache2/access.log combined
</VirtualHost>
Apache levert een forse hoeveelheid logging
op.
Het lijkt me verstandig
om dat niet te doen in een map op de SD-kaart, want die kaarten
hebben
een beperkte hoeveelheid wis/schrijf capaciteit.
Wijzig in de file /etc/apache2/envars
het
pad voor de logfiles.
Wijzig de regel: export
APACHE_LOG_DIR=/nfsexport/Logs/apache2$SUFFIX
Zorg dat het pad /nfsexport/Logs/apache2
bestaat. Op de Harddisk is het dan /Logs/apache2/
Apache herstarten met
/etc/init.d/apache2 restart maar service apache2 restart
werkt
ook
Test eerst via een interne link of het nu
werkt: Ga met je browser naar het IP nummer van de server:
http://192.168.2.182/jouwwebpagina.htm
Om de rest van de wereld toegang te geven tot
je
site(s) moet poort 80 op je ADSL modem/router doorgegeven worden
aan de
server.
Dat gaat met de NAT Port Mappng instellingen op de modem/router.
Zie
een voorbeeld onderaan.
Er is ook een andere manier om je te bereiken, elk internet IP adres heeft nl. ook een naam. Die kun je o.m. te weten komen via de site www.grc.com
Klik op het "ShieldsUP!!" logo en dan 4 blokken lager op de pagina "Goto ShieldsUP!"
Zodoende is deze pagina via 2 wegen te bereiken:
Link via IP nummer: http://81.204.228.232/JanBeeProjects/ServerPisang/ServerPisang.htm
Link via IP naam: http://ip51cce4e8.speed.planet.nl/JanBeeProjects/ServerPisang/ServerPisang.htm
Als je vanuit je
huis
zo'n link wilt testen werkt 1 van deze methodes soms niet. Het
hangt
ervan af of je modem de externe link netjes oplost. Bij mij
doen ze het
alle twee.
OpenVPN
OpenVPN is nodig
als je vanuit elders veilige toegang tot je bestanden thuis
wilt hebben.
OpenVPN kan diverse ingewikkelde vormen van beveiliging bieden
met
private- en publieke sleutels en certifikaten. Dat is wellicht
nodig
als het gaat om een bedrijf met veel buitenwerkers.
Voor mijn situatie waarin ik met slechts 1 laptop toegang wil
hebben
heb ik gekozen voor de meest eenvoudige vorm van beveiliging,
die met
een enkele statische sleutel en zonder certifikaten. Ja, als
die laptop
gestolen wordt moet ik als de wiedeweerga de static key van de
server
veranderen.
Wat doet OpenVPN precies?
OVPN creëert een z.g. tunnel tussen de server en de client.
Die tunnel
ziet eruit als een aparte groep IP-adressen die niet voorkomen
op je
thuisnetwerk en ook nergens op het openbare internet. Het
verkeer via
de tunnel is in beide richtingen versleuteld, zodat een
luistervink er
niets van kan bakken.
Die tunnel heeft (in dit geval) aan de serverkant het
IPadres
10.1.0.1 en aan de clientkant 10.1.0.2
Website: https://openvpn.net/
Installatie op de server:
apt-get
install openvpn
Ga naar met cd
/etc/openvpn naar de configuratiemap en maak een
static key met:
openvpn
--genkey
--secret static.key
De key ontstaat in /etc/openvpn/
Deze
key moet later ook naar de client(s) gecopieerd worden.
Configuratie
op
de server in:
/etc/openvpn/server.conf Dat is een nieuw
aan te
maken bestand
#
Simple
Example server
dev
tun
ifconfig
10.1.0.1
10.1.0.2
secret
/etc/openvpn/static.key
verb
3
log
/etc/openvpn/ovpn.log // of waar elders je de
logfiles
wilt hebben
Configuratie op de
Client:
In
mijn
geval gaat het om een laptop die WXP draait. Voor andere M$W
versies
zal het niet erg anders zijn.
Voor
Linux
clients zie de site van OpenVPN
Installeer OpenVPN
voor windows op de gebruikelijke manier.
Het configuratiebestand komt in C:\Program
Files\OpenVPN\config
Er staat een
voorbeeldbestand in C:\Program
Files\OpenVPN\sample-config\Client.ovpn
Copieer dat bestand naar C:\Program
Files\OpenVPN\config\JouwNaam.ovpn
Geef het een geschikte naam, in mijn geval JanBee.ovpn
(de extensie .ovpn
moet blijven)
Edit(*) dat bestand zodat er komt:
#
Simple
Example remote
dev
tun
remote
81.204.228.232 // IP adres van de internet
aansluiting van de server (jouw huis-IP)
;remote
192.168.2.182 // voor testen
binnenshuis, nu
uitgecommentarieerd.
ifconfig
10.1.0.2
10.1.0.1
secret
static.key
verb
3
#log
"F:\\vpn\\ovpn.log" // definieer wwar je de
logfiles wilt
hebben. Bij mij staan ze op de F: partitie.
Copieer het bestand "static.key" dat op de server aangemaakt werd naar C:\Program Files\OpenVPN\config\static.key
Nu zou alles moeten werken. Test eerst binnenshuis. Op de client moet alles dat je server exporteert, hetzij via NFS of via Samba, nu zichtbaar zijn via het IP-adres 10.1.0.2Om vanuit de rest van de wereld toegang te krijgen tot je bestanden moet poort 1194 op je ADSL modem/router doorgegeven worden aan de server.
Dat gaat met de NAT Port Mappng instellingen op de modem/router. Zie een voorbeeld onderaan.
Opgemerkt:
- Thuis werkt ping met LAN IP, maar niet met WAN-IP.
- Aanvankelijk was er een probleem na het activeren van
static.key, maar dat lijkt opgelost door in de server het
volledige pad
op te nemen.
Voeg aan /etc/samba/smb.conf toe: interfaces =
192.168.2.0/24 10.1.0.1/24
(*)
De standaard platte-tekst-editor van windows (notepad of
kladblok) is
een notoir kreupel ding dat vaak niet goed overweg kan met
linux-achtige configuratiebestanden. Ik beveel Notepad-plus
aan, een
freeware ding dat je zo van het internet kunt plukken.
Port Mapping
Instellingen op mijn KPN modem/router. Bij andere modems/routers kan het anders gaan. Je moet wel dezelfde mapping instellen.Poort 80 is voor Apache web-pagina's, poort 1194 is voor OpenVPN.
Gebruik voor het VPN het UDP protocol, beslist NIET TCP. Het internet is nl. al TCP en als je TCP over TCP stuurt kan dat ernstige vertragingen opleveren.
Achtergrond: TCP doet aan opnieuw verzenden / opvragen van pakketjes als die wat laat aankomen. UDP niet. Als je TCP over TCP doet gaat de tweede TCP-laag bij zo'n vertraging ook om opnieuw verzenden vragen en dat kan een opeenstapeling van herverzendings aanvragen opleveren.
ToDo:
Mailserver: Richt de server zodanig in dat 'ie mijn mail ophaalt, dat zichtbaar maakt op elke computer in huis en -via de VPN- elders in de wereld. Ook dat vanaf iedere computer mail verstuurd kan worden, i.h.b. ook als ik via een willekeurige provider werk (op vakantie, bijv.)OpenVPN: Zorg dat sommige apparaten op het netwerk ook van buitenaf benaderd kunnen worden. Bijv de Webif interface van de satelietontvanger
De snelle weg:
Om zelf een server in deze trant op te bouwen kun je het verhaal hierboven volgen, maar er is een wellicht snellere weg: Zorg dat je in het bezit komt van de juiste Banana-Pi en een SD-kaart van 16GB. Zorg dat ik die dingen krijg, dan maak ik een kloon van mijn server, test die op jouw banaan en verander een paar privacy instellingen en dan krijg je'm terug, gratis.
Ik verander de volgende privacy instellingen:
- Het root password wordt blabla. Je kunt zelf een ander password instellen met passwd root
- Het samba password wordt blabla. Je kunt zelf een ander password instellen met smbpasswd -a <gebruikersnaam>
- Ik maak een nieuw static.key bestand voor het VPN. Je kunt zelf een nieuwe static.key maken (zie boven) zodat je zeker weet dat ik niet stiekem jouw key bewaar.
Wat je zelf tenminste nog moet doen is:
- Je harddisk mounten. Zoek de UUID op en edit die in /etc/fstab
- De indeling van je harddisk en de daarbijbehorende mountpoints in /etc/fstab en exports in /nfsexport goed zetten.
- Mogelijk IP adressen aanpassen. Zie boven.
- De exports van de Apache webserver goed zetten.
- Je modem/router configureren voor VPN en Apache.