commit df67dd5e3569d498835a4c5fe92dd8a0964f11d3 Author: sherry Date: Wed Aug 5 03:19:11 2026 -0500 feat: add frp docker compose setup diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1f0d3b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Never commit real environment values (secrets) +.env diff --git a/frp/frpc/.env.sample b/frp/frpc/.env.sample new file mode 100644 index 0000000..2ca474d --- /dev/null +++ b/frp/frpc/.env.sample @@ -0,0 +1,10 @@ +# Copy this file to .env and adjust the values: +# cp .env.sample .env + +FRPS_SERVER_ADDR=your-server-ip-or-domain +FRPS_SERVER_PORT=7000 + +# Must match the token on frps. Use a long random string, e.g. `openssl rand -hex 16` +FRPS_TOKEN=change-me-to-a-strong-random-token + +TZ=Asia/Shanghai diff --git a/frp/frpc/docker-compose.yml b/frp/frpc/docker-compose.yml new file mode 100644 index 0000000..b04e97b --- /dev/null +++ b/frp/frpc/docker-compose.yml @@ -0,0 +1,12 @@ +services: + frpc: + image: snowdreamtech/frpc:latest + container_name: frpc + restart: unless-stopped + network_mode: host + env_file: + - .env + environment: + TZ: ${TZ:-Asia/Shanghai} + volumes: + - ./frpc.toml:/etc/frp/frpc.toml:ro diff --git a/frp/frpc/frpc.toml b/frp/frpc/frpc.toml new file mode 100644 index 0000000..2daf541 --- /dev/null +++ b/frp/frpc/frpc.toml @@ -0,0 +1,29 @@ +# {{ .Envs.XXX }} values are rendered from environment variables at startup +serverAddr = "{{ .Envs.FRPS_SERVER_ADDR }}" +serverPort = {{ .Envs.FRPS_SERVER_PORT }} + +# Token must match the one configured on frps +auth.method = "token" +auth.token = "{{ .Envs.FRPS_TOKEN }}" + +# Admin UI (optional) - http://127.0.0.1:7400 +webServer.addr = "127.0.0.1" +webServer.port = 7400 + +# Proxies: the tunnels to create. Edit / add entries for your own services. + +# Example: expose local SSH (port 22) as :6000 +[[proxies]] +name = "ssh" +type = "tcp" +localIP = "127.0.0.1" +localPort = 22 +remotePort = 6000 + +# Example: expose a local web service (port 8080) as :8080 +[[proxies]] +name = "web" +type = "tcp" +localIP = "127.0.0.1" +localPort = 8080 +remotePort = 8080 diff --git a/frp/frps/.env.sample b/frp/frps/.env.sample new file mode 100644 index 0000000..9a33ef0 --- /dev/null +++ b/frp/frps/.env.sample @@ -0,0 +1,13 @@ +# Copy this file to .env and adjust the values: +# cp .env.sample .env + +FRPS_BIND_PORT=7000 + +# Must match the token on frpc. Use a long random string, e.g. `openssl rand -hex 16` +FRPS_TOKEN=change-me-to-a-strong-random-token + +FRPS_DASHBOARD_PORT=7500 +FRPS_DASHBOARD_USER=admin +FRPS_DASHBOARD_PASSWORD=change-me-too + +TZ=Asia/Shanghai diff --git a/frp/frps/docker-compose.yml b/frp/frps/docker-compose.yml new file mode 100644 index 0000000..2059ccb --- /dev/null +++ b/frp/frps/docker-compose.yml @@ -0,0 +1,12 @@ +services: + frps: + image: snowdreamtech/frps:latest + container_name: frps + restart: unless-stopped + network_mode: host + env_file: + - .env + environment: + TZ: ${TZ:-Asia/Shanghai} + volumes: + - ./frps.toml:/etc/frp/frps.toml:ro diff --git a/frp/frps/frps.toml b/frp/frps/frps.toml new file mode 100644 index 0000000..d514b7c --- /dev/null +++ b/frp/frps/frps.toml @@ -0,0 +1,12 @@ +# {{ .Envs.XXX }} values are rendered from environment variables at startup +bindPort = {{ .Envs.FRPS_BIND_PORT }} + +# Token must match the one configured on frpc +auth.method = "token" +auth.token = "{{ .Envs.FRPS_TOKEN }}" + +# Web dashboard (optional) - http://:7500 +webServer.addr = "0.0.0.0" +webServer.port = {{ .Envs.FRPS_DASHBOARD_PORT }} +webServer.user = "{{ .Envs.FRPS_DASHBOARD_USER }}" +webServer.password = "{{ .Envs.FRPS_DASHBOARD_PASSWORD }}"