docker搭建frp服务端和客户端
使用docker-compose来搭建frps和frpc
1.搭建frps服务端
创建FRP目录
1
2
3mkdir /opt/docker-compose-data/frp #默认为root用户
cd /opt/docker-compose-data/frp创建 Docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12# vim docker-compose.yml
version: '3.3'
services:
frps:
restart: always
network_mode: host
volumes:
- './frps.ini:/etc/frp/frps.ini'
container_name: frps
image: snowdreamtech/frps创建frps.ini文件
1
2
3
4
5
6
7
8# vim frps.ini
[common]
bind_port=5400 #监听端口
subdomain_host = xxx.xxx #主域名
max_pool_count = 5 #最大连接数
token = pwd12345 #服务端与客户端的认证密钥,要改一个复杂一点的启动容器
1
2
3
4
5启动容器
docker-compose up -d
查看是否启动成功
docker ps
1.搭建frpc客户端
创建FRP目录
1
2
3mkdir /opt/docker-compose-data/frp #默认为root用户
cd /opt/docker-compose-data/frp创建 Docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12# vim docker-compose.yml
version: '3.3'
services:
frpc:
restart: always
network_mode: host
volumes:
- './frpc.ini:/etc/frp/frpc.ini'
container_name: frpc
image: snowdreamtech/frpc创建frpc.ini文件
1
2
3
4
5
6
7
8
9
10
11
12
13# vim frpc.ini
[common]
server_addr= 121.1.20.1 #服务端服务器的公网ip
server_port= 5400 #监听端口
token = pwd123 #服务端与客户端的认证密钥
[jellyfin] #如果有多个,这个名称不能重复
type = tcp
local_ip = 127.0.0.1
local_port = 8096 #本地服务端口
remote_port = 6001 #远程服务器端口
subdomain = jellyfin启动容器
1
2
3
4
5启动容器
docker-compose up -d
查看是否启动成功
docker ps
问题
通过systemd启动frps服务后,想代理tcp 80、443端口,但是一直报错port unavailable,其他tcp端口9000、9001等都能正常被代理。
服务端配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c ./frps.ini --log_file ./frps.log
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target报错信息:
1
2[control.go:447] [54351724c0c3c4be] new proxy [nginx_80] error: port unavailable
[control.go:447] [54351724c0c3c4be] new proxy [nginx_443] error: port unavailable原因:
User
使用nobody
没有权限使用80、443端口资源。将其改为root
即可。