567 words
3 minutes
My Self-Hosted Software Journey

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.

IMPORTANT

Disclaimer: 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#

WARNING

More 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!

My Self-Hosted Software Journey
https://breakthrough.blog/posts/self-hosting/
Author
Zhen Zhong
Published at
2025-04-10