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!