DEV Community

ChenXX
ChenXX

Posted on

MoonProxy: A Desktop GUI Client for FRP (Fast Reverse Proxy)

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Configure frps.toml

bindPort = 7000
auth.token = "your-secret-token-change-me"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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 ServicesProvider 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


Found this helpful? Give us a Star ⭐ on GitHub!

Top comments (0)