Client Deployment
We recommend deploying the Client via Docker. However, installing directly on the target machine allows you to run commands as root via a remote terminal, which can simplify upgrades and management.
Note ⚠️: The startup commands for client and server may change as the project evolves. Although we strive for backward compatibility, always use the commands generated by the Master’s Web UI.
Preparation
Open the Master’s Web UI and log in. If you don’t have an account, register—the first user becomes the administrator.
In the sidebar, navigate to Client, click New, enter a unique Client ID, and click Save.

After refreshing, your new Client appears in the list.
Before deploying the Client, ensure the corresponding Server’s configuration is correct; otherwise, the Client cannot connect.
Deploying on Linux
Direct Execution
Create a dedicated directory on your system.
In the Master’s Web UI, click the ID (show install command) field for your Client. Copy the Linux install command, for example:
bashcurl -fSL https://raw.githubusercontent.com/VaalaCat/frp-panel/main/install.sh \ | bash -s -- client -s abc -i user.c.client1 \ --api-url http://frpp.example.com:9000 \ --rpc-url grpc://frpp-rpc.example.com:9001If you’re in mainland China, you may want to use a GitHub proxy. For example, with
ghfast:bashcurl -fSL https://ghfast.top/https://raw.githubusercontent.com/VaalaCat/frp-panel/main/install.sh \ | bash -s -- --github-proxy https://ghfast.top/ client -s abc -i user.c.client1 \ --api-url http://frpp.example.com:9000 \ --rpc-url grpc://frpp-rpc.example.com:9001If you use a reverse-proxy with TLS (443 → Master 9000/API), adjust the command:
bashcurl -fSL https://ghfast.top/https://raw.githubusercontent.com/VaalaCat/frp-panel/main/install.sh \ | bash -s -- --github-proxy https://ghfast.top/ client -s abc -i user.c.client1 \ --api-url https://frpp.example.com:443 \ --rpc-url wss://frpp.example.com:443
Docker Compose Deployment
In the Master’s Web UI, click Key (show startup command) for your Client. Copy the command:
bash./frp-panel client -s abc -i user.c.client1 \ --api-url http://frpp.example.com:9000 \ --rpc-url grpc://frpp-rpc.example.com:9001If using TLS proxy, modify:
bash./frp-panel client -s abc -i user.c.client1 \ --api-url https://frpp.example.com:443 \ --rpc-url wss://frpp.example.com:443Create
docker-compose.yaml:yamlversion: '3' services: frp-panel-client: image: vaalacat/frp-panel container_name: frp-panel-client network_mode: host restart: unless-stopped command: client -s abc -i user.c.client1 \ --api-url https://frpp.example.com:443 \ --rpc-url wss://frpp.example.com:443
Install as a systemd Service
The frp-panel binary can manage a systemd service named frpp. Use frp-panel --help to view available commands. Examples:
Install Client (or Server) with specific parameters:
bashsudo ./frp-panel install client -s abc -i user.c.client1 \ --api-url https://frpp.example.com:443 \ --rpc-url wss://frpp.example.com:443Uninstall the
frppservice:bashsudo ./frp-panel uninstallStart the
frppservice:bashsudo ./frp-panel startStop the
frppservice:bashsudo ./frp-panel stopRestart the
frppservice:bashsudo ./frp-panel restart
Deploying on Windows
Direct Execution
In PowerShell, in the directory containing the executable, run the startup command copied from the Web UI:
.\frp-panel.exe client -s abc -i user.c.client1 \
--api-url https://frpp.example.com:443 \
--rpc-url wss://frpp.example.com:443Install as a Windows Service
Use the same commands as on Linux without sudo and adjust the executable path:
C:\frpp\frp-panel.exe install client -s abc -i user.c.client1 \
--api-url https://frpp.example.com:443 \
--rpc-url wss://frpp.example.com:443
# Then manage the service:
C:\frpp\frp-panel.exe start
C:\frpp\frp-panel.exe stop
C:\frpp\frp-panel.exe uninstall