需要:
一台云服务器(或者你的设备有公网ip地址)
一台本地的机器(我用的是oect)
一个域名
本地机器
frpc
首先,我的oect刷的是Debian13(其他的也刷过,armbian jammy也蛮好用的但是因为我的usb-WIFI驱动好像在其他的地方无法使用最后只能作罢),装好系统后
sudo apt update
sudo apt upgrade接上互联网(我想用无线互联网所以我先要装下驱动
sudo dpkg -i ../UX9H\(免驱版\)\ V1.1\ Linux系统驱动程序20250319/aic8800d80fdrvpackage.deb
sudo apt install -y usb-modeswitch下载根据系统架构frp
注意,现在网上很多教程都是ini格式的配置文件,新版换了toml没有办法使用,我的文件如下,可以作为参考
# 服务端地址与端口
serverAddr = "××××××"
serverPort = ××××××
# 认证方式与token(与frps.toml保持一致)
auth.method = "token"
auth.token = "×××××××"
# 开启 TLS(有服务需要)
transport.tls.enable = true
# SSH 映射
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = ×××× # 公网访问端口,按需修改
# 1Panel 映射
[[proxies]]
name = "1panel"
type = "tcp"
localIP = "127.0.0.1"
localPort = ×××××××
remotePort = ×××××× # 公网访问端口,可自定义
# code-server
[[proxies]]
name = "code-server"
type = "http"
localIP = "127.0.0.1"
localPort = ×××××××
customDomains = ["×××××××"]
最后启动frpc(服务器要先部署frps)
sudo ./frpc -c frpc.toml最后最好配一个自启动(方便一开机就不用知道ip地址直接ssh)
这个改下frpc的地址就可以啦,好用
sudo tee /etc/systemd/system/frpc.service >/dev/null <<'EOF'
[Unit]
Description=Frp Client
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/frp
ExecStart=/root/frp/frpc -c /root/frp/frpc.toml
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now frpc
sudo systemctl status frpc之后你可以试试
ssh -p <你的ssh端口号> <用户名>@<公网ip>链接ssh
之后你就可以用1panel等管理你的服务器
frpc进阶配置
对于一些特殊的应用,可能必须走http甚至https,为了方便还是在云服务器端放个反向代理(如nginx之类的)
例如http的code-server(docker)
配置如图
# code-server
[[proxies]]
name = "code-server"
type = "http"
localIP = "127.0.0.1"
localPort = ×××××××
customDomains = ["×××××××"]服务器端也得特殊设置
云服务器
frps
因为刚刚说了要启动http甚至https(不过本人比较懒除了重要的网站配了ssl其他懒得配,显示不安全就不安全吧哈哈哈)
具体的frps的配置如下
bindPort = **** #与frpc的serverPort一致
vhostHTTPPort = ×××× # 有http需求,且这个安装了nginx之后不要用标准的80口了,换一个
vhostHTTPSPort = ×××× # https需求
webServer.port = ×××× # 如不需要,可注释掉
auth.token = "***"nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占用内存小并发能力强,在我现在的浅显的理解,他能监听80端口是由哪个特定网址或对应的唯一性标识,从而唯一重定向到对应端口下,这样我们就可以通过访问域名而访问我们的服务。而且有些特定服务就必须使用http协议,不能通过访问端口得到服务(浏览器一般只用80端口访问?(我了解还不是很深))
首先是一般的服务(这里用我云服务器运行的Halo)
nginx配置比较简单:
# ===== 80 统一跳转 =====
server {
listen 80;
server_name ********;
return 301 https://$host$request_uri;
}
# ===== 443 统一反代 =====
server {
listen 443 ssl http2;
server_name *******;
# 证书
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
# 反代到 Docker 里的 Halo
location / {
proxy_pass http://127.0.0.1:*******;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}其次,是用frpc转的服务:
server {
listen 80;
server_name *******;
location / {
proxy_pass http://127.0.0.1:8011;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}只需端口号这里是(8011)与frpc中的remotePort一致即可
最后是特殊的frpc中转的需要http或https的服务:
[root@******* conf.d]# cat frpc-http.conf
server {
listen 80;
server_name *** *** *** ****;
client_max_body_size 200m; # 200 MiB 够用
location / {
proxy_pass http://127.0.0.1:××;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}通过命名你会发现这个没有针对特定服务,而是以http为文件名,是因为frp其实充当了nginx的作用形成了
域名->frp的http端口->本地服务器上的http转发端口->对应服务。
本地服务器怎么知道我是想要哪个服务呢,答案是在frpc中的配置customDomains = ["×××××××"] 中这个与nigix配置接可以实现这个神奇的效果,当然我不知道还有什么更好的办法,哈哈哈
最后就先写到这里吧。