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: hostWebDAV
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>:/datawatchtower
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=3600Other 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!
