飞牛私有云论坛 fnOS
标题:
飞牛FnOS部署PicHome无法同步大容量Eagle库?一招解决权限/数据库卡死问题!
[打印本页]
作者:
leidison
时间:
2025-11-28 08:38
标题:
飞牛FnOS部署PicHome无法同步大容量Eagle库?一招解决权限/数据库卡死问题!
<h3>前言</h3>
<p><img src="data/attachment/forum/202511/28/084911v8h2xjnh5m1q6vem.png" alt="" /></p>
<p>最近在飞牛(FnOS)上通过 Docker Compose 部署了 PicHome,原本以为挂载好路径、给了 chmod 777 权限就万事大吉。结果发现:</p>
<ul>
<li>小库正常:添加小的 Eagle 库能识别。</li>
<li>大库卡死:一旦导入容量较大的 Eagle 素材库,点击同步/扫描时,进度条不动,或者貌似更新100%,实际没有真正入库,前台没有任何显示。</li>
<li>现象:虽然网页能看到文件夹,但程序似乎对文件没有完整的控制权(文件锁问题)。</li>
</ul>
<p>经过一顿排查,终于发现问题根源:Docker 容器内部用户 ID 与飞牛系统用户 ID 不匹配。</p>
<h3>核心原因</h3>
<p>很多教程只教大家用 chmod -R 777 暴力开权限。虽然这能让容器“看见”文件,但对于需要频繁读写、生成缓存、处理文件锁的大型 Eagle 库,仅仅有读写权限是不够的,还需要正确的文件“所有者”。</p>
<ul>
<li>误区:很多人以为 Web 容器默认用户 ID 是 33 (Debian/Ubuntu 标准)。</li>
<li>真相:PicHome 的 Docker 镜像基于 Alpine Linux,其内置的 www-data 用户 ID 其实是 82!</li>
</ul>
<p>当然是不是82,我们后面验证一下即可。</p>
<p>如果你的素材库所有者是 root 或 admin (UID 1000),容器在处理大量文件时就会因为权限冲突被系统“**”出来。</p>
<h3>✅ 终极解决方案</h3>
<p>不需要复杂配置,只需要通过 SSH 执行一条命令,把素材库“过户”给容器用户即可。</p>
<p><strong>步骤 1:确认容器用户 ID</strong></p>
<p>如果你想验证一下,可以 SSH 连接飞牛,输入:</p>
<p>codeBash</p>
<pre><code>sudo docker exec pichome-web id www-data
# 注意:pichome-web 是你的容器名
</code></pre>
<p>有人就要问,这个 pichome-web 的名字他妈在哪里?</p>
<p><img src="data/attachment/forum/202511/28/084911rypipynx9fyfu9yx.png" alt="" /></p>
<p>你会发现输出的是 uid=82(www-data),实锤了就是 82。当然验证出来是33那后面的命令就填33。</p>
<p><strong>步骤 2:执行“过户”命令(关键!)</strong></p>
<p>在 SSH 中执行以下命令,将你的 Eagle 库文件夹所有者改为 82:</p>
<p>codeBash</p>
<pre><code># 请将下面的路径替换为你自己的真实素材库路径
sudo chown -R 82:82 /vol1/1000/你的素材库目录/library
</code></pre>
<p>解释:chown 是修改所有者,82:82 对应的是 Alpine 系统里 www-data 的用户 ID 和组 ID。(如果验证出来是33,那么就是33:33)</p>
<p><strong>步骤 3:重启并同步</strong></p>
<ul>
<li>回到飞牛 Docker 管理器,重启 PicHome 容器。</li>
<li>进入 PicHome 网页后台 -> 库管理。</li>
<li>再次点击 “同步” 或 “扫描”。</li>
</ul>
<p>这时候你会发现,几万张图片的大库也能顺滑跑完进度条了!</p>
<h3>附:Docker Compose 推荐配置</h3>
<p>为了防止新手在部署时遇到数据库连接问题,顺便贴一个通过验证的 docker-compose.yaml 配置:</p>
<p>codeYaml</p>
<pre><code>version: '3'
services:
db:
image: mysql:5.7
container_name: pichome-db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: pichome
MYSQL_USER: pichome
MYSQL_PASSWORD: pichome123
volumes:
- ./mysql:/var/lib/mysql
restart: always
pichome:
image: oaooa/pichome
container_name: pichome-web
depends_on:
- db
ports:
- "9000:80" # 端口根据自己需求改
volumes:
- ./html:/var/www/html
# 挂载你的 Eagle 库,注意左边改成你的真实路径
- /vol1/1000/你的素材库目录/library:/library
environment:
- DB_HOST=db
- DB_USER=pichome
- DB_PASSWORD=pichome123
- DB_NAME=pichome
restart: always
</code></pre>
<p>希望这个经验能帮到同样卡在“大库同步”上的飞牛玩家!</p>
作者:
eidkkek
时间:
2025-12-9 08:38
<p>好👍虽然暂时没遇到这个问题</p>
作者:
屯屯鼠
时间:
2025-12-9 10:07
还可以虚拟机开一个Alpine哈哈,docker部署在Alpine里面
欢迎光临 飞牛私有云论坛 fnOS (https://club.fnnas.com/)
Powered by Discuz! X3.5