this post was submitted on 30 May 2026
15 points (94.1% liked)

Selfhosted

56957 readers
594 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

  7. No low-effort posts. This is subjective and will largely be determined by the community member reports.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS
 

If you ever ran eMule or MLDonkey back in the day, this will feel familiar — but it's built from scratch in Rust on modern infrastructure.

rucio is a decentralized peer-to-peer file sharing app. No trackers, no central servers, no relay nodes for the actual data. Peers find each other and the files through a Kademlia DHT (plus mDNS on the local network), keyword search rides on Gossipsub, and bytes move directly between peers.

I started it partly out of nostalgia and partly because I wanted a P2P stack I actually understood end to end — discovery, transfer, NAT handling, the lot — instead of a black box. It grew into something I now use daily, so I'm putting it out there.

What it does today:

  • Fully decentralized — Kademlia DHT over the internet, mDNS on the LAN, no infrastructure to run (though you can run a bootstrap node if you want one).
  • Web control panel — manage shares, searches and downloads from the browser. It's served by the daemon itself (Leptos/WASM), no extra process.
  • Command-line client — a scriptable rucio CLI for everything, locally or against a remote daemon.
  • Magnet links — share any file with a single rucio:<hash> link, generated entirely offline if you like.
  • Resumable downloads — interrupted transfers pick up where they left off after a restart.
  • Directory sharing — point it at a folder and every file inside gets indexed, hashed and announced automatically.
  • NAT-friendly — HighID/LowID-style handling so peers behind NAT can still download; publicly reachable nodes serve chunks to everyone.
  • Single binary — the same rucio binary is the daemon (ruciod) and the CLI depending on how you invoke it.

The eMule/Kad bridge (the fun part): rucio can optionally talk to the eMule Kad2 network. That means you can search Kad and download ed2k:// links right alongside native rucio transfers. It's opt-in (a build feature), but it's there because a chunk of those old files are still out there and still moving.

Some screenshots:

Downloads

Search

Try it (container):

docker run -d --name rucio \
  -e RUCIOD_API_LISTEN=0.0.0.0:3003 \
  -e RUCIOD_UPNP=false \
  -v rucio-data:/var/lib/rucio \
  -p 4321:4321/tcp \
  -p 3003:3003/tcp \
  -p 4662:4662/tcp \
  -p 4672:4672/udp \
  ghcr.io/ogarcia/rucio:latest

Then open http://localhost:3003/. There are slimmer image flavors too — latest-headless (daemon only), latest-cli (standalone client), and latest-bootstrap (a DHT bootstrap node). Pre-built binaries for Linux and macOS (x86_64 + aarch64) are on the releases page as well.

Note: If you download the precompiled binary from releases, when you extract it, create a symbolic link from ruciod to rucio, and run ruciod for the daemon and rucio for the CLI.

Honest caveats (it's early):

  • I work with AI, so I’m not going to lie to you—there’s some vibe coding involved. I review and go over what I’ve done, but I want to be honest. If you don’t like it, just skip this app.
  • This is v0.1.0, pre-1.0 — expect breaking changes (DB schema, API, config) between releases. I'll happily break things to get them right.
  • There is no built-in authentication. If you expose the daemon beyond your own machine, put it behind a reverse proxy with auth (the docs have an nginx + basic-auth example). Keep the API port private otherwise.
  • It's the work of one person so far. Rough edges exist.

Links:

no comments (yet)
sorted by: hot top controversial new old
there doesn't seem to be anything here