Linux服务器 自建FRP服务器

FRP服务部署

FRP 是一款专注于内网穿透的高性能反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。通过在具有公网IP的节点上部署FRP服务端,可以将内网服务安全、便捷地暴露到公网,同时提供多项功能特性。

服务端部署

Linux部署

1. 创建FRP目录

mkdir frp
cd frp

2. 下载FRP软件包

wget https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_amd64.tar.gz

如果没有wget命令:

  • CentOS: yum install -y wget
  • Ubuntu或Debian: apt install -y wget

3. 解压文件

tar -zxvf frp_0.49.0_linux_amd64.tar.gz
cd frp_0.49.0_linux_amd64

4. 编辑frps.ini文件

vim frps.ini

编辑以下内容:

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = xxxxxx
vhost_http_port = 80
vhost_https_port = 443
log_file = ./frps.log
log_level = info
log_max_days = 7
authentication_timeout = 900
token = 123123123
max_pool_count = 5
max_ports_per_client = 0

保存并退出。

5. 开放防火墙端口

对于CentOS:

firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=7500/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

对于Ubuntu或Debian:

ufw allow 80
ufw allow 443
ufw allow 7000
ufw allow 7500
ufw enable

6. 启动服务

  • 正常启动:
./frps -c ./frps.ini
  • 后台启动并记录日志:
nohup ./frps -c frps.ini > ./frps.log 2>&1 &

7. 创建启动脚本

创建frp.sh脚本:

#!/bin/bash
cd /frp/frp_0.49.0_linux_amd64/
echo 'pwd' | nohup ./frps -c frps.ini > ./frps.log 2>&1 &

添加可执行权限:

chmod +x frp.sh

8. 配置frp.service文件

编辑
/usr/lib/systemd/system/frp.service

[Unit]
Description=npc
After=network.target

[Service]
Type=forking
ExecStart=/frp/frp_0.49.0_linux_amd64/frp.sh
Restart=always
RestartSec=5
PrivateTmp=true

[Install]
WantedBy=multi-user.target

9. 启动并测试

systemctl daemon-reload
systemctl enable frp
systemctl start frp
systemctl status frp
systemctl stop frp

Docker部署

1. 安装Docker

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

2. 创建frps.ini文件和目录

mkdir /frp
vim /frp/frps.ini

编辑frps.ini

[common]
# (同上)

3. 拉取Docker镜像

docker pull snowdreamtech/frps:latest

4. 启动Docker容器

docker run --restart=always --network host -d -v /frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps

5. Docker相关命令

docker ps -a
docker restart dockerID
docker stop dockerID
docker start dockerID
docker rm dockerID

6. 配置Docker自启和镜像自动启动

systemctl enable docker
docker ps -a
docker update --restart=always dockerID
Enjoy!