Introduction: Why Self-Host?
In this post, I want to share some of the fantastic self-hosted software I’ve incorporated into my daily life. Self-hosting gives you control over your data and privacy, and it often saves money compared to subscription services. Many people are banned from using popular services like Dropbox or other cloud services due to violating their terms of service, resulting in losing access to their data without any warning. Self-hosting allows you to avoid these issues and have full control over your data.
It’s interesting to see how the self-hosting landscape evolves. The recent 2024 Self-Host User Survey Results provide great insights into what the community is running, highlighting the popularity of many of the software types I discuss here.
I primarily use Docker and Docker Compose to manage these services, as it simplifies deployment and updates. Below, I’ll detail each piece of software, why I chose it, and provide the Docker Compose snippet I use to run it.
IMPORTANTDisclaimer: Remember to adapt network settings, volumes, and environment variables to your specific setup.
My Favorite Self-Hosted Software
Here is the software that has become indispensable for me:
RSSHub
RSSHub delivers millions of contents aggregated from all kinds of sources.
services:
rsshub:
image: diygod/rsshub:latest
container_name: rsshub
restart: unless-stopped
ports:
- 1200:1200
env_file: .env
healthcheck:
test:
["CMD", "curl", "-f", "http://localhost:1200/healthz?key=<your_key>"]
interval: 30s
timeout: 10s
retries: 3
depends_on:
- rsshub-redis
- rsshub-browserless
rsshub-redis:
image: redis:alpine
container_name: rsshub-redis
restart: unless-stopped
volumes:
- redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 5
start_period: 5s
rsshub-browserless:
image: browserless/chrome:latest
container_name: rsshub-browserless
restart: unless-stopped
ulimits:
core:
hard: 0
soft: 0
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/pressure"]
interval: 30s
timeout: 10s
retries: 5
start_period: 5s
volumes:
redis-data:
Syncthing
Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers in real time, safely protected from prying eyes. Your data is your data alone and you deserve to choose where it is stored, whether it is shared with some third party, and how it’s transmitted over the internet.
services:
syncthing:
image: lscr.io/linuxserver/syncthing:latest
container_name: syncthing
restart: unless-stopped
environment:
- PUID=<your_uid>
- PGID=<your_gid>
volumes:
- <your_config_path>:/config
- <your_data_path>:/sync
network_mode: host
WebDAV
WebDAV (Web Distributed Authoring and Versioning) is an extension of the HTTP protocol that allows clients to perform remote web content authoring operations. Many software support WebDAV to sync data between devices, such as Zotero.
I recommend using the hacdias/webdav
image for a simple and efficient WebDAV server.
services:
webdav:
image: hacdias/webdav:latest
container_name: webdav
restart: unless-stopped
user: <your_uid>:<your_gid>
ports:
- 6060:6060
volumes:
- ./config.yml:/config.yml:ro
- <your_data_path>:/data
watchtower
Watchtower will pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially.
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_POLL_INTERVAL=3600
Other Software
WARNINGMore software will be added to this list in the future. Stay tuned!
General Setup Notes
- NAT Traversal: I highly recommend using Tailscale for NAT traversal. It simplifies remote access to your self-hosted services without the need for port forwarding or VPN setups.
- Backups: Don’t forget backups! Regularly back up your persistent volumes and configuration files.
- Hardware: I run these services on a Synology NAS with extended memory. However, I recommend using a Mac Mini for services and a NAS for data storage.
Conclusion
Self-hosting can be incredibly rewarding. These are just a few pieces of software that have significantly improved my digital life. I hope sharing my setup gives you some ideas or helps you get started on your own self-hosting adventure!