Roland Kamphuis Rotating Header Image

Posts Tagged ‘self hosted’

Self hosted: Vaultwarden

De volgende applicatie in de serie self hosted is Vaultwarden. Een password manager die je zelf mag hosten. Ik ben grote fan van een password manager omdat het tegenwoordig geen slim idee meer is om overal je zelfde wachtwoord te gebruiken (Denk aan de LinkedIn en Facebook hack!). Dus bedenk ik per website/bedrijf/applicatie een eigen wachtwoord. Gecombineerd met soms de moeilijkheidsgraad waar je aan moet voldoen wordt het geven moment onmogelijk om alle wachtwoorden te onthouden. Een password manager in je browser lost dat probleem al op. En als je het veilig doet zorg je ervoor dat er een master password op staat, zodat niet al je wachtwoorden zonder encryptie opgeslagen worden. Maar dan komt het volgende probleem: Je wilt snel even inloggen op je mobiel op een bepaalde site. Of je bent niet bij je thuis computer. En dan komt al snel een online password manager om de hoek kijken.

Er zijn een aantal dienstverleners die password managers online aanbieden. Maar daar is ook een poosje terug zo’n password manager gehackt. En dan denk ik: Je enige taak is om wachtwoorden veilig te houden. Hoezo heb je dan je beveiliging niet op orde! Dus daarom ben ik blij dat je deze nu ook zelf kan hosten!

Om te starten heb je een docker omgeving nodig. Volg de handleiding op de website van Vaultwarden en voila binnen no-time heb je je eigen password manager draaien!

https://github.com/dani-garcia/vaultwarden

Maar daarna wordt het even lastig qua naam. Want je gebruikt bijv op je telefoon Bitwarden, en de plugin in je browser heet ook Bitwarden. Dit komt doordat Bitwarden en Vaultwarden eigenlijk hetzelfde zijn. Maar bij Bitwarden koop je de dienst door hun gehost in, terwijl Vaultwarden de opensource versie is die je zelf mag draaien. De programma’s daarna om te verbinden heten daardoor Bitwarden ondanks je dus Vaultwarden gebruikt.

In je browser is het niet anders dan even je master wachtwoord intypen, maar op je Android telefoon kan je ervoor kiezen om biometrisch je manager te unlocken. Dat laatste gaat erg snel! En omdat apps vaak niet direct een URL hebben, kan je redelijk makkelijk de app naam aan de bestaande URL koppelen en Vaultwarden weet vervolgens je login te vinden!

En om het makkelijker te maken heb ik een reverse Nginx proxy ervoor gezet met een SSL certificaat van lets-encrypt zodat je de manager ook openbaar kan maken om zo overal ter wereld er bij te komen.

Eigen AS netwerk

Vorig jaar was ik bij de NNOG meetup, en een van de dingen die me opviel is dat er een aantal engineers een private AS netwerk hadden. Iedere provider op het internet heeft uniek AS nummer( Autonomous system). Hiermee kan er onderscheid gemaakt worden tussen bijv het KPN netwerk en het Vodafone netwerk. Mijn onderneming heeft ook sinds 2006 een eigen AS, waarmee je onafhankelijk het internet kan regelen binnen. Een van de dingen die je nodig hebt om dat functioneel te krijgen is een hele dure router. Die krengen gingen vroeger voor minimaal 50k, en nog steeds; in mijn onderneming gebruiken we hardware routers van Arista met 32x100gbit poorten. Echter zijn er ook goedkopere oplossingen op de markt gekomen die voor kleine netwerken zeer betaalbaar zijn. Zo kan je voor nog geen 500 euro ook een mikrotik kopen die in de praktijk hetzelfde zou moeten kunnen, maar dan op 1 of 10gbit snelheid met een halve BGP tabel. Met een iets hoger budget kan je zelfs full BGP draaien bij Mikrotik. Ook de software routers zijn een optie geworden doordat de reguliere computers ook een stuk sneller zijn geworden. Dus vandaar dat ik nu ook een prive AS nummer heb aangevraagd om zo te kunnen gaan spelen en experimenteren met alternatieve hardware zonder daarmee de productie omgeving in mijn onderneming te hoeven verstoren.

Ripe NCC is de instantie in Europa/Rusland die in deze regio de ip adressen en AS nummers uitdeelt. Officieel moet je Ripe lid worden of een Ripe sponsor zien te vinden. Gelukkig is mijn onderneming sinds 2009 al Ripe lir en kon ik via die weg een een PI block en PI AS aanvragen. Belangrijk is dat je deze als PI aanvraagt. PI staat namelijk voor Provider independent en wordt op de naam van de eindklant uitgegeven. Dat betekend ook dat ik zowel het ipv6 block als AS nummer kan meeverhuizen als ik naar een andere Ripe sponsor wil. Ofwel de resources zijn altijd van mij. Nadeel van PI is dat je geen onderverdeling mag doen van je ip blokken.
De PI optie kost 75 euro per jaar per resource (AS, ipv4, ipv6), afrekenbaar via je Ripe sponsor plus eventuele tussenpartij doorschuifkosten. Mijn bedrijf biedt deze optie ook aan mocht je interesse hebben.
De optie voor PI bestaat ook voor ipv4, helaas zijn die blocken heel schaars geworden omdat Ripe in 2012 gestopt is deze uit te geven. Mocht je een PI block weten te bemachtigen of over te nemen dan is dat de beste optie!
De enige andere manier om aan ipv4 te komen is om deze te huren in PA vorm (niet je eigendom) of zelf Ripe deelnemer te worden en een ip PA block te kopen van een andere partij. Een ipv4 /24 block gaat op dit moment voor rond de 6500 euro. En daarbij komt ook nog dus de jaarlijkse Ripe lidmaatschap kosten van 2000 euro.
Ik heb voor mijn private netwerk een ip block van mijn bedrijf gehuurd. En opnieuw kan je dit ook bij mijn bedrijf bestellen bij interesse.

Mijn netwerk:

AS198092 Kamphuis
2001:678:1264::/48
62.129.148.0/24

Sinds een paar maanden heb ik mijn privé server geupgrade van een Atom D525 naar een EPYC 7413 en heb ik opeens veel meer performance tot mijn beschikking. (Passmark 411 VS 36.966 ofwel 8900% sneller).
Meer info over deze server upgrade binnenkort, netzoals hoe het uitrollen van het netwerk gaat.

Self hosted: Immich

Volgens mij heeft iedereen wel een vorm van cloud opslag. Ik gebruik het voornamelijk om mijn foto’s van mijn mobiel te back-uppen en om makkelijk bij een aantal bestanden te komen die je dan net even op je mobiel nodig hebt. Zo ben ik lang geleden begonnen met een gratis account bij Dropbox. En als je een vriend, familie of kennis aanbracht kreeg je gratis 500mb erbij. Zo kon ik een leuk 4GB cloud opslag accountje samenstellen. Daarna heb ik het account kunnen verhogen naar enkele tientallen GB’s omdat je dat gratis bij aanschaf van een mobiel kreeg. Maar op een dag besloot Dropbox dat ik weer terug moest naar het standaard plan van 2GB, Weg referrers, Weg deals met telefoonfabrikanten…

Toen overgestapt naar Google Foto’s. Dat was helemaal gratis en werd gewoon netjes in je Google drive opgeslagen! Dus de hele mikmak overgezet. Google deed het net wat beter, want foto’s worden heel mooi online getoond in een aparte subsectie van drive. Helemaal fan was ik van het terugkijken van 1 of meerdere jaren. Gaf je een leuk beeld wat je een jaar, 2 jaar of langer geleden bezig hield op dezelfde dag. Hun functie om op GEO locatie te zoeken was ook heel handig. Maar aan het gratis kwam een eind. Google kondigde aan dat full resolution niet langer gratis zou zijn, maar de gecomprimeerde versie zou nog wel gratis zijn. Nouja het is niet dat ik raw foto’s maak op mijn mobiel, en hun compressie was totaal niet zichtbaar. Dusja lekker verder met compressie aan. Totdat het volgende bericht kwam dat die ook niet meer gratis zouden zijn. Vanaf dat moment ging opeens de foto’s van mijn 15GB opslag af. En binnen 2 jaar was ik door die opslag heen.

Ik stond op het punt om bijna een Google Drive abonnement aan te schaffen, maar toen dacht ik, dat moet ik (met een hosting bedrijf) beter kunnen. Zijn er geen alternatieve die je zelf kan draaien? Ik had al lange tijd Nextcloud draaien, maar dat werkte niet lekker met foto’s backuppen (simpelweg omdat die helft vergat om mijn fotos te backuppen, files delen werkt dan weer wel prima). Met wat zoeken kwam ik op Immich uit. Toen weliswaar nog in BETA maar zag er zeer belovend uit.

Ik pakte een Raspberry PI, installeerde daarop Raspbian met docker en voordat ik het wist was de Immich container gedeployed! Ook de Android app stond zo op mijn telefoon. En in no time had ik mijn nieuwe ‘Google fotos’ online! Nu had ik maar een 16GB SD kaart in de raspberry zitten, dat gaf niet bepaald meer opslag dan Google. Dus kocht ik de PI hat die een SSD ondersteund samen met een 1TB small factor SSD. Nu kan je eenvoudig in de PI de SSD toevoegen, maar ik wou van de SD kaart graag af. Een SD kaart is namelijk niet bepaald de snelste als je daar een OS op hebt draaien. Bovendien is de levensduur van een SD kaart beperkt door het aantal schrijfacties van een OS. Dus kopieerde ik alle data naar de SSD, moest ik even de firmware van de PI updaten om van de SSD te kunnen booten en voilla! 1TB effectieve cloud opslag!

Mijn volgend probleem was dat de installatie thuis stond achter mijn router. Dat werkt prima als ik met mijn telefoon op wifi zit, maar zodra ik buiten de deur ben kom je er niet bij. Op dat moment had ik nog geen VPN ingericht dus koos ik ervoor om met Nginx een reverse proxy ervoor te zetten die enkel op poort 443 luistert. Daarmee is dus een SSL verbinding verplicht. Deze heb ik via Lets-encrypt geïnstalleerd en vervolgens het 443 poortje naar internet open gezet. En zo heb ik de perfecte Cloud opslag! Kosten?

UnitPrijs
Raspberry PI 5 – 4gb85
1TB SSD NVME60 (nu 130)
Pi SSD HAT15
USB-C Voeding15
Totaal175

Als je er vanuit gaat dat de set 5 jaar mee gaat dan kom, dan kom je op een maandelijks kostenplaatje van 2.91 euro. Met het stroomverbruik van 5 watt van de pi komt er met 25 cent /kWh een maandelijkse prijs van 0.90 bij. Ofwel voor een prijs van 3.81 heb ik nu 1TB cloud opslag!

Google foto’s heeft een pakket van 100GB voor 2 euro per maand, en dat is op zich ook niet gek als je aan 100GB voldoende hebt. Maar wil je vooral niet meer je foto’s met Google wil delen, of meer opslag nodig hebben en goedkoper willen hosten, dan kan ik de self hosted Immich variant zeker aanraden! En als je zelf graag ervaring wil opdoen met Linux, Pi en hosting dan zeker!

Self hosted: Jellyfin

In 2018 ben ik begonnen voor het eerst met een online streamingdienst abonnement. In dit geval met Netflix. Ik ben al lange tijd fan van streaming diensten, zo heb ik Spotify sinds het begin in 2011. En nu ook fijn om eindelijk je films en series te streamen. Een paar jaar later had ik daar ook Amazon Prime Video, HBO, NPO en Disney+ bij aangenomen. Dat was direct ook het moment dat er iets vreemds gebeurde. Voor het eerst zag je grootschalig content bij Netflix verdwijnen. Maar geen nood het kwam vaak op een andere dienst weer terug. En als je weer wat langer wacht kon het best zijn dat Netflix de aanbesteding van een bepaalde serie weer had gewonnen en het weer terug kwam op Netflix. Onhandig maar nog wel mee te werken.
Totdat de prijsverhogingen kwamen. Waar ik voor 2020 bij de meeste partijen een bedrag van 4-10 euro per maand betaalde is dat in 2026 bij merendeel verdubbeld. Ook begonnen de partijen het lenen van accounts aan te pakken. Waar Netflix in het begin dit bewust toeliet en het zelfs gebruikte in hun marketingcampagne! Waardoor voor veel mensen het best duur werd voor alle verschillende diensten maar iedere keer de hoofdprijs te moeten betalen. Laten we het dan ook niet hebben over de reclames die je tegenwoordig krijgt in je betaalde accounts.

En zo ben ik in Jellyfin gerold. Jellyfin maakt het mogelijk om je eigen streaming dienst te beginnen, helemaal zelf gehost op je eigen omgeving zonder invloed van derden. Een ideale manier om nog wat met je oude DVD iets te kunnen doen!

Met de komst van Jellyfin is mijn content weer stabiel (het is niet zomaar verdwenen), houd ik de prijs laag (eenmalige aanschaf), en bepaal ik ook welke versie film ik zie (Disney+ besluit namelijk zomaar bij Home alone 2 Donald Trump eruit te knippen, en oudere versies van Star Wars zijn ook niet te bekijken). Daarnaast heb ik nu zelfs content die op geen enkele streaming dienst staat. Denk aan bijv Thunderbirds, of mijn favo serie Chuck!

Wat heb je nodig om te beginnen?
Een boel tijd en geduld. Ik ben eerst begonnen mijn eigen DVD collectie in te scannen, en dat kost ongeveer 10-15 minuten per DVD. Met het programma MakeMKV kan je de inhoud van een DVD omzetten naar een .mkv bestand op de computer. Ook mijn enige 2 Blu-ray discs heb ik ingescand: Golden Eye en The Dictator! Nou dat was nog een avontuur. Ergens in een oude computer had ik ooit een blu ray speler ingebouwd. Dus die eruit getrokken en in mijn huidige pc gestopt. Dan kom je erachter dat blu-ray met licenties werkt en ik dus eerst opzoek moest gaan voor de licenties van de films die ik heb. Gelukkig staat er veel op internet, en zodoende kon ik met de licentie ook middels MakeMKV de scan maken. Die overigens 30 min per disc duurt, en voilla!


Mooi dacht ik, nu wordt het tijd om mijn lievelingsfilm: Star Wars toe te voegen. De DVD versie had ik al ingescand en de blu-ray 4k versie had ik snel bij bol.com gekocht. Was erg goedkoop (12 euro per film) want er ontbrak Nederlandse ondertitels. Nouja geen probleem. Maar dat was wel een probleem voor mijn Blu-ray speler, want blijkbaar kon die geen 4k content aan. En probeer anno 2026 maar eens een blu-ray speler voor de computer te kopen! En omdat ik dat certifcaten gebeuren ook wel een beetje zat was heb ik een tweede hands model gekocht bewust met een oude firmware. Deze firmware kan je vervangen door je eigen versie waarmee je wat ‘flexibeler’ met die certificaten over weg kan. En zo kwam de 4k films ook binnen. (Dus doe je onderzoek hierin als je van plan bent blu-rays in te scannen).
Met het programma MKVToolNix kon ik de subtitles uit de DVD release halen en in de MKV van de 4k blu-ray toevoegen.

Transcoden
Een ander handig programma is Handbrake. Daarmee kan je de videobestanden transcoderen en daarmee comprimeren. Bijv een DVD heeft mpeg4 encoding, dat kan een hul stuk beter om naar h.264 of h.265 te zetten, bespaard zo 70% aan capaciteit zonder kwaliteitsverlies! Ook Blu-rays kan je omzetten, zonder daar een concessie in te doen kan je daar 50% besparen. Ik heb veel omgezet naar h.265 omdat dat tegenwoordig overal ondersteund wordt en net betere manier van compressie heeft zonder kwaliteitsverlies dan h.264. En naarmate ik bezig was kan ik AV1 ook aanraden. Handbrake heeft de optie je videokaart transcoder te gebruiken waardoor de snelheid drastisch omhoog gaat ten opzichte van cpu transcoding.

Echter is transcoding niet nodig, Jellyfin heeft FFMpeg ingebouwd en kan on the fly films transcoderen als de client het ene formaat niet aan kan. Het voordeel om alles van te voren wel te transcoderen is voornamelijk opslag besparing en ontzorgen van transcoden van Jellyfin. Bijv een h.264 wordt overal wel ondersteund. En dan hoeft Jellyfin niet on the fly meer transcoden als de bron al is omgezet.
Ik draai Jellyfin op een Intel N355 met ingebouwde GPU. Die gpu kan net 3 x een 4k stream aan als het gaat om on the fly transcoden. Eerder gebruikte ik een N100, en die kon 0.97x een 4k stream aan. Ofwel hier moest ik 5 min de film pauzeren want in realtime redde hij het net niet. En AV1 gaf mij problemen met sommige players die zeiden dat ze 4k av1 aankonden, maar bij afspelen gingen die haperen. Gelukkig kan je dan Jellyfin naar een ander formaat transcoderen zodat je alsnog kan kijken.

En als je eenmaal door hebt hoe het gaat kan je dus alles gaan toevoegen. Nadat ik mijn eigen DVD’s had gedaan ben ik regelmatig langs de kringloop gegaan, rommelmakten bezocht en heel af en toe op marktplaatst opzoek gegaan naar DVD’s en Blu-Rays. Om de kosten van de hobby niet uit de hand te laten lopen had ik een limit van 1 euro voor een dvd en 3 euro voor een blu-ray voor mezelf ingesteld. Op die manier heb ik heel veel films kunnen verzamelen: 465 Dvd’s en 283 Blu-rays.

Jellyfin
Jellyfin is een stukje software die je zelf kan hosten waarmee je je eigen streaming dienst op zet. Het heeft een ingebouwde webserver en serveert een webpagina aan media bestanden. Deze kan je dan heel eenvoudig in je browser streamen of je kan natuurlijk de bijbehorende apps installeren.

Installeren van jellyfin is erg eenvoudig, volg de handleiding op hun site en voila! Ik heb een kale VM voor jellyfin aangemaakt zodat alles in een eigen omgeving draait. Middels een NFS share bied ik Jellyfin de DVD en Blu-rays aan. Ik vond het een enge gedachte dat Jellyfin direct access moest hebben tot mijn share, vandaar de read only rechten op de movie map.
De VM is een proxmox VM. Dus met een beetje moeite kon ik de GPU in pass trough mode zetten naar deze VM, zodat Jellyfin de GPU on the fly kan gebruiken voor transcoding. Doordat het de interne gpu van de cpu is, trekt deze maximaal een 6 Watt stroom op moment dat volledige transcoding nodig is.
Vervolgens Jellyfin je media map laten scannen en voilla!

Hier en daar zal jellyfin mogelijk niet alles kunnen vinden. Soms komt dat door een typefout in de naam van het bestand of doordat er meerdere films zijn met dezelfde naam. Gelukkig kan je dat snel verhelpen of handmatig de meta data aan te passen.

En als je de handleiding van Jellyfin volgt hoe de media map eruit ziet krijg je ook nog eens heel mooi de keuze welke versie film je wilt zien. Zoals in bovenstaande screenshot te zien valt kan je kiezen voor de 4k versie, de Blu-ray versie of de DVD versie.

Ik heb de server thuis draaien, en middels een VPN koppeling kan ik overal in de wereld mijn media streamen!
Je kan Jellyfin ook direct op het grote internet zetten, maar dan is mijn advies wel een SSL certificaat te gebruiken en de niet SSL versie uit te zetten.