sheephold
private beta

Remote access

Expose what runs at home. Without touching your router.

Behind CGNAT, behind a firewall, on any connection. Install one agent, get a real HTTPS address, and decide who gets in.

We can't read your traffic.
We don't cap your uploads.
We don't break your apps.

Join the waitlist

Free tier Β· no credit card

The seal

One side of this is all we get

What Sheephold sees

jellyfin.you.example
one name, to pick your tunnel

2.4 GB moved this month
so the relay can be billed honestly

That's the complete list.

What's actually flowing

Your files, your requests, your headers, your media. Encrypted end to end, opened only by your own agent.

Not a policy we promise to keep β€” the shape of the system. We route on the hostname and forward the rest untouched.

The problem

You've probably been here

  • Your ISP put you behind CGNAT, so port forwarding isn't even an option.
  • Your photo backup fails on anything over 100 MB, because the tunnel proxies it.
  • You added authentication, and now Bitwarden won't sync and Immich won't log in.
  • You want your parents to watch something without installing a VPN on their TV.
  • You set up a tunnel and only later realised the service was public to everyone.

None of that is your fault. It's what happens when the tool in the middle decrypts everything at its edge.

Not our words

This started as a reading exercise

Before anything was designed, 3,268 posts and 1,274 comments from r/selfhosted, r/homelab, r/jellyfin and r/PleX were collected and read. Everything here traces back to something in that pile.

β€œMy apps β€” specifically Immich β€” can't use the tunnel properly. The max free upload size is 100 MB, so my videos aren't backing up.”

r/unRAID Β· removed the tunnel over it

β€œCloudflare application OAuth is not compatible with basically all mobile apps. Bitwarden cannot sync the vault with this in place. Immich can't log in.”

r/selfhosted Β· 100 upvotes

β€œMy parents especially β€” they're not going to open a VPN app and hit connect every time. Plus some devices like TVs can't really do a VPN.”

r/PleX Β· behind CGNAT since switching to fibre

Setting up

Three steps, no network configuration

  1. yan

    Install the agent

    One command, or a container. It connects outbound, so nothing has to be opened on your router or firewall.

  2. tan

    Point it at a service

    jellyfin on port 8096 becomes jellyfin.yourdomain.com, with a valid certificate issued automatically.

  3. tethera

    Choose who gets in

    Public, a password, a guest link, or a per-device token. Everything starts private β€” opening it up is a deliberate choice.

# on the machine that already runs your services
$ sheephold up jellyfin --port 8096 --guests

  βœ“ tunnel established      eu-west
  βœ“ certificate issued      jellyfin.you.example
  βœ“ access                  guest links only
  βœ“ ready                   https://jellyfin.you.example

Shown as it will work in the beta. Nothing is live yet β€” that's what the waitlist is for. (Yan, tan, tethera: how shepherds have counted sheep in the north of England for centuries.)

The gate

Protect everything, except what your apps need

Authentication that covers a whole service breaks native apps β€” that's the failure everyone runs into. Rules match on path and method inside one service, so the web interface can sit behind a password while your TV client keeps working.

# jellyfin β€” the profile ships ready to apply
default: password          # everything is denied unless listed below
except:
  GET  /System/Info/Public   # discovery
  GET  /Items/*/Images/*     # artwork on the TV
  • Denied by default. Exceptions are explicit, listed on the service page, and counted where you can see them.
  • Profiles ship ready. Jellyfin, Plex, Immich, Nextcloud, Home Assistant, Vaultwarden. Nobody should reverse-engineer which paths their TV client calls.
  • A box to check your work. Paste a URL, see which rule it hits and what that rule requires.
  • An exempt path isn't unprotected β€” it's protected by the app's own login instead of ours. The panel says so before you turn it on.

The difference

We forward your bytes. We don't open them.

Most managed tunnels terminate TLS at their edge. That's how they add caching and filtering β€” and it's also why they cap uploads, restrict media in their terms, and choke on native apps. We route at the connection level, reading only the hostname needed to pick your tunnel.

Against a typical managed tunnel on its free plan.
 Typical managed tunnelSheephold
Reads your trafficYes, at the edgeNo
Upload limit100 MB per requestNone
Media restrictionsYes, in the termsNone β€” we store nothing
Native appsBreak under browser authPer-device tokens
Heavy usageThrottled or pushed upmarketPoint your own exit server
Charges per userUsuallyNever β€” guests are unlimited

Where bytes go

Three paths, and only one of them costs you

Same dashboard, same certificates, same rules. What changes is the road the traffic takes β€” and you don't configure any of it.

Guest on a TV
our relay
Your services

Nothing to install for them. Counts against your allowance.

Your own laptop
straight there
Your services

A small client on devices you own, connecting directly. Free, always.

Anyone
your own exit server
Your services

Your bandwidth, your rules, our dashboard. Never metered by us.

Some setups are heavy by nature β€” a library shared with ten people, a stack that moves terabytes. Instead of pretending otherwise, the third path exists: you keep the part that's genuinely annoying to run, we stop paying for bytes we can't afford. Nobody has to hide what they run.

Rates

You pay for relay traffic. Nothing else.

Traffic that goes direct β€” between your own devices, or through your own exit server β€” never counts. Neither do guests, and neither does what you choose to run.

  • Free 25 GB
  • Local 25 GB
  • Homelab 300 GB
  • Media 1 TB
  • Own exit yours

Solid is included at full speed. Dashes are still working, just slower β€” that's what happens past your allowance. No bar ever turns into a bill.

  Free Local Homelab Media Own exit
Relay traffic25 GB25 GB300 GB1 TBYour server
RegionEU / USYour choiceYour choiceYour choiceβ€”
Your own domainβ€”1355
GuestsUnlimitedUnlimitedUnlimitedUnlimitedUnlimited
Direct trafficUnlimitedUnlimitedUnlimitedUnlimitedUnlimited
 

Going over your allowance slows the relay down and offers a top-up. It never bills you by surprise. The free tier stays free.

Waitlist

Tell us what actually broke for you

One email when the beta opens, and nothing else. The questions are optional, and they decide what gets built first.

Which of these actually happened to you?
Roughly what do you pay today for any of this?

By joining, you agree to us storing your email address and your answers, for one purpose: deciding what gets built first. Nothing is shared with anyone. The answers are deleted once that decision is made; your address is kept only for a single email when the beta opens, and replying to that β€” or to the confirmation β€” removes you at any time.

Questions

Straight answers

Is this a VPN?

No. Your visitors install nothing β€” they open a URL. There's an optional client for your own devices, which connects you directly and takes that traffic off our relay entirely.

Can you see what I'm hosting?

We see the hostname you chose and how many bytes moved. Not the content, not the URLs, not the files. TLS ends on your agent, inside your network.

What if I stream a lot of media?

Nothing breaks and nothing is against the rules β€” we don't cache, so there's no content restriction to work around. If your volume grows, the own-exit plan is cheaper for you than any allowance we could sell you.

Can I protect part of a service and leave the rest open?

Yes β€” that's the point of the access rules above. Everything is denied by default, exceptions are explicit and listed on the service page, and there's a box where you paste a URL to see exactly which rule it hits.

Is the hostname I pick private?

No β€” and that is true of every service with a valid certificate. Public certificate authorities publish every name they sign to Certificate Transparency logs, which anyone can search. Only the name is published: never the content, your network, or what runs there. Worth knowing when you name something, and worth remembering that a known address still gets nobody past your password or guest link.

Do my guests need an account?

No. You send a link, they open it. You can revoke that link on its own, without touching anyone else's access.

How is this different from running Pangolin on my own VPS?

In what it does, it isn't β€” Pangolin is good, and if you enjoy running it, keep running it. The difference is that you operate nothing: certificates, DNS, identity and updates are handled. And if you'd rather keep the bandwidth on your own server, the own-exit plan gives you that, with the dashboard still on our side.

What happens if you shut down?

On a paid plan the address is your own domain, so it keeps working the moment you point it elsewhere. The agent is open source. Nothing about your setup is locked to a hostname we control.

Who's building this?

One developer, in the open, after reading a year of the same five threads on r/selfhosted. The research is published β€” every claim here traces back to something someone actually ran into.