Om mijn Linux-skills te verbeteren en iets nieuws te leren ging ik aan de slag met een VPS. Leuk, leerzaam en soms enorm frustrerend: dit zijn mijn bevindingen en tips.

Eind 2015 stapte ik over van een webhostingpakket met DirectAdmin naar een VPS. Ik wilde al langer een eigen virtuele server beheren, en toen TransIP zijn gratis clouddienst Stack introduceerde dacht ik: laat ik daar eens een VPS nemen.

TransIP’s instap-VPS Intel Xeon-cpu, 1GB RAM, 50GB SSD kost een tientje per maand. Omdat ik DirectAdmin kende nam ik een VPS met CentOS en DirectAdmin voorgeïnstalleerd (meerprijs van 5 euro), zodat ik nauwelijks iets hoefde te configureren.

DirectAdmin & simpliciteit

Het fijne aan DirectAdmin is dat je een controlpanel hebt waar je alles kunt regelen, van het restarten van diensten tot het aanpassen van configbestanden. Dat werkt snel en simpel en het is ook goed te beveiligen met https en 2fa.

Ik merkte dat gamewebsite Laadscherm toch meer RAM nodig had en de enige upgrade bij TransIP was een duurdere VPS 2 Intel Xeon-cpu's, 4GB RAM, 150GB SSD van 20 euro per maand. De prijs werd inclusief DirectAdmin en BTW maar liefst 32 euro per maand.

Daarom zoch ik naar een nieuwe VPS-aanbieder, en ik kwam al snel uit bij Scaleway.

Scaleway

Scaleway is pas sinds april 2015 actief en binnen korte tijd erg populair geworden onder developers, vooral omdat ze virtuele (ARM-)servers voor een lage prijs verhuren. Voor hun instap-VPS 2 X86/ARM-cpu's, 2GB RAM, 50GB SSD betaal je 2,99 euro per maand.

Het dashboard van Scaleway

De Amsterdamse servers van Scaleway zijn gehost bij Evoswitch, dat direct is aangesloten op de AMS-IX en met groene energie werkt. Ik koos voor Ubuntu Xenial 16.04 en installeerde via deze tutorial een LAMP-stack, dat staat voor Linux Apache MySQL PHP: alles wat je nodig hebt voor je eigen webserver.

Na het instellen van inloggen met een private key voor mijn main user, het verbieden van een inlog met een wachtwoord en het configureren van de UFW firewall voor Apache Full/OpenSSH was ik klaar om te beginnen.

Apache en Let’s Encrypt

Het aanmaken van Apache vhosts is echt bijzonder simpel met het gebruik van deze tutorial. Ik veranderde de A- en AAA-record van mijn domeinnamen en binnen de kortste keren verwezen ze naar de testpagina van Apache.

Dan is het tijd voor Let’s Encrypt. De Apache-versie van Certbot is sinds ik de nonprofit voor het eerst in 2015 gebruikte flink verbeterd, waardoor het installatieproces en de aanmaakprocedure appeltje-eitje is. Ik volgde daarvoor deze tutorial. Let’s Encrypt biedt zelfs een optie om https te forceren via de Apache vhosts - dan hoef jij dat niet handmatig in te stellen.

Nog twee tips met Let’s Encrypt: gebruik --rsa-key-size 4096 achter de Certbot-commands om je ssl-certificaat 4096bits in plaats van 2048bits te maken. Als tweede tip: voeg een renew --quit toe aan je cronjob voor de automatische vernieuwing van je certificaten. De cronjob wordt standaard als root uitgevoerd.

WordPress en Jekyll

Het installeren van WordPress met een MySQL-database is opnieuw prima te doen als je deze tutorial volgt. Binnen een uurtje had ik mijn vier WordPress-websites overgezet of opnieuw geïnstalleerd.

Voor mijn eigen website maak ik gebruik van Jekyll, dat Markdown-pagina’s automatisch verandert in statische html-pagina’s. Om het simpel te zeggen: dit verhaal schrijf ik in Markdown (met stiekem deze Markdown-cheatsheet) op mijn pc, upload het .md-bestand via sftp naar mijn server waarna Jekyll er een html-pagina van maakt en de website updatet. Dat gebeurt binnen twee seconden. Met deze quickstart kom je een heel eind om Jekyll op je server te installeren.

A+ rating

Om mijn https-verbinding in orde te krijgen gebruik ik Cipherli.st van Remy van Elst, dat veiligheid combineert met functionaliteit. Iets te strenge ssl-settings en je site is voor een grote groep gebruikers onbereikbaar. Daarnaast gebruik ik Securityheaders.io om alle headers in te stellen.

Dat ging alleen iets lastiger dan gedacht. Ik ben bekend met security headers en gebruikte ze ook op mijn vorige VPS, maar deze keer wilde Apache na het instellen van de headers niet reloaden of restarten. Ik kwam er maar niet uit: alle headers had ik goed toegevoegd aan de betreffende Apache-vhost. Wat bleek: ik had geen sudo a2enmod headers gedaan 🤦.

Een A+ rating

Na het instellen van HSTS, HPKP en een CAA-record (dank TransIP voor het toevoegen!) was de security redelijk on point.

Van deze fouten heb ik geleerd

Maar dat ging logischerwijs niet allemaal zonder slag of stoot, vooral niet als je net als ik voor het eerst vanuit SSH je LAMP met Let’s Encrypt configureert. Zo wilde ik bijvoorbeeld een 100% bij SSL Labs, gewoon omdat het kan. Daarmee brak ik zo’n beetje elke connectie die je met de site kon maken.

Ook voerde ik te enthousiast openssl dhparam -out /etc/ssl/private/dhparams_4096.pem 4096 in voor een 4096bits Diffie-Hellman-sleutel, waardoor mijn server na zeven uur nog steeds aan het genereren was. Van @showthread kreeg ik te horen dat ik -dsaparam was vergeten toe te voegen, die me later ook nog hielp met het goedzetten van alle permissies omdat ik iets te vlot was met sudo chown -R.

Daarnaast had ik een probleempje met ipv6. Mijn standaard ipv6-adres ging enkel naar mijn hostname toe, en werd niet gekoppeld aan andere sites. Urenlang probeerde ik allerlei dingen uit. Na een oproep op Twitter kreeg ik een DM van @h3artbl33d, die mij stap voor stap onderdelen liet checken. Wat bleek: ik had per ongeluk in de vhost van mijn hostname het ipv6-adres staan, bij de rest <VirtualHost *:443>.

Ook ging ik te fanatiek te werk met de update van PHP, waardoor in één keer mijn MySQL-extensie niet meer werkte. Met een simpele sudo apt install php7.0-mysql kreeg ik mijn oude PHP-versie weer terug. Inmiddels is de update naar PHP7.1 gelukt.

Snapshot, snapshot, snapshot

Het grote nadeel van Scaleway is dat je de server handmatig uit moet zetten om een snapshot te maken. Daar baal ik van, en wel om twee redenen.

  1. Als je veel dingen aan het doen bent op je server is het belangrijk om regelmatig een snapshot te maken. Het proces van uit- en inschakelen is omslachtig en ontmoedigt het maken van snapshots.
  2. Elke keer als je de server stopt, dan begint het uurtatief opnieuw. Dat zit zo: als je 200 uur achter elkaar de server aan hebt staan betaal je niet meer dan de 2,99 euro per maand exclusief BTW. Zodra je in die 200 uur de server uitschakelt wordt het aantal uren gereset. Je begint dan weer opnieuw met het uurtarief waarmee de totaalprijs op zo’n 4,5 euro per maand exclusief BTW komt. Het is maar anderhalve euro extra, maar goed - niet heel netjes van Scaleway.

Dan nog twee nadelen omtrent de snapshots bij Scaleway.

  1. Je betaalt een uurtarief voor een snapshot. Eén snapshot komt uit op 1 euro per maand.
  2. Scaleway heeft in tegenstelling tot TransIP geen automatische backupdienst. Bij TransIP wordt er gratis elke vier uur een snapshot van je VPS gemaakt.

Ondanks deze ongemakken is de prijs van Scaleway echt ongeëvenaard: voor deze hardware betaal je, inclusief een snapshot, nog niet eens 5 euro per maand - en dat is inclusief BTW. De goedkoopste optie bij TransIP, met minder krachtige hardware maar wel automatische backups, kost je 12 euro per maand inclusief BTW.

Misschien ga ik ooit weer terug naar TransIP, want het is leuker om bij een Nederlands bedrijf te hosten dan een Franse club. Maar voorlopig zit ik goed bij Scaleway 👍.