feat: docs i18n

This commit is contained in:
ZhangKang
2025-05-06 14:12:49 +08:00
committed by Vaala Cat
parent 0d8d615865
commit e757ef1916
13 changed files with 375 additions and 12 deletions

View File

@@ -8,12 +8,10 @@ export default defineConfig({
locales: {
root: {
label: '简体中文',
lang: 'zh',
...zhConfig
},
en: {
label: 'English',
lang: 'en',
...enConfig
}
},

View File

@@ -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' }
]
}
}

View File

@@ -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
View 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.
![](../public/images/en_client_list.png)
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
View 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
View 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.
![](../public/images/en_server_list.png)
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.

View File

@@ -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
View 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
![](../public/images/arch.svg)

View File

@@ -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: 🚀 一键启动