<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Farmer 的博客</title><link>https://blog.ifthen.site/</link><description>写点生活、感悟与日常折腾的记录。没有广告，没有跟踪脚本，当然更可能没有人看。</description><language>zh-cn</language><generator>Hugo</generator><atom:link href="https://blog.ifthen.site/index.xml" rel="self" type="application/rss+xml"/><item><title>把博客放在 NAS 上</title><link>https://blog.ifthen.site/posts/20260926-nas-setup/</link><guid>https://blog.ifthen.site/posts/20260926-nas-setup/</guid><pubDate>Sat, 26 Sep 2026 21:30:00 +0800</pubDate><category>数码折腾</category><description>&lt;p&gt;这篇记录一下这个站点是怎么搭的，以及为什么这么选。&lt;/p&gt;
&lt;h2 id="基本结构"&gt;基本结构&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;硬件&lt;/td&gt;
&lt;td&gt;QNAP NAS（局域网 &lt;code&gt;REDACTED_NAS_LAN_IP&lt;/code&gt;）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;运行时&lt;/td&gt;
&lt;td&gt;Container Station · Docker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web 服务&lt;/td&gt;
&lt;td&gt;nginx（Alpine 版，镜像很小）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;访问范围&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;仅局域网&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;内容目录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/share/Container/personal-blog/site&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="为什么不用-wordpress"&gt;为什么不用 WordPress&lt;/h2&gt;
&lt;p&gt;NAS 的 &lt;code&gt;/share/Web&lt;/code&gt; 里其实躺着一份 2022 年的 WordPress 5.9.3 —— 说明以前试过。但放今天看，它的问题很实际：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要额外的数据库容器，多一层要维护、要备份、会坏的东西&lt;/li&gt;
&lt;li&gt;插件与主题的漏洞是持续性的，得一直跟着升级&lt;/li&gt;
&lt;li&gt;这台 NAS 上还跑着密码库，一旦 Web 侧被攻破，影响会外溢&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而静态站没有这些：没有数据库、没有可执行后端、备份就是复制一个文件夹。&lt;/p&gt;
&lt;h2 id="为什么不直接开公网"&gt;为什么不直接开公网&lt;/h2&gt;
&lt;p&gt;公网访问不是&amp;quot;把端口开出去&amp;quot;这么简单：要证书、要端口转发、要防扫描。更重要的是，&lt;strong&gt;收益不匹配风险&lt;/strong&gt; —— 这个博客暂时只需要我自己和家里人看。&lt;/p&gt;
&lt;p&gt;将来真需要公网，再做这几步：域名 → 证书 → 反向代理 → 最小暴露面。到那时也是加一层的事，不用推翻现在的结构。&lt;/p&gt;
&lt;h2 id="为什么用-hugo-而不是手写-html"&gt;为什么用 Hugo 而不是手写 HTML&lt;/h2&gt;
&lt;p&gt;最初这个站就是几个手写的 HTML 文件。能跑，但每加一篇都要复制模板、手改导航、手写日期和摘要——加不了十篇就写不动了。&lt;/p&gt;
&lt;p&gt;换成静态站生成器之后：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Markdown 内容 → hugo --minify → 纯静态产物 → scp 到 NAS
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;归档、分类、标签、RSS、sitemap 全部自动生成&lt;/li&gt;
&lt;li&gt;样式与结构集中在模板里，改一次全站生效&lt;/li&gt;
&lt;li&gt;内容是纯文本，十年后还能用&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="备份怎么做"&gt;备份怎么做&lt;/h2&gt;
&lt;p&gt;整个站点就是一个文件夹，直接复制走即可：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/share/Container/personal-blog/site
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;没有数据库导出、没有一致性快照的麻烦。&lt;/p&gt;</description></item><item><title>你好，世界</title><link>https://blog.ifthen.site/posts/20260926-hello-world/</link><guid>https://blog.ifthen.site/posts/20260926-hello-world/</guid><pubDate>Sat, 26 Sep 2026 20:10:00 +0800</pubDate><category>我思我在</category><description>&lt;p&gt;博客搭起来了。这是我的第一篇文章，主要说明它跑在哪儿、怎么加新内容。&lt;/p&gt;
&lt;h2 id="它跑在哪儿"&gt;它跑在哪儿&lt;/h2&gt;
&lt;p&gt;这个站点托管在我自己的 NAS 上，用一个 Docker 容器跑 nginx 提供静态文件服务。&lt;strong&gt;只在局域网内可访问&lt;/strong&gt;，没有对公网开放。&lt;/p&gt;
&lt;h2 id="为什么用静态站"&gt;为什么用静态站&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;没有数据库&lt;/strong&gt; —— 少一个会坏、会泄、需要升级的东西&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;没有可执行后端&lt;/strong&gt; —— 攻击面基本为零，不怕常见的 Web 漏洞&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;备份极简单&lt;/strong&gt; —— 就是一个文件夹，复制走就行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快&lt;/strong&gt; —— 纯文件，nginx 直接吐出去&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;代价是：不能像 WordPress 那样在网页里点点鼠标写文章。写文章要用 Markdown，然后构建发布。对我来说这个代价可以接受。&lt;/p&gt;
&lt;h2 id="怎么加一篇新文章"&gt;怎么加一篇新文章&lt;/h2&gt;
&lt;p&gt;三步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 &lt;code&gt;content/posts/&lt;/code&gt; 下建一个 &lt;code&gt;20260926-my-post/index.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;写 Markdown 正文 + 头部 front matter（标题 / 日期 / 摘要 / 分类 / 标签）&lt;/li&gt;
&lt;li&gt;本地 &lt;code&gt;hugo --minify&lt;/code&gt;，然后把产物同步到 NAS&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;先把这个骨架跑起来，内容慢慢填。有内容比有好看的模板重要。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>NAS Calibre-Web 升级攻坚全记录（2026-09-20~21）</title><link>https://blog.ifthen.site/posts/20260921-nas-calibre-web-2026-09-20-21/</link><guid>https://blog.ifthen.site/posts/20260921-nas-calibre-web-2026-09-20-21/</guid><pubDate>Mon, 21 Sep 2026 00:20:44 +0800</pubDate><category>数码折腾</category><description>&lt;p&gt;&lt;strong&gt;时间&lt;/strong&gt;：2026-09-20 20:00 → 2026-09-21 00:30
&lt;strong&gt;主机&lt;/strong&gt;：REDACTED_HOSTNAME（QNAP TS-451D · QTS 5.2.10 · Docker 27.1.2-qnap8）
&lt;strong&gt;起因&lt;/strong&gt;：Farmer 提问「web-calibre 容器新版本为什么不用？升级后服务起不来，也导致本地 Calibre 客户端不能升 9.x」&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一结论先行"&gt;一、结论先行&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;问题&lt;/th&gt;
&lt;th&gt;结论&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;新版本为什么不能用&lt;/td&gt;
&lt;td&gt;Calibre 9 删除了 &lt;code&gt;books.isbn&lt;/code&gt;/&lt;code&gt;lccn&lt;/code&gt;/&lt;code&gt;flags&lt;/code&gt;，而 Calibre-Web ≤0.6.25 在 ORM 里硬编码映射了这些列 → 页面 500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;是&amp;quot;服务起不来&amp;quot;吗&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;不是&lt;/strong&gt;。容器正常启动，&lt;strong&gt;是页面报错&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;修好了吗&lt;/td&gt;
&lt;td&gt;✅ 已升到 &lt;strong&gt;0.6.27-ls402&lt;/strong&gt;，实测全绿&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;阻塞 Calibre 桌面 9.x 吗&lt;/td&gt;
&lt;td&gt;✅ 已解锁，实测 &lt;strong&gt;Calibre 9.15 转换格式成功&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;自定义列要处理吗&lt;/td&gt;
&lt;td&gt;❌ 不用（是 &lt;code&gt;composite&lt;/code&gt;，在 Calibre-Web 忽略名单里）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="二技术根因源码级"&gt;二、技术根因（源码级）&lt;/h2&gt;
&lt;h3 id="calibre-9-做了什么"&gt;Calibre 9 做了什么&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;kovidgoyal/calibre&lt;/code&gt; → &lt;code&gt;src/calibre/db/schema_upgrades.py&lt;/code&gt; → &lt;code&gt;upgrade_version_26&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;flags&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;isbn&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;lccn&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;statements&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ALTER TABLE books DROP COLUMN &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s1"&gt;;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;同时新建 &lt;code&gt;books_pages_link&lt;/code&gt;、重建 &lt;code&gt;meta&lt;/code&gt; 视图、&lt;code&gt;PRAGMA application_id = 0x63616c69&lt;/code&gt;、&lt;code&gt;user_version&lt;/code&gt; 26 → 27。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键特性&lt;/strong&gt;：Calibre 打开书库时在 &lt;code&gt;BEGIN EXCLUSIVE TRANSACTION&lt;/code&gt; 里&lt;strong&gt;原地升级&lt;/strong&gt;，&lt;strong&gt;不可逆&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="calibre-web-为什么会崩"&gt;Calibre-Web 为什么会崩&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;≤0.6.25&lt;/strong&gt;：&lt;code&gt;cps/db.py&lt;/code&gt; 的 &lt;code&gt;Books&lt;/code&gt; 模型有 &lt;code&gt;isbn = Column(...)&lt;/code&gt; / &lt;code&gt;flags = Column(...)&lt;/code&gt; → SQLAlchemy 生成 &lt;code&gt;SELECT ... books.isbn ...&lt;/code&gt; → &lt;code&gt;no such column: books.isbn&lt;/code&gt; → &lt;strong&gt;HTTP 500&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0.6.26 起&lt;/strong&gt;：commit &lt;code&gt;7f7fc884c2&lt;/code&gt;（2026-01-31）把这两列注释掉 → 不再查询 → 修复&lt;/li&gt;
&lt;li&gt;⚠️ &lt;strong&gt;Calibre-Web 从不读 &lt;code&gt;PRAGMA user_version&lt;/code&gt;&lt;/strong&gt;（源码 5 处文件零命中）→ 无版本判断，只在查询时炸&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="为什么极难自查"&gt;为什么极难自查&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;错误只写进 &lt;code&gt;/config/calibre-web.log&lt;/code&gt;（应用日志），不进 &lt;code&gt;docker logs&lt;/code&gt;（容器 stdout）。&lt;/strong&gt;
所以看容器日志只会看到&amp;quot;一切正常启动&amp;quot;，真正原因藏在 config 目录的日志文件里。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="三自定义列排查虚惊一场"&gt;三、自定义列排查（虚惊一场）&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;custom_columns 表（1 行）
label = formats
name = 格式
datatype = composite ← 关键
display = {&amp;#34;composite_template&amp;#34;: &amp;#34;{:&amp;#39;re(approximate_formats(), &amp;#39;,&amp;#39;, &amp;#39;, &amp;#39;)&amp;#39;}&amp;#34;, ...}
custom_column_1 表：0 行 ← composite 是计算列，不存数据
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Calibre-Web &lt;code&gt;cps/db.py&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cc_exceptions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;composite&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;series&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;datatype&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;cc_exceptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# ← composite 直接跳过&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;→ &lt;code&gt;composite&lt;/code&gt; 落在忽略名单内，不会触发 &lt;code&gt;books_custom_column_N_link&lt;/code&gt; 查询&lt;/strong&gt;
&lt;strong&gt;→ issue #3643（Calibre 9 + 自定义列 → 书详情页/OPDS 失败）对本库不适用&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注：&lt;code&gt;cc_exceptions&lt;/code&gt; 里之所以有 &lt;code&gt;composite&lt;/code&gt;，正是源于 2016 年的 cbw &lt;strong&gt;#20&lt;/strong&gt; —— 那位报告人的列&lt;strong&gt;也叫 formats、也是 composite&lt;/strong&gt;，janeczku 据此把它加进了忽略名单。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="四决定性复现实验"&gt;四、决定性复现实验&lt;/h2&gt;
&lt;p&gt;在&lt;strong&gt;库副本&lt;/strong&gt;上施加 &lt;code&gt;upgrade_version_26&lt;/code&gt; 的等效迁移（删三列 + 重建 meta 视图 + &lt;code&gt;application_id&lt;/code&gt;/&lt;code&gt;user_version&lt;/code&gt;），然后&lt;strong&gt;同一份库&lt;/strong&gt;分别跑新旧两个 Calibre-Web：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;th&gt;0.6.20（旧）&lt;/th&gt;
&lt;th&gt;0.6.26（新）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/&lt;/code&gt; 首页&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;200&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/login&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/opds&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/opds/books/letter/00&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;200&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;→ 症状精确复现，修复确认。&lt;/strong&gt;（&lt;code&gt;/login&lt;/code&gt; 正常是因为它不查书）&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五升级执行三步走每步都带回滚"&gt;五、升级执行（三步走，每步都带回滚）&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;① 备份 一致快照（SQLite backup API，非裸拷贝）
→ REDACTED_BACKUP_DIR/
② 沙箱验证 库副本 + config 副本 + 独立端口（8093/8094/8095）
不碰生产容器/配置/书库
③ 生产切换 docker rename 旧容器保留为回滚锚点 → 同规格起新容器
→ 等待 → 验证 → 失败自动回滚
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;升级链&lt;/strong&gt;：&lt;code&gt;0.6.20-ls225&lt;/code&gt; → &lt;code&gt;0.6.26-ls388&lt;/code&gt; → &lt;strong&gt;&lt;code&gt;0.6.27-ls402&lt;/code&gt;&lt;/strong&gt;（当日发布，含 2026-09 安全批次）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最终验证（生产 8083）&lt;/strong&gt;：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/ 200 /login 200 /opds 200
/book/1 200 ← 旧版必崩的页面
/opds/books/letter/00 200
restarts=0 stdout 错误签名=0 app.db 21 表 / 3 用户完整保留
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="终局实测最有说服力的一条"&gt;终局实测（最有说服力的一条）&lt;/h3&gt;
&lt;p&gt;Farmer 升 &lt;strong&gt;Calibre 桌面 9.15&lt;/strong&gt; 并&lt;strong&gt;成功转换一本书的格式&lt;/strong&gt; → 书库已升到 schema 27：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;user_version : 27
application_id : 0x63616c69
books_pages_link : PRESENT（1065 行）
books.isbn/lccn/flags : 全部已删除
books 行数 : 1065（一本书没丢）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;而 Calibre-Web 0.6.27 完全扛住：&lt;code&gt;/book/1&lt;/code&gt; 与 &lt;code&gt;/opds/*&lt;/code&gt; 全 200、零错误签名。&lt;/strong&gt;
→ &lt;strong&gt;如果当初没升级，此刻这两个页面必定 500。整条链路验证通过。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六镜像加速的真相重要可复用结论"&gt;六、镜像加速的真相（重要可复用结论）&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;registry-mirrors&lt;/code&gt; 只对 Docker Hub（&lt;code&gt;docker.io&lt;/code&gt;）生效。&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;✅ linuxserver/calibre-web:0.6.27-ls402 → 命中加速，实测 5 秒
❌ lscr.io/linuxserver/calibre-web:0.6.27-ls402 → 绕过加速，直连境外 → 卡死
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;本机 daemon 配置：&lt;code&gt;/share/CACHEDEV1_DATA/.qpkg/container-station/etc/docker.json&lt;/code&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;registry-mirrors&amp;#34;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://docker.1ms.run&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://docker.xuanyuan.me&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;实测 &lt;code&gt;docker pull hello-world&lt;/code&gt; &lt;strong&gt;5 秒完成&lt;/strong&gt; → &lt;strong&gt;加速本身完全正常&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;规则：拉 LinuxServer 镜像一律用 Docker Hub 路径，不要用 &lt;code&gt;lscr.io&lt;/code&gt;&lt;/strong&gt;（其镜像同时发布在 Hub 上）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不需要改 &lt;code&gt;daemon.json&lt;/code&gt;&lt;/strong&gt; —— 改它要重启 dockerd，会导致&lt;strong&gt;所有容器重启&lt;/strong&gt;，代价大而无必要&lt;/li&gt;
&lt;li&gt;⚠️ 容器 Station UI 走的是 Hub + 加速，所以 UI 能拉、命令行用 &lt;code&gt;lscr.io&lt;/code&gt; 不能拉 —— 差异就在仓库路径&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description></item><item><title>初识OpenClaw</title><link>https://blog.ifthen.site/posts/20260309-openclaw/</link><guid>https://blog.ifthen.site/posts/20260309-openclaw/</guid><pubDate>Mon, 09 Mar 2026 21:18:11 +0800</pubDate><category>我思我在</category><description>&lt;h2 id="这几天openclaw刷屏刷疯了"&gt;这几天openclaw刷屏刷疯了。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;我的一个95后小同事告诉我，墙外的世界对于这个AI工具的搜索指数是个位数，但在我东大内部的搜索指数是100多……这是不是意味着我们的创新虽然先天不足，但是浮躁地追新造神是与生俱来？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="有点欣喜"&gt;有点欣喜&lt;/h2&gt;
&lt;p&gt;这种智能化助理（至少在信息化事务操做层面）的普及应该已经是不可逆的趋势了。对于我这样的老科幻迷来说，那些赛博科技的日常场景就要在有生之年变为现实了？&lt;/p&gt;
&lt;h2 id="又有点担心"&gt;又有点担心&lt;/h2&gt;
&lt;p&gt;结合目前东西大国在算力与电力方面的阳谋暗战，我的脑海里最直接出现的一幕却是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有钱人用着小巧甚至隐形于可穿戴设备的高端智能体助理，可以得到即时、全面、精准的各类协助，生活中的便利与工作中的加持自然不必言说，正所谓赢到小儿麻痹的那种赢麻；&lt;/li&gt;
&lt;li&gt;穷逼由于买不起高性能终端，更付不起天价的算力月租，只能用着最简陋的手持终端（类似现在的手机），下个指令要么要等半天要么像现在的Siri似的答非所问，只能用来保持最简单温饱所需。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还有就是经典的那一个了：&lt;em&gt;&lt;strong&gt;你就是天降Neo，是贫民窟里的神童，自己能用废铜烂铁手搓HA100集群，直接黑进巨无霸大厂计算中心改写核心算法，为你所用，从此走上颠覆阶级之路……&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;当然了，还有国家级的最顶级智能体助理，那必须是军用的了。对，就是HALO中John的“小女朋友”Cortana那种了。
唔～～我是不是想太多了？？？&lt;/p&gt;</description></item><item><title>mac照片管理软件</title><link>https://blog.ifthen.site/posts/20260307-mac/</link><guid>https://blog.ifthen.site/posts/20260307-mac/</guid><pubDate>Sat, 07 Mar 2026 16:31:25 +0800</pubDate><category>数码折腾</category><description>&lt;h2 id="imageranger"&gt;ImageRanger&lt;/h2&gt;
&lt;p&gt;非常贵，直接pass。&lt;/p&gt;
&lt;h2 id="picsee"&gt;Picsee&lt;/h2&gt;
&lt;p&gt;试用版用了下，感觉还不错，可惜要收费 8元每月，68一年，168买断&lt;/p&gt;
&lt;p&gt;但没想到操作中不知道做了什么，出现了将nas上的很多照片和视频文件夹整个删除，但转移到本地隐藏目录的问题&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20260307-mac/img-2_hu_1a7846e6ed1ac634.webp" width="1400" height="407" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20260307-mac/img-3_hu_a9520e06b26944df.webp" width="1400" height="334" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20260307-mac/img-4_hu_3006c551a7abc5be.webp" width="1400" height="456" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;h2 id="inboard"&gt;Inboard&lt;/h2&gt;
&lt;p&gt;收费 128 RMB，看看apple store里的界面，感觉并不好用……&lt;/p&gt;
&lt;h2 id="pixea"&gt;pixea&lt;/h2&gt;
&lt;p&gt;免费，简介见下面的说明。不好用的地方在于，它需要将图片（或文件夹）&lt;strong&gt;拖入&lt;/strong&gt;软件界面内才能开始浏览……&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;&lt;a href="https://apps.apple.com/cn/app/pixea/id1507782672"&gt;Pixea&lt;/a&gt; 是一个极简现代的Mac看图软件，它采用了无边框的设计风格，它不仅仅是增强了Mac看图的功能，还提升了看图体验。当你在看图过程中停止移动光标时，Pixea会自动隐藏软件的工具栏和边框，让你可以完全专注到图片上，当想要切换下一张图片时，你可以移动鼠标工具栏会自动显示，或者你也可以使用它的快捷键，只需要点击一下向右的箭头就可以了，使用快捷键操作图片时，Pixea会保持无边框状态，展示最佳的图片效果&lt;br&gt;除了界面和操作体验好外，Pixea 还提供了很多实用设置，比如你可以设置图片打开的默认大小，有适合屏幕、拉伸、占满屏幕、实际大小等多种选项可选，也可以设置图片的打开方式是新窗口还是当前窗口等，这些都可以根据自己的需求进行调整，提高看图的效率&lt;/th&gt;
&lt;th style="text-align: left"&gt;&lt;img src="https://blog.ifthen.site/posts/20260307-mac/img-5_hu_c729bb1ee3c25a12.webp" width="1400" height="1033" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="xnview-mp"&gt;XnView MP&lt;/h2&gt;
&lt;p&gt;免费（商业用途需购买License），功能还是可以的，就是没上面的Picsee好看&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.xnview.com/en/"&gt;XnView MP&lt;/a&gt;不仅仅是一款适用于Windows和macOS看图工具，它也是一个流行的图片管理器，在Windows上已经有很多用户在使用它。XnView支持超过500种图片格式，包括JPG、PNG、TIFF、GIF、ICO等绝大部分格式，软件还支持你定制界面布局，只需简单拖动就能修改软件界面，比如你可以把文件夹放到左侧，把图片预览放到顶部等，使其更符合自己的需求，你还可以通过软件的标签页来同时查看多张图片，让看图像浏览器查看网页一样简单&lt;/p&gt;
&lt;h2 id="腾讯看图kantu"&gt;腾讯看图（Kantu）&lt;/h2&gt;
&lt;p&gt;属于基本功能尚可，但给人一种很简陋的感觉。当然，如果在意价格的话，这个免费的软件是堪用的。&lt;/p&gt;
&lt;h2 id="billfish"&gt;Billfish&lt;/h2&gt;
&lt;p&gt;界面风格和Picsee差不多，优势是免费免费免费！同样需要在软件中建立素材库，建立的方式比较灵活，我采用了索引的方式，第一次导入的耗时（照片分析）比较长。&lt;/p&gt;
&lt;p&gt;但是但是！到第一次导入后，新的图片资料文件夹产生后，需要手动添加导入，无法自动更新进系统，这还是不太方便的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;当完成创建素材库的步骤后，就可以开始进行素材的管理。为更方便用户灵活的管理素材内容，Billfish提供三种导入方式。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;1.&lt;strong&gt;剪切&lt;/strong&gt;和大家常用的资源管理器功能一致。当选择剪切时，软件会将选中的原路径的文件，移动到你创建的素材库所在的文件夹路径中。从而将零散的素材文件归集到一处，同时可以节省你的电脑磁盘空间。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;2.&lt;strong&gt;复制&lt;/strong&gt;顾名思义是将选中的文件复制到素材库所在的文件夹中，这样可以保证原路径的素材不会变动。通过软件的整理不会影响到原来&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;的文件，可以作为素材的一个备份选择，但是会额外占用磁盘空间。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;3.&lt;strong&gt;索引&lt;/strong&gt;即将原路径的文件，通过快捷链接的方式在软件中进行展示。进行索引时原始素材的路径和文件都不会发生变更。素材仅以快捷方式的方式存在于软件中。该方式适用于有巨量素材不在同一磁盘，但是又需要集中查找时使用。使用索引导入时，当索引的素材路径或文件名发生变更，软件内无法自动同步。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Plex在东芝43U67EBC电视上的使用</title><link>https://blog.ifthen.site/posts/20251211-plex-43u67ebc/</link><guid>https://blog.ifthen.site/posts/20251211-plex-43u67ebc/</guid><pubDate>Thu, 11 Dec 2025 22:15:15 +0800</pubDate><category>数码折腾</category><description>&lt;h2 id="第一种方法下载kodi配合plex插件"&gt;第一种方法：下载kodi，配合plex插件&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;br&gt;&lt;br&gt;首先，在kodi中文网（&lt;a href="http://www.kodiplayer.cn/download/"&gt;http://www.kodiplayer.cn/download/&lt;/a&gt;）或者kodi官网（&lt;a href="https://kodi.tv/download/android"&gt;https://kodi.tv/download/android&lt;/a&gt;）下载kodi的Android版app，目前最新的版本是19.1。&lt;br&gt;&lt;br&gt;按照kodi中文网的说法：&lt;br&gt;&amp;gt; 智能电视、电视盒子一般下载32位；安卓手机下载64位，装不上再装32位。&lt;br&gt;&lt;em&gt;我自己的经验是，在43U67上安装32位和64位感觉差不多……一样可以运行，也一样会出幺蛾子。&lt;/em&gt;&lt;br&gt;&lt;br&gt;下载完成后，将apk文件拷贝进U盘备用。&lt;br&gt;&lt;br&gt;同样，在kodi中文网的“kodi插件”栏目找到plex的插件，下载对应版本的Zip文件。同样拷贝至U盘备用。kodi中文网这部分有非常详细的教程展示如何在kodi中配置plex的插件，step by step即可。注意两点：&lt;br&gt;1.Kodi下Plex插件要在设置里开启allow HEVC(H265)播放H265的视频，settings - video - allow HEVC。&lt;br&gt;2.设置打开Kodi自动启动Plex，settings - advanced - start plex on kodi startup&lt;br&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-plex-43u67ebc/img-2_hu_92bbc0c884dd768b.webp" width="1400" height="891" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-plex-43u67ebc/img-3_hu_2328fa5301f0579a.webp" width="1400" height="637" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-plex-43u67ebc/img-4_hu_202fd911ff3830c2.webp" width="1400" height="1192" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;接下来，将U盘接上电视的USB接口。针对东芝43U67EBC，需要在智能系统主页打开“欢视助手”➡️“电视管理”➡️“打开U盘”；选择插入的U盘打开，选择“安装包”图标，找到拷贝进U盘的kodi安装包apk，使用遥控器的ok键执行安装。&lt;br&gt;在电视主页上启动kodi后，按照上文中提到的kodi中文网教程按照plex for kodi的插件。&lt;br&gt;需要注意的是：&lt;br&gt;1.打开“未知源“的插件安装许可；&lt;br&gt;2.选择“Install from zip file”的源文件位置时，选择根目录“Root filesystem”，在“/mnt/usb”目录下找到你的插件文件。&lt;br&gt;&lt;br&gt;&lt;strong&gt;😱但是，目前遇到的问题是：&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;kodi或者其他app运行过之后，再次运行kodi，基本都会显示黑屏，只能听见你用遥控器操作菜单的声音，看不见任何显示😭。&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;除非，使用欢视助手优化清理一下电视的OS，或者拔掉电源重新开机……&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-plex-43u67ebc/img-5_hu_6691759bf7f86c87.webp" width="1400" height="1050" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-plex-43u67ebc/img-6_hu_6df4e7ace0017c6a.webp" width="1400" height="1050" loading="lazy" decoding="async" alt="image"&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="第二种方法直接安装plex的app"&gt;第二种方法：直接安装plex的app&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;可以从&lt;a href="https://plex-for-android.cn.uptodown.com/android%E4%B8%8B%E8%BD%BD"&gt;https://plex-for-android.cn.uptodown.com/android&lt;/a&gt;下载对应的apk文件。&lt;br&gt;参照上文第一种方法，用U盘安装到电视即可。&lt;br&gt;从电视主页上运行app，登录plex账户，就可以爽了。&lt;br&gt;&lt;br&gt;&lt;strong&gt;😱But！还是有问题的。那就是每当你看完片子（或者看了一半想返回plex的主页重新选择或者就是不看了要去忙别的事儿），用遥控器的返回键时，整个plex就会崩溃……崩溃了，显示“plex已停止”。当然也不是不可以用，重新再进入一边就好了，之前看的片子也会记录上次播放的时间点。如果耐心一点，还可以用播放时的菜单功能“回到影片信息”退出播放，这时可以正常回到plex的影片海报页，避免程序崩溃跳出。&lt;/strong&gt;&lt;br&gt;&lt;br&gt;在张大妈上发布了上文后，有值友提醒plex的Android客户端也可以从apkpure这个网站下载，去看了一下确实。参见&lt;a href="https://apkpure.com/cn/plex-stream-movies-live-tv/com.plexapp.android"&gt;https://apkpure.com/cn/plex-stream-movies-live-tv/com.plexapp.android&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-plex-43u67ebc/img-7_hu_dde957c8e3c28b96.webp" width="1400" height="987" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>为知笔记本地Docker部署记录</title><link>https://blog.ifthen.site/posts/20251211-docker/</link><guid>https://blog.ifthen.site/posts/20251211-docker/</guid><pubDate>Thu, 11 Dec 2025 22:14:43 +0800</pubDate><category>数码折腾</category><description>&lt;p&gt;登录&lt;a href="https://hub.docker.com/r/wiznote/wizserver%E5%8F%AF%E4%BB%A5%E7%9C%8B"&gt;https://hub.docker.com/r/wiznote/wizserver&lt;/a&gt; 可以看到为知官方一个月前更新了主镜像，还有些特殊平台的镜像还是2天前更新的，看来目前还在干活。&lt;/p&gt;
&lt;h2 id="关键步骤"&gt;关键步骤&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Plain" data-lang="Plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;较新教程中的启动命令
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run --name wiz -it -d -v ~/wizdata:/wiz/storage -v /etc/localtime:/etc/localtime -p 80:80 -p 9269:9269/udp wiznote/wizserver
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#较老版本中的启动命令
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker run --name wiz -it -d -v /volume1/docker/wiz/data:/wiz/storage -v /etc/localtime:/etc/localtime -p 8888:80 -e SEARCH=true wiznote/wizserver
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解析各类教程中提供启动容器的命令，可以归纳出&lt;/p&gt;
&lt;p&gt;1.创建供挂载的工作目录：-v ~/wizdata:/wiz/storage，但下面这个挂载我不太理解，为什么要单独指定下系统的时间（校正？）；在Qnap的容器管理工具中好像也不太好操作。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;这个操作在Windows环境下的配置时不需要。&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Plain" data-lang="Plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/etc/localtime:/etc/localtime
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;/wiz/storage&lt;/code&gt; 是在为知的容器中的数据文件夹的路径，就是把这个文件夹映射到了群晖这个宿主机的指定目录中来了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;-V /etc/localtime:/etc/localtime&lt;/code&gt; 这个映射的目的是为了让容器中的系统时间跟宿主机的系统时间保持一致，不理解没关系，照着来就行了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;2.设置端口映射：-p 80:80 -p 9269:9269/udp&lt;/p&gt;
&lt;p&gt;3.如果需要，修改时区设置：&lt;/p&gt;
&lt;p&gt;For example, change the time zone to UTC/GMT+08:00&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Plain" data-lang="Plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker exec -it wiz /bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;4.还有一个较新的教程中没有提及的命令行参数：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;-e SEARCH=true&lt;/code&gt; 这个部分，是一个环境变量，就是开启为知笔记的搜索服务，不开的话，没办法对笔记进行搜索哦，当然，开启的话需要占用你更多的系统资源。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="找到宝藏"&gt;找到宝藏&lt;/h2&gt;
&lt;p&gt;在上述页面能够找到这样一个链接：&lt;/p&gt;
&lt;p&gt; 🔗&lt;a href="https://www.wiz.cn/docker.html"&gt;https://www.wiz.cn/docker.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;👆这个链接在为知官网已经找不到了，但从这个入口进去后，发现如下内容；&lt;/p&gt;
&lt;h3 id="reference"&gt;Reference&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.wiz.cn/docker-license"&gt;How to purchase the license&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wiz.cn/docker-https"&gt;How to set https&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wiz.cn/docker-collector-service"&gt;How to activate Collection Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wiz.cn/docker-sso"&gt;Sign in through OA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wiz.cn/docker-smtp"&gt;How to config the SMTP service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wiz.cn/introduction-docker-nas"&gt;Deploy on Synology NAS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wiz.cn/docker-customize"&gt;Personalize the homepage&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;每个链接都是很有用的东东，而且点击进去都是中文的哦，开不开心？惊不惊喜？😄&lt;/p&gt;
&lt;p&gt;&lt;em&gt;然鹅，其实很早为知用户群里有个朋友就发我过下面👇这个链接，我拷贝时出错了没注意，一直以为官网此页面已经404，其实好好的，只是入口隐藏🫥掉了而已……&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.wiz.cn/zh-cn/docker.html"&gt;https://www.wiz.cn/zh-cn/docker.html&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;一些Docker参考命令&lt;/p&gt;
&lt;h2 id="操作系统怎样进入到docker容器里面"&gt;操作系统怎样进入到docker容器里面&lt;/h2&gt;
&lt;p&gt;首先使用下面的命令，查看容器ID（CONTAINER ID）：&lt;/p&gt;
&lt;p&gt;docker ps -a&lt;/p&gt;
&lt;p&gt;然后用下面的命令进入容器，就可以使用bash命令浏览容器里的文件：&lt;/p&gt;
&lt;p&gt;docker exec -it [CONTAINER ID] bash&lt;/p&gt;
&lt;p&gt;有的镜像没有bash命令，可以用对应的shell，比如sh&lt;/p&gt;
&lt;p&gt;docker exec -it [CONTAINER ID] sh&lt;/p&gt;
&lt;h2 id="关于为知笔记从官方server迁移至私有server"&gt;关于为知笔记从官方server迁移至私有server&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-docker/img-2_hu_58f85e4520e01f43.webp" width="1400" height="3076" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-docker/img-3_hu_8c51c8b151822582.webp" width="1400" height="637" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;然后就可以输入私有服务账户进行转移了&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Wordpress初体验</title><link>https://blog.ifthen.site/posts/20251211-wordpress/</link><guid>https://blog.ifthen.site/posts/20251211-wordpress/</guid><pubDate>Thu, 11 Dec 2025 22:14:36 +0800</pubDate><category>数码折腾</category><description>&lt;p&gt;&lt;a href="https://post.smzdm.com/p/akmvk394/"&gt;零基础学NAS 篇四：QNAP配合WordPress让你拥有自己的秘密花园。&lt;/a&gt;（来自张大妈：@追梦天堂 ）中的介绍：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开APP应用装起来，wordpress和phpmyadmin都得装起来。&lt;/li&gt;
&lt;li&gt;登陆phpmyadmin。初始用户名和密码试下admin，admin或者root，root，进去以后新建一个数据库，名字自己定后面会用到&lt;/li&gt;
&lt;li&gt;点击wordpress，进入安装界面。这里简单，一步步往下做就行了。&lt;/li&gt;
&lt;li&gt;登陆。Hello World，欢迎大家来到新世界。&lt;/li&gt;
&lt;li&gt;选一个自己喜欢的主题。wp的主题 都很棒，&lt;/li&gt;
&lt;li&gt;提供几个必备的插件吧：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;1.Akismet 保护您的站点免受垃圾评论&lt;/p&gt;
&lt;p&gt;2All-in-One WP 备份功能，所有博客数据的迁移工具&lt;/p&gt;
&lt;p&gt;3Maintenance 维护工具，打开以后网站属于维护状态，外面的引擎搜索不到网站内容（此处省略一行字）。&lt;/p&gt;
&lt;h5 id="登录phpmyadmin时出现错误提示---mysqli_real_connect-hy0002002-no-such-file-or-directory"&gt;登录phpmyadmin时出现错误提示： mysqli_real_connect(): (HY000/2002): No such file or directory&lt;/h5&gt;
&lt;p&gt;搜索后得到一个解决方案：（来自：&lt;a href="https://stackoverflow.com/questions/41881123/mysqli-real-connect-hy000-2002-no-such-file-or-directory"&gt;https://stackoverflow.com/questions/41881123/mysqli-real-connect-hy000-2002-no-such-file-or-directory&lt;/a&gt;）——这个方法有可能导致其他问题，弃用-by farmer&lt;/p&gt;
&lt;p&gt;change localhost to 127.0.0.1 in /etc/phpmyadmin/config.inc.php&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Plain" data-lang="Plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$cfg[&amp;#39;Servers&amp;#39;][$i][&amp;#39;host&amp;#39;] = &amp;#39;127.0.0.1&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The reason for this is that pma tries to connect to the mysql.socket if you use localhost. If you use 127.0.0.1 PMA makes a TCP connection which should work.&lt;/p&gt;
&lt;h5 id="需要提前安装数据库mysql在新版qts50上原来系统自带的sql-server改为了需要从app-center单独安装的mariadb我使用的是10版本安装时要求设置的根密码后续登录phpmyadmin时需要用到"&gt;需要提前安装数据库mysql，在新版QTS5.0上，原来系统自带的SQL server改为了需要从App Center单独安装的MariaDB（我使用的是10版本），安装时要求设置的根密码后续登录phpmyadmin时需要用到。&lt;/h5&gt;
&lt;h5 id="打开phpmyadmin并登录后新建一个用于wordpress的数据库"&gt;打开phpmyadmin并登录后，新建一个用于Wordpress的数据库&lt;/h5&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-2_hu_fc9c1d9983d72398.webp" width="1400" height="987" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;/th&gt;
&lt;th&gt;新建数据库，这里我使用的字符集不知道对不对，我是参照登录主页上显示的默认值。&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-3_hu_42f6b3e96fdd571f.webp" width="1400" height="1285" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;点击打开Wordpress图标&lt;/td&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-4_hu_cdf84f046fcb0468.webp" width="1400" height="742" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;居然报错了2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-5_hu_88dd62e4440de1e4.webp" width="1400" height="185" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;按照他的要求改写协议&lt;br&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-6_hu_d66ddad09a70e962.webp" width="1400" height="76" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;➡️跳转到这个页面，居然同样还要再改一次&lt;/td&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-7_hu_119b0531a7226639.webp" width="1400" height="1155" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;选择显示语言&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-8_hu_6d52fa25cc7cdaec.webp" width="1400" height="1405" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="qnap新的wordpress-582的qpkg安装与之前的模式有点不同"&gt;Qnap新的Wordpress 5.8.2的qpkg安装与之前的模式有点不同&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;WordPress 5.8.2( 2022/01/07 )&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;The structure of WordPress 5.8.2 upgrade to the container base with docket image.&lt;/li&gt;
&lt;li&gt;The database has been changed from QTS build-in / qpkg to the container in WordPress QPKG.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;wp-content&amp;rdquo; folder has been changed from /share/Web/WordPress/wp-content to {QPKG_INSTALL_PATH}/data/web/WordPress/wp-content.
&lt;a href="https://wordpress.org/news/2021/11/wordpress-5-8-2-security-and-maintenance-release/"&gt;https://wordpress.org/news/2021/11/wordpress-5-8-2-security-and-maintenance-release/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以参考Qnap官方文档&lt;a href="https://www.qnap.com/zh-cn/how-to/faq/article/how-can-i-locate-the-php-files-of-wordpress-after-upgrading-wordpress-to-5-8-x-after-qts-5-0"&gt;How do I locate the configuration files of WordPress after upgrading WordPress to 5.8.x in QTS 5.0?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;也就是说完全不需要启动QTS自带的Web服务，也不需要安装MySql（MariaDB）和MyPhpAdmin……&lt;/p&gt;
&lt;p&gt;5.8.2安装完成后的安装目录是：/share/CACHEDEV1_DATA/.qpkg/WordPress，可惜文件及目录的权限有些迷一般的访问错误&lt;/p&gt;
&lt;p&gt;drwx&amp;mdash;&amp;mdash;  8 admin administrators 4096 2022-05-12 12:55 WordPress/&lt;/p&gt;
&lt;p&gt;$ sudo chmod -R 775 WordPress/&lt;/p&gt;
&lt;p&gt;$ sudo chown -R admin:administrators WordPress/&lt;/p&gt;
&lt;h5 id="当update平台插件以及主题时总是提示需要验证网站ftp凭证使用如下方法跳过"&gt;当update平台、插件以及主题时总是提示需要验证网站ftp凭证，使用如下方法跳过。&lt;/h5&gt;
&lt;p&gt;首先在wp-config.php中加入下面代码&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;/** add by Farmer for ignore FTP login */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;define(&amp;#34;FS_METHOD&amp;#34;, &amp;#34;direct&amp;#34;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;define(&amp;#34;FS_CHMOD_DIR&amp;#34;, 0777);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;define(&amp;#34;FS_CHMOD_FILE&amp;#34;, 0777);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;再执行&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;sudo chown -R Farmer:administrators data/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;chmod -R 777 data/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="重新来过"&gt;重新来过&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-9_hu_e1b92fc78df2edaa.webp" width="1400" height="866" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;br&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-10_hu_51c76c3b25e0e897.webp" width="1400" height="1170" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;1.新建php文件，写入如下代码&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Plain" data-lang="Plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;?phpecho phpinfo();
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后在浏览器访问该页面，搜索php.ini，&lt;/p&gt;
&lt;p&gt;**问题：**一台服务器的PHP程序通过localhost地址无法连接数据库，但是如果设置为127.0.0.1则可以正常连接，连接其他数据库服务器也正常。MySQL的权限设置正确，且通过mysql命令行客户端可以正常连接数据库。&lt;/p&gt;
&lt;p&gt;**分析：**这是典型的socket没有正确设置的情况。&lt;/p&gt;
&lt;p&gt;连接MySQL数据库有两种方式：TCP/IP（一般理解的端口的那种）和Unix套接字（一般叫socket或者sock）。大部分情况下，可以用localhost代表本机127.0.0.1，但是在MySQL连接时，二者不可混用，而且MySQL中权限设置中localhost与127.0.0.1也是分开设置的。当设置为127.0.0.1时，系统通过TCP/IP方式连接数据库；当设置为localhost时，系统通过socket方式连接数据库。&lt;/p&gt;
&lt;p&gt;**解决：首先要看本机MySQL的socket套接字文件在哪里，查看命令是：
**&lt;/p&gt;
&lt;p&gt;?&lt;/p&gt;
&lt;p&gt;|1|&lt;code&gt;mysqld&lt;/code&gt; &lt;code&gt;--verbose --help | grep socket&lt;/code&gt;|
| &amp;mdash;&amp;ndash; | &amp;mdash;&amp;ndash; |&lt;/p&gt;
&lt;p&gt;输出结果显示套接字文件的位置，比如：这台服务器显示的是&lt;/p&gt;
&lt;p&gt;?&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;1&lt;/th&gt;
&lt;th&gt;socket      /var/run/mysqld/mysqld.sock&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;然后修改php的配置文件php.ini与之对应起来就好了。&lt;/p&gt;
&lt;p&gt;找到这一项：&lt;/p&gt;
&lt;p&gt;?&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;1&lt;/th&gt;
&lt;th&gt;mysql.default_socket =&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一般来说这一项都是空的，改成：&lt;/p&gt;
&lt;p&gt;?&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;1&lt;/th&gt;
&lt;th&gt;mysql.default_socket = /var/run/mysqld/mysqld.sock&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里应写上一步查询到的文件，根据你的情况设置。至此php配置就修改好了，如果是CLI（命令行）方式或者CGI方式的话，立即就生效，如果是FASTCGI方式，需要重启一下fastcgi进程。&lt;/p&gt;
&lt;p&gt;作者：Qyou
链接：https://www.imooc.com/article/49171
来源：慕课网&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-11_hu_e55d0c4568a9444b.webp" width="1400" height="657" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;**5.重启nginx或者apache **
注： php7以上已经不支持mysql老旧的连接方式了，对于mysql.default_socket 选项是没有的&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-wordpress/img-12_hu_f1511d5d28e9f9ff.webp" width="1400" height="571" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;wordpress用户对应的主机名如果设置为%，无法解析为localhost，需要直接设置为localhost&lt;/p&gt;</description></item><item><title>QNAP威联通反向代理设置学习</title><link>https://blog.ifthen.site/posts/20251211-qnap/</link><guid>https://blog.ifthen.site/posts/20251211-qnap/</guid><pubDate>Thu, 11 Dec 2025 22:13:35 +0800</pubDate><category>数码折腾</category><description>&lt;p&gt;来自：&lt;a href="https://www.qnap.com.cn/zh-cn/how-to/tutorial/article/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E6%9D%A5%E6%94%B9%E8%BF%9B%E5%AE%89%E5%85%A8%E8%BF%9C%E7%A8%8B%E8%BF%9E%E6%8E%A5"&gt;威联通官方向导&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="定义"&gt;定义&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;反向代理是一种代理服务器，可代表客户端从一个或多个服务器检索资源。这些资源随后返回客户端，看起来好像源自反向代理服务器一样。通过反向代理，反向代理可通过特定端口而非真实系统端口访问 NAS。这可以防止系统端口公开，使整个系统更加安全。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;按照网友用户 @大大木头为知Docker部署做的教程中的说法：反向代理的作用是当用户访问某一个网络地址时，反向代理服务器会根据请求的情况选择拒绝，或向后端服务请求资源返回给用户。&lt;strong&gt;举个例子&lt;/strong&gt;：孩子跟妈妈说，我要喝水，妈妈拿了杯水递给孩子，妈妈就是反向代理服务器，要喝水是请求的动作，妈妈拿水给孩子是请求到的资源。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="要求"&gt;要求&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;路由器必须支持端口转发。&lt;/li&gt;
&lt;li&gt;QNAP NAS 必须设置为使用 myQNAPcloud 并具有 DDNS 域名。&lt;/li&gt;
&lt;li&gt;QNAP NAS 必须具有 SSL 证书。这些设置可以在 myQNAPcloud &amp;gt;“SSL Certificate”（SSL 证书）中进行。&lt;/li&gt;
&lt;li&gt;仅安装了 QTS 5.0（和更高版本）的 QNAP NAS 支持反向代理。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="将https访问的端口进行转换保护"&gt;将https访问的端口进行转换保护&lt;/h2&gt;
&lt;p&gt;例如，使用反向代理和 myQNAPcloud DDNS 域名访问 QNAP NAS&lt;/p&gt;
&lt;p&gt;（QNAP NAS Web 是管理 NAS 的入口，通常使用 &lt;a href="https://mynas.myqnapcloud.com/"&gt;https://mynas.myqnapcloud.com/&lt;/a&gt; 和 HTTPS 默认端口 443 进行访问，您可以使用反向代理使连接更安全。）&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-qnap/img-2_hu_66ed07b143fee2bd.webp" width="1400" height="644" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;em&gt;我理解图上的443应该是下面步骤中说的修改为2000&lt;/em&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-qnap/img-3_hu_666aac888cf3952b.webp" width="1400" height="1218" loading="lazy" decoding="async" alt="image"&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. 转到“Control Panel”（控制台）&amp;gt;“System”（系统）&amp;gt;“General Settings”（常规设置）&amp;gt;“System Administration”（系统管理）。&lt;br&gt;2. 选中“Enable secure connection (HTTPS)”（启用安全连接 (HTTPS)）&lt;br&gt;3. 将端口号更改为非预留端口号（例如：2000）。&lt;br&gt;&lt;/td&gt;
&lt;td&gt;1. 转到“Control Panel”（控制台）&amp;gt;“Network &amp;amp; File”（网络 &amp;amp; 文件）&amp;gt;“Network Access”（网络访问）&amp;gt;“Reverse Proxy”（反向代理）。&lt;br&gt;2. 单击“Add”（添加）。&lt;br&gt;此时会出现“Add Reverse Proxy Rule”（添加反向代理规则）窗口。&lt;br&gt;3. 配置反向代理设置。 &lt;br&gt;&lt;br&gt;4. 协议：选择 HTTPS&lt;br&gt;5. 域：使用 myQNAPcloud DDNS 域名。&lt;br&gt;6. 端口号：使用 443&lt;br&gt;7. 配置目标设置。 &lt;br&gt;8. 协议：选择 HTTPS。&lt;br&gt;9. 端口号：使用在步骤 3 中输入的端口号（在本例中为：2000）。&lt;br&gt;10. 单击“Apply”（应用）。&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最后，登录到路由器的控制台，并配置此端口（在本例中为：2000）。&lt;code&gt;😝和直接在Route上做个NAT有啥区别？&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="将http访问转换成https和不同端口的访问"&gt;将http访问转换成https和不同端口的访问&lt;/h2&gt;
&lt;p&gt;例如，使用反向代理和 myQNAPcloud DDNS 域名访问 QNAP NAS Web 服务&lt;/p&gt;
&lt;p&gt;（QNAP NAS 可以托管各种容器和可通过 Internet 访问的其他服务。通过反向代理，可以使这些连接更安全。）&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-qnap/img-4_hu_34667ff79902e967.webp" width="1400" height="431" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-qnap/img-5_hu_4462121c9395f64.webp" width="1400" height="1211" loading="lazy" decoding="async" alt="image"&gt;&lt;br&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;注意：本教程以具有 WordPress 容器的 Container Station 为例。&lt;br&gt;&lt;br&gt;1. 打开 Container Station。&lt;br&gt;2. 转到 WordPress 容器。&lt;br&gt;3. 在 URL 中，容器端口号在 IP 地址后面（在本例中为：10084）。&lt;/td&gt;
&lt;td&gt;1. 转到“Control Panel”（控制台）&amp;gt;“Network &amp;amp; File”（网络 &amp;amp; 文件）&amp;gt;“Network Access”（网络访问）&amp;gt;“Reverse Proxy”（反向代理）。&lt;br&gt;2. 单击“Add”（添加）。&lt;br&gt;此时会打开“Add Reverse Proxy Rule”（添加反向代理规则）窗口。&lt;br&gt;3. 配置反向代理设置。 &lt;br&gt;4. 协议：选择 HTTPS&lt;br&gt;5. 域：使用 myQNAPcloud DDNS 域名。&lt;br&gt;6. 端口号：使用 443&lt;br&gt;7. 配置目标设置。 &lt;br&gt;8. 协议：选择 HTTPS。（&lt;em&gt;此处官网原文写错了，按照图上显示应该是HTTP&lt;/em&gt;）&lt;br&gt;9. 端口号：使用容器的端口号（在本例中为：10084）。&lt;br&gt;10. 单击“Apply”（应用）。&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;登录到路由器的控制台，并配置此端口（在本例中为：10084）。现在即可通过 myQNAPcloud DDNS 域名访问由容器托管的 WordPress 站点，将 HTTPS 默认端口 443 改为设置的端口 10084。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结：&lt;/h2&gt;
&lt;p&gt;感觉配置了反向代理与简单的路由器上的端口转发的区别在于：后者是端口直接穿透的，前者是通过反向代理服务转换的，可以通过访问控制列表规则配置文件进一步加强保护，而更重要的是可以使用反向代理服务器的SSL证书来使得内部web服务获得https的安全认证。&lt;/p&gt;
&lt;p&gt;比如在bitwarden这个场景中，反向代理起的作用是解决bit自己的web服务没有SSL证书认证的问题，利用反向代理借用了NAS域名附带的SSL认证，从而达到启用https的目的。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-qnap/img-6_hu_fa94e16098b9179d.webp" width="1400" height="1232" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;h2 id="参考http-与-https-的区别"&gt;参考：HTTP 与 HTTPS 的区别&lt;/h2&gt;
&lt;p&gt;参见——&lt;a href="https://www.runoob.com/w3cnote/http-vs-https.html"&gt;https://www.runoob.com/w3cnote/http-vs-https.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTTPS&lt;/strong&gt;（Hypertext Transfer Protocol Secure：超文本传输安全协议）是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信，但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的，是提供对网站服务器的身份认证，保护交换数据的隐私与完整性。&lt;/p&gt;
&lt;p&gt;HTTPS 默认工作在 TCP 协议443端口，它的工作流程一般如以下方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1、TCP 三次同步握手&lt;/li&gt;
&lt;li&gt;2、客户端验证服务器数字证书&lt;/li&gt;
&lt;li&gt;3、DH 算法协商对称加密算法的密钥、hash 算法的密钥&lt;/li&gt;
&lt;li&gt;4、SSL 安全加密隧道协商完成&lt;/li&gt;
&lt;li&gt;5、网页以加密的方式传输，用协商的对称加密算法和密钥加密，保证数据机密性；用协商的hash算法进行数据完整性保护，保证数据不被篡改。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="http-与-https-区别"&gt;HTTP 与 HTTPS 区别&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;HTTP 明文传输，数据都是未加密的，安全性较差，HTTPS（SSL+HTTP） 数据传输过程是加密的，安全性较好。&lt;/li&gt;
&lt;li&gt;使用 HTTPS 协议需要到 CA（Certificate Authority，数字证书认证机构） 申请证书，一般免费证书较少，因而需要一定费用。证书颁发机构如：Symantec、Comodo、GoDaddy 和 GlobalSign 等。&lt;/li&gt;
&lt;li&gt;HTTP 页面响应速度比 HTTPS 快，主要是因为 HTTP 使用 TCP 三次握手建立连接，客户端和服务器需要交换 3 个包，而 HTTPS除了 TCP 的三个包，还要加上 ssl 握手需要的 9 个包，所以一共是 12 个包。&lt;/li&gt;
&lt;li&gt;http 和 https 使用的是完全不同的连接方式，用的端口也不一样，前者是 80，后者是 443。&lt;/li&gt;
&lt;li&gt;HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议，所以，要比较 HTTPS 比 HTTP 要更耗费服务器资源。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Qnap搭建MT-photos</title><link>https://blog.ifthen.site/posts/20251211-qnap-mt-photos/</link><guid>https://blog.ifthen.site/posts/20251211-qnap-mt-photos/</guid><pubDate>Thu, 11 Dec 2025 22:11:21 +0800</pubDate><category>数码折腾</category><description>&lt;p&gt;一次非常不成功的照片管理docker的搭建经历……&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-qnap-mt-photos/img-2_hu_eee5e1c9d8313d07.webp" width="1400" height="1612" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;参考&lt;a href="https://hub.docker.com/_/postgres"&gt;https://hub.docker.com/_/postgres&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;参考&lt;a href="https://post.smzdm.com/p/aev0geo3/"&gt;https://post.smzdm.com/p/aev0geo3/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;参考&lt;a href="https://mtmt.tech/"&gt;https://mtmt.tech/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="尝试单独搭建postgres数据库的container"&gt;尝试单独搭建Postgres数据库的container&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Plain" data-lang="Plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ docker run -d \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name some-postgres \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e POSTGRES_PASSWORD=REDACTED_POSTGRES_PASSWORD \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e PGDATA=/var/lib/postgresql/data/pgdata \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /custom/mount:/var/lib/postgresql/data \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; postgres
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="单独搭建mt-photos的container"&gt;单独搭建MT-photos的Container&lt;/h2&gt;
&lt;p&gt;新建并启动容器：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Plain" data-lang="Plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name=&amp;#34;mt-photos&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /appdata/mt_photos/config:/config \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /appdata/mt_photos/upload:/upload \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /photos/folder1:/folder1 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /photos/folder2:/folder2 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 8063:8063 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e TZ=&amp;#34;Asia/Shanghai&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e POSTGRES_HOST=&amp;#34;REDACTED_DB_HOST&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e POSTGRES_PORT=&amp;#34;5432&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e POSTGRES_DATABASE=&amp;#34;postgres&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e POSTGRES_USER=&amp;#34;postgres&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e POSTGRES_PASSWORD=&amp;#34;REDACTED_POSTGRES_PASSWORD&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --restart=&amp;#34;unless-stopped&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mtphotos/mt-photos:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;变量名称&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;作用&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;值&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;例子&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RAW_SUPPORT&lt;/td&gt;
&lt;td&gt;开启raw格式照片的支持&lt;/td&gt;
&lt;td&gt;默认为空，填open为开启raw格式支持&lt;/td&gt;
&lt;td&gt;RAW_SUPPORT=open&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MT_SERVER_PORT&lt;/td&gt;
&lt;td&gt;指定MT Photos服务端的端口&lt;/td&gt;
&lt;td&gt;默认为8063&lt;/td&gt;
&lt;td&gt;MT_SERVER_PORT=8063&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SCAN_INTERVAL&lt;/td&gt;
&lt;td&gt;指定自动扫描图库的间隔时间，单位为分钟&lt;/td&gt;
&lt;td&gt;默认为15，最大支持9999&lt;/td&gt;
&lt;td&gt;SCAN_INTERVAL=60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAX_CORE&lt;/td&gt;
&lt;td&gt;指定人脸识别时调用的最大CPU线程数&lt;/td&gt;
&lt;td&gt;默认为CPU线程数的一半&lt;/td&gt;
&lt;td&gt;MAX_CORE=2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-&amp;ndash;&lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REDIS_HOST&lt;/td&gt;
&lt;td&gt;指定要连接的Redis的地址&lt;/td&gt;
&lt;td&gt;默认为127.0.0.1&lt;/td&gt;
&lt;td&gt;REDIS_HOST=127.0.0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REDIS_PORT&lt;/td&gt;
&lt;td&gt;指定要连接的Redis的端口号&lt;/td&gt;
&lt;td&gt;默认为6379&lt;/td&gt;
&lt;td&gt;REDIS_PORT=6379&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REDIS_PASSWORD&lt;/td&gt;
&lt;td&gt;指定要连接的Redis的密码&lt;/td&gt;
&lt;td&gt;默认为空&lt;/td&gt;
&lt;td&gt;REDIS_PASSWORD=REDACTED_REDIS_PASSWORD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-&amp;ndash;&lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POSTGRES_HOST&lt;/td&gt;
&lt;td&gt;指定要连接的PostgreSQL数据库的地址&lt;/td&gt;
&lt;td&gt;默认为127.0.0.1&lt;/td&gt;
&lt;td&gt;POSTGRES_HOST=127.0.0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POSTGRES_PORT&lt;/td&gt;
&lt;td&gt;指定要连接的PostgreSQL数据库的端口号&lt;/td&gt;
&lt;td&gt;5432&lt;/td&gt;
&lt;td&gt;POSTGRES_PORT=5432&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POSTGRES_USER&lt;/td&gt;
&lt;td&gt;指定要连接的PostgreSQL数据库的用户名&lt;/td&gt;
&lt;td&gt;postgres&lt;/td&gt;
&lt;td&gt;POSTGRES_USER=postgres&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POSTGRES_PASSWORD&lt;/td&gt;
&lt;td&gt;指定要连接的PostgreSQL数据库的密码&lt;/td&gt;
&lt;td&gt;空&lt;/td&gt;
&lt;td&gt;POSTGRES_PASSWORD=REDACTED_POSTGRES_PASSWORD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POSTGRES_DATABASE&lt;/td&gt;
&lt;td&gt;指定要连接的PostgreSQL数据库的数据库名&lt;/td&gt;
&lt;td&gt;postgres&lt;/td&gt;
&lt;td&gt;POSTGRES_DATABASE=postgres&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-&amp;ndash;&lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PUID&lt;/td&gt;
&lt;td&gt;指定/upload目录的用户uid&lt;/td&gt;
&lt;td&gt;默认为0&lt;/td&gt;
&lt;td&gt;PUID=1000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PGID&lt;/td&gt;
&lt;td&gt;指定/upload目录的用户gid&lt;/td&gt;
&lt;td&gt;默认为0&lt;/td&gt;
&lt;td&gt;PGID=100&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>2022年五一NAS折腾记录</title><link>https://blog.ifthen.site/posts/20251211-2022-nas/</link><guid>https://blog.ifthen.site/posts/20251211-2022-nas/</guid><pubDate>Thu, 11 Dec 2025 22:10:25 +0800</pubDate><category>数码折腾</category><description>&lt;h2 id="movie-robot"&gt;Movie-robot&lt;/h2&gt;
&lt;p&gt;作者的更新速度非常快，五一期间起码更新了5个版本😏。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;一个插曲：movie-robot和一个叫nas-tools的掐起来了，前者免费一个月后要收费了，然后就出了个后者说开源，看上去功能界面都很类似。然后就有人出来说还是Jackett+Sonarr+radarr，老牌成熟&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;docker版部署还是很简单的，参考下面的配置截图，关键点就这几个：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;注意在环境参数这里要填写作者发放的license key&lt;/li&gt;
&lt;li&gt;端口号使用作者默认的1329，如果需要外网访问，还需要在qnap上对宽带路由器做一下NAT&lt;/li&gt;
&lt;li&gt;挂载本地的两个文件夹，尤其是/video目录，这是所有下载的视频文件的存放路径的根目录（感觉应该也可以使用其他名字，也可以直指定多个不同的目录，在后续的下载规则配置中用于存放不同的归类视频）&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-2_hu_ab1d257432b422cd.webp" width="1400" height="1065" loading="lazy" decoding="async" alt="image"&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-3_hu_59541ca1793282d5.webp" width="1400" height="714" loading="lazy" decoding="async" alt="image"&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-4_hu_c5bdfc4ba734b410.webp" width="1400" height="273" loading="lazy" decoding="async" alt="image"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-5_hu_3b26f4f209e97e75.webp" width="1400" height="260" loading="lazy" decoding="async" alt="image"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-6_hu_7d990340a2ddbb9a.webp" width="1400" height="337" loading="lazy" decoding="async" alt="image"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="heimdall"&gt;Heimdall&lt;/h2&gt;
&lt;p&gt;/share/Container/heimdall/config&lt;/p&gt;
&lt;p&gt;/config&lt;/p&gt;
&lt;p&gt;TZ=Asia/Shanghai&lt;/p&gt;
&lt;p&gt;p:80 p:8998&lt;/p&gt;
&lt;p&gt;p:443 p:8997&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="lskypro"&gt;lskypro&lt;/h2&gt;
&lt;p&gt;官网：https://docs.lsky.pro&lt;/p&gt;
&lt;p&gt;GitHub仓库：https://github.com/lsky-org/lsky-pro&lt;/p&gt;
&lt;p&gt;官方GitHub的讨论区里提到的Docker部署教程：https://github.com/lsky-org/lsky-pro/discussions/373，给出的docker名称为halcyonazure/lsky-pro-docker（https://hub.docker.com/r/halcyonazure/lsky-pro-docker）。给出的部署方法包括：&lt;/p&gt;
&lt;h2 id="直接使用docker-hub拉取使用"&gt;直接使用Docker Hub拉取使用&lt;/h2&gt;
&lt;p&gt;该镜像为自己维护的镜像，会每周拉取一次最新的代码进行构建&lt;/p&gt;
&lt;p&gt;参考了之前 &lt;a href="https://github.com/lsky-org/lsky-pro/issues/256"&gt;#256&lt;/a&gt; 里面的方法，对2.0正式版本也自己写了个Dockfile。在Dockerfile里面直接修改了PHP上传图片100M的限制，现在应该是可以开箱即用的。&lt;/p&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it --name&lt;span class="o"&gt;=&lt;/span&gt;lskypro -p 9080:80 -d halcyonazure/lsky-pro-docker:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="nginx反向代理设置"&gt;Nginx反向代理设置&lt;/h2&gt;
&lt;p&gt;如果使用Nginx反代并设置了HTTPS的话，会出现图片加载错误的情况，解决办法参考 &lt;a href="https://github.com/lsky-org/lsky-pro/issues/317"&gt;#317&lt;/a&gt; 在32行添加对应代码后即可成功使用&lt;/p&gt;
&lt;p&gt;在Docker内可直接执行以下指令来修改文件内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; -it lskypro sed -i &lt;span class="s1"&gt;&amp;#39;32 a \\\Illuminate\\Support\\Facades\\URL::forceScheme(&amp;#39;&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https&amp;#39;&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;);&amp;#39;&lt;/span&gt; /var/www/html/app/Providers/AppServiceProvider.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;h2 id="通过dockerfile自己编译镜像"&gt;&lt;em&gt;通过Dockerfile自己编译镜像&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;该方法是参考了 &lt;strong&gt;#256&lt;/strong&gt; 里面同样需要感谢的大哥的Dockerfile修改来的&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;下载 &lt;strong&gt;Release&lt;/strong&gt;里面最新版的zip压缩包解压&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;在解压缩后的文件夹内创建&lt;strong&gt;000-default.conf&lt;/strong&gt;、&lt;strong&gt;Dockerfile&lt;/strong&gt;和&lt;strong&gt;entrypoint.sh&lt;/strong&gt;文件，并分别写入对应内容。&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;使用Dockerfile进行编译进行编译即可。&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h2 id="用docker-compose部署的方法"&gt;用Docker-Compose部署的方法&lt;/h2&gt;
&lt;p&gt;使用MySQL来作为数据库的话可以参考如下配置&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;lskypro&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;halcyonazure/lsky-pro-docker:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;lskypro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;lskypro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/data/lsky/lsky-data:/var/www/html&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;9080:80&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;lsky-net&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;mysql-lsky&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;mysql:5.7.22&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 主机名，可作为子网域名填入安装引导当中&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;mysql-lsky&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 容器名称&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;mysql-lsky&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 修改加密规则&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--&lt;span class="l"&gt;default-authentication-plugin=mysql_native_password&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/data/lsky/mysql/data:/var/lib/mysql&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/data/lsky/mysql/conf:/etc/mysql&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/data/lsky/mysql/log:/var/log/mysql&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;REDACTED_DB_ROOT_PASSWORD&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 数据库root用户密码&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;lsky-data&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 给lsky-pro用的数据库名称&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;lsky-net&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;lsky-net&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在安装的时的Install界面&lt;code&gt;数据库连接地址&lt;/code&gt;填入&lt;code&gt;hostname&lt;/code&gt;即可&lt;/p&gt;
&lt;p&gt;还可以参考&lt;a href="https://laosu.ml/2021/07/02/%E5%BC%80%E6%BA%90%E7%9A%84%E5%85%B0%E7%A9%BA%E5%9B%BE%E5%BA%8ALskyPro/?highlight=lsky"&gt;老苏的博客-开源的兰空图床LskyPro&lt;/a&gt;（这位大佬自己构建了一个docker镜像：https://hub.docker.com/r/wbsu2003/lskypro）&lt;/p&gt;
&lt;p&gt;对比一下各种docker的创建命令，得出自己的一个判断：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it --name&lt;span class="o"&gt;=&lt;/span&gt;lskypro -p 9080:80 -d halcyonazure/lsky-pro-docker:latest &lt;span class="c1"&gt;#官网讨论区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Docker仓库中的写法&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name lsky-pro &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --restart unless-stopped &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 9080:80 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /path-to-data:/var/www/html &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; halcyonazure/lsky-pro-docker:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it -name&lt;span class="o"&gt;=&lt;/span&gt;lsky-pro2.0 -v lsky-data:/var/www/html -p 8080:80 zyugat/lskypro:2.0。#Qnap容器管理app中搜索第一位
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run --name&lt;span class="o"&gt;=&lt;/span&gt;lskypro -p 4080:80 -v /var/www/html:/var/www/html wbsu2003/lskypro:v1 &lt;span class="c1"&gt;#‘老苏的博客‘的版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;创建这个容器需要：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;配置映射宿主Nas主机的端口&lt;/li&gt;
&lt;li&gt;在Nas上挂载html目录。 /share/Container/lskypro/www-html&lt;/li&gt;
&lt;li&gt;/share/Container/mysql/data&lt;/li&gt;
&lt;li&gt;指定使用的镜像tag（tag的含义也在这次的折腾中有了更深刻的认识😄）&lt;br&gt;
第一次启动容器后自动停止了，重启后也不知道为啥就开始运行了。进入设置页面后，root/REDACTED_DB_PASSWORD，REDACTED_EMAIL/REDACTED_PASSWORD，但是无法创建数据库。使用Qnap的软件store安装MariaDB后无法继续，我刚开始猜想是lskypro不支持MariaDB，后来发现我在设置数据库的连接配置时参数也是错误的，但有文档确实提到lskypro不支持MariaDB。&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-7_hu_9c33c56b2422d753.webp" width="1400" height="400" loading="lazy" decoding="async" alt="image"&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-8_hu_db3413734d9222a7.webp" width="1400" height="138" loading="lazy" decoding="async" alt="image"&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-9_hu_c7d1480a2b8f28d8.webp" width="1400" height="1722" loading="lazy" decoding="async" alt="image"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-10_hu_19b9c9c070371b0f.webp" width="1400" height="1716" loading="lazy" decoding="async" alt="image"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-2022-nas/img-11_hu_962f33c67e0ab879.webp" width="1400" height="856" loading="lazy" decoding="async" alt="image"&gt;&lt;/td&gt;
&lt;td&gt;&lt;br&gt;这个图片用的图床的链接&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;以下是我自己使用并成功部署的YAML文件（所有#及之后的注释字符要删掉，否则Docker Compose验证文件时会报错）&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;lskypro&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;halcyonazure/lsky-pro-docker:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;lskypro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;lskypro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/share/Container/lskypro/www-html:/var/www/html&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;7280:80&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;lsky-net&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;mysql-lsky&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;mysql:5.7.22&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 主机名，可作为子网域名填入安装引导当中&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;mysql-lsky&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 容器名称&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;mysql-lsky&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 修改加密规则&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--&lt;span class="l"&gt;default-authentication-plugin=mysql_native_password&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/share/Container/mysql/data:/var/lib/mysql&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/share/Container/mysql/conf:/etc/mysql&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/share/Container/mysql/log:/var/log/mysql&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;REDACTED_DB_ROOT_PASSWORD&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 数据库root用户密码&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;lsky-db&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 给lsky-pro用的数据库名称&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;lsky-net&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;lsky-net&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;hr&gt;</description></item><item><title>更新换代：红米RedMi4K27“显示器</title><link>https://blog.ifthen.site/posts/20251211-redmi4k27/</link><guid>https://blog.ifthen.site/posts/20251211-redmi4k27/</guid><pubDate>Thu, 11 Dec 2025 22:09:46 +0800</pubDate><category>数码折腾</category><description>&lt;h2 id="为什么"&gt;为什么&lt;/h2&gt;
&lt;p&gt;原来用的AOC I2251F终于快要寿终正寝了。屏幕的横向三分之二处出现了一条从上至下的红线，非常扎眼。度娘和那啥都去搜了下，发现一般是所谓COF的问题。看了几个名为“修好就是几分钟的事儿”的视频后，我放弃了自己动手修理的念头……加上家里娃今年7年级了，用电脑的需求明显增长，保护视力很重要啊（这个理由很中肯吧）。&lt;/p&gt;
&lt;p&gt;然后开始疯狂张大妈，经过两晚直至半夜的小视频思想洗礼，在科学和理性的挣扎中（主要是荷包的灵魂审视下）选择了红米爆款RedMi RMMNT27NU。&lt;/p&gt;
&lt;h2 id="具体参数如下说实话这素质这价格还有啥不满足呢"&gt;具体参数如下：（说实话，这素质这价格还有啥不满足呢）&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-2_hu_8252a2348f2357df.webp" width="1400" height="781" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-3_hu_cbc8569cf89ad920.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="img-2.png"&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-4_hu_12fec470772df253.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;就是和自家早先发布的同类型小米旗舰款相比，也一点不怵&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-5_hu_75a33f5f835b67cc.webp" width="1400" height="711" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;h2 id="开箱实录"&gt;开箱实录&lt;/h2&gt;
&lt;p&gt;以上图片借用了知乎大神帖子素材，还请海涵！下面为开箱记录图片：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-6_hu_80d941be8077c930.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-7_hu_1de16e68df780591.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;包装感觉不错，简洁明了而不失精致感。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-8_hu_9cb4f1c3dee6adea.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-9_hu_795d3b4bd60b8587.webp" width="1400" height="1866" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-10_hu_b4d0280a9dfd5096.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-11_hu_88db6637cc7e8481.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-12_hu_3ae2686d92c33aeb.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-13_hu_dffdc415b36ee1db.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;底座和支架虽然材质一般，但是做工还是用心了。尤其底座上那个说明贴纸，很讨巧和吸引眼球。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-14_hu_a4c7a6a3cfa68b65.webp" width="1400" height="1050" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-15_hu_656e28a028f575c9.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;本体观感很干净，舒服。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-16_hu_30dfd3dcffe749f5.webp" width="1400" height="1867" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;安装VESA支架也很简单，只要将附送的支架旋紧预留的孔位，就可以轻松装配，即使不是配套的安装板。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251211-redmi4k27/img-17_hu_c49092230d04514a.webp" width="1400" height="1050" loading="lazy" decoding="async" alt="image"&gt;&lt;/p&gt;
&lt;h2 id="安装完成满意"&gt;安装完成，满意！&lt;/h2&gt;
&lt;p&gt;至于显示效果，我不是专业人员也没有专业设备，不好乱说了。不过就我的使用感受来说，比原来的AOCI225FW要好太多了。For Mac模式对macbook用户很实用，sRBG模式让我这种摄影爱好者在修照片的时候也感觉似乎更有专业的味道了😄。老实说，普通人应该分辨不出号称的10.7亿色彩域有多大的区别。但是4K的分辨率可是真的让整个屏幕的文本显示细腻度肉眼可见的上升了不止一个档次。那个低蓝光模式，在我看来就是发黄的厉害，是非常厉害，好几倍iOS夜览效果的意思。应该效果很好吧🙄️。&lt;/p&gt;
&lt;p&gt;总之，这个价格，还是很值的。&lt;/p&gt;</description></item><item><title>笔记软件的选择探究</title><link>https://blog.ifthen.site/posts/20251108-note-app-choice/</link><guid>https://blog.ifthen.site/posts/20251108-note-app-choice/</guid><pubDate>Sat, 08 Nov 2025 18:57:36 +0800</pubDate><category>效率笔记</category><description>&lt;h2 id="wiz为知的私有化部署缺陷"&gt;wiz为知的私有化部署缺陷&lt;/h2&gt;
&lt;p&gt;wiz为知的私有化部署模式，由于网页收藏功能需要单独联系客服（付费）开通，而且其底层逻辑是通过官方的收藏服务在官方云端和私有部署端同时保存收藏的网络文章，所以一旦官方停止服务，私有化部署的服务端就只能提供编写笔记的功能了。看下来价值不大。详见：https://www.wiz.cn/zh-cn/docker-collector-service&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ifthen.site/posts/20251108-note-app-choice/img-2_hu_cf69290e6e81f51c.webp" width="1400" height="1916" loading="lazy" decoding="async" alt="5koN5jnmZ4mEl-psz4SUuLTreeLgDWH6q_oJkP7hp30.png"&gt;
&lt;img src="https://blog.ifthen.site/posts/20251108-note-app-choice/img-3_hu_cbd53f79885863ae.webp" width="1400" height="837" loading="lazy" decoding="async" alt="nyD7sj_E-3EKG4P5iPsuVrYUfxvnzmMkugHLTbs01Vg.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="trilium的缺陷"&gt;Trilium的缺陷&lt;/h2&gt;
&lt;p&gt;没有移动端的客户端app，只能使用功能有限的网页版前端界面&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="思源私有化部署的缺陷"&gt;思源私有化部署的缺陷&lt;/h2&gt;
&lt;p&gt;docker部署版只支持浏览器访问，不支持桌面和移动客户端；不支持导出 PDF、HTML 和 Word 格式；不支持导入 Markdown 文件&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="joplin在威联通部署docker版同步server"&gt;Joplin在威联通部署docker版同步server&lt;/h2&gt;
&lt;p&gt;威联通部署yaml脚本文件，但部署后一直报用户权限无法读写文件方面的错&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Plain" data-lang="Plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;version: &amp;#39;3&amp;#39; # 最新版Docker Compose可删除此行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; db:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: postgres:16
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; user: 999:999
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; volumes:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - /share/Container/joplin/postgresql/data:/var/lib/postgresql/data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - &amp;#34;5432:5432&amp;#34; # 左边的端口可以更换，右边不要动！
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; restart: unless-stopped
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; environment:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - POSTGRES_PASSWORD=REDACTED_SECRET # 密码，可自定义
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - POSTGRES_USER=admin # 用户名，可自定义
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - POSTGRES_DATABASE=joplin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - TZ=Asia/Shanghai
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; app:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: joplin/server:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; user: 0:0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; depends_on:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - db
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - &amp;#34;22300:22300&amp;#34; # 左边的端口可以更换，右边不要动！
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; restart: unless-stopped
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; environment:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - APP_PORT=22300
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - APP_BASE_URL=https://myqnas777.mycloudnas.com:22301 # 改成反代的域名
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - DB_CLIENT=pg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - POSTGRES_PASSWORD=REDACTED_SECRET # 与上面的密码对应！
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - POSTGRES_DATABASE=joplin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - POSTGRES_USER=admin # 与上面的用户名对应！
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - POSTGRES_PORT=5432 # 与上面部分端口映射冒号右边的对应！
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - POSTGRES_HOST=db
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - TZ=Asia/Shanghai
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用上面的脚本，&lt;span style="color: rgb(224, 62, 45);"&gt;postgres数据库一直报错&lt;/span&gt;，启动不起来。错误信息大致是没有权限写外挂的NAS文件目录。其中还尝试了给app和数据库都赋了权（user:999:999等）。&lt;/p&gt;
&lt;p&gt;张大妈有一篇分开安装的文里面在postgres的部署参数配置时多给了一个，还未尝试分开这样安装和多出来的参数。&lt;/p&gt;
&lt;p&gt;参见：https://post.smzdm.com/p/avp6re8m/&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;变量：POSTGRES_HOST&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;值：nas的ip地址&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;最后在王大神启发下，决定用威联通自身提供的&lt;/span&gt;&lt;span style="color: rgb(224, 62, 45);"&gt;WebDAV服务完成同步&lt;/span&gt;，并配置成功。不过，要注意：同步目标的url需要域名+反向代理端口+具体目录。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>2017感受总结</title><link>https://blog.ifthen.site/posts/20171229-2017/</link><guid>https://blog.ifthen.site/posts/20171229-2017/</guid><pubDate>Fri, 29 Dec 2017 23:42:00 +0800</pubDate><category>我思我在</category><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;2017，在纽村第一次感受带着电饭煲公路旅行的魅力，一个字，彪悍的操作！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2017，又一次坐进一年级的课堂，却一如几十年前的那次一样惶惶；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2017，终于拜读大神的时间简史，再看科幻小说或电影时，头不晕腿不软用了都说好，谁读谁知道！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2017，最欣慰是衣带渐宽，奔五路上一起减个油呗！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>