windows docker安装frpc

本文最后更新于 2024年5月16日。

windows-docker安装frpc

新建`\wsl.localhost\docker-desktop-data\data\docker\volumes\dc2\frpc-docker-compose.yml
内容如下:

version: "3.7"
services:
  frpc:
    image: snowdreamtech/frpc
    container_name: frpc
    hostname: frpc
    ports:
    #   - "7500:7500"
    #   # - 7400:7400
      - 7000:7000
    #   - 8888:8888
    volumes:
      - frpc:/etc/frp
volumes:
  frpc:

新建`\wsl.localhost\docker-desktop-data\data\docker\volumes\dc2_frpc_data\frpc.ini
写入

[common]
# server_addr = 127.0.0.1
server_addr = 服务器ip或域名
server_port = 7000
# 认证token,客户端需要和此对应
token=1267823123 #与服务器一致
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

运行

(base) PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\docker-desktop-data\data\docker\volumes\dc2> docker-compose -f .\frpc-docker-compose.yml up
Starting frpc ... done
Attaching to frpc
frpc    | 2022/10/26 05:20:25 [I] [service.go:349] [79988bad9b384cb9] login to server success, get run id [79988bad9b384cb9], server udp port [0]
frpc    | 2022/10/26 05:20:25 [I] [proxy_manager.go:144] [79988bad9b384cb9] proxy added: [ssh]
frpc    | 2022/10/26 05:20:25 [I] [control.go:181] [79988bad9b384cb9] [ssh] start proxy success

如果token不一致会报如下错误:

(base) PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\docker-desktop-data\data\docker\volumes> cd \\wsl.localhost\docker-desktop-data\data\docker\volumes\dc2
(base) PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\docker-desktop-data\data\docker\volumes\dc2> docker-compose -f .\frpc-docker-compose.yml up
Starting frpc ... done
Attaching to frpc
frpc    | 2022/10/26 05:19:47 [E] [service.go:340] token in login doesn't match token from configuration
frpc    | 2022/10/26 05:19:47 [W] [service.go:128] login to server failed: token in login doesn't match token from configuration
frpc    | token in login doesn't match token from configuration
ERROR: Windows named pipe error: 管道已结束。 (code: 109)

到现在,无法通过frp内网穿透访问本地cloudreve服务。
怀疑是frpc和cloudreve没在同一个docker网络。
将两个服务放进同一个网络还是不行,虽然能建立连接,

但无法正常使用。

2022/10/26 06:22:38 [E] [proxy.go:795] [5d30d5f7b33dd38c] [web] connect to local service [127.0.0.1:5212] error: dial tcp 127.0.0.1:5212: connect: connection refused

从报错内容看,是因为访问了[127.0.0.1:5212],很有可能是因为地址不对。
在命令行用ipconfig查看地址知道本机ip为192.168.1.60

(base) PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\docker-desktop-data\data\docker\volumes\dc1> ipconfig
Windows IP 配置
以太网适配器 以太网 2:
媒体状态  . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::19bd:a141:d41c:cffe%6
IPv4 地址 . . . . . . . . . . . . : 192.168.1.60
子网掩码  . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.1.1
无线局域网适配器 WLAN:
媒体状态  . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 vEthernet (WSL):
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::c5c1:37ea:f6ee:a7eb%36
IPv4 地址 . . . . . . . . . . . . : 172.24.144.1
子网掩码  . . . . . . . . . . . . : 255.255.240.0
默认网关. . . . . . . . . . . . . :

修改frpc配置增加

# 本地ip
local_ip = 192.168.1.60
或者:
local_ip = 172.24.144.1
或者(docker运行的服务名)
local_ip = cloudreve
或者
local_ip = traefik

完整配置frpc.ini

[common]
# server_addr = 127.0.0.1
server_addr = weiyoun.com
server_port = 7000
# 认证token,客户端需要和此对应
token=123123123
[web]
type = http
# 本地ip
# windows主机所在网络,可用
; local_ip = 192.168.1.60
# wsl所在网络,可用
; local_ip = 172.24.144.1
# docker中的cloudreve服务名,可用
local_ip = cloudreve
## cloudreve 所在的docker网络,可用,但是容易有超时错误
## [E] [proxy.go:795] [e732f6eaf92d4c4f] [web] connect to local service [traefik:5212] error: dial tcp: lookup traefik on 127.0.0.11:53: read udp 127.0.0.1:51222->127.0.0.11:53: i/o timeout
; local_ip = traefik
local_port = 5212
custom_domains = frpshttp.weiyoun.com
# custom_domains = frps.weiyoun.com
# custom_domains = 47.92.255.11

然后用域名xxx.com`就可以正常访问了。

#docker-compose启动

docker-compose -f .\frpc-docker-compose.yml up -d

#docker-compose查看日志

docker-compose -f .\cloudreve-docker-compose.yml logs cloudreve
docker-compose -f .\frpc-docker-compose.yml logs frpc