用 Filebrowser 搭建个人网盘和视频服务器(笔记)

                     

贡献者: addis

1. 功能简介

   Filebrowser 官网

2. 使用说明

预备知识 1 Docker 笔记

   首先克隆 docker 镜像:sudo docker pull filebrowser/filebrowser 启动的格式如

docker run --name filebrowser -d --restart always \
   -v 本地网盘文件目录:/srv \
   -v /root/filebrowserconfig.json:/etc/config.json \
   -v /root/filebrowser/database.db:/etc/database.db \
   -p 端口号:80 filebrowser/filebrowser
具体例子如
docker run --name filebrowser -d --restart always \
   -v /mnt/drive/filebrowser/root:/srv \
   -v /mnt/drive/filebrowser/filebrowserconfig.json:/etc/config.json \
   -v /mnt/drive/filebrowser/database.db:/etc/database.db \
   -p 5000:80 filebrowser/filebrowser

3. 内网穿透

预备知识 2 FRP 内网穿透笔记

   如果你在带有公共 ip 的服务器上使用 filebrowser,且把所有需要访问的文件都放在该服务器上,那么你在任何能正常访问互联网的地方都可以访问服务器上的文件。

   但如果你有很多文件,而服务器的储存空间太贵,那么你可以在自己家的一台能上网的电脑上部署 filebrowser,然后使用 FRP 把 filebrowser 在你家电脑上监听的端口代理到服务器公共 ip 的某个端口。这样,你访问服务器的 ip:端口 就可以访问你的所有文件。但由于流量仍然经过服务器,所以仍需支付服务器的流量费。

   你甚至可以把很多不同的内网中的装有 filebrowser 的电脑都映射到服务器的不同端口。

4. 域名访问和端口转发

预备知识 3 Nginx 笔记

   如果你不打算使用域名,那么你将只能使用 http 而不是 https 协议,这时你跟服务器之间的通讯是明文的,你下载的文件或者观看的视频理论上都可能被别人截获(但除非你的文件非常有价值否则一般不会有人这么无聊)。注意这并不意味着别人可以随意窥探你网盘中的任何内容,窃听者只能窃听正在传输中的数据而不能访问你的服务器(除非他破解了 filebrowser 的密码)。

   如果你想要 https 协议就必须拥有一个域名。你可以把域名解析到公网 ip 上,但如果你只是做到这一步,你仍然需要在 url 后面指定端口号,例如 https://example.com:5000。通过不同的端口号连接到不同的内网服务器。这并不优雅。

   一种解决方案就是使用 nginx 进行端口转发,把你服务器的不同端口转发到 80 或者 443 端口,即 http 和 https 的默认端口。但这个转发是多对一的,nginx 怎么知道应该转发哪个呢?这就是域名相对于 ip 的另一个优越性(不光是方便记忆):在你的 http 请求中,除了 ip 地址外也会包含你请求的域名。nginx 可以通过请求域名的不同来选择在和你连接时把同一服务器的不同转口转发到 80 或者 443。注意这并不意味着你需要有多个域名,你只需要在域名记录中添加不同的子域名即可,例如 files1.example.comfiles2.example.com

   这时 nginx 设置文件的一个例子(包含 http 和 https):

server {
    listen 80;
    server_name files1.example.com;

    location / {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 443;
    server_name files1.example.com;
    ssl_certificate /etc/letsencrypt/live/files1.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/files1.example.com/privkey.pem;

    location / {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
这时 files1.example.com 的 http 和 https 设置,你可以在后面继续添加 files2.example.com 等不同的域名,注意要把端口 5000 改成对应的端口。


1. ^ 视频流就是说无需把整个视频文件下载完成再开始播放,可以像视频网站一样一边看一边加载。


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利