MoreRSS

site iconLaoda | 咕咕修改

主要分享服务器折腾指南、Docker自建项目、博客搭建等技术内容,同时推荐好用的网站和在线工具。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Laoda | 咕咕的 RSS 预览

3 天, 61 个版本|非程序员的我用 Claude Code 接棒维护了自己的博客主题

2026-04-22 17:14:04

前几天一个周末,我把自己博客用的主题 fork 了一份,花了 3 天时间,发了 61 个版本,解决了一堆多年来一直想改但没改的小问题,顺便踩了 N 个大坑。

这篇就把这段 "非程序员 × Claude Code" 的 vibe coding 实录和大家分享一下。也顺便聊聊用下来对几家 AI 订阅的真实看法,还有一点关于 "软件门槛" 和 "肉身能力" 的胡思乱想。

内容会有点长,但都是真金白银踩出来的体感。

起点——博客主题好久没更新了

咕咕这个博客用的是 Halo 平台 + Joe3 主题,作者是 Jiewenhuang。这个主题其实非常好用,做得也很漂亮,我前前后后用了好几年,一直挺满意的。

但最近一两年,作者因为工作原因更新慢了下来。这完全可以理解——开源主题作者本来就是用爱发电,有自己的主业和生活,能一直维护已经很难得。但对用户来说就是:

  • 有几个小 bug 长期挂着没修
  • 有几个想要的小功能提了 issue,但一直排队
  • 深色模式有些细节抠得不够到位
  • 性能上有些可以优化但还没做

这些东西我其实都想自己动手改,但之前一直有个拦路虎——我不是程序员,平时也就是会点 VPS 折腾、写写 Docker 命令,真要去啃主题源码,心里还是怯的。

那为啥现在突然敢动手了?因为一个东西:Claude Code

从伸手党到自己动手——为什么决定 fork

我在openclaw出来不久的时候,一开始订阅了kimi的coding plan,后来觉得不够好用,听网上一堆人说GPT和Claude好用,就尝试订阅了 Claude Pro(每月 20 美元那种),偶尔用来问问问题、写写文案,确实不错。但一直没用它写代码——总觉得太复杂了。

直到有一次,我随口让 Claude 帮忙看了下主题里一段 CSS,想改个小边距。它不光改对了,还顺带解释了为什么这么改,甚至告诉我 "你这个改动会影响移动端,建议加个 media query"。

那一瞬间我突然意识到:原来这事儿是可以自己干的。

不是说我一夜之间学会了前端,而是——有 Claude 在,你只要能描述清楚你要什么、看得懂 git diff、会复制报错,剩下的它都能兜住。这个门槛突然低到一个非程序员也能跨过去的程度。

然后想法就顺理成章了:

  • 要等主题原作者更新?大概率很难
  • 要发 PR?很多功能其实只有我自己需要(比如一些自定义侧边栏、适配自己阅读习惯的字号行高),发上去作者不一定合,也不应该合
  • 那 fork 一份自己维护就好了

打定主意,Max 套餐开了(后面会细聊为啥咬牙从 Pro 升 Max),本地 Halo 环境跑了起来,VS Code + Claude Code 都准备好了。

然后故事就开始了。

3 天 61 个版本——一发不可收拾,根本停不下来

一开始我没想到会搞这么快。本来预期是"一周弄个能用的版本",结果 Claude Code 的节奏推着我往前走,一发不可收拾,根本停不下来。

2e0532b448b0787187335d641374daac.png

这是真实的 git log 统计:

日期 星期 发了多少版 主要做了啥
2026-04-19 周日 5 版 热身 · SEO / 初版性能优化
2026-04-20 周一 44 版 暴风骤雨日 · 翻车最多的一天
2026-04-21 周二 12 版 安全补丁 hotfix 系列收官

3 天, 61 个 tag。 作为对比,原作者过去两年发了大概 30 个版本——Claude Code 这个节奏,直接比原作者快 15 倍(当然其实很多小改动完全可以合并起来一次发版,不知道是Claude还是我给的skill的原因,这边图快就直接一个改动一个 tag 推了,虚胖成分有一些)。

当然这不是在炫耀速度。这个速度之所以能跑起来,是因为:

  • 小需求说清楚 → Claude 几分钟就能改完 + 解释
  • 本地跑一下 → 有问题直接贴报错给它
  • 没问题 → git commit + tag + push
  • GitHub Actions 自动打 release zip → Halo Console 一键升级

整个反馈循环被压缩到 10 分钟以内。人只要负责 "想清楚要啥 + 看一眼做对了没"。

仓库在这里,感兴趣的同学可以看下完整的 commit history:

👉 github.com/Lau0x/halo-theme-joe-next

翻车现场合集——61 版里至少一半是在修前一版

光说 "3 天 61 版" 好像挺厉害,但真相是:其中至少一半,都是在修前一个版本的坑

下面这几个翻车故事,是这 3 天里最有代表性的。不展开技术细节,就聊故事感——让大家感受下 AI 写代码到底是啥体验。

翻车现场 1——"3 + 1 = 31" 的谜题

想加一个 "相关推荐" 小卡片,在每篇文章末尾展示 3 篇同分类的文章。

Claude 几分钟写完,跑起来一看——页面上出现了 30 张卡。多了整整 27 张。

让它修,它改了一版,还是 30 张。再改一版,还是 30 张。连续 10 个候选版本 (rc.01 → rc.10) 都没修对。

最后逼它把变量打出来看,才发现是个非常隐蔽的类型问题:后台的 "3" 不是数字 3,是字符串 "3"。字符串 "3" + 1 在某些语言里等于 "31",然后程序就真的去拉了 31 条文章。

一个让人哭笑不得的 bug。但也正因为它这么反直觉,Claude 自己怎么改都绕着走。

教训:AI 连续两三版修不对同一个问题的时候,不要再让它瞎猜了,直接让它打印真实的变量值。否则就是纯纯在 token 上烧钱。

翻车现场 2——给 jQuery 加了个小优化, 整站炸了

Claude 看了下主题代码,说 "jQuery 这样加载影响性能,给它加个属性可以异步加载,更快"。

听着有道理,就让它改了。

改完推上去,整个博客都打不开了。

翻车原因说起来也合理:jQuery 延迟加载之后,页面里好几十处其他脚本依赖它的地方跑得太早,找不到 jQuery,整站一片红。

最后直接把改动撤了,恢复原状。这个 "优化" 看上去简单,但真要做对,得把主题里几十处相关脚本一起调整,不是一下午能搞完的活。

教训性能优化类的改动,生产验证前别打 tag。开个浏览器点一遍主要功能再发版。省事儿的 10 分钟,能省下一晚上查事故。

翻车现场 3——四版 UI 改造, 全被自己否了

这个可能是最戏剧性的一段。

我某天看动态页觉得不够好看,跟 Claude 说 "美化一下,搞得稍微有设计感一些"。

Claude 很兴致地给了个方案,发了 rc.01。我一看:不好看,页面上这个蓝色小圈圈是干啥的

Claude:好的,我马上收紧!发 rc.02,删了一些元素。

我:完全不想要这套了

Claude:那换个设计语言!现代社交网络风格!rc.03。

我:……这是好看了,但布局塌了,左边一列文字挤得一个字一行

Claude:我修!rc.04,布局修对了。

我:还是没有原来的好看。算了,咱们回原版吧。

四个版本全废,一键 git revert 回到上一个 stable。

这段翻车事后反思,根因不是 Claude 审美差——而是我一开始就没把"想要什么样"说清楚。它在自己的审美空间里闭环了四版,每版都是"它认为的美化",但和我脑子里那个隐约的画面完全对不上。

所以后来我给自己加了条规矩:以后让 AI 做视觉类改动,开工前必须给它一个参考站 URL,或者几个情绪板关键词。不然就是四版起步的翻车。

翻车现场 4——修了个隐私漏洞, 结果所有内容都不显示了

这个翻车比较严重。

起因是一个真实的安全问题:后台某条动态设为 "私有" 之后,但管理员登录访问博客前台,私有动态居然还能看到内容。

典型的主题层漏了一道过滤。

我让 Claude 加过滤,它加了一行判断,推上去。

我一看:所有动态都不显示了,包括本该显示的公开动态。

再查才发现 Claude 用错了比较方式——字段的实际类型和它以为的不一样,导致判断永远失败,全部被过滤掉了。

再改一版,修对了。再改一版,清理掉调试代码,收官。就为了修这一个 bug,一口气发了三个补丁版本。

教训:AI 的判断看起来都挺合理,但一定要跑真实数据验证。不然它拍胸脯说"这下肯定对了",上生产之后可能就是另一个故事。

翻车现场 5——CSS 里的神秘竖条

这个就是翻车 3 里那个 rc.03。上完新设计,打开一看——两列内容里,左边一列宽大约 100 像素, 右边一列 800 像素。左边那列里的文字被压得一个字一行竖着排,像被揉过一样。

Claude 以为是自己写错了参数,改了好几次边距和间距,都没用。

后来查出来是 CSS 里的一个经典陷阱——简单说就是 "平均分配宽度" 这个写法遇到了 "不能换行的超长内容",两边就不平均了。

这个坑是前端圈公认的经典老坑,但如果不踩一次,你根本不知道会有这种问题。

这就是 vibe coding 的真实面貌——你不是在写代码, 你是在和各种古怪的坑玩。

一个月付了 $168 AI 订阅费, 为啥最后都用 Claude

聊完翻车,顺带聊一下订阅选择。因为这一波下来,我对 "哪家 AI 最值得付费" 有了点新认识。

从 Pro 咬牙升到 Max

我一开始用的是 Claude Pro(每月 $20),觉得挺够用的,日常搞点东西没啥压力。

但真要让 Claude Code 做 vibe coding 这种 "一天 20+ 版本" 的节奏,Pro 套餐很快就触顶——几个小时就把当日额度用完,然后就只能干等着刷新。

咬着牙升了 Max(每月 $100)。升级那一刻说实话是有点肉疼的。

但用了两天就想通了:

100 美元每月, 当学费其实很便宜。

你想想——如果我去找个独立开发者,把这 3 天干的活外包出去,主题 fork + 新 feature + 安全补丁 + SEO 优化 + 性能优化 + 几个 bug fix,怎么也得 500-1000 美元起步。Max 这 $100,算当月 "学费 + 外包费",比外包便宜,比自学快,最后东西还完全属于我自己。

除此之外,我还可以用它来辅助我的工作(excel里也可以用Claude了)。

顺便放张 Max 使用面板截图给大家感受一下强度:

340e03b65e8744760fe7d2f6e8edd13b.png
6ad4b8472387bc1f7b97e2af7a656856.png

一周用到 77%(All models),Current session 也跑了 17%。真用爆了。

月付 $168 的 AI 订阅全家桶

为了写这篇,我盘了下自己每月的 AI 订阅费:

工具 月费 主要用途 实测体感
Claude Max $100 Claude Code / 主力 vibe coding / 长对话 ⭐⭐⭐⭐⭐ 最稳最聪明,开发主力
ChatGPT Plus $20 OpenClaw / 日常问答 / GPT 5.4 ⭐⭐⭐⭐ 最近升级的 GPT 5.4 确实聪明了不少
Gemini Pro $20 偶尔对比答案,长文本场景 ⭐⭐⭐ 特定场景还行
Kimi ¥199 (≈$28) 中文长文,OpenClaw 备用 ⭐⭐ 体感明显弱一个档次

合计:约 $168 / 月。

这个钱多不多?不少。但我就当学习AI交的学费了,之后看看能不能取消掉1-2个不常用的。

一条选型经验——选你能力范围内最好的模型

过去这段时间同一套 OpenClaw 工具链,我分别用 Kimi 2.5、GPT 5.4 试了一遍:

  • Kimi 2.5:总感觉差点意思,回答经常跑偏,得反复 prompt 才能拉回来
  • GPT 5.4:明显聪明,大部分需求一次过

同一个任务,两家结果差异非常大。

我得出的一条经验是:

选模型,在自己能力范围内选最好的,会用得更爽。

便宜 20% 但差 50%,算总账其实亏。因为差的模型浪费的不是钱, 是你自己的时间和耐心,甚至你还会怀疑这个东西真的好用吗?。就和你刚学琴买了一把300块的吉他,F和弦怎么也按不出来,你会怀疑自己我是不是真的学不会吉他。

最后吐个槽。GPT 的 Codex(OpenAI 自己的命令行工具)我也试了,结果最大的体验是——老是弹这个:

⚠️ Agent failed before reply: OAuth token refresh failed for openai-codex:
Failed to refresh OAuth token for openai-codex. 
Please try again or re-authenticate.

每几天就让你重新登录一次。体感很差。

最大的收获是"掌控感"

聊完钱,聊聊情绪。

回头看这 3 天、61 个版本、5 个典型翻车、一堆踩坑笔记,最大的收获不是技术层面的,而是——掌控感

自己的博客, 自己说了算

这种感觉很难形容。

以前看到博客某个样式不喜欢,只能
想加个小功能,只能发 issue 等
字号大小、行高、颜色有几个小细节不爽,只能告诉自己习惯就好

现在?

想改就改。想删就删。想加啥加啥。不喜欢这个主题了——甚至可以让 Claude 帮我从头写一个

这种 "一切都在自己手里" 的感觉太爽了!

从博客到小工具, 软件的门槛在降低

而且这事不只是博客。

我最近还在琢磨几个小想法——想做一个 iOS 小 APP,专门用来提醒自己 VPS 和各种订阅服务到期续费,免得哪天 "传家宝 VPS" 突然就没了(其实现在已经做差不多了);也想搞个 Chrome 插件,还没想好具体做啥,但感觉总能用上。

这些以前想都不敢想。Swift 学起来多难啊,Xcode 折腾一整天,可能只出一个崩溃。

但现在,描述清楚需求,Claude 自己写、自己跑、自己调、自己解释。一个非程序员,3 天能发 61 版博客主题,那做个小 APP 呢?可能也就是一个周末。

软件的门槛,正在以肉眼可见的速度降低。

不是说程序员没用了——真正的工程问题还是需要专业的人。但对于 "我想给自己做个小东西" 这个诉求,门槛已经被 AI 摊平了。这是肉眼可见的变化。

写在最后——软件门槛降低了, 下一道墙在哪?

聊到这儿,我想说点更胡思乱想的东西。

如果软件门槛真的降低了, 那下一道墙在哪?

我最近一直在琢磨这个问题。想法不成熟,但大致是这样。

第一道墙:硬件。

代码可以让 AI 写,但服务器会坏、光纤会断、电池会衰减、螺丝会生锈。未来 3 年 5 年,能动手改硬件、能拆能焊、能找到小众元器件、能修能造的人,可能反而稀缺。毕竟 AI 目前还没长手。

当然,机器人也在路上。

特斯拉的 Optimus、波士顿动力的 Atlas、还有国内各种人形机器人——再过几年,它们大概率能帮你做一部分 "需要手" 的事:拧螺丝、搬东西、简单清洁、甚至可能插插线修修电路。

但即便如此,我觉得还是有些事它们短期干不了:

  • 判断当下最该做什么(机器人执行能力强,但"决定干啥"这事儿,还是人擅长)
  • 精细手艺和经验(修老机器、拆解古董电子产品、手工打磨——这些靠的是感觉和长年积累的手感)
  • 和人打交道的事(带朋友打麻将、哄孩子睡觉、陪父母聊天——这些不是机器人来"代做"就有意义的)

所以硬件这道墙,会被机器人慢慢矮化,但不会马上塌。

第二道墙, 可能更有意思——肉身能力。

我越来越觉得,那些必须花时间训练才能掌握的能力——英语、西班牙语、游泳、骑车、做饭、长跑——反而变得越来越重要

为啥?因为软件可以让 AI 写,文案可以让 AI 编,图片可以让 AI 画,视频可以让 AI 生成。硬件未来让机器人干。

但你的身体不能让 AI 代练,也不能让机器人代练。

机器人再强,也没法替你去学一门新语言的肌肉记忆、没法替你游 1000 米感受水的阻力、没法替你骑车穿过一整座城市感受风。这些东西必须是你自己的时间、汗水、年轻换来的。

当所有人都有 AI 之后,大家的 "软件产出" 会被拉到差不多的水平。再过几年当所有人都有机器人之后,生活里 "需要动手做的事" 也会被拉到差不多。

那时候,真正拉开差距的,反而是那些最原始、最肉身、最不能外包的能力。

所以如果你问我,现在手头有点闲时间,该干啥?

去学一门新语言。去游个泳。去学骑公路车。去学做红烧肉。

因为那些东西,将来可能比写代码还值钱。


主题的仓库在这里:github.com/Lau0x/halo-theme-joe-next

如果你也用 Joe3 主题,欢迎去下载最新版 zip 试试看,也欢迎提 issue。我维护得动,就一直维护下去,维护不动了,至少留一份 fork 给后来人。

OK,那差不多今天就聊这些,不知道有没有勾起大家 vibe coding 的兴趣,也欢迎大家评论区留下你的 AI 订阅搭配和踩坑经历~

回顾一下我买过的服务器们|VPS 收藏夹大盘点

2026-04-15 17:59:44

大家好,好久没有和大家更新了。

最近好像也没找到特别有意思的 Docker 项目,随着 Claude Code 和 OpenClaw 的火爆,其实玩 Docker 也变得容易了很多,感觉是不是都没啥必要出教程啥的了,直接让它们搞定。

前俩天看到国内最早的云服务新浪云终止服务了。

82e8a5eba1874b6094bb053a8e7dc30e.png

今天就来做个回顾吧,回顾一下我买过的服务器们。

展示页面

这个是目前咕咕持有的服务器的情况(不完全,有些比如新的VMRACK、还有腾讯云香港轻量的34元/月的没挂上去),很多都是老伙计了,可能现在买不太到。

地址:https://status.laoda.de/

bc2343d72516b285d6d2ff2f96aeb487.png

不知道大家看到这个页面的第一反应是什么,应该第一时间是看到了两台红色的已经阵亡的机器。(当然还有其他的阵亡的机器可能被我删了 = =)

第一台是 Olink,Olink 当年最出名的是没记错的话是德国的 AS9929,36 刀/年的,还有一个是 GRE 隧道,给线路不好的服务器用的。

老板运营一直很佛系,机器很稳,用的很省心。咕咕收过一台二手的,续费 36 刀/年的,后来自己又原价买了一台。

去年好像迁移过一次机房到圣何塞,今年没想到就运营困难了,官宣了停止运营。挺可惜的(对了推广收益好像还没结算给我 = =)

bb7ae30fc1311648a75355f709009524.png

【VPS 测评】Olink 法兰克福三网 9929 测评

第二个是搬瓦工的 The Chicken,这个其实是咕咕忘记续费了,导致阵亡。性价比其实还可以,但是和我其他的搬瓦工比起来不够高(否则我也不会忘记续费了哈哈)

然后咕咕自己看到的是在线天数

毫无疑问,这个代表了稳定性。

买 VPS,可能一开始是为了折腾,但是时间久了之后,尤其是跑了一些项目或者部署了一些网站之后,最在乎的,肯定是稳定性。

虽然之前和大家反复强调不要相信任何一个服务器厂商,对于自己在意的数据一定要多备份。但是三天两头宕机的厂商,即使再便宜,我们也会被搞的很难受。

搬瓦工 Bandwagonhost——稳定省心

1401f311d592c7d1f6af2d982d5db5d7.png

而搬瓦工在咕咕看来,就是稳定的代表。

我刚接触 VPS 的时候,就已经早闻大名,搬瓦工到现在至少有 10 年历史了吧。我目前的博客用的反向代理就是 The Plan V2 的套餐,一年 100 多刀,可以切换十多个机房(不过我基本没切过,一直用的 DC09),这两三年时间下来,很稳定。

还有其他的几台,也基本买了之后配置完就没怎么登录过。

双十一套餐的,一年才 29 刀,我跑了几个基础服务在上面,包括现在这个服务器网站就是跑这个上面的。

49 刀的套餐,曾经很多 mjj 溢价想要购买,咕咕这台是后面一次放货的时候抢的,500G 流量,和 The Plan V2 一样可以切换十多个机房,CN2 GIA 最便宜的套餐了,目前咕咕畅游互联网全靠它,转眼都快 3 年了。

所以如果要推荐一个稳定好用的机器,咕咕第一选择也会考虑推荐搬瓦工,前俩天还用 Claude Code 辅助做了一个简单的 HTML,上面是瓦工的产品合集:https://bwg.laoda.de/

【VPS 选购分享】Bandwagonhost(搬瓦工)——曾经的王者,三网 G 口 GIA,贵族 VPS

斯巴达 Spartanhost——稳如老狗

74d9ce604482798d7254542fa76527e6.png

另外值得一提的是斯巴达。

这台也是黑五抢的,当时是 31 刀/年,AMD 处理器,第二年黑五的时候升级了配置,变成 62 刀/年,然后之前老被 DDoS,刷流量(咕咕曾经一个月买了 5T 的额外流量 = =),后来我狠心加钱买了升级防御包和年付流量包,目前好像也是 100 多刀/年,我主要搭了 NPM,用做反向代理。非常稳。

老板就是客服,回复非常快,之前黑五 3、4 点熬夜抢鸡的场景历历在目,只是这俩年好像老板也佛系了,没怎么搞黑五活动。

【VPS 测评】斯巴达 AMD 黑五 31 刀测评

BuyVM——PT 党最爱

2cd58a0a40a86f6007a41f6b5bbf0c57.png

BuyVM 之前最大的优势就是无限流量,而且便宜,VPS 只要 3 刀/月好像,加上你可以买存储块,256G、512G、1T 的都可以,所以是 PT 党们的最爱,尤其是卢森堡无视 DMCA。

咕咕这个就是卢森堡 + 256G 的最丐版配置,不过前段时间好像换老板了,卢森堡的机器也迁移到了瑞士。咕咕 PT 退烧了,偶尔用家宽下点影视作品,这个机器已经好久没登录过了。

【VPS选购分享】BuyVM——下载神器!无限流量,无视版权投诉,经常缺货DMCA版权投诉/适合BT/PT下载/Netflix解锁

CloudCone——黑五神机

f5e74dad419239b9d59728945742fedc.png

CloudCone 这台是黑五抢的机器,看看已经是 3 年前的了~

1 核 2G 内存 60G 硬盘,重点是续费只要 10.44 刀/年,放着挂着看看就很香。(之前还有一个 7 刀的,出掉了,那台价格更便宜,但是配置不如这台)

【VPS选购分享】Cloudcone—— 高性价比, 自研面板,客服退款干脆利落 廉价VPS

DMIT——瓦工上游

bb1d53cc766ff9be65ac012321b78a20.png

DMIT 的两台,头脑发热跟风抢的,虽然说 DMIT 是搬瓦工的上游,但是我怎么觉得没搬瓦工稳呢。

线路不错,他家的一个特色是默认是用密钥登录服务器的,第一次买的小伙伴可能有点晕晕的,不知道怎么连接服务器,我应该出过小白教程,安全性确实会高一些。

Hetzner——欧洲小钢炮

bc3c7ec52ec6baa6a527e009fd5020f4.png

机器性能强,价格低,性价比非常高,而且很稳。咕咕目前的博客就部署在它们家美西的机器上,支持备份快照,防火墙也很好用,非常省心。

他家的竞拍的独立服务器也非常受 PT 党的欢迎,曾经拥有过两台,后面因为价格和自己用不上那么高的性能而没有继续续费。

竞拍地址:https://www.hetzner.com/sb

bfab4e4ff2192f46cd67f2311993eb6b.png

唯一遗憾是之前咕咕写的这篇文章 【VPS 选购分享】Hetzner——欧洲阿里云!性能小钢炮!非常适合跑业务,还有适合刷 PT 的神鸡!,被一个热心的 PT 网友转载了,然后他是给大家介绍用来类似薅羊毛刷 PT 的(新用户可以用邀请链接注册可以获得 20 欧的试用金),他那篇文章火了,然后他也是好心好像用了他和我的邀请链接,最后导致咕咕的账户的链接推广功能被官方禁止了(认为通过我链接注册账户的都是低价值客户 = =)

之前其实 Hetzner 注册挺难的,现在不知道会不会容易一些了。

HostHatch——大盘鸡

773d743f83833bbb366f3b1ae67ef19e.png

关键词:大盘鸡

咕咕这个是 3 年 65 刀的,1T 的硬盘,不多说,它家的机器基本也是 PT 党用来刷 PT 用的,我这台是 3 年付的黑五版本,他家稳定性一般,不过对 PT 来说还好,我也很久没登录过了。

【VPS 选购分享】HostHatch——目前看过的最高性价比大盘鸡!40 刀/年 2T 硬盘!

Naranja Tech——荷兰小钢炮

fd0a9c9f466867dd03036457c62e044f.png

荷兰小钢炮,黑五买的,他家黑五基本都有活动,这台好像 18 欧/年,2G 够用,目前搭了几个简单的小服务,也是稳的一批~

Netcup——性价比高

295957760bb8fb167ee7e191e6118f4d.png

和 Hetzner 一样,性价比非常高的商家,之前一直持有他家的 RS2000,基本是一个小杜甫的状态,无限流量,性能还牛逼,一个月十多欧,非常好用,目前由于经济原因,换了一台 VPS,很好用的机器。

唯一需要提醒的是他家是有合约制的,不续费要提前告知,否则一样给你续费,不交钱给你寄律师函!

OVH——抗 DDoS

ce4ec68eb66f462ab2a916a69af5de7b

法国的,最出名的是抗 DDoS,独立服务器比较有名,经常会有抽奖(买到的实际配置比官方标注的高,比如 2T 硬盘变成 4T,200M 带宽变成 1G 的),咕咕现在持有一台,每个月付费 16.99 欧,2×960 GB SSD SATA(抽奖开出来是 4×960 GB SSD SATA)的 KS-LE-2。

他家基本不给大陆的小伙伴注册,咕咕当时还不是很严格,找的代理帮忙注册的账号。

然后 OVH 和 Netcup 似乎你账号上没有订购东西,一段时间之后会删除账号,OVH 的话可以买个 OVH 后缀的域名挂着,一年就几欧。

【VPS 选购经验分享】OVH——欧洲最大、世界第三的托管服务提供商,抗 DDOS(独立服务器测评及取消 RAID、挂载硬盘分享)

RackNerd——性价比之王

ad0c716f46764589962a111db512ce15

性价比之王,最适合新人入坑的鸡,很多一年就 10 刀左右。够折腾,高配一些的价格也便宜。

之前有整理过列表,看看能不能捡漏~

地址:https://blog.laoda.de/vps

【VPS 选购分享】Racknerd——曾经的"四大金刚",如今的性价比之王

iON——曾经的神鸡

3027a80f4a19e427c04505370cc36fad.png

咕咕这台是 2019 年的,续费 20.19 刀的款,联通优化线路,1T 的流量,还是单向流量!非常高性价比的鸡。

当然最有性价比的是双十一的,同配置但是续费 11.11 刀的。咕咕曾经也有过,后来转手了。

iON 现在老板似乎也换过人了,机器也稍微偏贵一些,但是品质可以。

【VPS 选购分享】iON —— 咕咕的神鸡!Krypt 旗下,专为国人优化的 VPS,适合电信用户!7×24 小时全天候人工服务,还是单向流量!

写在最后

好了,差不多了。

现在一个一个看过来,满满都是当年玩鸡的回忆。

可惜现在工作生活琐事太多,玩鸡的时间越来越少了。

列表上的这些鸡,除非是厂商跑路了或者是咕咕实在是入不敷出了,大概率会继续续费下去,也算是对过去日子的一些回忆。

OK,那差不多今天就聊这些,不知道有没有勾起老玩家的回忆,也欢迎大家评论区留下你印象最深的机器~

参考链接:

聊聊目前手头的服务器近况 + VMRACK 三网优化线路 VPS 测试

2026-04-13 13:40:00

唠嗑

好久没折腾服务器了,今天趁着下雨在家,把手头目前已有的服务器都登录了一遍,收拾一下,也顺便给大家更新一下咕咕服务器的最新近况~

服务器近况截图

地址:https://status.laoda.de/

目前持有的机器很多都是老古董了,买不到了。

Olink 实在是可惜,由于资金问题,加上老板本来就佛系运营,已经官宣停止运营了。

搬瓦工还是稳如老狗,咕咕的几台机器都已经要超过 1000 天在线了(The Chicken忘记续费被取消了 = =),之前黑五买的 Naranja Tech 也累计运行 886 天。

对搬瓦工有感兴趣的小伙伴可以在这边选购:

CN2 GIA 高速优化线路 VPS 选购:https://bwg.laoda.de

好久没买新的机器了,今天来测一下 VMRACK 这家宣传做了三网优化的精品线路的机器,看看到底怎么样。

1. VMRACK 简介

官网地址:https://www.vmrack.net

VMRACK 主打三网优化线路,电信走 CN2 GIA,联通走 9929,移动走 CMIN2,看宣传还是挺有吸引力的。

先说结论,实测下来,线路确实非常稳。

2. 机器信息

咕咕手头的这台是 2 核 2G 内存,40G 硬盘,1.5T 流量/月,500Mbps 带宽,三网精品线路(电信走 CN2 GIA,联通走 9929,移动走 CMIN2)。

注意商家把三网优化线路和三网精品线路做了区分,三网精品线路更高一级

4c7187eed6517e43257a324c97cc4daf.png

机器信息

机器信息2

续费价格:

ca6c1db04a144da2b816d17864e198bf

不过现在官方有特惠活动,

a9ce72e3f2c62aaed1464273fceda507.png

相同线路,最高性价比的35刀/年的售罄了,49刀/年的也售罄了,99刀/年的还有,还是比我这个常规款便宜不少 = = 地址:https://www.vmrack.net

3. 开始测试

这边咕咕用的是融合怪测试脚本,一键跑完各项测试~

curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh

GitHub 地址:https://github.com/spiritLHLS/ecs

3.1 CPU 情况

CPU测试结果

CPU 型号:AMD EPYC-Rome Processor

单核跑分 1581,多核跑分 3178,表现还是不错的~

3.2 内存 & 硬盘

内存硬盘测试

内存读写速度正常,日常使用(跑 Docker 服务)没问题,fio 的 19.5k IOPS 足够撑住大多数应用场景。但 dd 测试暴露出读取性能偏弱,如果跑读密集型的业务(比如大量随机读取的数据库查询),可能会感受到瓶颈。

3.3 流媒体解锁

解锁情况还是比较理想的,直接丢几张图:

流媒体解锁1

流媒体解锁2

Netflix、Disney+、ChatGPT、YouTube 这些主流平台基本都解锁了,日常使用完全够用~

3.4 IP 质量

IP质量1

5531258c47c64b6f960004c866ba1679

IP 为原生 IP,信任得分 100,整体质量不错。

3.5 邮件端口

邮件端口检测

主流邮箱的 SMTP 端口基本都是开放的,有自建邮件服务需求的小伙伴可以参考~

3.6 三网回程情况

三网回程

这个是重点了!确实是三网优化:

  • 电信回程:走 CN2 GIA
  • 联通回程:走 AS9929
  • 移动回程:走 CMIN2

三网都走了优化线路。

3.7 回程路由

回程路由1

a969428a69e140ecac3d48ce6afe739f

从路由追踪可以看到,电信确实走了 CN2 GIA 到香港再回国,联通走的 9929,移动走的 CMIN2,和宣传一致。

3.8 PING 情况

PING测试

150ms 左右,属于美西正常 ping 值。

3.9 测速情况

测速1

上下行基本都能跑满 500Mbps 的带宽,表现相当不错。

测速2

另外,VMRACK 支持 1 美元更换 IP,对于有换 IP 需求的小伙伴来说还是比较友好的。

4. 总结

VPS 性能不错,具体的参数大家可以看上面的测评结果。

简单总结一下亮点:

  • IP 为原生 IP,解锁能力优秀
  • 三网精品线路:电信 CN2 GIA + 联通 9929 + 移动 CMIN2
  • 1 美元更换 IP 的服务

有感兴趣的小伙伴可以去官网看看:https://www.vmrack.net


附:完整测试数据

点击展开完整测试报告
测评频道: https://t.me/+UHVoo2U4VyA5NTQ1                    
VPS融合怪版本:2026.02.28
Shell项目地址:https://github.com/spiritLHLS/ecs
Go项目地址 [推荐]:https://github.com/oneclickvirt/ecs
---------------------基础信息查询--感谢所有开源项目----------------------
 CPU 型号          : AMD EPYC-Rome Processor
 CPU 核心数        : 2
 CPU 频率          : 2595.124 MHz
 CPU 缓存          : L1: 64.00 KB / L2: 1.00 MB / L3: 32.00 MB
 AES-NI指令集      : ✔ Enabled
 VM-x/AMD-V支持    : ❌ Disabled
 内存              : 208.23 MiB / 1.92 GiB
 Swap              : [ no swap partition or swap file detected ]
 硬盘空间          : 1.67 GiB / 39.17 GiB
 启动盘路径        : /dev/vda1
 系统在线时间      : 1 days, 1 hour 27 min
 负载              : 0.54, 0.16, 0.05
 系统              : Debian GNU/Linux 12 (bookworm) (x86_64)
 架构              : x86_64 (64 Bit)
 内核              : 6.1.0-33-amd64
 TCP加速方式       : bbr
 虚拟化架构        : KVM
 NAT类型           : Full Cone
 IPV4 ASN          : AS46783 EASY LINK LLC
 IPV4 位置         : Los Angeles / California / US
------------------------CPU测试--通过sysbench测试-------------------------
 -> CPU 测试中 (Fast Mode, 1-Pass @ 5sec)
 1 线程测试(单核)得分: 		1581 Scores
 2 线程测试(多核)得分: 		3178 Scores
--------------------内存测试--感谢lemonbench开源----------------------------
 -> 内存测试 Test (Fast Mode, 1-Pass @ 5sec)
 单线程读测试:		41550.52 MB/s
 单线程写测试:		19125.71 MB/s
--------------------磁盘dd读写测试--感谢lemonbench开源--------------------
 -> 磁盘IO测试中 (4K Block/1M Block, Direct Mode)
 测试操作		写速度					读速度
 100MB-4K Block		34.7 MB/s (8465 IOPS, 3.02s)		5.6 MB/s (1357 IOPS, 18.86s)
 1GB-1M Block		554 MB/s (528 IOPS, 1.89s)		122 MB/s (115 IOPS, 8.62s)
----------------------磁盘fio读写测试--感谢yabs开源-----------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 78.10 MB/s   (19.5k) | 1.02 GB/s    (16.0k)
Write      | 78.31 MB/s   (19.5k) | 1.03 GB/s    (16.1k)
Total      | 156.41 MB/s  (39.1k) | 2.06 GB/s    (32.2k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 612.37 MB/s   (1.1k) | 528.12 MB/s    (515)
Write      | 644.91 MB/s   (1.2k) | 563.29 MB/s    (550)
Total      | 1.25 GB/s     (2.4k) | 1.09 GB/s     (1.0k)
---------------流媒体解锁--感谢oneclickvirt/UnlockTests测试----------------
Can not detect IPv6 Address
测试时间:  2026-04-11 08:37:32
IPV4:
============[ 跨国平台 ]============
Apple                     YES (Region: USA)
BingSearch                YES (Region: US)
Claude                    YES
Dazn                      YES (Region: US)
Disney+                   YES (Region: US)
Gemini                    YES (Region: US)
GoogleSearch              YES
Google Play Store         YES (Region: US)
IQiYi                     YES (Region: US)
Instagram Licensed Audio  YES
KOCOWA                    YES
MetaAI                    YES
Netflix                   YES (Region: US)
Netflix CDN               US
OneTrust                  YES (Region: US CALIFORNIA)
ChatGPT                   YES (Region: US)
Paramount+                YES
Amazon Prime Video        YES (Region: US)
Reddit                    YES
SonyLiv                   YES (Region: IN)
Sora                      YES (Region: US)
Spotify Registration      NO
Steam Store               YES (Community Available) (Region: US)
TVBAnywhere+              YES (Region: US)
TikTok                    YES (Region: US)
Viu.com                   YES
Wikipedia Editability     YES
YouTube Region            YES
YouTube CDN               LAX
---------------------TikTok解锁--感谢lmc999的源脚本---------------------
 Tiktok Region:		【US】
-------------IP质量检测--基于oneclickvirt/securityCheck使用--------------
数据仅作参考,不代表100%准确,如果和实际情况不一致请手动查询多个数据库比对
以下为各数据库编号,输出结果后将自带数据库来源对应的编号
ipinfo数据库  [0] | scamalytics数据库 [1] | virustotal数据库   [2] | abuseipdb数据库   [3] | ip2location数据库    [4]
ip-api数据库  [5] | ipwhois数据库     [6] | ipregistry数据库   [7] | ipdata数据库      [8] | db-ip数据库          [9]
ipapiis数据库 [A] | ipapicom数据库    [B] | bigdatacloud数据库 [C] | dkly数据库        [D] | ipqualityscore数据库 [E]
ipintel数据库 [F] | ipfighter数据库   [G] | fraudlogix数据库   [H] | cloudflare数据库  [I] |
IPV4:
安全得分:
信任得分(越高越好): 100 [8] 
VPN得分(越低越好): 0 [8]
代理得分(越低越好): 0 [8] 
社区投票-无害: 0 [2] 
社区投票-恶意: 0 [2] 
威胁得分(越低越好): 1 [8] 
欺诈得分(越低越好): 65 [E] 
滥用得分(越低越好): 0 [3] 
ASN滥用得分(越低越好): 0.0152 (Elevated) [A]
公司滥用得分(越低越好): 0.0009 (Low) [A] 
威胁级别: low [B] 
流量占比: 真人(越高越好)47% [I] 机器人(越低越好)52% [I]
黑名单记录统计:(有多少黑名单网站有记录):
无害记录数: 0 [2]  恶意记录数: 0 [2]  可疑记录数: 0 [2]  无记录数: 94 [2] 
安全信息:
使用类型: unknown [8] hosting [0 3 7 C] business [A]
公司类型: hosting [A] isp [0 7]
浏览器类型: 主流82% 其他17% [I] 
设备类型: 桌面77% 移动22% 其他0% [I] 
操作系统类型: 主流94% 其他5% [I] 
是否云提供商: Yes [7] 
是否数据中心: No [5 8 A G] Yes [0 C]
是否移动设备: No [5 A C G] Yes [E]
是否代理: No [0 4 5 7 8 A B C] Yes [E G]
是否VPN: Yes [E] No [0 7 A C G]
是否Tor: No [0 3 7 8 A B C E] 
是否Tor出口: No [7] 
是否网络爬虫: No [A B E] 
是否匿名: No [7 8] 
是否攻击者: No [7 8] 
是否滥用者: No [7 8 A C E] 
是否威胁: No [7 8 C] 
是否中继: No [0 7 8 C] 
是否Bogon: No [7 8 A C] 
是否机器人: No [E] 
DNS-黑名单: 304(Total_Check) 0(Clean) 10(Blacklisted) 17(Other) 
Google搜索可行性:NO
------------邮件端口检测--基于oneclickvirt/portchecker开源------------
Platform  SMTP  SMTPS POP3  POP3S IMAP  IMAPS
LocalPort ✔     ✔     ✔     ✔     ✔     ✔    
QQ        ✔     ✔     ✔     ✘     ✔     ✘    
163       ✔     ✔     ✔     ✘     ✔     ✘    
Sohu      ✔     ✔     ✔     ✘     ✔     ✘    
Yandex    ✔     ✔     ✔     ✘     ✔     ✘    
Gmail     ✔     ✔     ✘     ✘     ✘     ✘    
Outlook   ✔     ✘     ✔     ✘     ✔     ✘    
Office365 ✔     ✘     ✔     ✘     ✔     ✘    
Yahoo     ✔     ✔     ✘     ✘     ✘     ✘    
MailCOM   ✔     ✔     ✔     ✘     ✔     ✘    
MailRU    ✔     ✔     ✘     ✘     ✔     ✘    
AOL       ✔     ✔     ✘     ✘     ✘     ✘    
GMX       ✔     ✔     ✔     ✘     ✔     ✘    
Sina      ✔     ✘     ✔     ✘     ✔     ✘    
Apple     ✘     ✔     ✘     ✘     ✘     ✘    
FastMail  ✘     ✔     ✘     ✘     ✘     ✘    
ProtonMail✘     ✘     ✘     ✘     ✘     ✘    
MXRoute   ✔     ✘     ✔     ✘     ✔     ✘    
Namecrane ✔     ✘     ✔     ✘     ✔     ✘    
XYAMail   ✘     ✘     ✘     ✘     ✘     ✘    
ZohoMail  ✘     ✔     ✘     ✘     ✘     ✘    
Inbox_eu  ✔     ✔     ✔     ✘     ✘     ✘    
Free_fr   ✘     ✔     ✔     ✘     ✔     ✘    
-------------上游及三网回程--基于oneclickvirt/backtrace开源--------------
国家: US 城市: Los Angeles 服务商: AS46783 EASY LINK LLC
北京电信v4 219.141.140.10           电信CN2GIA [精品线路] 
北京联通v4 202.106.195.68           联通9929   [优质线路] 
北京移动v4 221.179.155.161          移动CMI    [普通线路] 移动CMIN2  [精品线路] 
上海电信v4 202.96.209.133  检测不到回程路由节点的IPV4地址
上海联通v4 210.22.97.1              联通9929   [优质线路] 联通4837   [普通线路] 
上海移动v4 211.136.112.200          移动CMI    [普通线路] 移动CMIN2  [精品线路] 
广州电信v4 58.60.188.222            电信CN2GIA [精品线路] 
广州联通v4 210.21.196.6             联通9929   [优质线路] 
广州移动v4 120.196.165.24           移动CMI    [普通线路] 移动CMIN2  [精品线路] 
成都电信v4 61.139.2.69              电信CN2GIA [精品线路] 
成都联通v4 119.6.6.6                联通9929   [优质线路] 联通4837   [普通线路] 
成都移动v4 211.137.96.205           移动CMI    [普通线路] 移动CMIN2  [精品线路] 
准确线路自行查看详细路由,本测试结果仅作参考
同一目标地址多个线路时,检测可能已越过汇聚层,除第一个线路外,后续信息可能无效
----------------------回程路由--基于nexttrace开源-----------------------
依次测试电信/联通/移动经过的地区及线路,核心程序来自nexttrace,请知悉!
广州电信 58.60.188.222
0.52 ms 	* RFC1918
1.24 ms 	AS4134 [CHINANET-US] 美国 加利福尼亚 洛杉矶 chinatelecom.com.cn 电信
149.67 ms 	* [CN2-Global] 中国 香港 chinatelecom.cn 电信
150.87 ms 	* [CN2-BackBone] 中国 广东 广州 chinatelecom.cn 电信
157.66 ms 	* [CN2-BackBone] 中国 广东 广州 chinatelecom.cn 电信
151.97 ms 	AS4134 [CHINANET-BB] 中国 广东 广州 chinatelecom.com.cn 电信
159.56 ms 	AS4134 [APNIC-AP] 中国 广东 深圳 chinatelecom.com.cn 电信
广州联通 210.21.196.6
1.12 ms 	* RFC1918
1.31 ms 	AS10099 中国 香港 chinaunicomglobal.com
165.78 ms 	AS10099 [CUG-BACKBONE] 中国 香港 chinaunicomglobal.com 联通
172.08 ms 	AS9929 [CNC-BACKBONE] 中国 上海 chinaunicom.cn 联通 CUII
149.18 ms 	AS9929 [CNC-BACKBONE] 中国 广东 广州 chinaunicom.cn 联通 CUII
160.21 ms 	* [CNC-BACKBONE] 中国 广东 广州
190.30 ms 	AS17623 [APNIC-AP] 中国 广东 深圳 chinaunicom.cn 联通
193.60 ms 	AS17623 中国 广东 深圳 宝安区 chinaunicom.cn 联通
广州移动 120.196.165.24
0.68 ms 	* RFC1918
1.12 ms 	AS58807 [CMIN2-NET] 中国 cmi.chinamobile.com 移动
129.02 ms 	AS58807 [CMIN2-NET] 美国 加利福尼亚 洛杉矶 cmi.chinamobile.com 移动
126.54 ms 	AS58807 [CMIN2-NET] 中国 上海 洛杉矶-上海 cmi.chinamobile.com 移动
129.41 ms 	AS9808 [CMNET] 中国 上海 X-I chinamobileltd.com 移动
128.32 ms 	AS9808 [CMNET] 中国 上海 I-C chinamobileltd.com 移动
129.03 ms 	AS9808 [CMNET] 中国 上海 chinamobileltd.com
153.36 ms 	AS9808 [CMNET] 中国 北京 chinamobileltd.com 移动
151.70 ms 	AS9808 [CMNET] 中国 北京 chinamobileltd.com 移动
154.29 ms 	AS9808 [CMNET] 中国 北京 chinamobileltd.com 移动
153.31 ms 	AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动
---------------------自动更新测速节点列表--本脚本原创----------------------
位置		 上传速度	 下载速度	 延迟	  丢包率
Speedtest.net	 511.98 Mbps	 494.12 Mbps	 1.04	  0.0%
检测到错误:Aborted或core dumped,终止测速
执行出现错误,如果有必要请使用 https://github.com/oneclickvirt/ecs 进行测试,避免环境依赖出现问题
联通上海5G	 535.07 Mbps	 546.82 Mbps	 173.12	  NULL
检测到错误:Aborted或core dumped,终止测速
执行出现错误,如果有必要请使用 https://github.com/oneclickvirt/ecs 进行测试,避免环境依赖出现问题
电信Suzhou5G	 513.73 Mbps	 553.80 Mbps	 138.52	  NULL
电信Zhenjiang5G	 557.11 Mbps	 548.61 Mbps	 137.32	  NULL
移动Suzhou	 372.13 Mbps	 0.39 Mbps	 137.64	  0.0%
------------------------------------------------------------------------
 总共花费      : 6 分 1 秒
 时间          : Sat Apr 11 08:41:13 UTC 2026
------------------------------------------------------------------------

德国买iPhone退税全流程实测:19%消费税能退多少?踩坑+避坑全记录

2026-04-03 10:15:29

好久没和大家更新博客了,这段时间真的事情巨多(家里的事情+公司出差+回来之后研究小龙虾和Claude Code),一直想着有时间就要更新一下,但是每次回到家忙完事情已经挺晚了,也感觉累了,就迟迟没有动手写博客。

今天趁着闲暇时间,赶紧和大家更新一波。

购机篇

我在3月份的时候出差去了趟德国,工作结束之后,我突然心血来潮说要不要整一部国际版的iPhone。

熟悉咕咕的小伙伴知道,其实我目前有一台美版的iPhone SE3在服役中(支持实体SIM+eSIM),手感非常好,续航问题我也通过背夹电池的方法解决了(官方方案的升级版,后续和大家分享,可以重度使用一天),但问题就是屏幕确实有点小了,打字也容易按错。

"这次出差算是比较成功的,下次带队不知道是啥时候了,买台iPhone 17 Pro Max奖励一下自己,也顺便给大家实测一下在德国购买iPhone的流程和后续的退税流程。"

嗯,我是这么说服我自己的。虽然我知道港版功能一样,而且更便宜……

德国这边对换手机这件事情好像他们不怎么在意,地铁公交上很多都用的旧手机。因为我第二天就要出发返回国内,我先看了下小红书攻略,说最好提前预约,然后门店提货,会更稳一点,于是我就用我的SE3 在苹果的德国官网上下单了一台蓝色 512G的iPhone 17 Pro Max,用的Apple Pay选的Chase的信用卡付款的,选择线下提货的地点是慕尼黑玛丽亚广场的苹果官方旗舰店。

c8a62bede31c33f7ae35f6174e36d34e.png

早起过去,人果然很多。

IMG20260316114848.jpg

和工作人员说明来取货,出示了订单和二维码,

b55f6bf87662b37b6983b935ce873670.png

很快小姐姐就给我拿来了手机。

图片 小姐姐

然后我表示我需要退税,小姐姐似乎不太懂,询问了身边的同事,叽里咕噜的,德语我们也听不懂,然后小姐姐去拿来了一张单子,长这样:

微信图片_20260402135927_278_361.jpg

DJI_20260316093501_0052_D-0004.png

你敢相信,在德国给外国人的退税的单子居然是德语的,而且小姐姐很抱歉地说没有英语的版本,可能需要我们自己借助翻译填写一下……

而且由于我们是线上下单的,店里并没有给我们发票。(我查询了一下发现退税需要有退税单和发票还有实物的)

退税踩坑

我虽然表示震惊,但也接受了,凭借我多年官网购买iPhone的经验,苹果官方肯定会给我邮件发一个发票的,而且看起来这个表是苹果官方的退税,没有中间商赚差价,可以退全额,你知道德国的电子产品消费税是多少吗?19% !

c52a32d17627facb4ba29e9596383aca.png

怪不得感觉大家都换新手机不感冒……

然而新的问题出现了……

我下午翻看邮件,一直没有等到苹果给我发的发票,没有发票就意味着海关不可能给我退税,我又查了下,发现在官网购买的手机,电子发票可能是在24-48小时内送达到邮箱!我的机票是第二天早上的,时间上来不及了。

于是我和同事又感受了大概四十分钟的地铁,从慕尼黑机场的希尔顿返回到玛丽亚广场。我找了个理由和店员说支付的时候卡弄错了,想要把这台网上订的、上午刚提的iPhone退了,然后换一张卡在店里直接买一台。

这次接待的是一个小哥,小哥欣然同意表示没问题,简单检查了手机之后,直接给我退了款,然后我换了一张招行的卡支付,他还是把这台手机给了我,并熟练地给我global blue的单子,告诉我可以退大概10%的税,而且在玛丽亚广场不远的地方有global blue的柜台。(同事略懂日语,还和小哥谈起了他手臂上的纹身 = =)

我们过去之后工作人员给盖了章,然后工作人员让我出示了信用卡(因为我打算退到信用卡里),最后告诉了我慕尼黑机场的海关的位置,以及告诉我敲完海关的章需要把信封交给机场的global blue的柜台,整体体验非常丝滑。

IMG20260316202639.jpg

IMG_20260402_144825.jpg

退税篇

手机总算告一段落,但是还有一个问题出现了……

本来我打算直接拆封使用的,但是我还是做了一下功课——购买的产品不能使用,一旦使用了之后海关不给退税!

所以还是只能老老实实装在包里,等第二天退完税之后使用。

我这次是慕尼黑 T1 航站楼出发,海关在 B 区,Global Blue 就在对面,流程还算比较清楚。

IMG20260316144455.jpg

4913918cdc827cf000974b0dbb414e39.png

bcd887f1b03eb755000264551cdf02e9.png

如果你买的东西是走 Global Blue 退税的,而且放在托运行李箱里,值机的时候一定要先跟工作人员说:

箱子里有 tax free items

工作人员会先给你的行李箱贴标签,然后你拿着箱子去海关那边盖章,盖完之后海关会直接帮你把行李托运走,因为前面已经贴好标签了,所以不用担心箱子乱跑。

之后你再去对面的 Global Blue 柜台办后续就可以。

如果退税物品是在随身行李里,正常来说是要过完安检以后,再去里面的海关检查盖章。

不过我这次也直接拿给外面的海关看了,结果他也给我盖章了,所以我这次就一起退掉了,但这个我感觉不一定每次都行,可能还是看现场工作人员。

几个小经验:

  • 小额的东西一般不太查
  • 大额的基本都会查
  • 买的东西千万别拆封

这次买的手机,海关那边检查了非常久,反复用手指抠,问我是不是拆过。所以像 iPhone 这种高价值商品,千万别提前拆,不然很容易影响退税。

顺便说一下,这次除了手机,我在 dm 也顺手买了一些东西。dm 的退税流程和 Global Blue 不太一样,麻烦不少——要么你下次回店里,拿海关盖章的小票再去退;要么走国内的易退税邮寄处理。两种我个人觉得都不算方便,有机会还是直接去店里退更省事。不过这次 dm 的东西,海关是完全没检查。

最终到手价格

最后,看看这部手机退税下来一共花了多少钱:

手机原价 13525.96 - 汇率优惠 13.53 - Global Blue 退税 1340.78 - 招行1%返现 131.46 = 12040.19 元

截屏 2026-04-02 14.19.48.png微信图片_20260402142038_1463_68.jpg

招行那个1%的返现好像实际到账不足1%?

比起国内还是贵了不少的。

关于德国版 iPhone

最后,给大家看一下德国版本的iPhone有啥不一样的地方:

微信图片_20260403080935_283_361.jpg

其实除了这个CE标识,其他的和港版应该是一样的,日常eSIM需求的更推荐港版,我这个就当纪念了 = =

10 分钟搭建一个支持超过 1000 种不同格式的在线文件转换器——ConvertX|好玩儿的 Docker 项目

2026-01-20 15:12:49

1. 唠嗑

好久没更新了,这周来和大家分享一个自托管的在线文件转换器。支持超过一千种不同格式。使用 TypeScript、Bun 和 Elysia 编写。

e3a1dbdc76a602c085010e7ba78c6e40.png

2. ConvertX 简介

功能特性

  • 将文件转换为不同格式
  • 一次处理多个文件
  • 密码保护
  • 多个账户

5da3095bb57e3702117dda7268c82b2d.png

支持转换的类型

Converter Use case Converts from Converts to
Inkscape Vector images 7 17
libjxl JPEG XL 11 11
resvg SVG 1 1
Vips Images 45 23
libheif HEIF 2 4
XeLaTeX LaTeX 1 1
Calibre E-books 26 19
LibreOffice Documents 41 22
Dasel Data Files 5 4
Pandoc Documents 43 65
msgconvert Outlook 1 1
VCF to CSV Contacts 1 1
dvisvgm Vector images 4 2
ImageMagick Images 245 183
GraphicsMagick Images 167 130
Assimp 3D Assets 77 23
FFmpeg Video ~472 ~199
Potrace Raster to vector 4 11
VTracer Raster to vector 8 1
Markitdown Documents 6 1

3. 相关地址

官方 GitHub 地址:https://github.com/C4illin/ConvertX (目前 15.3k 个 star,欢迎大家去给项目点星星!)

当然如果你想自己用 docker 搭建一个,那我们就继续往下!

4. 搭建环境

5. 搭建视频(过俩周补充 = =)

5.1 YouTube

视频地址:

5.2 哔哩哔哩

哔哩哔哩:

6. 搭建方式

6.1 安装 Docker 与 Nginx Proxy Manager

可以直接参考这篇内容:

https://blog.laoda.de/archives/nginxproxymanager/

6.2 创建安装目录

创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/convertx

cd /root/data/docker_data/convertx

接着我们来编辑下docker-compose.yml

vim docker-compose.yml
services:
  convertx:
    image: ghcr.io/c4illin/convertx
    container_name: convertx
    restart: unless-stopped
    ports:
      - "3001:3000"
    environment:
      - JWT_SECRET=aLongAndSecretStringUsedToSignTheJSONWebToken123412 # will use randomUUID() if unset
      # - HTTP_ALLOWED=true # uncomment this if accessing it over a non-https connection 如果通过 http 访问的话取消这行注释
      - LANGUAGE=zh
    volumes:
      - ./data:/app/data

其中的左边的3001可以改成服务器上没有用过的端口。

修改完成之后,可以在英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

环境变量

所有都是可选的,但建议设置 JWT_SECRET

Name Default Description
JWT_SECRET when unset it will use the value from randomUUID() 用于签署 JSON Web Token 的一串密钥字符串
ACCOUNT_REGISTRATION false 允许用户注册账户
HTTP_ALLOWED false 允许 HTTP 连接,仅在本地部署的时候将它设置为 true
ALLOW_UNAUTHENTICATED false 允许未认证用户使用该服务,仅在本地部署的时候将它设置为 true。
AUTO_DELETE_EVERY_N_HOURS 24 每 n 小时检查一次,删除超过 n 小时的文件,设置为 0 表示禁用。
WEBROOT 将根路径设置为 "/convert" 的地址将在 "example.com/convert/" 上提供网站。
FFMPEG_ARGS 传递给 ffmpeg 输入文件的参数,例如 -hwaccel vaapi。有关硬件加速的更多信息,请参见 #190
FFMPEG_OUTPUT_ARGS 传递给 ffmpeg 输出的参数,例如 -preset veryfast
HIDE_HISTORY false 隐藏历史页面
LANGUAGE en 用于格式化日期字符串的语言,指定为 BCP 47 language tag
UNAUTHENTICATED_USER_SHARING false 所有未经身份验证用户共享转换历史记录
MAX_CONVERT_PROCESS 0 允许的最大并发转换进程数量。设置为 0 表示无限制。

按需添加修改,修改完成之后,可以在英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

6.3 查看端口是否被占用

查看端口是否被占用(以 3001 为例),输入:

lsof -i:3001  #查看 3001 端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装 lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成 8381,注意 docker 命令行里和防火墙都要改)

6.4 启动 convertx

cd /root/data/docker_data/convertx

docker compose up -d   # 注意,老版本用户用 docker-compose up -d

662decf436731fa2acf7a276e4af9caf.png

镜像还是比较大的……

耐心等待拉取好镜像,出现 Created的字样之后,

理论上我们就可以输入 http://ip:3001 访问了。

但是我们部署在公网一定要考虑使用反向代理工具配置 SSL!

做反向代理前,你需要一个域名!

namesilo 上面 xyz 后缀的域名一年就 7 块钱,可以年抛。(冷知识,namesilo 上 6 位数字的 xyz 续费永远都是 0.99 美元 = =)

如果想要长期使用,还是建议买 com 后缀的域名,更加正规一些,可以输入 laodade 来获得 1 美元的优惠(不知道现在还有没有)

namesilo 自带隐私保护,咕咕一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!(就是后台界面有些 古老 = =)

【域名购买】Namesilo 优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

7. 反向代理

7.1 利用 Nginx Proxy Manager

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上域名购买、域名解析 视频教程) (名称改成你自己想要的域名前缀即可)

0a6c012bb847558679e499f447dd4958.png

之后,登陆 Nginx Proxy Manager(不会的看这个:安装 Nginx Proxy Manager相关教程))

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80443 端口,所以本机不能占用(比如原来就有 Nginx)

直接丢几张图:

61a4b0f2f2c6bb56b3bf540e00deb8a5.pngceb23ce98beed6ac28add2b03d4e53e8.png894dac73d5b90a9032806b61cdf22540.png67b28075187f39a44dce4b23b9228abb.png

注意填写对应的 域名IP端口,按文章来的话,应该是 3001

IP 填写:

如果 Nginx Proxy Manager 和 convertx 在同一台服务器上,可以在终端输入:

ip addr show docker0

查看对应的 Docker 容器内部 IP。

否则直接填 convertx 所在的服务器 IP 就行。

然后访问域名就可以访问了!

7.2 利用宝塔面板

发现还是有不少小伙伴习惯用宝塔面板,这边也贴一个宝塔面板的反代配置:

直接新建一个站点,不要数据库,不要 php,纯静态即可。

然后打开下面的配置,修改 Nginx 的配置。

image-20220819150345725image-20220819150542867

代码如下:

location / {
      proxy_pass http://127.0.0.1:3001/;       # 注意改成你实际使用的端口
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }

此方法对 90% 的反向代理都能生效,然后就可以用域名来安装访问了。

有同学可能会问,为什么不直接用宝塔自带的反向代理功能。

image-20220819150730128

也可以,不过咕咕自己之前遇到过当有多个网站需要反代的时候,在这边设置会报错的情况 = =

所以后来就不用了,直接用上面的方法来操作了。

8. 使用教程

非常简单,所见即所得。

先注册账号:

45e7bc9343633faae0922c3f9a788670.png

f1a7c788c803a41e6aa3ccb88607c5fd.png

JPG 转换成 webp

8475bb89d272567691366dd6c838f86b.png

f65aa6b232020dc70071d0cea24f442c.png

MP4 转 AVI

2e655386026439a4f31bad8221504d7f.png

正常转换。

转换历史:

11626ac66e09b45b5d7efe77b02e8d10.png

服务器里还是能看到文件的,

97c9f37455cfbabc34e0049b079356ef.png

8.1 更新 convertx

这个项目后续会持续有更新,所以提供一个更新的方式。

cd /root/data/docker_data/convertx

docker compose pull

docker compose up -d    # 请不要使用 docker compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

输入 y

利用 Docker 搭建的应用,更新非常容易~

8.2 卸载 convertx

同样进入安装页面,先停止所有容器。

cd /root/data/docker_data/convertx

docker compose down

cd ..

rm -rf /root/data/docker_data/convertx  # 完全删除

可以卸载得很干净。

9. 使用问题

大家使用上有什么心得或者问题,欢迎评论区交流~

10. 结尾

祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢作者 @C4illin 的辛苦付出,让我们能用到这么优秀的项目!欢迎大家都去给这个项目点个 star。

参考资料

官方 GitHub:https://github.com/C4illin/ConvertX

十分钟搭建一个 AI 驱动的图表生成器——Next-AI-Draw.io|好玩儿的 Docker 项目

2025-12-18 17:11:24

1. 唠嗑

好久没更新了,这周来和大家分享一个 AI 驱动的图表生成器——Next-AI-Draw.io

2. Next-AI-Draw.io 简介

Next-AI-Draw.io 是一个集成了 AI 功能的 Next.js 网页应用,与 draw.io 图表无缝结合。通过自然语言命令和 AI 辅助可视化来创建、修改和增强图表。

9dc17920a8529ad875088874df11e1c7.png

0284f7edc67110d515a3edabf7ba418a.png

功能特性

  • LLM 驱动的图表创建:利用大语言模型通过自然语言命令直接创建和操作 draw.io 图表
  • 基于图像的图表复制:上传现有图表或图像,让 AI 自动复制和增强
  • PDF 和文本文件上传:上传 PDF 文档和文本文件,提取内容并从现有文档生成图表
  • AI 推理过程显示:查看支持模型的 AI 思考过程(OpenAI o1/o3、Gemini、Claude 等)
  • 图表历史记录:全面的版本控制,跟踪所有更改,允许您查看和恢复 AI 编辑前的图表版本
  • 交互式聊天界面:与 AI 实时对话来完善您的图表
  • 云架构图支持:专门支持生成云架构图(AWS、GCP、Azure)
  • 动画连接器:在图表元素之间创建动态动画连接器,实现更好的可视化效果

3. 相关地址

官方 GitHub 地址:https://github.com/DayuanJiang/next-ai-draw-io (目前 13k 个 star,欢迎大家去给项目点星星!)

Demo 地址:https://next-ai-drawio.jiang.jp/

当然如果你体验完还想自己用 docker 搭建一个,那我们就继续往下!

4. 搭建环境

5. 搭建视频(过俩周补充 = =)

5.1 YouTube

视频地址:

5.2 哔哩哔哩

哔哩哔哩:

6. 搭建方式

6.1 安装 Docker 与 Nginx Proxy Manager

可以直接参考这篇内容:

https://blog.laoda.de/archives/nginxproxymanager/

6.2 创建安装目录

创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/drawioai

cd /root/data/docker_data/drawioai

接着我们来编辑下docker-compose.yml

vim docker-compose.yml
name: nextaidrawio
services:
    next-ai-draw-io:
        ports:
            - 3001:3000
        env_file:
            - .env
        image: ghcr.io/dayuanjiang/next-ai-draw-io:latest

其中的左边的3001可以改成服务器上没有用过的端口。

修改完成之后,可以在英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

接着我们来编辑下.env

cd /root/data/docker_data/drawioai
vim .env

粘贴如下内容:

# AI Provider Configuration
# AI_PROVIDER: Which provider to use
# Options: bedrock, openai, anthropic, google, azure, ollama, openrouter, deepseek, siliconflow, gateway
# Default: bedrock
AI_PROVIDER=bedrock

# AI_MODEL: The model ID for your chosen provider (REQUIRED)
AI_MODEL=global.anthropic.claude-sonnet-4-5-20250929-v1:0

# AWS Bedrock Configuration
# AWS_REGION=us-east-1
# AWS_ACCESS_KEY_ID=your-access-key-id
# AWS_SECRET_ACCESS_KEY=your-secret-access-key
# Note: Claude and Nova models support reasoning/extended thinking
# BEDROCK_REASONING_BUDGET_TOKENS=12000  # Optional: Claude reasoning budget in tokens (1024-64000)
# BEDROCK_REASONING_EFFORT=medium        # Optional: Nova reasoning effort (low/medium/high)

# OpenAI Configuration
# OPENAI_API_KEY=sk-...
# OPENAI_BASE_URL=https://api.openai.com/v1  # Optional: Custom OpenAI-compatible endpoint
# OPENAI_ORGANIZATION=org-...  # Optional
# OPENAI_PROJECT=proj_...      # Optional
# Note: o1/o3/gpt-5 models automatically enable reasoning summary (default: detailed)
# OPENAI_REASONING_EFFORT=low   # Optional: Reasoning effort (minimal/low/medium/high) - for o1/o3/gpt-5
# OPENAI_REASONING_SUMMARY=detailed  # Optional: Override reasoning summary (none/brief/detailed)

# Anthropic (Direct) Configuration
# ANTHROPIC_API_KEY=sk-ant-...
# ANTHROPIC_BASE_URL=https://your-custom-anthropic/v1
# ANTHROPIC_THINKING_TYPE=enabled            # Optional: Anthropic extended thinking (enabled)
# ANTHROPIC_THINKING_BUDGET_TOKENS=12000     # Optional: Budget for extended thinking in tokens

# Google Generative AI Configuration
# GOOGLE_GENERATIVE_AI_API_KEY=...
# GOOGLE_BASE_URL=https://generativelanguage.googleapis.com/v1beta  # Optional: Custom endpoint
# GOOGLE_CANDIDATE_COUNT=1                   # Optional: Number of candidates to generate
# GOOGLE_TOP_K=40                            # Optional: Top K sampling parameter
# GOOGLE_TOP_P=0.95                          # Optional: Nucleus sampling parameter
# Note: Gemini 2.5/3 models automatically enable reasoning display (includeThoughts: true)
# GOOGLE_THINKING_BUDGET=8192                # Optional: Gemini 2.5 thinking budget in tokens (for more/less thinking)
# GOOGLE_THINKING_LEVEL=high                 # Optional: Gemini 3 thinking level (low/high)

# Azure OpenAI Configuration
# Configure endpoint using ONE of these methods:
#   1. AZURE_RESOURCE_NAME - SDK constructs: https://{name}.openai.azure.com/openai/v1{path}
#   2. AZURE_BASE_URL - SDK appends /v1{path} to your URL
# If both are set, AZURE_BASE_URL takes precedence.
# AZURE_RESOURCE_NAME=your-resource-name
# AZURE_API_KEY=...
# AZURE_BASE_URL=https://your-resource.openai.azure.com/openai  # Alternative: Custom endpoint
# AZURE_REASONING_EFFORT=low                 # Optional: Azure reasoning effort (low, medium, high)
# AZURE_REASONING_SUMMARY=detailed

# Ollama (Local) Configuration
# OLLAMA_BASE_URL=http://localhost:11434/api  # Optional, defaults to localhost
# OLLAMA_ENABLE_THINKING=true                 # Optional: Enable thinking for models that support it (e.g., qwen3)

# OpenRouter Configuration
# OPENROUTER_API_KEY=sk-or-v1-...
# OPENROUTER_BASE_URL=https://openrouter.ai/api/v1  # Optional: Custom endpoint

# DeepSeek Configuration
# DEEPSEEK_API_KEY=sk-...
# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1  # Optional: Custom endpoint

# SiliconFlow Configuration (OpenAI-compatible)
# Base domain can be .com or .cn, defaults to https://api.siliconflow.com/v1
# SILICONFLOW_API_KEY=sk-...
# SILICONFLOW_BASE_URL=https://api.siliconflow.com/v1  # Optional: switch to https://api.siliconflow.cn/v1 if needed

# Vercel AI Gateway Configuration
# Get your API key from: https://vercel.com/ai-gateway
# Model format: "provider/model" e.g., "openai/gpt-4o", "anthropic/claude-sonnet-4-5"
# AI_GATEWAY_API_KEY=...

# Langfuse Observability (Optional)
# Enable LLM tracing and analytics - https://langfuse.com
# LANGFUSE_PUBLIC_KEY=pk-lf-...
# LANGFUSE_SECRET_KEY=sk-lf-...
# LANGFUSE_BASEURL=https://cloud.langfuse.com  # EU region, use https://us.cloud.langfuse.com for US

# Temperature (Optional)
# Controls randomness in AI responses. Lower = more deterministic.
# Leave unset for models that don't support temperature (e.g., GPT-5.1 reasoning models)
# TEMPERATURE=0

# Access Control (Optional)
# ACCESS_CODE_LIST=your-secret-code,another-code

# Draw.io Configuration (Optional)
# NEXT_PUBLIC_DRAWIO_BASE_URL=https://embed.diagrams.net  # Default: https://embed.diagrams.net
# Use this to point to a self-hosted draw.io instance

# PDF Input Feature (Optional)
# Enable PDF file upload to extract text and generate diagrams
# Enabled by default. Set to "false" to disable.
# ENABLE_PDF_INPUT=true
# NEXT_PUBLIC_MAX_EXTRACTED_CHARS=150000  # Max characters for PDF/text extraction (default: 150000)

这里头有很多选项可以开启,当然你也可以不管它,到网页端输入,这样的话就保存在本地浏览器里了,如果在这边输入,所有知道这个网址的人都能用你的 AI 模型。

假设我们用的 OPEN AI 的,其实.env里面只要这仨:

AI_PROVIDER=openai
AI_MODEL=gpt-4o
OPENAI_API_KEY=your_api_key

your_api_key改成你的 API 密钥。

修改完成之后,可以在英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

6.3 查看端口是否被占用

查看端口是否被占用(以 3001 为例),输入:

lsof -i:3001  #查看 3001 端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装 lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成 8381,注意 docker 命令行里和防火墙都要改)

6.4 启动 drawioai

cd /root/data/docker_data/drawioai

docker compose up -d   # 注意,老版本用户用 docker-compose up -d

耐心等待拉取好镜像,出现 done的字样之后,

理论上我们就可以输入 http://ip:3001 访问了。

但是我们部署在公网一定要考虑使用反向代理工具配置 SSL!

做反向代理前,你需要一个域名!

namesilo 上面 xyz 后缀的域名一年就 7 块钱,可以年抛。(冷知识,namesilo 上 6 位数字的 xyz 续费永远都是 0.99 美元 = =)

如果想要长期使用,还是建议买 com 后缀的域名,更加正规一些,可以输入 laodade 来获得 1 美元的优惠(不知道现在还有没有)

namesilo 自带隐私保护,咕咕一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!(就是后台界面有些 古老 = =)

【域名购买】Namesilo 优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

7. 反向代理

7.1 利用 Nginx Proxy Manager

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上域名购买、域名解析 视频教程) (名称改成你自己想要的域名前缀即可)

1c160f28afd3549159df3efa2507ad0c.png

之后,登陆 Nginx Proxy Manager(不会的看这个:安装 Nginx Proxy Manager相关教程))

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80443 端口,所以本机不能占用(比如原来就有 Nginx)

直接丢几张图:

c359c92172657c5667c6a1738b214511.png940b5b933d91851bb44423d5bfc3f628.png46b8997021848567235e69ee8b0be54f.pnge2fed6006e075057bacdb57857e516b7.png

注意填写对应的 域名IP端口,按文章来的话,应该是 3001

IP 填写:

如果 Nginx Proxy Manager 和 drawioai 在同一台服务器上,可以在终端输入:

ip addr show docker0

查看对应的 Docker 容器内部 IP。

否则直接填 drawioai 所在的服务器 IP 就行。

然后访问域名就可以访问了!

7.2 利用宝塔面板

发现还是有不少小伙伴习惯用宝塔面板,这边也贴一个宝塔面板的反代配置:

直接新建一个站点,不要数据库,不要 php,纯静态即可。

然后打开下面的配置,修改 Nginx 的配置。

image-20220819150345725image-20220819150542867

代码如下:

location / {
      proxy_pass http://127.0.0.1:3001/;       # 注意改成你实际使用的端口
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }

此方法对 90% 的反向代理都能生效,然后就可以用域名来安装访问了。

有同学可能会问,为什么不直接用宝塔自带的反向代理功能。

image-20220819150730128

也可以,不过咕咕自己之前遇到过当有多个网站需要反代的时候,在这边设置会报错的情况 = =

所以后来就不用了,直接用上面的方法来操作了。

8. 使用教程

非常简单,所见即所得。

登录页,

ccd17e50213ceede7348a39b298f3085.png

语言设置,改成中文,

b0257ee37eafc1d9f205cf1858ab48fd.png

简单展示

fead7ea8e6e781129d1c91dd03ee7b02.png

右边可以输入提示词,比如让它画一只猫猫,

02798e80fde95bc63142b86cfc83dc33.png

画的熊猫不太像……

b86441ae7cc00d5bab3ae0032ffa9cad.png

当然你也可以隐藏掉这个提示词输入框,把它当成一个普通的画图软件来用,

b821ac8ceac261079ae31b3998e2b55c.png

如果用默认的,其实是用的项目作者的 API,速率可能会有限制,当然用自己的 API 就没有这个问题了,如果手上富裕,也可以考虑捐赠作者,支持开源项目长久发展。

727fd49d8064f8e7fae8d934daf5183f.png

8.1 更新 drawioai

这个项目后续会持续有更新,所以提供一个更新的方式。

cd /root/data/docker_data/drawioai

docker compose pull

docker compose up -d    # 请不要使用 docker compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

输入 y

利用 Docker 搭建的应用,更新非常容易~

8.2 卸载 drawioai

同样进入安装页面,先停止所有容器。

cd /root/data/docker_data/drawioai

docker compose down

cd ..

rm -rf /root/data/docker_data/drawioai  # 完全删除

可以卸载得很干净。

9. 使用问题

那个保存按钮点了似乎没有任何反馈……

不过画的图导出是没问题的。

大家使用上有什么心得或者问题,欢迎评论区交流~

10. 结尾

祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢作者 @DayuanJiang 的辛苦付出,让我们能用到这么优秀的项目!欢迎大家都去给这个项目点个 star。

参考资料

官方 GitHub:https://github.com/DayuanJiang/next-ai-draw-io