After using various cloud services for the last couple of years I decided to set up a home server. The main reason for this is to have more control and limit the cost. For a long time I was using the basic 2€/month subscription from Microsoft that gives you about 100Gb of storage. I switched to Google One for the same price because of the better Photos App. But I began to hit the 100Gb limit and did not want to upgrade. Though Google offers a 3€/month subscription for 200Gb I decided to set up a home server instead. Besides the pricing I also wanted a different experience for serving videos, since the previews generated by Google Photos are not always usable and were often just showing a black image of the first couple of frames of the video.
Hardware
I went with the Raspberry Pi 5 with 8Gb of Ram and active cooling. I ordered a separate PCI-Express HAT and a 500Gb NVMe SSD. Finally everything is contained in an aluminum case. The total cost was around 200€. Initially I did not order a power supply, because I thought I could use an existing one. Turns out the Pi 5 is very picky when it comes to power supplies. It won’t boot from USB unless you supply it with enough power. Furthermore it would underclock the CPU if it does not get enough power, sometimes it would even crash when under heavy load. So I ordered the official power supply for another 15€.
My experience with new power supply has been very positive. The Pi 5 is now running at full speed, the performance is quite impressive and I have not experienced any more crashes. The active cooling is not running when the CPU is not under load, so it is very quiet. If I had to choose again I would probably go with a mini PC (e.g. the Beelink N100), because they are only marginally more expensive, do not need to be assembled by hand and offer more performance (though the power cosumption would be a bit higher).
I also purchsed an external Sonoff Zigbee USB bridge to connect my zigbee devices. The PI 5 also acts as a wifi access point for my IoT devices. I have a couple of smart plugs that do not work with the existing 2.4GHz wifi provided by my router.
Software
I decided to go with Docker Compose for the software setup. I have been using Docker for a couple of years now and I am very happy with it. Here are the services that are currently running:
- filebrowser: A simple file browser that can be used to upload and download files. It also has a nice preview feature for images and videos.
- hoarder A link aggregator that I use to save interesting articles and videos and also a replacement for Google Keep (not 100%, but basic notes are supported). It also has a dedicated chrome extension and a mobile app.
- immich A google photos replacement that I use to store my photos and (private) videos. It has a nice timeline view and a map view. It also has a mobile app. The face recognition is excellent. Unfortunately the PI 5 does not support hardware acceleration for machine learning, so the face recognition is quite slow.
- jellyfin: A media server that I use to stream videos. It has a nice web interface and also a mobile app.
- paperless-ngx: A document management system that I use to store my documents. It has an okay OCR feature that I use to search for documents. It also has a mobile app. The OCR quality is not as good as I would have hoped. It often has problems with the german umlauts and vietnamese is often not recognized at all, even though I have configured the OCR to use german and vietnamese. I would definitely recommend to increase the worker count (default is only one) in the settings, because the default is quite low and the OCR is quite slow.
- zigbee2mqtt: A zigbee bridge that I use to control my sensors, lights and outlets.
- node-red: A flow based programming tool that I use to automate some tasks. It has a nice web interface. I connect it to my zigbee2mqtt bridge, teslamate (via mqtt) and to a telegram bot to receive updates.
- mosquitto: A mqtt broker that I use to connect my zigbee2mqtt bridge, teslamate and node-red.
- teslamate: A tesla logger that I use to log my trips and to get some statistics. It has a nice web interface via grafana (not listed here, because I only use it for the tesla statistics).
I am thinking about installing gramps to store my family tree though I find the web interface a tad dry to use.
Backup
I backup my home directory to an external HDD that I attached via USB 3.0 to the Pi 5. I use rsync for this. I have a cron job that runs once a week. I should probably pick an additional location for the backup (maybe AWS S3?).
Website
My website will continue to be hosted on github static pages. I have also been using the github actions to build the website. I have been thinking about self hosting it, but there is no real benefit to it right now. Until microsoft decides to shut down github or goes of the rails with it I will stick with github for now.
I will stick with fastmail for email. I have been using it for a couple of years now and I am very happy with it. I have also been using the calendar and contacts feature. I have been thinking about self hosting it, but I am not sure if it is worth the hassle. Email is such a fragile technology and I would not want to miss an important email because of a misconfiguration or my IP being on a black list somewhere.
Password Manager
I will stick with bitwarden for my password manager. It would be an ideal candidate for self hosting. But I am not sure my home setup is reliable enough for this. Further I want to support the development of the client software (even if it is only 10$/year).