[grade=A] SEO expansion: generated sitemap (14->108 URLs) + RSS feed + 4 keyword articles + 77-app catalog hub

This commit is contained in:
Krystie committed 2026-10-07 08:42:26 -07:00
1 parent 166eb8cde8
commit cb2c6d6d2f
15 files changed
+1773 -16

No files matched your search

@@ -0,0 +1,90 @@
---
title: "How to Access Self-Hosted Apps Remotely (Without Exposing Your Network)"
description: "Port forwarding, VPNs, and private networks compared. Learn the safe way to reach self-hosted apps from anywhere, and how to scope a service to your own devices."
date: "2026-10-07"
author: "DashCaddy Team"
tags: ["access self-hosted apps remotely", "remote access homelab", "tailscale homelab", "secure remote access", "self-hosted vpn"]
readingMinutes: 8
---
A self-hosted app you cannot reach from outside your house is a hobby. The moment you can open it from a phone on cellular data, it becomes infrastructure. The difference between those two states is one honest decision about **how** you expose it.
Get that decision right and you have a service. Get it wrong and you have an open port on your home network and a very long weekend.
## The three ways to reach a self-hosted app
### 1. Port forwarding
You forward a port on your router to the server, and the app is on the public internet.
**Pros:** works from any device, no client software, no third party.
**Cons:** you have now published a service to the entire internet. Anything unpatched, misconfigured, or weakly authenticated is fair game. You also need a public IP, which many connections no longer provide.
Port forwarding is not automatically wrong — public sites need it. But it should be a deliberate decision for a service you intend to be public, not the default for your dashboard.
### 2. A VPN back into your network
You run WireGuard or OpenVPN on your server and connect to it from your devices. Once connected, you are effectively on your LAN.
**Pros:** nothing is exposed except the VPN port; strong cryptography; you reach every service at once.
**Cons:** your traffic routes through home while connected, the VPN endpoint itself is public, and per-device onboarding gets tedious as the device count grows.
This is the classic answer and it is a good one. Its weak point is that the tunnel is all-or-nothing: connected means *everything* is reachable.
### 3. A private mesh network
Tools like Tailscale and Headscale build an encrypted peer-to-peer network between your devices and servers, without opening ports at all. Each machine gets a stable private address.
**Pros:** no inbound ports to open; works behind NAT and CGNAT; identity-based access controls; you can share one service with one person instead of the whole network.
**Cons:** it is a managed overlay (unless you self-host the control plane), and you should understand the trust model before you rely on it.
For most homelabs in 2026, this is the best default for private services — and it pairs well with a public reverse proxy for the few services that genuinely need to be public.
## The rule that keeps you out of trouble
**Expose deliberately, per service. Never expose a whole machine by accident.**
Every service should have an answer to: "who is allowed to reach this, and from where?" The common failure is a platform that treats *everything* as public the moment it is deployed. The correct behavior is a per-service choice:
- **Private** — reachable only from your own devices over the private network.
- **Restricted** — reachable from the internet, but only from specified IP ranges or behind an identity provider.
- **Public** — reachable by anyone, which should be a short and intentional list.
## How DashCaddy handles this
DashCaddy's deploy options map directly onto that rule, which is why they are worth knowing before you expose anything:
- **Private-network scoping.** A service can be restricted to your private network so it never appears on the public proxy at all. For a dashboard, an admin panel, or a database UI, this is the right default.
- **Allowed IP ranges.** When a service must be reachable from outside, you can permit specific CIDR ranges rather than the whole internet.
- **Automatic HTTPS.** Services that *are* public still get a real certificate, so you are not trading security for convenience.
- **A security surface.** The Security Center exists so the answer to "what is exposed right now?" is a screen you can look at, not a guess.
These are per-deployment settings, not global switches — so exposing one service never quietly exposes the rest. The [installation docs](/docs/installation/) cover the dashboard, and the [catalog guides](/docs/catalog/) document the deploy payload per app; the [WireGuard template](/docs/catalog/wireguard/) is there if you prefer to build your own tunnel instead of using a mesh network.
## A practical setup, start to finish
1. **Install DashCaddy** on the host that will run your private services.
2. **Join your devices to a private network.** Install Tailscale (or point clients at your own Headscale) on your laptop, phone, and the server.
3. **Deploy private services with network scoping on.** Your dashboard, monitoring, and admin tools should not be public. Ever.
4. **Pick the one or two services that must be public** — a media server for the family, a photo server you share with a relative — and deploy those normally so they get a certificate and a real URL.
5. **Verify from outside.** Turn off Wi-Fi on your phone. The private services should be reachable over the private network; the public ones should load at their URL; nothing else should answer.
That five-step sequence gets you remote access without a port-forwarding free-for-all.
## Mistakes worth avoiding
- **Forwarding 443 to a whole host.** You publish every service that host runs, including the ones you forgot about.
- **Relying on "nobody knows the URL."** Security by obscurity fails the first time a certificate transparency log is read.
- **Leaving an admin UI on the public internet.** Dashboards, database admin tools, and container managers belong on the private network.
- **Forgetting the renewal.** A private setup with an expired certificate trains you to click through warnings, which is exactly the habit that gets people phished.
- **No monitoring on the remote path.** Remote access that silently stops working is worse than none — see the [homelab monitoring guide](/blog/homelab-monitoring-guide/) for what to watch.
## Getting started
Install DashCaddy on any Linux host:
```bash
curl -fsSL https://get.dashcaddy.net | bash
```
Then deploy something, scope it to your private network, and confirm you can reach it from your phone with Wi-Fi off. If you are still choosing what to run, the [full catalog](/blog/self-hosted-app-catalog-guide/) and the [best self-hosted apps roundup](/blog/best-self-hosted-apps-homelab/) are good next reads, and [one-click Docker deployment](/blog/one-click-docker-deployment/) explains what happens during a deploy.