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

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
阮一峰的网络日志
阮一峰的网络日志
云风的 BLOG
云风的 BLOG
D
Docker
Vercel News
Vercel News
IT之家
IT之家
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
腾讯CDC
Google DeepMind News
Google DeepMind News
I
InfoQ
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
博客园 - Franky
The Cloudflare Blog
A
About on SuperTechFans
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
T
Tenable Blog
P
Proofpoint News Feed
Recorded Future
Recorded Future
Security Latest
Security Latest
H
Hackread – Cybersecurity News, Data Breaches, AI and More
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 聂微东
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Google Online Security Blog
Google Online Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
The Last Watchdog
The Last Watchdog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
News and Events Feed by Topic
TaoSecurity Blog
TaoSecurity Blog
U
Unit 42
The Hacker News
The Hacker News
Martin Fowler
Martin Fowler
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
F
Full Disclosure
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
Project Zero
Project Zero

Computer – 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 视频录制和推流直播工具OBS Studio 的使用 – 基础篇 – yywr's Blog UPower – 将笔记本电池当成UPS使用 – yywr's Blog 私有音乐服务 Navidrome:部署与Nginx 二级目录反代访问 – yywr's Blog 又一个 Honkintosh – yywr's Blog Samba 服务基本用法 – yywr's Blog Crontab 使用笔记 – yywr's Blog 终于修了个梯子 – yywr's Blog 防火墙配置工具 UFW – yywr's Blog
简单的私有云数据访问工具 – FileBrowser 部署记要 – yywr's Blog
yywr · 2024-10-25 · via Computer – 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  进行访问了

以上

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