De lessen die ik leerde 💡 van mijn VPS
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 3,99 euro per maand.
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 🤦.
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
Scaleway ondersteunt sinds mei 2018 hot snapshots, waarmee je terwijl je server draait een backup kunt maken. Die hot snapshots hebben nog wel twee nadelen.
- Je betaalt een uurtarief per snapshot. Eén snapshot komt uit op 1 euro per maand.
- 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, rond de 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 👍.