FreeBSD heeft standaard een functie waarmee je jails kan aanmaken (vergelijkbaar met Linux containers). In freebsd zijn deze zeer uitgebreid: Er zijn “Thick Jails” waar elke jail zijn eigen bestandssysteem heeft, “Thin jails” waar maar een paar mappen verschillen en de rest word overgenomen van het basissysteem, en zelfs Linux Jails, waarmee je Linux applicaties kan draaien op een freeBSD kernel! In deze post leg ik uit hoe je Thick Jails kan gebruiken, maar je kan meer lezen over de andere soorten jails in de FreeBSD documentatie.
Auteur archieven: Vincent Lammens
UFW basics
Op een server is een firewall onmisbaar. Op Debian & Ubuntu is UFW de eenvoudigste manier om een firewall in te stellen. UFW staat voor “The Uncomplicated Firewall” en is dan ook zeer eenvoudig in gebruik. In deze post leg ik de basis uit van UFW.
Freebsd Installeren
Ik heb altijd “FreeBSD” zien staan als optie als ik een VM aanmaakte bij een cloudprovider, maar ik heb er nooit mee geëxperimenteerd. Ik heb besloten om er mee te experimenteren in een VM. In deze post zal ik de installatie van FreeBSD toelichten
Nat instellen in proxmox
Binnen proxmox word standaard gebruik gemaakt van briding. Dit is echter niet altijd handig (we hebben bijvoorbeeld maar 1 IP adres tot onze beschikking. Gelukkig kunnen we met iptables aan maquerading doen.
Voeg het volgende toe aan /etc/network/interfaces:
auto vmbr1
iface vmbr1 inet static
address 10.0.0.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o enp35s0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o enp35s0 -j MASQUERADE
## do do a port-forward to the VM with "lan" ip 10.0.0.3 from the host port 8080 the VM port 80
## you can use a line like this.
# post-up iptables -t nat -A PREROUTING -i enp35s0 -p tcp --dport 8080 -j DNAT --to 10.10.10.3:80
vervolgens kunnen we het netwerk herladen met
ifreload -a
ProFTPd installeren in Debian 12
Ik heb een geupdate handleiding gemaakt die SFTP gebruikt in plaats van SFTP
ProFTPd is een FTP server die zeer praktisch is. Het laat toe om virtuele gebruikers aan te maken en meer. In deze post ga ik toelichten hoe ik ProFTPd configureer met Virtual user support en TLS.
Pelican & Jenkins
Met de volgende jenkinsfile kan je automatisch een Pelican site bouwen met Jenkins. Dit maakt gebruik van deSFTP publish en Docker plugins
pipeline {
agent {
docker {
image 'python:3.8'
}
}
stages {
stage('setup') {
steps {
withEnv(["HOME=${env.WORKSPACE}"]) {
sh 'python -m pip install --user --upgrade pip "pelican[markdown]"'
sh 'python --version'
sh 'python -m pelican --version'
}
}
}
stage('publish - web') {
steps {
withEnv(["HOME=${env.WORKSPACE}"]) {
sh 'python -m pelican content -s publishconf.py'
}
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'vincentlammens.be',
sshRetry: [retries: 5, retryDelay: 10000],
transfers: [
sshTransfer(
remoteDirectory: '',
removePrefix: 'output/',
sourceFiles: 'output/**/*'
)
]
)
]
)
}
}
}
post {
always {
cleanWs()
}
}
}
Skyz Updates (Nieuwe UI en Bliksemradar)
Ik heb de Skyz App geüpdatet, de grootste verandering zijn is de nieuwe interface. De interface is een pak moderner en prettiger. De neerslagradar is geïntrigeerd op de homepagina en bevat nu ook een nowcast voor het komende anderhalf uur.
Een nieuwe feature is de bliksemradar, op deze kaart kan je live alle blikseminslagen volgen.
Je kan nu ook een account aanmaken om triggers te beheren. Triggers zijn gepersonaliseerde meldingen die je kan ontvangen als bepaalde grenswaarden worden overschreden.
Er komen nog een tal van updates, zoals optie voor anderen met een PWS om hun data te delen en zelf eenvoudig een site te maken voor hun weerstation
Skyz android App
Update 2025-05: De android app is helaas niet meer beschikbaar. Het was te veel werk om deze te blijven onderhouden. Skyz is wel nog altijd een PWA.
Ik heb een app gemaakt van skyz:
Download op google play
Caching met apache’s mod_cache
Caching is bij drukbezochte sites een must. Het verminderd de load op de webserver door de gegenereerde pagina’s op te slaan. Hierdoor word de database minder belast bij dynamische websites waardoor de webserver meer tijd heeft voor andere bezoekers.
Apache heeft een module, `mod_cache` die door middel van een paar opslagmechanismen (disk, shared memory, redis, memcached of zelf een DBM file) een snelle cache voorziet voor Apache. mod_cache is standaard als 1e laag in de processing stack, maar dit kan aangepast worden.
Eenvoudige configuratie
In de documentatie staat een voorbeeld van een eenvoudige configuratie. Als we deze
lichtjes aanpassen voor onze omgeving (in dit geval gaan we `/var/cache/httpd` gebruiken om de cache op te slaan, je moet deze map standaard zelf nog aanmaken).
<IfModule mod_cache.c> <IfModule mod_cache_disk.c> CacheRoot "/var/cache/httpd" CacheEnable disk "/" CacheDirLevels 2 CacheDirLength 2 CacheLock on CacheLockMaxAge 5 CacheIgnoreHeaders Vary DNT User-Agent Accept Accept-Encoding Accept-Language </IfModule> </IfModule>
Hierna moeten we zorgen dat mod_cache en mod_cach_disk zijn ingeladen met `a2enmod mod_cache mod_cache_disk`.
Vervolgens moet onze applicatie `Cache-control:` headers meegeven. Deze worden gebruikt om te vertellen hoe lang een pagina mag gecached worden. Afhankelijk van het soort pagina, en de updatefrequentie stel je deze in. Een blog waar vaak updates worden gepost is `300` seconden bijvoorbeeld een goed begin. Vaste pagina’s op die blog die zelden veranderen (zoals de ‘about’ pagina) kunnen dan weer een langere tijd krijgen, zoals `3600` seconden of zelfs `86400` seconden (1 dag).
Met apache komt standaard ook htcacheclean, een tool om de disk cache op te schonen. Deze tool kan je als daemon of als cronjob pereodiek uitvoeren om de groote van de cache map te beperken. Het onderstaande commando zal zorgen dat er maximaal 1GB aan data cachen, of 50000 inodes in gebruik nemen.
htcacheclean -p /var/cache/httpd -l1G -L50000 -n -t
Linux processen beperken in CPU gebruik
Nice
Met nice kan een process een prioriteit toegekend worden. Prioriteiten zijn een manier om de scheduler te vertellen welke processen voorang krijgen op minder belangerijke processen. Dit kan met renice ook op een process dat al draait. Nice waarden gaan van -20 (hoogste) tot 19 (laagste). Standaard is deze waarde 0.
Het gebruik van nice is zeer eenvoudig, je plaatst nice -n <prioriteit> voor het commando dat je wenst uit te voeren, bijvoorbeeld nice -n 19 tar -zcf /var/backups/home.tgz /home/.
De scheduler zal processen met een hoge nice waarde (dus lage prioriteit) minder cpu tijd geven dan processen met een hogere prioriteit. Heel handig voor bijvoorbeeld zware backup processen.

Default nice voor een linux gebruiker
De standaard nice waarde voor een linux gebruiker is 0. Dit kan echter aangepast worden in /etc/security/limits.conf door de priority parameter in te stellen voor een bepaalde gebruiker/groep. Bijvoorbeeld:
gebruiker hard priority 10
Cpulimit
cpulimit is een programma dat met behulp van SIGSTOP en SIGCONT signalen het gemiddelde cpu-percentage van een process beperkt tot een gegeven percentage. Dit commando werkt net zoals nice door het te plaatsen vlak voor het commando dat je wilt uitvoeren:
cpulimit -l 50 tar -zcf /var/backups/home.tgz /home/
Het voorbeeld hierboven zou de backup van de /home/ directory beperken tot 50% cpu snelheid.
Indien een process subprocessen spawned, is het belangerijk om aan cpulimit ook de -m parameter mee te geven.
