教程 | 重建我的个人云盘

前情提要

我在2023年初前后掏了小一千块钱,捡了五块矿盘。原本打算组一个60TB的raid0存储灵车,奈何一块盘死活读不出来,最后只好变成48TB (格式化实际43.7TB) 不过这么大空间也够我糟蹋到灵车漂移的时候。为了把这些资源用起来,我先bt了一堆电影电视剧,占用了大概4TB左右的空间。后来把所有分装硬盘上的资料都备份到里面,又占了大概2-3TB左右,目前大概有8TB内容。不管怎么样,这些备份有的时候我要用一用(比如给人展示一下之前的成果之类)但我又不是天天在家(指10000公里以外,但不是垂直方向的)所以产生了一个随时通过公网访问的需求。然后我就靠内网穿透做成了一个云盘,不出意外的话应该全剧终了。

但这个标题写的是重建。为什么呢?因为我上一代云盘走的是http而非https协议。因此不管你是下载自己的简历,在线看一部电影或者是传输刘备,你的流量都可以被轻松截获甚至更改。另外就是每次访问看着那个斜杠锁写个不安全很膈应(虽然现在可能不只有大陆政府机关在用这种网站,但他们一定在用,就像xp系统一样先进)。再加上我有个域名是dev结尾的,意味着你干啥都必须要上个https(人话就是要有SSL证书,当然我发现SRV不需要,因此用.dev域名当Minecraft服务器地址是可行的)。

于是这个事情变得很简单:整一个穿透服务器→打个证书→本地运行网盘服务+穿透服务,就完事了。

然后这个破事让我花了一年半时间才搞明白(并没有,实际大概就是几个通宵的样子)

从〇开始の准备工作

如果你也想做一个自己的云盘并且随地大小访问,你也可以做到。你需要准备:

  1. 一台具有足够带宽的云服务器(如果你不知道怎么搞到手,请看这里)
    * 如果这台云服务器在大陆辖区,请确保你的域名已经通过ICP备案;
    * 如果这台云服务器在除大陆外的任何地方,请确保你的服务器不会被墙;
    * 建议运行Ubuntu,别问,问就是别的我不会用(点名RHEL/CentOS)
  2. 一个域名 (如果你不知道怎么搞到手,请看这里)
    * 如果你和我一样手贱选了必须SSL的域名,请确保你有能力给它上个证书;
    * 同上,如果你的服务部署在中国大陆的服务器上,请确保你的域名已有ICP备案;
    * 有DNS服务(比如Cloudflare,阿里DNS等)
  3. 相应的FRP安装包(官方Github源 | 官方文档
  4. 好用的云盘应用一个(此处使用Filebrowser | 官网)
  5. 能用来远程登陆和传输文件的工具(SSH/SFTP等)

配置穿透服务器

 

⭐| 配置frps.toml(前frps.ini

  1. 通过SSH登陆你的云服务器root账户,并用 apt update apt upgrade 命令初始化更新。
  2. 下载一个符合你系统标准的frp包并解压,放置于根目录下(你想放哪都成,别忘了位置),仅留下frps(s指server)和frps.toml两个文件。
  3. 更改配置文件 frps.toml ,你可以把这个文件下载下来改了再传回去,或者使用 nano 指令来更改文件内容(我不喜欢vim,怎么着),例如:nano frps.toml
  4. 添加一行 vhostHTTPSPort = 443 这样,该服务器的443(https)端口将会被使用。
  5. 更改完成后,你的配置文件应该如下所示只有两行:
bindPort = 7000
vhostHTTPSPort = 443

⭐| 配置systemctl并设置开机启动

    1. 使用 apt install systemd 安装systemd服务(如果没有)
    2. 使用nano在 /etc/systemd/system 目录下创建 frps.service 文件:
      $ nano /etc/systemd/system/frps.service
    3. 写入内容:
[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证书

  1. 通过SSH登陆你的云服务器root账户,并用 apt update apt upgrade 命令初始化更新。
  2. 通过 apt install certbot 安装证书机器人
  3. 使用DNS服务将你想用的域名指向你当前的穿透服务器IP
  4. 由于你当前没有80端口占用,因此可以运行 sudo certbot certonly --standalone 来安装证书。执行该命令后,请根据提示按步骤进行。
  5. 安装完成后,记住证书路径和密钥路径,下一步立刻使用。
  6. 检测是否会自动更新可以使用 sudo certbot renew --dry-run 来检测是否会自己更新证书。

到此为止,你的穿透服务端已经配置好了证书,接下来该在本地搭建云盘了。

配置本地穿透客户端

 

⭐| 配置frpc.toml(前frpc.ini

  1. 登录你的本地服务器,并用 sudo apt update sudo apt upgrade 命令初始化更新。
  2. 下载一个符合你系统标准的frp包并解压,放置于根目录下(你想放哪都成,别忘了位置),仅留下frpc(c指client)和frpc.toml两个文件。
  3. 按照你自己的需求更改配置文件 frpc.toml ,你可以用记事本(如果你有GUI),或者使用 nano 指令来更改文件内容(我还是不喜欢vim,怎么着),例如:nano frpc.toml
  4. 更改完成后,你的配置文件应该如下所示:
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并设置开机启动

    1. 使用 apt install systemd 安装systemd服务(如果没有)
    2. 使用nano在 /etc/systemd/system 目录下创建 frpc.service 文件:
      $ nano /etc/systemd/system/frpc.service
    3. 写入内容:
[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直接抄作业并指定路径启动

  1. 直接 curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
    什么?你说你连不上raw.githubusercontent.com? 请开系统代理/透明代理或者改解析。
  2. 使用 filebrowser -r /path/to/your/files -p 8088 可以直接启动。
  3. 像frpc/frps一样,你也可以为Filebrowser设置开机自启动:

⭐| 配置systemctl并设置开机启动

    1. 使用 apt install systemd 安装systemd服务(如果没有)
    2. 使用nano在 /etc/systemd/system 目录下创建 filebrowser.service 文件:
      $ nano /etc/systemd/system/filebrowser.service
    3. 写入内容:
[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 来测试你的域名是否可以直接访问云盘。大功告成!

滚动至顶部