MoonProxy: The Complete Guide to FRP Intranet Penetration
From setup to real-world use cases. For developers and self-hosters.
Compatible with MoonProxy v1.2.0+
Why FRP + MoonProxy?
FRP (Fast Reverse Proxy) is the most popular open-source tunneling tool (80k+ GitHub stars). But its CLI-only workflow keeps non-technical users away. MoonProxy wraps FRP's frpc into a native desktop app — visual configuration, one-click start/stop, real-time traffic monitoring.
Why not ngrok / Cloudflare Tunnel / Tailscale?
- ngrok: Free tier is limited, paid plans are expensive
- Cloudflare Tunnel: Closed source, only handles HTTP(S), vendor lock-in
- Tailscale: Great for mesh networking, but not traditional port forwarding
FRP + MoonProxy gives you full control with your own server, supports any TCP/UDP/HTTP protocol, and costs nothing.
Architecture
[Your Computer] [Public Server] [Visitor]
Local Service (NAS:5000)
↓
MoonProxy (frpc GUI) ←── tunnel ──→ frps (server) ←── public access
↓
127.0.0.1:5000 your-server:6000
Part 1: Set Up frps Server (5 min)
Download FRP
wget https://github.com/fatedier/frp/releases/download/v0.69.1/frp_0.69.1_linux_amd64.tar.gz
tar xzf frp_0.69.1_linux_amd64.tar.gz
cd frp_0.69.1_linux_amd64
Configure frps.toml
bindPort = 7000
auth.token = "your-secret-token-change-me"
Run as systemd service
sudo cp frps /usr/local/bin/
sudo mkdir -p /etc/frp && sudo cp frps.toml /etc/frp/
sudo tee /etc/systemd/system/frps.service << 'EOF'
[Unit]
Description=frps service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable frps && sudo systemctl start frps
Open firewall ports
sudo ufw allow 7000/tcp # FRP communication
sudo ufw allow 6000/tcp # Your tunnel port
# Also check your cloud provider's security group
Part 2: Install MoonProxy
Download from GitHub Releases:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | MoonProxy_1.2.0_aarch64.dmg |
| macOS (Intel) | MoonProxy_1.2.0_x64.dmg |
| Windows (x64) | MoonProxy_1.2.0_x64-setup.exe |
📸 Main panel:
https://moonproxy.app/screenshots/main-full-en.webp
📸 Provider config:https://moonproxy.app/screenshots/server-provider-en.webp
📸 Proxy rules:https://moonproxy.app/screenshots/server-proxy-en.webp
Part 3: Connect in 3 Steps
Step 1: Enter Server Info
Go to Services → Provider tab:
| Field | Value |
|---|---|
| Server Address | Your server's public IP (e.g., 203.0.113.50) |
| Bind Port |
7000 (matches frps bindPort) |
| Token | Same as frps auth.token |
Step 2: Add Proxy Rule
Go to Proxy Rules tab → Add Rule:
Expose a Web service (HTTP):
- Protocol:
http - Local Port:
8080 - Custom Domain:
myapp.example.com(point DNS to your server)
Expose SSH (TCP):
- Protocol:
tcp - Local Port:
22 - Remote Port:
6000
Then connect with: ssh -p 6000 user@your-server-ip
Expose NAS (TCP):
- Protocol:
tcp - Local Port:
5000 - Remote Port:
5000
Access at: http://your-server-ip:5000
Step 3: Click Start
📸 Home panel:
https://moonproxy.app/screenshots/main-full-en.webp
Return to the home screen. The large button changes color:
- Gray = Stopped
- Blue = Connecting
- Green = Connected
The endpoint list shows green dots (reachable) or red dots (unreachable). Click Start — when the button turns green, you're live!
Real-World Use Cases
Remote NAS Access
Expose your Synology NAS (port 5000) to access files from anywhere.
Dev Preview Sharing
Share your localhost:5173 Vue/React project with clients via a public URL.
Minecraft Server
Expose your local Minecraft server (port 25565) so friends can join directly.
Home Automation
Access Home Assistant while traveling — no VPN needed.
Advanced Features
Auto-Start + Silent Mode
📸 Launch settings:
https://moonproxy.app/screenshots/settings-launch-en.webp
- Auto-start: Launches on system boot
- Silent start: Hides to system tray, no window popup
- Auto-connect: Automatically starts frpc on boot
Scheduled Connection
Set working hours (e.g., Mon-Fri 9:00-18:00). MoonProxy auto-connects at start time and disconnects at end time. No exposed ports outside working hours.
Real-Time Traffic Monitor
The home panel shows live upload/download speed curves, active connections, and cumulative traffic — powered by a built-in TCP relay counting layer.
Self-Updating Engine
FRP engine updates automatically: checks GitHub releases → downloads → SHA256 verify → atomic replace. No reinstall needed.
FAQ
Can't connect? Check: (1) frps running? systemctl status frps (2) Port 7000 open? (3) Token matches? (4) Remote port open in firewall?
macOS "unidentified developer"? System Settings → Privacy & Security → "Open Anyway"
How many proxy rules? Up to 50 (v1.2.0+).
Data privacy? MoonProxy runs 100% locally. Your data flows: your computer → your server → visitor. No third party involved.
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | Vue 3 + TypeScript + Vite 6 |
| Backend | Rust + Tauri v2 |
| Engine | frp (frpc) v0.69.1 |
| Bundle size | ~5MB (far smaller than Electron) |
Links
- GitHub: https://github.com/MoonProxyHQ/moonproxy-desktop
- Website: https://moonproxy.app
- Releases: https://github.com/MoonProxyHQ/moonproxy-desktop/releases/latest
- Discussions: https://github.com/MoonProxyHQ/moonproxy-desktop/discussions
- License: MIT
Found this helpful? Give us a Star ⭐ on GitHub!
Top comments (0)