How many services can you self-host on a Raspberry Pi?
Self-hosting your own services is a joy. It gets you out from under the thumb of tech giants who don't have your best interests at heart, and away from the ever-vigilant eyes of surveillance capitalist megacorps that want to make money from your every online interaction, transaction, reaction, and subsequent retraction.
But more than that, it gives you a kind of digital self reliance, and you have ready-to-go alternatives should legislation or corporate interests shut down your favourite 'free' online services.
Why self-host on a Raspberry Pi?
The Raspberry Pi is cheap enough to dabble without feeling like you've made a disastrous financial mistake if it ends up in the back of a cupboard, and there are a lot of Pis out there - meaning that self-hosted software is often built with the Raspberry Pi in mind (often at the back of the mind, but still), and if you run into problems, there's likely someone who has come across the same thing. It's easy to get answers to questions you never knew you had.
Another reason is the Pi's very low power draw. Our principle Pi - an 8GB Raspberry Pi model 4B - pulls under 10 Watts. Remember when your mum used to yell at you for leaving the lights on in your home? The Pi pulls less than a single modern LED lightbulb. It takes one sixth to one tenth of the power of the kind of yellowish incandescent light bulb we grew up with.
That's important. A server is on 24 hours per day, 365 days per year. While you can easily repurpose an old PC or laptop as a server, any savings you make by not buying a Pi are dwarfed by the electricity bills over the course of a year.
Lastly, the Pi can handle pretty much anything you can throw at it on the level of a family unit or smallish organisation (the exception being generative AI, which it handles very slowly indeed).
Writing this paragraph, we don't actually know what we have running on the Linux Impact Raspberry Pi. We decided to take a look, and share the results.
How our Raspberry Pi is set up
Our Pi is connected to the router via Gigabit internet. To keep it from getting too hot, we have a cast aluminium passive cooling system. Our boot drive is a 500GB WD Blue SATA SSD connected via USB, and we have a 2TB WD Blue SSD for storage. In addition to the Pi's 8GB RAM, we have 8GB swap. Just in case.
We haven't overclocked our Pi, because we value stability over speed. Besides, we haven't had the need - yet.
Base software-wise, we're running a fairly standard LAMP stack based on Debian Bullseye in its guise of Raspberry Pi OS. We're using Docker and Docker Compose to manage a portion of our services.
Without further ado, let's dive into /etc/apache2/sites-available/ and see what we have exposed to the web:
Nextcloud
Nextcloud is the first thing we installed when we started our self-hosted journey some years ago. NextCloud can replace almost every web service out there.
Forked from OwnCloud, Nextcloud is a Dropbox / Google Drive replacement at its core and helps you synchronise your files and folders across all your devices. But its marketplace of apps, add-ons and extensions makes it so much more than that.
There's a webmail client, an excellent markdown notes app, recipe manager, Fediverse server and client, spreed-based video conferencing and instant messaging, photo gallery, and a full-fat collaborative office suite courtesy of Collabora Online.
There's more - a lot more - but we don't have space for it. You can check out the full range of apps at https://apps.nextcloud.com/
Honestly, you could live your self-hosted life without ever using another FAANG company again.
But while Nextcloud has offerings for pretty much everything, there are other projects dedicated to specific goals that are more polished and tighter focused. For instance...
Jellyfin
Jellyfin is a streaming media centre that runs comfortably on the Pi and can handle movies, shows, music, audiobooks, images, and actual books for the entire family. It has client apps available for most platforms, and you can even add live TV streams.
Provided we're not asking the Pi to do hardware transcoding, it can stream to every device we own simultaneously.
While Jellyfin is fantastic for most media types, we found it kept losing our position when streaming audiobooks in the car. Which is why we also have...
Audiobookshelf
Audiobookshelf is a virtual shelf for your audiobooks,and has dedicated client apps for Android and iOS (through TestFlight).
Dump your library onto the Pi via SCP, and AudioBookshelf will attempt to match your files, catalogue them, and provide relevant details such as title author, synopsis, and so on. We've been using Audiobookshelf with around seven users since March 2022, and haven't run into any problems at all.
Email server
Some people say you should never self-host an email server. We disagree, and managed to set up a Dovecot / Postfix system in an afternoon. It hasn't had any problems, and is pretty reliable. We may write about it sometime.
Snappymail
While we have dedicated email clients for our very own email server, sometimes we just want to log on and check out the latest Black Friday spam through our browser. We use Snappymail for this - it's a fork of Rainloop, and we've found it to be simple, fast, and good-looking.
Snikket
We deployed Snikket last month, and got it going without any serious problems thanks to the docker deployment. Snikket is an XMPP server used to communicate between members of the extended Linux Impact family. As well as sending text, voice, and image files to one another, you can also use Snikket for video and audio calls. Administration and adding users is a breeze, and we can chat to users on other XMPP servers as well. We haven't yet, but we could.
FreshRSS
We use FreshRSS every day to read news from our favourite publications web without ever having to visit the sites themselves.
FreshRSS is, as the name suggests, an RSS server. Unlike traditional RSS readers such as the excellent QuiteRSS, FreshRSS makes it easy to fetch the full text of an article instead of just the excerpt. It's all stored on the Raspberry Pi, and we can favourite the best articles for later.
We use Fluent Reader Lite on Android to interact with our FreshRSS instance while we're waiting in the queue at Lidl. Nextcloud News offers similar functionality, but it isn't quite so granular in helping us get exactly what we want.
FYI: Linux impact offers a full-text RSS feed with no tricks required. You should subscribe.
Mealie
Cooking is a joy, and collecting recipes without reading through the author's life history appeals to our acquisative tendencies.
Mealie helps you keep your culinary favourites in one place, and easy to sort, categorise and search. Add your own recipes, or have Mealie grab the steps, images, and ingredients from elsewhere on the internet.
The Mealie web app is pretty good on both mobile and desktop, but we use the unofficial Mealient Android client when prowling the supermarket aisles for bargains.
Pi-hole
Internet ads annoying at best, and a massive invasion of privacy. It's not so much that we object to seeing goods and services advertised on our various devices - it's that they try to track us around the internet. No-one needs to see our complete browser history, but ad networks would - if they could.
In addition to the excellent UBlock Origin or Firefox, we have Pi-hole deployed on our Raspberry Pi. Pi-hole sits between the wider internet, and every machine on our home network.
Any request to a domain associated with tracking is told to fetch assets from 0.0.0.0 - an IP address that doesn't exist. Pi-hole is easy to set up, and in days gone by we also used to use it to set tech timeouts for the kids.
Memos
Memos is kind of like a self-hosted Google Keep. It's great for writing a quick note to yourself, or for to-do lists. Memos supports Markdown, checkboxes, and tags. There's also a handy activity indicator, giving a clue as to how many memos we wrote over a given time period (154 memos in 167 days). We could use it to create shopping lists, but we use Mealie for that.
Again, Memos has a solid mobile app for passing thoughts while we're waiting in traffic.
Immich
Immich is one of the heavyweights, and we're convinced that it's the killer app that can persuade normal people into self-hosting.
Immich is essentially a Google Photos clone. Take a picture on your phone and it will magically upload to the Immich instance on your Pi. Our Immich instance supports multiple users, is fully searchable, does facial and object recognition, and is a pleasure to use. Imagine Google Photos, but without limitations, and just... better.
We used to have PhotoPrism as our go-to gallery software, but Immich is superior. While NextCloud does have sync and gallery capabilities, it doesn't even come close.
Akkoma
The Fediverse is a distributed social network. Anyone can run their own server and interact with users on other servers. Picture it kind of like Twitter but without a recommendation algorithm, better moderation, and with no overall control. While there are huge instances with tens of thousands of users, we have just one user - this writer. We went with Akkoma over Mastodon, Pleroma, or Misskey, because Akkoma's ease-of deployment, cool features, and because we liked the name.
PiGallery2
A directory-first image gallery. It doesn't have as many bells and whistles as Immich or PhotoPrism, but we have some specialised use cases for PiGallery2. It's neat, and it's very fast.
Matomo Analytics
How many visitors did Linux Impact have last month? Was it 10 or 10,000? Actually, it was 10,235. Not amazing, but not too shabby considering the site only came online part-way through November.
Without an Analytics package, we wouldn't know that. We wouldn't know which articles were doing well, or what people liked to read. We'd be shouting into the void, and frankly, we don't think our ego could take the hit.
Google Analytics is the dominant analytics solution for most sites, but it tracks users round the web, and is generally invasive. We don't like it.
In contrast, Matomo is privacy-friendly, and GDPR compliant - offering a huge raft of metrics useful to anyone with a website.
Wordpress
Having your own server means you can offer free hosting to friends and family. WordPress is simple to use and administer, meaning it's a perfect choice for the less tech-savvy. We're currently hosting two WordPress sites for the fam.
Trilium Notes
Trilium Notes is, in our opinion, the best alternative to Evernote. Infinite notebooks! Infinite notes! Graphs! Mindmaps! Code!
Seriously, it's a great piece of software, it's Free, and although we've only been using it for a few days, we can tell it's a keeper.
How many Raspberry Pi self-hosted services?
We don't know. According to our quick enumeration, it's at least 16, plus various static sites we're not counting, and an old Ghost install floating around like a phantom. Is there an upper limit? Maybe.
We're not stopping though - all the services we've deployed are regularly used by a family-sized unit, and we'll continue to add more services as more cool projects come to our attention. If you're serving more than a fistful of users, you may want to consider something beefier, such as a Raspberry Pi 5 or a Mini PC.