mirror of
https://github.com/VaalaCat/frp-panel.git
synced 2025-09-26 19:31:18 +08:00
feat: docs i18n
This commit is contained in:
@@ -8,12 +8,10 @@ export default defineConfig({
|
||||
locales: {
|
||||
root: {
|
||||
label: '简体中文',
|
||||
lang: 'zh',
|
||||
...zhConfig
|
||||
},
|
||||
en: {
|
||||
label: 'English',
|
||||
lang: 'en',
|
||||
...enConfig
|
||||
}
|
||||
},
|
||||
|
@@ -2,5 +2,24 @@ import type { DefaultTheme, LocaleSpecificConfig } from 'vitepress'
|
||||
|
||||
export const enConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
|
||||
themeConfig: {
|
||||
nav: [
|
||||
{ text: 'Home', link: '/en/' },
|
||||
{ text: 'Source Code', link: 'https://github.com/vaalacat/frp-panel' }
|
||||
],
|
||||
sidebar: [
|
||||
{
|
||||
text: 'Quick Start',
|
||||
collapsed: true,
|
||||
link: '/en/quick-start',
|
||||
items: [
|
||||
{ text: 'Master Deployment', link: '/en/deploy-master' },
|
||||
{ text: 'Server Deployment', link: '/en/deploy-server' },
|
||||
{ text: 'Client Deployment', link: '/en/deploy-client' },
|
||||
]
|
||||
}
|
||||
],
|
||||
socialLinks: [
|
||||
{ icon: 'github', link: 'https://github.com/vaalacat/frp-panel' }
|
||||
]
|
||||
}
|
||||
}
|
@@ -11,11 +11,11 @@ export const zhConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
|
||||
{
|
||||
text: '快速开始',
|
||||
collapsed: true,
|
||||
link: '/zh/quick-start',
|
||||
link: '/quick-start',
|
||||
items: [
|
||||
{ text: 'Master 部署', link: '/zh/deploy-master' },
|
||||
{ text: 'Server 部署', link: '/zh/deploy-server' },
|
||||
{ text: 'Client 部署', link: '/zh/deploy-client' },
|
||||
{ text: 'Master 部署', link: '/deploy-master' },
|
||||
{ text: 'Server 部署', link: '/deploy-server' },
|
||||
{ text: 'Client 部署', link: '/deploy-client' },
|
||||
]
|
||||
}
|
||||
],
|
||||
|
62
docs/en/deploy-client.md
Normal file
62
docs/en/deploy-client.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Client Deployment
|
||||
|
||||
Client is recommended to be deployed using docker, directly on the client machine. You can execute commands with root privileges directly on the client machine through a remote terminal, which makes upgrading and management convenient.
|
||||
|
||||
## Preparation
|
||||
|
||||
Open the Master's webui and log in. If you don't have an account, register directly - the first user will be the administrator.
|
||||
|
||||
Navigate to `Clients` in the sidebar, click `New` at the top and enter a unique identifier for the client, then click save.
|
||||
|
||||

|
||||
|
||||
After refreshing, the new client will appear in the list.
|
||||
|
||||
Before deploying the client, you need to modify the server configuration, otherwise the client cannot connect properly.
|
||||
|
||||
## Direct Deployment
|
||||
|
||||
Click on the `ID (click to view installation command)` column of the corresponding client. A popup will show installation commands for different systems. Copy the appropriate command to the corresponding terminal to install. Here's an example for Linux:
|
||||
|
||||
```
|
||||
curl -fSL https://raw.githubusercontent.com/VaalaCat/frp-panel/main/install.sh | bash -s -- client -s abc -i user.s.client1 -a 123123 -r frpp-rpc.example.com -c 9001 -p 9000 -e http
|
||||
```
|
||||
|
||||
If you're in China, you can add a GitHub accelerator to the installation script:
|
||||
|
||||
```
|
||||
curl -fSL https://ghfast.top/https://raw.githubusercontent.com/VaalaCat/frp-panel/main/install.sh | bash -s -- client -s abc -i user.s.client1 -a 123123 -r frpp-rpc.example.com -c 9001 -p 9000 -e http
|
||||
```
|
||||
|
||||
Note, if you use a reverse proxy with TLS, you need to modify this command to something like:
|
||||
|
||||
```bash
|
||||
curl -fSL https://ghfast.top/https://raw.githubusercontent.com/VaalaCat/frp-panel/main/install.sh | bash -s -- frp-panel client -s abc -i user.s.client1 -a 123123 -t frpp.example.com -r frpp-rpc.example.com -c 443 -p 443 -e https
|
||||
```
|
||||
|
||||
## Docker Compose Deployment
|
||||
|
||||
Click on the hidden field in the `Secret (click to view startup command)` column of the corresponding client, and copy a startup command similar to the following for later use:
|
||||
|
||||
```bash
|
||||
frp-panel client -s abc -i user.s.client1 -a 123123 -r frpp-rpc.example.com -c 9001 -p 9000 -e http
|
||||
```
|
||||
|
||||
Note, if you use a reverse proxy with TLS, you need to modify this command to something like:
|
||||
|
||||
```bash
|
||||
frp-panel client -s abc -i user.s.client1 -a 123123 -t frpp.example.com -r frpp-rpc.example.com -c 443 -p 443 -e https
|
||||
```
|
||||
|
||||
docker-compose.yaml
|
||||
|
||||
```yaml
|
||||
version: '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.s.client1 -a 123123 -t frpp.example.com -r frpp-rpc.example.com -c 443 -p 443 -e https
|
||||
```
|
218
docs/en/deploy-master.md
Normal file
218
docs/en/deploy-master.md
Normal file
@@ -0,0 +1,218 @@
|
||||
# Master Deployment
|
||||
|
||||
Master is recommended to be deployed using docker! Direct installation on the server is not recommended.
|
||||
|
||||
Three deployment methods will be provided, choose any one of them.
|
||||
|
||||
After deployment, there is no default user. The first registered user will be the administrator. For security reasons, multi-user registration is disabled by default.
|
||||
|
||||
## Preparation
|
||||
|
||||
### Open public network ports on the server:
|
||||
|
||||
- **WEBUI port**: Default `TCP 9000`
|
||||
- **RPC port**: Default `TCP 9001`
|
||||
- **frps API port**: No default, please reserve as needed, example uses `TCP/UDP 7000`
|
||||
- **frps public service ports**: No default, please reserve as needed, example uses `TCP/UDP 26999-27050`
|
||||
|
||||
If using a reverse proxy, ignore the WEBUI and RPC ports, and open ports 80/443 instead.
|
||||
|
||||
The WEBUI port can also handle h2c format RPC connections.
|
||||
|
||||
The RPC port can also handle self-signed HTTPS API connections.
|
||||
|
||||
Both can use a reverse proxy server for connection and TLS provision.
|
||||
|
||||
> Method to test if a port is open (using 8080 as an example), run on the server:
|
||||
> ```shell
|
||||
> python3 -m http.server 8080
|
||||
> ```
|
||||
> Then execute on another computer/server:
|
||||
> ```shell
|
||||
> curl http://server-public-IP/domain:8080 -I
|
||||
> ```
|
||||
> If successful, the output will be similar to:
|
||||
> ```
|
||||
> HTTP/1.0 200 OK
|
||||
> Server: SimpleHTTP/0.6 Python/3.11.0
|
||||
> Date: Sat, 12 Apr 2025 17:12:15 GMT
|
||||
> Content-type: text/html; charset=utf-8
|
||||
> Content-Length: 8225
|
||||
> ```
|
||||
|
||||
## Method 1: Docker Compose Deployment
|
||||
|
||||
The server needs to have docker and docker compose installed.
|
||||
|
||||
First, create a `docker-compose.yaml` file with the following content:
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
frpp-master:
|
||||
image: vaalacat/frp-panel:latest
|
||||
environment:
|
||||
APP_GLOBAL_SECRET: your_secret
|
||||
MASTER_RPC_HOST: 1.2.3.4 #Server's external IP or domain name
|
||||
MASTER_RPC_PORT: 9001
|
||||
MASTER_API_HOST: 1.2.3.4 #Server's external IP or domain name
|
||||
MASTER_API_PORT: 9000
|
||||
MASTER_API_SCHEME: http
|
||||
volumes:
|
||||
- ./data:/data
|
||||
restart: unless-stopped
|
||||
command: master
|
||||
```
|
||||
|
||||
## Method 2: Docker Command Deployment
|
||||
|
||||
The server needs to have docker installed. We recommend deploying `Master` using host network mode.
|
||||
|
||||
```bash
|
||||
# Recommended
|
||||
# Change MASTER_RPC_HOST to your server's external IP
|
||||
# Be careful not to leak APP_GLOBAL_SECRET, client and server are generated through Master
|
||||
docker run -d \
|
||||
--network=host \
|
||||
--restart=unless-stopped \
|
||||
-v /opt/frp-panel:/data \
|
||||
-e APP_GLOBAL_SECRET=your_secret \
|
||||
-e MASTER_RPC_HOST=0.0.0.0 \
|
||||
vaalacat/frp-panel
|
||||
```
|
||||
|
||||
If you don't want to use host network mode, please refer to the modified command below:
|
||||
|
||||
```bash
|
||||
# Or
|
||||
# Remember to delete the Chinese comments in the command when running
|
||||
docker run -d -p 9000:9000 \ # API console port
|
||||
-p 9001:9001 \ # rpc port
|
||||
-p 7000:7000 \ # frps port
|
||||
-p 27000-27050:27000-27050 \ # reserved ports for frps
|
||||
--restart=unless-stopped \
|
||||
-v /opt/frp-panel:/data \ # data storage location
|
||||
-e APP_GLOBAL_SECRET=your_secret \ # Be careful not to leak Master's secret, client and server are generated through Master
|
||||
-e MASTER_RPC_HOST=0.0.0.0 \ # Change this to your server's external IP
|
||||
vaalacat/frp-panel
|
||||
```
|
||||
|
||||
## Method 3: Deployment with Docker Reverse Proxy TLS Encryption
|
||||
|
||||
Here we use [Traefik](https://traefik.io/traefik/) as an example.
|
||||
|
||||
> `Traefik` can automatically identify Docker container ports in real-time and hot update configurations, making it very suitable for Docker service reverse proxying.
|
||||
|
||||
First, create a dedicated network for the reverse proxy named `traefik`.
|
||||
```bash
|
||||
docker network create traefik
|
||||
```
|
||||
Then start the reverse proxy and Master service:
|
||||
- `docker-compose.yaml`
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
traefk-reverse-proxy:
|
||||
image: traefik:v3.3
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- traefik
|
||||
command:
|
||||
- --entryPoints.web.address=:80
|
||||
- --entryPoints.websecure.address=:443
|
||||
- --entryPoints.websecure.http2.maxConcurrentStreams=250
|
||||
- --providers.docker
|
||||
- --providers.docker.network=traefik
|
||||
- --api.insecure # Delete this line in production environment
|
||||
# Below uses port 80 for ACME HTTP DNS certificate validation
|
||||
- --certificatesresolvers.le.acme.email=me@example.com
|
||||
- --certificatesresolvers.le.acme.storage=/etc/traefik/conf/acme.json
|
||||
- --certificatesresolvers.le.acme.httpchallenge=true
|
||||
ports:
|
||||
# Reverse proxy HTTP port
|
||||
- "80:80"
|
||||
# Reverse proxy HTTPS port
|
||||
- "443:443"
|
||||
# Traefik Web UI (--api.insecure=true will use this port)
|
||||
# Delete this port in production environment
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
# Mount docker.sock so Traefik can automatically identify all docker container reverse proxy configurations on the host
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# Save certificates requested by Traefik
|
||||
- ./conf:/etc/traefik/conf
|
||||
|
||||
frpp-master:
|
||||
image: vaalacat/frp-panel:latest # Change to the version you want to use
|
||||
environment:
|
||||
APP_GLOBAL_SECRET: your_secret
|
||||
# Because api and rpc use different protocols
|
||||
# We need to use two domains for api and rpc
|
||||
# So the reverse proxy can correctly identify the protocol to forward
|
||||
MASTER_RPC_HOST: frpp.example.com
|
||||
MASTER_API_PORT: 443
|
||||
MASTER_API_HOST: frpp-rpc.example.com
|
||||
MASTER_API_SCHEME: https
|
||||
networks:
|
||||
- traefik
|
||||
volumes:
|
||||
- ./data:/data
|
||||
ports:
|
||||
# No need to reserve api and rpc ports for master
|
||||
# Reserve frps api port
|
||||
- 7000:7000
|
||||
- 7000:7000/udp
|
||||
# Reserve business ports for frps
|
||||
# Port 26999 is reserved for frps http proxy
|
||||
- 26999-27050:26999-27050
|
||||
- 26999-27050:26999-27050/udp
|
||||
restart: unless-stopped
|
||||
command: master
|
||||
labels:
|
||||
# API
|
||||
- traefik.http.routers.frp-panel-api.rule=Host(`frpp.example.com`)
|
||||
- traefik.http.routers.frp-panel-api.tls=true
|
||||
- traefik.http.routers.frp-panel-api.tls.certresolver=le
|
||||
- traefik.http.routers.frp-panel-api.entrypoints=websecure
|
||||
- traefik.http.routers.frp-panel-api.service=frp-panel-api
|
||||
- traefik.http.services.frp-panel-api.loadbalancer.server.port=9000
|
||||
- traefik.http.services.frp-panel-api.loadbalancer.server.scheme=http
|
||||
# RPC
|
||||
- traefik.http.routers.frp-panel-rpc.rule=Host(`frpp-rpc.example.com`)
|
||||
- traefik.http.routers.frp-panel-rpc.tls=true
|
||||
- traefik.http.routers.frp-panel-rpc.tls.certresolver=le
|
||||
- traefik.http.routers.frp-panel-rpc.entrypoints=websecure
|
||||
- traefik.http.routers.frp-panel-rpc.service=frp-panel-rpc
|
||||
- traefik.http.services.frp-panel-rpc.loadbalancer.server.port=9000
|
||||
- traefik.http.services.frp-panel-rpc.loadbalancer.server.scheme=h2c
|
||||
# If you don't need frps http proxy, you can omit the following
|
||||
# You need to configure wildcard domain *.frpp.example.com to resolve to your server's public IP
|
||||
# This allows you to use domains ending with .frpp.example.com on port 443 to forward multiple services to multiple frpc instances
|
||||
- traefik.http.routers.frp-panel-tunnel.rule=HostRegexp(`.*.frpp.example.com`)
|
||||
- traefik.http.routers.frp-panel-tunnel.tls.domains[0].sans=*.frpp.example.com
|
||||
- traefik.http.routers.frp-panel-tunnel.tls=true
|
||||
- traefik.http.routers.frp-panel-tunnel.tls.certresolver=le
|
||||
- traefik.http.routers.frp-panel-tunnel.entrypoints=websecure
|
||||
- traefik.http.routers.frp-panel-tunnel.service=frp-panel-tunnel
|
||||
- traefik.http.services.frp-panel-tunnel.loadbalancer.server.port=26999
|
||||
- traefik.http.services.frp-panel-tunnel.loadbalancer.server.scheme=http
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
name: traefik
|
||||
```
|
||||
|
||||
After deploying the above `docker-compose.yaml`, you can access `server-public-IP/domain:8080` to view the reverse proxy status.
|
||||
|
||||
Then configure the default server to implement frp subdomain forwarding:
|
||||
|
||||
| Configuration Item | Value |
|
||||
|----|-----|
|
||||
| FRPs Listen Port | 7000 |
|
||||
| FRPs Listen Address | 0.0.0.0 |
|
||||
| Proxy Listen Address | 0.0.0.0 |
|
||||
| HTTP Listen Port | 26999 |
|
||||
| Domain Suffix | frpp.example.com |
|
50
docs/en/deploy-server.md
Normal file
50
docs/en/deploy-server.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# Server Deployment
|
||||
|
||||
Server is recommended to be deployed using docker! Direct installation on the server is not recommended.
|
||||
|
||||
> If you only have one public network server to manage, you can use the `default server` that comes with `master`, no need to deploy a separate `server`.
|
||||
|
||||
## 1. Preparation
|
||||
|
||||
Open the Master's webui and log in. If you don't have an account, register directly - the first user will be the administrator.
|
||||
|
||||
Navigate to `Servers` in the sidebar, click `New` at the top and enter a unique identifier for the server and the IP/domain name that can be accessed from the public network, then click save.
|
||||
|
||||

|
||||
|
||||
After refreshing, the new server will appear in the list. Click on the hidden field in the `Secret (click to view startup command)` column of the corresponding server, and copy a startup command similar to the following for later use:
|
||||
|
||||
```bash
|
||||
frp-panel server -s abc -i user.s.server1 -a 123123 -r frpp-rpc.example.com -c 9001 -p 9000 -e http
|
||||
```
|
||||
|
||||
Note, if you use a reverse proxy with TLS, you need to modify this command to something like:
|
||||
|
||||
```bash
|
||||
frp-panel server -s abc -i user.s.server1 -a 123123 -t frpp.example.com -r frpp-rpc.example.com -c 443 -p 443 -e https
|
||||
```
|
||||
|
||||
## 2. Program Installation
|
||||
|
||||
### Docker Compose Deployment
|
||||
|
||||
docker-compose.yaml
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
services:
|
||||
frp-panel-server:
|
||||
image: vaalacat/frp-panel
|
||||
container_name: frp-panel-server
|
||||
network_mode: host
|
||||
restart: unless-stopped
|
||||
command: server -s abc -i user.s.server1 -a 123123 -t frpp.example.com -r frpp-rpc.example.com -c 443 -p 443 -e https
|
||||
```
|
||||
|
||||
### Direct Deployment
|
||||
|
||||
If you want to deploy directly, please refer to the client deployment steps.
|
||||
|
||||
## 3. Server Configuration
|
||||
|
||||
After installation, you need to modify the server configuration according to your network and requirements, otherwise the client cannot connect properly.
|
@@ -4,11 +4,11 @@ layout: home
|
||||
hero:
|
||||
name: "Frp-Panel Docs"
|
||||
text: "Multi-Node, Centralized & Visual FRP Management Platform"
|
||||
tagline: Secure, modern open-source alternative to Cloudflare Tunnel/Tailscale Funnel/Ngrok platforms and proxies <br/> Cloudflare Tunnel/Tailscale Funnel/Ngrok platform and agent open source alternative
|
||||
tagline: Secure, modern open-source alternative to Cloudflare Tunnel/Tailscale Funnel/Ngrok platforms and proxies
|
||||
actions:
|
||||
- theme: alt
|
||||
text: Quick Start
|
||||
link: /en
|
||||
link: /en/quick-start
|
||||
|
||||
features:
|
||||
- title: 🚀 One-Click Deployment
|
||||
|
19
docs/en/quick-start.md
Normal file
19
docs/en/quick-start.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Quick Start
|
||||
|
||||
## Important Pre-Start Reading
|
||||
|
||||
`frp-panel` consists of three modules:
|
||||
|
||||
1. `master`: The central control module, responsible for distributing configuration files and controlling all other modules
|
||||
2. `server`: Corresponds to `frps`, responsible for providing traffic entry points
|
||||
3. `client`: Corresponds to `frpc`, can expose local services to an entry point on the `server`
|
||||
|
||||
> When deploying `master`, it will start a default `default server` for `client` connections. Therefore, `master` generally doesn't exist independently, but you can choose not to use it
|
||||
|
||||
When deploying, we typically start with the `master`. The `server` and `client` managed by the `master` require automatically generated content from the successfully deployed `master` control page.
|
||||
|
||||
For `frp-panel`, we **recommend deploying all components using `docker`** and **using `host` network mode**, unless you need remote terminal control of remote machines, in which case install the service on the client machine.
|
||||
|
||||
## Architecture Diagram
|
||||
|
||||

|
@@ -8,10 +8,7 @@ hero:
|
||||
actions:
|
||||
- theme: alt
|
||||
text: 快速开始
|
||||
link: /zh/quick-start
|
||||
- theme: alt
|
||||
text: Quick Start
|
||||
link: /en
|
||||
link: /quick-start
|
||||
|
||||
features:
|
||||
- title: 🚀 一键启动
|
||||
|
Reference in New Issue
Block a user