惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
爱范儿
爱范儿
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
Y
Y Combinator Blog
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
M
MIT News - Artificial intelligence
博客园 - Franky
V
Visual Studio Blog
I
InfoQ
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
博客园 - 司徒正美
L
LangChain Blog

Ed_'s Blog

给 Debian 开了自动安全更新 – yywr's Blog macOS 下 xlr-spaceFN 键盘映射方案实现方案 v1 – yywr's Blog 移动网络/高延迟网络下 ssh 的替代品 – yywr's Blog H3C NX30PRO 半砖救回记 – yywr's Blog OBS摄像头设置教程:画面形状与绿幕功能详解 – yywr's Blog 走出舒适区的第一步:先做个垃圾出来 – yywr's Blog 视频录制和推流直播工具OBS Studio 的使用 – 基础篇 – yywr's Blog [一个酷酷的软件] Readest 电子书阅读器 – yywr's Blog UPower – 将笔记本电池当成UPS使用 – yywr's Blog 私有音乐服务 Navidrome:部署与Nginx 二级目录反代访问 – yywr's Blog 配置评论邮件通知,沮丧的一天 – yywr's Blog 停止想象 – yywr's Blog 关于冥想的一些想法 – yywr's Blog
简单的私有云数据访问工具 – FileBrowser 部署记要 – yywr's ...
yywr · 2024-10-25 · via Ed_'s Blog

为了低成本脱离互联网的各种服务,从自弄了机器做NAS,时不时就得折腾一下,证明我还不完全死去,正如我在「我那点文件数据的过去、现在与未来」 最后所说的那样,虽然这些都不是什么重要的东西,但是弄好还是挺开心的。

为了从外部网络更方便的访问自己的数据,我从NextCloud 折腾到 FileRun,后面也弄过 Alist 玩过一段时间,最后找到了 FileBrowser ,它简单,刚好满足我简单的需求,记录一下部署过程,以备后用。

我的需求:

  • 在外部网络使用网页访问我的数据
  • 使用 Nginx 二级目录进行反向代理,多个应用只记一个域名和端口就行

环境:

  • Debian/12
  • Docker/27.3.1
  • Nginx/1.27.2

前期准备工具

准备好用来挂载到容器的文件夹,并设置相应的权限,主要是文件目录(参考下面Docker启动配置),比如说准备用用户 www 来管理,那就先设置权限: chown www:www /srv/disk -P (注意,这很重要,不然系统可能直接起不来)

查看用户 ID,备用: id www

配置 Docker 容器并启用

这里使用 linuxserver 镜像 (官方参考: https://filebrowser.org/installation

官方提供的方法是直接挂载文件,我这里会报错 :unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

所以,这里改一下,挂载文件夹,而不是文件,这也是选择 linuxserver 镜像的原因,它的配置文件和数据库文件在文件夹下面,而 alpine  的两个文件在根目录下,最终如下,保存这段配置为 .sh 文件:

    docker run -d \
    --name filebrowser \
    -v /srv/mydisk:/srv \ #文件目录,即准备用filebrowser来管理的目录
    -v /Docker/filebrowser/database:/database \ #数据文件目录
    -v /Docker/filebrowser/config:/config \ #json配置文件目录
    -e PUID=$(id -u) \ #改成前面查到的用户ID,比如 PUID=1000
    -e PGID=$(id -g) \ #改成查到的用户组ID, 比如 PGID=1000
    -p 8080:80 \
    filebrowser/filebrowser:s6
    # 如果你复制这段进行修改使用,注意格式,比如空格、注释删除等

创建并启动容器: bash filebrowser_linuxserver.sh

查看容器是否运行正常: docker ps

如果容器运行正常,这个时候防火墙开放端口(上面演示的是8080,防火墙可以使用 UFW),就可以通过本地IP+端口进行访问了

配置二级目录反向代理

FileBrowser 端:修改 json 配置文件 , 将 baseURL 设置为二级目录的名称,比如这这里是 /files(更多选项参考:filebrowser config set | File Browser

 nano /DockerData/filebrowser/config/settings.json

{
  "port": 80,
  "baseURL": "/files",
  "address": "",
  "log": "stdout",
  "database": "/database/filebrowser.db",
  "root": "/srv"
}

Nginx 端:在现有站点配置文件下,添加下面反向代理配置(如果没有站点,那就新建一个,可以使用  LNMP 面板进行管理,参考 「说说 LNMP 面板」)

## firebrowser
        location ^~ /files {
                proxy_pass http://127.0.0.1:8080;
                client_max_body_size  2048m;
                proxy_read_timeout  86400s;
                proxy_send_timeout  86400s;
                proxy_set_header  X-Forwarded-Host $host;
                proxy_set_header  X-Forwarded-Server $host;
                proxy_set_header  X-Real-IP $remote_addr;
                proxy_set_header  Host $host;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_http_version  1.1;
                proxy_redirect  off;
                proxy_set_header  Upgrade $http_upgrade;
                proxy_set_header  Connection "upgrade";
        }

重启容器:docker restart filebrowser 

这时,就可以使用 https://你的域名:端口/files  进行访问了

以上

本文是 居家服务器折腾笔记 的一部分