Expose internal services securely without port forwarding or manual reverse proxy setup.
10K+
Wiredoor is a self-hosted, open-source ingress-as-a-service platform that allows you to expose applications and services running in private or local networks to the internet—securely, reliably, and without complex infrastructure.
It uses reverse VPN connections powered by WireGuard and exposes services through a built-in NGINX reverse proxy. Perfect for developers, operators, or teams that want full control of their ingress without relying on public cloud solutions.
wiredoor-cli) for service management and automationWiredoor Server is the entry point for all external traffic.
This means that the server's public IP address or domain must be accessible from the internet,
or at least from the network where you want to access the exposed services.
Wiredoor is designed to run on a publicly reachable host so it can securely receive inbound traffic and forward it to your internal services over a private VPN tunnel.
This guide will help you get Wiredoor running and expose your first private service to the internet in just a few steps.
80, 443, and a UDP port for the VPN (default 51820)32760-32767)git clone https://github.com/wiredoor/docker-setup.git
cd docker-setup
cp .env.example .env
nano .env
Set your admin email, password, VPN public hostname or IP, and optionally, the TCP port range.
If you modify the TCP port range, make sure to update the ports: section in docker-compose.yml.
docker compose up -d
In your browser, Navigate to https://your_wiredoor_domain_or_ip. Use the admin credentials from your .env file to access the dashboard.
For more information on using the web UI, visit the Usage Guide
You can use the auto-installer:
curl -s https://www.wiredoor.net/install-wiredoor-cli.sh | sh
Or download a package from GitHub Releases.
wiredoor-cliRun the following on the device you want to connect:
wiredoor login --url=https://your_deployed_wiredoor_domain_or_ip
This will:
If you have a service running locally (e.g. on port 3000), you can expose it:
wiredoor http myapp --domain app.your.domain.com --port 3000
⚠️ The domain app.your.domain.com must point to the public Wiredoor server's IP address.
More documentation, production setup examples, and deployment tools are on the way!
Content type
Image
Digest
sha256:8b9bdff31…
Size
151.5 MB
Last updated
6 days ago
docker pull wiredoor/wiredoor