本文介绍了如何使用 frp 内网穿透工具将本地部署的 immich 相册服务暴露到公网访问,通过配置服务端(frps)和客户端(frpc)实现小规模个人服务的远程访问需求。
地址
-
Immich: GitHub - immich-app/immich: High performance self-hosted photo and video management solution.
背景
immich 是需要管理照片所以部署了一个在本机上(这个人为了省钱不买服务器)
主要是考虑到目前的服务器经常迁移,所以暂时部署到本机去管理
如果我想在本机共享给别人一起使用,所以需要内网穿透,现成的内网穿透又要钱,只好自己搭建一个
调研了以下工具:
ngrok:似乎比frp 复杂一些,没有细看
frp:灵活简单的内网穿透,需要一个服务器,符合我现在的条件
localtunnel:配置非常简单,但是半年跑不进去
最后选择了 frp,个人使用足够,量大建议换个方案
环境
-
immich 部署: immich 是一个相册管理,个人需要所以用来部署
-
客户端 (本机)
我的系统是 macOS,Immich 服务运行在 2283 端口
-
服务器端 需要开放2-3 个端口,注意开放服务器防火墙端口和云服务器安全组
开放的端口:
-
2283(用于映射到本机端口)、7000(本机连接服务端)、8360(可选,frp 管理面板)
tip: 服务器端的 2283 端口和客户端的 2283 端口不是一个东西,并不会冲突,以上端口都可以任意替换,需注意开放服务器防火墙端口和云服务器安全组
-
-
frp 文件: 我的版本是0.61.1
配置
对应的操作官方文档已经很简单明了,只说比较容易踩坑的地方和一个简单的流程
-
1. 下载
frps
文件到服务器服务器是 unbantu,作为服务端,输入
uname -m
输出x86_64所以我这里下载 Linux_amd64 的 zip
mac 的需要另外下载,在第四点会说到
拿到其中的
frps
和frps.toml
文件,随便找个位置放到服务器位置可以根据官方文档的地址来:https://gofrp.org/zh-cn/docs/setup/systemd/,**frps.service**文件我没有做任何修改
-
2. 服务器启动
frps
贴入以下配置,其中端口按需修改,使用
./frps -c ./frps.toml
启动服务,没问题就可以下一步bindPort = 7000 # 开放给本机连接的端口 vhostHTTPPort = 2283 # 访问该端口映射到本机服务 # 管理页面端口 webServer.addr = "0.0.0.0" webServer.port = 8360 # 管理页面账号密码 webServer.user = "admin" webServer.password = "admin"
-
3. 开放端口和安全组
虽然我相信大家都开了,但还是要提一嘴,确保开放端口和安全组就可以下一步
-
4.下载
frpc
文件到本机服务器我的是 macos,作为客户端,输入
uname -m
输出arm64,所以我这里下载arm64的 zip拿到其中的
frpc
和frpc.toml
文件可以下一步 -
5. 本机启动
frpc
贴入以下配置,其中端口按需修改
这里不用怀疑,端口对应的上就可以
然后使用
./frpc -c ./frpc.toml
启动服务,如果显示连接超时 看一下是不是修改的是 frpc 文件(我就傻逼了我排了半天发现修改的是 frps 文件导致一直进不去) 以及查看防火墙与安全组,可以使用telnet IP地址 7000
,分别把用到的端口测一下 如果没问题进行下一步(如果有问题就丢给 ai)serverAddr = "你的服务器IP地址" serverPort = 7000 # 对应frps的bindPort [[proxies]] name = "immich" type = "http" localPort = 2283 # 我的Immich服务运行在 **2283** 端口 customDomains = ["lven.tech"] # 需要能实际访问的解析过的地址
-
6. 测试能否访问
在浏览器中访问:
http://lven.tech:2283
扩展:
使用
./frps -c ./frps.toml > frps.log 2>&1 &
在后台启动
点对点穿透(P2P)
如果服务器的带宽不足,可以考虑使用 P2P 来提高访问效率,此文不做赘述