前情提要
我在2023年初前后掏了小一千块钱,捡了五块矿盘。原本打算组一个60TB的raid0存储灵车,奈何一块盘死活读不出来,最后只好变成48TB (格式化实际43.7TB) 不过这么大空间也够我糟蹋到灵车漂移的时候。为了把这些资源用起来,我先bt了一堆电影电视剧,占用了大概4TB左右的空间。后来把所有分装硬盘上的资料都备份到里面,又占了大概2-3TB左右,目前大概有8TB内容。不管怎么样,这些备份有的时候我要用一用(比如给人展示一下之前的成果之类)但我又不是天天在家(指10000公里以外,但不是垂直方向的)所以产生了一个随时通过公网访问的需求。然后我就靠内网穿透做成了一个云盘,不出意外的话应该全剧终了。
但这个标题写的是重建。为什么呢?因为我上一代云盘走的是http而非https协议。因此不管你是下载自己的简历,在线看一部电影或者是传输刘备,你的流量都可以被轻松截获甚至更改。另外就是每次访问看着那个斜杠锁写个不安全很膈应(虽然现在可能不只有大陆政府机关在用这种网站,但他们一定在用,就像xp系统一样先进)。再加上我有个域名是dev结尾的,意味着你干啥都必须要上个https(人话就是要有SSL证书,当然我发现SRV不需要,因此用.dev域名当Minecraft服务器地址是可行的)。
于是这个事情变得很简单:整一个穿透服务器→打个证书→本地运行网盘服务+穿透服务,就完事了。
然后这个破事让我花了一年半时间才搞明白(并没有,实际大概就是几个通宵的样子)
从〇开始の准备工作
如果你也想做一个自己的云盘并且随地大小访问,你也可以做到。你需要准备:
- 一台具有足够带宽的云服务器(如果你不知道怎么搞到手,请看这里)
* 如果这台云服务器在大陆辖区,请确保你的域名已经通过ICP备案;
* 如果这台云服务器在除大陆外的任何地方,请确保你的服务器不会被墙;
* 建议运行Ubuntu,别问,问就是别的我不会用(点名RHEL/CentOS) - 一个域名 (如果你不知道怎么搞到手,请看这里)
* 如果你和我一样手贱选了必须SSL的域名,请确保你有能力给它上个证书;
* 同上,如果你的服务部署在中国大陆的服务器上,请确保你的域名已有ICP备案;
* 有DNS服务(比如Cloudflare,阿里DNS等) - 相应的FRP安装包(官方Github源 | 官方文档)
- 好用的云盘应用一个(此处使用Filebrowser | 官网)
- 能用来远程登陆和传输文件的工具(SSH/SFTP等)
配置穿透服务器
⭐| 配置frps.toml(前frps.ini)
- 通过SSH登陆你的云服务器root账户,并用
apt update和apt upgrade命令初始化更新。 - 下载一个符合你系统标准的frp包并解压,放置于根目录下(你想放哪都成,别忘了位置),仅留下frps(s指server)和frps.toml两个文件。
- 更改配置文件 frps.toml ,你可以把这个文件下载下来改了再传回去,或者使用
nano指令来更改文件内容(我不喜欢vim,怎么着),例如:nano frps.toml - 添加一行
vhostHTTPSPort = 443这样,该服务器的443(https)端口将会被使用。 - 更改完成后,你的配置文件应该如下所示只有两行:
bindPort = 7000
vhostHTTPSPort = 443
⭐| 配置systemctl并设置开机启动
- 使用
apt install systemd安装systemd服务(如果没有) - 使用nano在
/etc/systemd/system目录下创建frps.service文件:$ nano /etc/systemd/system/frps.service - 写入内容:
- 使用
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml
[Install]
WantedBy = multi-user.target
⭐| 可以使用以下命令控制穿透服务
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
# 设置frps开机自启动
sudo systemctl enable frps 到此为止,你的穿透服务端已经搞定。接下来,该给你的服务端上证书了。
配置穿透服务器证书
⭐| 使用Certbot安装LetsEncrypt证书
- 通过SSH登陆你的云服务器root账户,并用
apt update和apt upgrade命令初始化更新。 - 通过
apt install certbot安装证书机器人 - 使用DNS服务将你想用的域名指向你当前的穿透服务器IP
- 由于你当前没有80端口占用,因此可以运行
sudo certbot certonly --standalone来安装证书。执行该命令后,请根据提示按步骤进行。 - 安装完成后,记住证书路径和密钥路径,下一步立刻使用。
- 检测是否会自动更新可以使用
sudo certbot renew --dry-run来检测是否会自己更新证书。
到此为止,你的穿透服务端已经配置好了证书,接下来该在本地搭建云盘了。
配置本地穿透客户端
⭐| 配置frpc.toml(前frpc.ini)
- 登录你的本地服务器,并用
sudo apt update和sudo apt upgrade命令初始化更新。 - 下载一个符合你系统标准的frp包并解压,放置于根目录下(你想放哪都成,别忘了位置),仅留下frpc(c指client)和frpc.toml两个文件。
- 按照你自己的需求更改配置文件 frpc.toml ,你可以用记事本(如果你有GUI),或者使用
nano指令来更改文件内容(我还是不喜欢vim,怎么着),例如:nano frpc.toml - 更改完成后,你的配置文件应该如下所示:
serverAddr = "x.x.x.x" #你的穿透服务器IP
serverPort = 7000
[[proxies]]
name = "test_htts2http"
type = "https"
customDomains = ["test.yourdomain.com"] #你刚刚注册SSL证书所使用的域名
[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:8088" #运行在本地的服务端口, 请按需求更改
# HTTPS 证书相关的配置 | 注意,这个证书是在你穿透服务器上的,而不是要被穿透出去的本地服务器上的
crtPath = "./server.crt" #注册SSL证书后的证书位置
keyPath = "./server.key" #注册SSL后的密钥位置
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"
# 如果你喜欢,你还可以增加日常使用的ssh, ftp等服务
[[proxies]]
name = "ftp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 21
remotePort = 2121
[[proxies]]
name = "ssh" #ssh要是连不通,你可能还没安装OpenSSH, 请安装
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2222 ⭐| 配置systemctl并设置开机启动
- 使用
apt install systemd安装systemd服务(如果没有) - 使用nano在
/etc/systemd/system目录下创建frpc.service文件:$ nano /etc/systemd/system/frpc.service - 写入内容:
- 使用
[Unit]
# 服务名称,可自定义
Description = frp client
After=network.target network-online.target
Wants=network-online.target
[Service]
Type = simple
# 启动frpc的命令,需修改为您的frpc的安装路径
ExecStart = /path/to/frpc -c /path/to/frpc.toml
[Install]
WantedBy = multi-user.target
⭐| 可以使用以下命令控制穿透服务
# 启动frp
sudo systemctl start frpc
# 停止frp
sudo systemctl stop frpc
# 重启frp
sudo systemctl restart frpc
# 查看frp状态
sudo systemctl status frpc
# 设置frpc开机自启动
sudo systemctl enable frpc 到此为止,你的穿透服务端已经搞定。接下来,该安装并启动Filebrowser了。
安装Filebrowser并启动
⭐| 使用curl直接抄作业并指定路径启动
- 直接
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
什么?你说你连不上raw.githubusercontent.com? 请开系统代理/透明代理或者改解析。 - 使用
filebrowser -r /path/to/your/files -p 8088可以直接启动。 - 像frpc/frps一样,你也可以为Filebrowser设置开机自启动:
⭐| 配置systemctl并设置开机启动
- 使用
apt install systemd安装systemd服务(如果没有) - 使用nano在
/etc/systemd/system目录下创建filebrowser.service文件:$ nano /etc/systemd/system/filebrowser.service - 写入内容:
- 使用
[Unit]
Description=filebrowser service
[Service]
Type=simple
ExecStart=-r /path/to/your/filebrowser -r /path/to/your/files -p 8088
Restart=on-failure
[Install]
WantedBy=multi-user.target ⭐| 可以使用以下命令控制云盘服务
# 启动filebrowser
sudo systemctl start filebrowser
# 停止filebrowser
sudo systemctl stop filebrowser
# 重启filebrowser
sudo systemctl restart filebrowser
# 查看filebrowser状态
sudo systemctl status filebrowser
# 设置filebrowser开机自启动
sudo systemctl enable filebrowser 到此为止,你的本地云盘已经在运行了,你可以使用 https://test.yourdomain.com 来测试你的域名是否可以直接访问云盘。大功告成!
v1.0.0 - 更新于2024年9月21日。