Self-hosting has a reputation for being complicated. The kind of hobby that involves racks of hardware, endless configuration files, and a weekend disappearing into Docker logs. That can certainly happen if you want it to. But it doesn’t have to.
Some of the most satisfying self-hosted projects are surprisingly small. A single container, a simple web interface, and suddenly you’ve built a service that normally lives somewhere in the cloud. If you have a spare computer, an old Raspberry Pi, or even a forgotten desktop sitting in a closet, you already have everything you need to get started. Here are three genuinely useful self-hosted projects you can spin up this weekend.
Navidrome
Your own Spotify server without subscriptions or algorithms
If you still have a folder somewhere filled with MP3s or FLAC files, Navidrome can turn it into a personal music streaming platform. Navidrome scans your music library and organizes it into a clean web interface where you can browse artists, albums, and playlists much like you would in Spotify or Apple Music. The difference is that the music lives entirely on your own server. Once it’s running, you can stream your collection from a browser or use any Subsonic-compatible mobile app to listen on your phone. The interface is fast, simple, and surprisingly polished for such a lightweight project.
For people who miss the days of actually owning their music instead of renting it from streaming services, Navidrome feels oddly liberating.
Installing Navidrome
The easiest way to run Navidrome is with Docker. First, create a folder for Navidrome’s data and another one for your music library:
mkdir -p ~/navidrome/data
mkdir -p ~/music
Then start the container:
docker run -d \
--name navidrome \
-p 4533:4533 \
-v ~/navidrome/data:/data \
-v ~/music:/music:ro \
-e ND_SCANINTERVAL=1m \ --restart unless-stopped \
deluan/navidrome
After the container starts, open a browser and go to:
http://localhost:4533
Create an admin account and Navidrome will begin scanning your music folder automatically. If you want to access Navidrome from another device on your home network, simply replace `localhost` with the IP address of the machine running the server. For example:
http://192.168.1.42:4533
That lets you open your music server from another computer, tablet, or phone connected to the same network.
Build your own algorithm-free news feed
Social media has slowly replaced the open web as the way many people discover articles and news. Unfortunately, that also means letting opaque algorithms decide what you see. FreshRSS offers a refreshing alternative. It’s a self-hosted RSS reader that collects articles from the sites you actually care about and presents them in a simple, distraction-free interface. Instead of endless scrolling through social feeds, you get a clean stream of posts from your favorite blogs, tech sites, newsletters, and podcasts.freshrss
Once you start adding feeds, the system quietly builds your own personalized news hub. The appeal becomes obvious very quickly. There are no ads injected between posts, no engagement tricks, and no mysterious ranking system deciding what deserves your attention. Everything appears in chronological order. For writers, researchers, or anyone who follows multiple blogs and publications, it can quickly become one of the most useful services on your server.
FreshRSS is simple to install and the best way is to deploy it with Docker. Create a folder for the application data:
mkdir -p ~/freshrss/data
Then run the container:
docker run -d \ --name freshrss \ -p 8080:80 \ -v ~/freshrss/data:/var/www/FreshRSS/data \ --restart unless-stopped \ freshrss/freshrss
Once the container is running, open your browser and visit:
http://localhost:8080
The setup wizard will guide you through creating your first user account and configuring the RSS reader. Just like with Navidrome, you can also access FreshRSS from other devices on your network by using the server’s IP address instead of `localhost`, such as:
http://192.168.1.42:8080
Immich
Build your own Google Photos replacement
If there’s one cloud service people rely on more than they realize, it’s photo storage.
Phones quietly upload thousands of photos and videos to services like Google Photos or iCloud. It’s convenient, but it also means handing over a huge archive of personal memories to someone else’s servers. Immich offers a different approach. It’s a self-hosted photo backup platform that gives you many of the same features as Google Photos, except the entire library lives on hardware you control.
Once Immich is running, you install the mobile app on your phone and it starts automatically backing up photos and videos to your server. From there you can browse your library through a timeline interface that feels surprisingly close to the experience of commercial photo services. You can create albums, search your photos, and organize your growing library just like you would with mainstream cloud platforms.
- OS
-
Linux, Windows, macOS, Android, iOS
- Price model
-
Free
Immich is a self-hosted solution that allows you back up, organize, and manage your photos on your own server. It allows you to browse your photos and videos with ease and does not sacrifice privacy.
Immich does require a bit more horsepower than the other projects in this list, so it’s best suited for an old desktop, mini PC, or home server rather than very small devices.
Installing Immich
Immich is typically deployed with Docker Compose. Create a project folder and move into it:
mkdir ~/immichcd ~/immich
Download the official configuration file:
wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
Then start the containers:
docker compose up -d
After the services start, open a browser and go to:
http://localhost:2283
Create your first account and you can begin uploading photos right away. After installing the Immich mobile app on your phone, you can connect it to your server and enable automatic photo backups. To access your photo library from other devices on the same network, again replace `localhost` with your server’s IP address, for example:
http://192.168.1.42:2283
Your first self-hosted project is often the hardest
Getting started with self-hosting can feel intimidating at first, but the barrier to entry is much lower than many people expect. Projects like Navidrome, FreshRSS, and Immich show how quickly a spare computer can turn into something genuinely useful. Instead of relying entirely on cloud services, you begin building your own little ecosystem of tools running on hardware you control. And once you see the first one working, it becomes very hard not to start wondering what else that machine could run next.
I replaced Google Drive with a self‑hosted cloud and the freedom is worth it
A self-hosted cloud is very liberating and surprisingly not as hard to set up.
