MoreRSS

site iconLaoda | 咕咕修改

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

Inoreader Feedly Follow Feedbin Local Reader

Laoda | 咕咕的 RSS 预览

【好玩儿的Docker项目】十分钟搭建一个「极简私人网盘」——hacdias/webdav,让你可以像逛本地文件夹一样逛 VPS

2026-05-07 11:48:59

1. 唠嗑

聊到「私人网盘」,大部分人第一反应都是 Nextcloud、Seafile 这种「全家桶」——文件、日历、联系人、笔记、视频会议,功能丰富,大而全,但是比较吃机器的配置,VPS 性能差点儿的(比如 1G 内存的),像 Nextcloud 可能都跑不动。

很多时候我们的需求其实非常朴素:

「我能不能在 Mac 的 Finder 里直接打开 VPS 上的某个目录,像本地文件夹一样拖拖拽拽?」

答案是可以,而且根本不用上 Nextcloud,一个轻量级的 WebDAV 服务就够了。

2. hacdias/webdav 简介

今天咕咕给大家介绍的 hacdias/webdav 就是这种「需求小但精准」的代表作——Go 写的独立 WebDAV 服务器,整个程序就一个二进制文件,配置文件用 YAML,跑起来内存占用几十兆。

这个作者也是之前和大家介绍的 File Browser 项目的作者。

671776cf97b39dc312016575eb5d85d2.png

旧文回顾:手把手教你搭建私人离线下载神器 Aria2,搭配 Rclone+Filebrowser 自动上传至网盘

它能干什么?

  • 把 VPS 上的某个目录通过 WebDAV 协议暴露出来
  • 支持多用户、多目录、多权限(CRUD 自由组合)
  • 支持 bcrypt 哈希密码(不用让明文密码裸奔)
  • 反代友好(配合 Nginx Proxy Manager 体验非常丝滑)
  • 没有 Web 界面、没有数据库、没有花里胡哨的功能

适合的场景包括:

  • Obsidian / Joplin / Logseq 这类笔记软件的云端同步
  • KeePass / KeePassXC 数据库远程同步
  • 手机相册备份目标盘
  • 多设备共享一个工作目录
  • 摆脱 iCloud / OneDrive / Dropbox 的容量焦虑

部署完之后,Mac、Windows、iPhone、Android,以及 Obsidian、Joplin、KeePassXC 这种支持 WebDAV 的应用都能直接挂上来用。

可以让你告别云盘焦虑!

3. 相关地址

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

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

4. 搭建环境

  • 服务器:咕咕这边用的香港的 莱卡云服务器,虽然 1 核 512M 都够用,重点看磁盘大小和带宽,但是因为用的 docker 搭建,还是建议服务器内存 1G 以上,当然你也可以选择其他 高性价比的服务器
  • 系统:Debian 11 (DD 脚本 非必需 DD,用原来的系统也 OK,之后教程都是用 Debian 或者 Ubuntu 搭建~)
  • 安装好 Docker、Docker-compose(相关脚本
  • 【必需】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程
  • 【非必需】提前安装好宝塔面板海外版本 aapanel,并安装好 Nginx(安装地址
  • 【非必需本教程选用】安装好 Nginx Proxy Manager(相关教程

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/webdav
cd /root/data/docker_data/webdav

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

vim docker-compose.yml
services:
  webdav:
    image: hacdias/webdav:latest
    container_name: webdav
    restart: unless-stopped
    ports:
      - "6065:6065"   # 左边的端口可以换成 vps 上没有用过的端口
    volumes:
      - ./config.yml:/config.yml:ro
      - ./data:/data

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

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

生成 bcrypt 密码

为了不让明文密码裸奔在配置文件里,我们用 bcrypt 哈希一下密码。Debian / Ubuntu 上一行命令搞定:

apt install -y apache2-utils
htpasswd -nbBC 12 "" '你想用的密码' | tr -d ':' | sed 's/\$2y/\$2a/'

会输出一串长这样的玩意儿:

$2a$12$8gsX8AKtD3EMdmksoqSDLAIEMEMMrSbKx/q0GG

把它整段复制下来,待会儿要塞到 config.yml 里。

如果你嫌麻烦,明文密码也是合法配置——把 config.yml 设成 chmod 600 也能挡住一般场景。但既然多花一行命令的事儿,咕咕还是建议哈希一下。

写 config.yml

vim config.yml

贴入:

address: 0.0.0.0
port: 6065
prefix: /

# 反代后面一定要打开,让 webdav 信任 X-Forwarded-* 头
behindProxy: true

# 全局默认权限(被下方 users 覆盖)
permissions: none
directory: /data

users:
  - username: gugu
    password: "{bcrypt}$2a$12$你刚才生成的那一长串"
    directory: /data/gugu
    permissions: CRUD

  # 想再加一个只读访客?解开注释即可
  # - username: guest
  #   password: "{bcrypt}$2a$12$xxx"
  #   directory: /data/public
  #   permissions: R

关于 permissions 这一栏:C = Create(创建)、R = Read(读取)、U = Update(更新)、D = Delete(删除)。给自己用就 CRUD 全开,分享给朋友的访客号建议只给 R

保存退出,给配置文件上锁:

chmod 600 config.yml
mkdir -p data

6.3 查看端口是否被占用

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

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

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

如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装 lsof

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

6.4 启动 webdav

cd /root/data/docker_data/webdav

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

docker compose logs -f

镜像非常小,等待拉取好镜像,出现 Created的字样之后,

如果日志里看到类似:

Listening on 0.0.0.0:6065

并且没有报错,那就说明跑起来了。Ctrl+C 退出日志查看,容器还在后台老老实实工作。

这时候你已经可以在浏览器里访问 http://你的 VPS-IP:6065 试试,输入用户名密码会看到一个空空荡荡的目录列表,说明服务正常。

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

不用域名直接 IP 访问也不是不行,但 Mac 的 Finder 在 HTTP 下挂 WebDAV 会自动降级成只读,套上 HTTPS 才能愉快地读写。所以域名 + HTTPS 是强烈推荐的。

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

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

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

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

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

我们接着往下看!

7. 反向代理

7.1 利用 Nginx Proxy Manager

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

68bfcaff11811fa6f3e6b24e6cfc09ce.png

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

注意:

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

打开你的 NPM 后台,新建一个 Proxy Host

Details 标签页:

  • Domain Names:填你的域名,比如 webdav.example.com
  • Schemehttp
  • Forward Hostname / IP:填你 VPS 的内网 IP,或者直接 宿主机 IP
  • Forward Port6065
  • Cache Assets:关
  • Block Common Exploits:⚠️ 一定要关! NPM 这个开关会拦掉一些 WebDAV 的 HTTP 方法(比如 PROPFINDMKCOLPROPPATCH),不关你客户端会一直 405 报错,搞得你怀疑人生
  • Websockets Support:打开

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

IP 填写:

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

ip addr show docker0

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

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

c3aecaf3e776af727e4f835a2eb9ac3e.png

SSL 标签页:

  • SSL Certificate:选 Request a new SSL Certificate,签个 Let's Encrypt
  • Force SSL:打开
  • HTTP/2 Support:打开
  • HSTS Enabled:可选
14e4edadd58f306888abf7c346ae47b4.png

Advanced 标签页:

加上这段 nginx 配置(这段非常关键,没它传大文件会断开):

client_max_body_size 0;
proxy_request_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
42cec3c76a3939e01e14aa6b390f363a.png

保存。

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

7.2 利用宝塔面板(应该类似,没具体尝试)

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

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

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

image-20220819150345725image-20220819150542867

代码如下:

location / {
      proxy_pass http://127.0.0.1:6065/;       # 注意改成你实际使用的端口
      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. 使用教程

在 Mac 上挂载

打开 Finder,按 ⌘K(或者菜单栏 → 前往 → 连接服务器),输入:

3e5d1bd55bb2b633169ec5221a86e5e3.pngd75accde7480572ed2e8f91b92ab9ca9.png35d5d96cb1dbf545631b5ca36dd11d2b.png
https://webdav.example.com

回车,会弹出登录框,填你在 config.yml 里设置的用户名 + 原始密码(注意不是 bcrypt 哈希!)。点连接,VPS 上的目录就会以网络盘的形式出现在 Finder 侧边栏。

到这里你就可以拖拖拽拽了——复制、改名、双击打开、新建文件夹,全都和本地操作没差。

不过你本地到服务器的连接速度也很重要,像我测试的时候用的是美国的机器,反代用的香港,本地在上海操作,就会没有那么的丝滑。

如果用美国线路优化的 VPS,就会丝滑很多。

我还测试了上海的服务器,就和本地操作没差别了。

53c457e49583dce57c236dafc41689fd.png

8.1 更新 webdav

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

cd /root/data/docker_data/webdav

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 卸载 webdav

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

cd /root/data/docker_data/webdav

docker compose down

cd ..

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

可以卸载得很干净。

9. 使用问题

一个不得不吐槽的问题

Mac 自带的 Finder WebDAV 客户端……怎么说呢,残废。具体表现:

  • 传大文件容易卡死或者超时
  • 偶尔莫名其妙断连,得重新挂载
  • 会自动生成一堆 .DS_Store._xxx 这类隐藏文件污染目录
  • 写入速度比读取慢得多
  • 偶尔会把刚创建的文件「藏起来」让你看不到,刷新一下又出来了

3fe696e38a9355115c4bc04af0fa76ae.png

如果你只是偶尔传几个文档应付一下没问题。但想当主力网盘用,我搜索了一下,网络上推荐了几个第三方客户端:

  • Mountain Duck(付费,约 $39 一次性)—— 真正把 WebDAV 挂成本地盘符,Finder 里和访问 iCloud Drive 几乎没差,支持离线缓存、上传队列、智能同步
  • Cyberduck(免费)—— Mountain Duck 同公司出品,但只能「打开」不能「挂载」,操作起来更像 FTP 客户端
  • rclone mount(免费,命令行)—— 不嫌折腾的话稳定性和性能都很好,还能加 VFS 缓存提速

大家有用到好用的客户端也欢迎在评论区分享交流!

安全小贴士

WebDAV 暴露在公网上,几条小建议:

  1. config.yml 一定 chmod 600,避免被同机器的其他用户读到你的哈希
  2. NPM 里给这个 host 加 IP 白名单,或者套一层 Cloudflare Access、Authelia 之类的二次认证,公网裸奔风险还是不小的
  3. fail2ban 也可以装一下,防止有人暴力试密码
  4. 重要数据用 rclone 同步一份到 Backblaze B2 或 Cloudflare R2 —— hacdias/webdav 本身没有版本管理,删了就真的删了。B2 的 5GB 免费额度对小型笔记同步绰绰有余
  5. VPS 快照定期开起来,多花不了几块钱,关键时刻能救命

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

10. 结尾

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

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

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

参考资料

官方 GitHub:https://github.com/hacdias/webdav

从「不会 Swift」到 App Store 过审:我用 Claude Code 又写了个 iOS App

2026-04-24 20:20:54

起点 —— 上一篇挖的坑,这一篇填了

2026年5月1日更新:国区Apple Store也上架了,中文名字:续然,欢迎大家使用和反馈意见!

上一篇 写完 Claude Code 魔改 Halo 主题,文末我顺手挖了个坑——说下一步想试试用 Claude 做个 iOS App。当时吹牛成分 60%、好奇成分 40%,没想到这话放出去不到一周,App 真就写完提审了。

动手之前我给自己定了两个目标。

一是摸一下 Claude 的能力边界。Halo 主题那种活,网页端改改 CSS,对 Claude 来说是舒适区。iOS 开发就不一样——SwiftUI、SwiftData、真机调试、证书签名、App Store 审核,每一环都是新坑,我想看看咕咕坐副驾这事能跑多远。

二是真有这个需求。不是为了写博客硬编的场景——我自己就囤着一堆 VPS、域名、邮箱、SaaS 订阅,哪天哪个扣费、哪天哪个到期,全靠Notion记录肉眼盯。(好吧我承认起因其实是怕自己的搬瓦工iON 等等传家宝 VPS 忘记续费 = =)。

上一篇的评论区,有朋友推荐了 Wallos——一个自托管的订阅管理工具。我确实很早之前 Docker 部署了一份(也出过教程),跑在自己 VPS 上。但 Wallos 的提醒路径是邮件——我经常忘记开邮箱…… 而且我的邮箱太多了……

手机这东西一天看 50 次。如果有一个 App 把提醒直接推到锁屏——肯定不会错过。

动机清晰了。

2026 年 4 月 21 日晚上 7 点 28 分,我在一个空文件夹里打开 Claude Code,告诉它:

「做一个 iOS App,追踪订阅和域名到期时间,本地存储,不要账号,不要云」——就这么开始。

图标 —— 一只带铃铛的鸽子

AppIcon-1024.png

整个项目里,唯一一个从一开始我就想清楚、没让 Claude 瞎发挥的东西,就是这只鸽子。

  • 🕊️ 鸽子 = 信使——按时把消息捎到
  • 🔔 铃铛 = 通知——到点了响一声
  • 🧡 粉橙渐变——压住"催债感"和"焦虑感",DueSub 做的是温柔的提醒,不是红底白字的「还有 3 天扣费!」

图标里的一图二喻,其实就是这个 App 的产品哲学——非打扰式、按时到达、不制造焦虑

功能是"续费提醒",视觉符号是"捎着铃铛的信鸽"——我只用一句话把这个意向说给 Claude 听,基本上两版就过了。这也是这次协作里我觉得最神奇的地方——你脑子里模糊的画面,只要你能用一句话说清楚它的内核,Claude 基本能把它落到像素上

当然也适配黑暗模式:

AppIcon-1024-Dark.png

成品长这样

话不多说,直接上图。

01-list.png

主列表:支出和收入同屏对照,月付、季付、年付、一次性,所有周期一个列表里理清。顶部那个粉橙色的卡片显示「30 天内还有几笔」,是我自己每天打开 App 最想第一眼看到的信息。

05-homewidget.png

主屏小组件:桌面上直接看 30 天内即将到期的 N 项,不用点进 App。对我来说这就是这个 App 存在的意义——你手机锁屏那一眼就能看到的东西,你不会忘记

04-lockscreen.png

锁屏小组件:只显示下一笔——不用解锁、不用打开 App、锁屏状态下直接看到名字和剩余天数。这个我真的挺喜欢。

整个视觉语言贯穿的还是那个「非打扰式」的产品哲学——数字不标红、不用感叹号、不搞「紧急!」这种暴力美学,就是温柔地提醒你一句。

4 天 18 个 commit

我之前没写过 Swift,一行都没有。

Xcode也没装过。

SwiftUI、SwiftData、WidgetKit(分别是苹果用来做 iOS 界面、存本地数据、做桌面/锁屏小组件的三套框架)是啥,全是边做边查。但不妨碍我 4 天写完、上架、提审。

日期 Commits 主要内容
04-21(周二) 7 初版 + 改名 + 图标 + 隐私声明 + 截图策略
04-22(周三) 4 通知 P0 三连击 + 真机验证 + 修复上线
04-23(周四) 3 多币种实时汇率(opt-in)
04-24(周五) 4 Bundle ID 改名 + ASC 元数据 + 提交审核

我大部分时间在干嘛?打字、截图、点按钮。写需求、看效果、给 Claude 反馈「这里不对、那里要改、审美再收一点」。真正「坐键盘前敲 Swift 语法」的时间——几乎没有。

但这不是说 Claude Code 是魔法。它不是。它会在一个看起来简单的地方疯狂跑偏,能爽到停不下来,也能气到想砸键盘。

下面是翻车现场合集。

翻车现场 1:改名三连跳(放了自己一鸽子)

App 一开始没专门起名字,我自用编译好之后,手机里最早就显示叫「续费提醒」。土是土了点,但直白。

第二天我觉得这名字太像 90 年代共享软件,改叫 Renewly。英文名、现代感、听起来像个 SaaS。

然后我犯了一个很愚蠢的错误——没有第一时间去 App Store 查重名。名字定了、图标调了、本地化文件改了、隐私政策的 title 也换了——一直到我准备提交审核之前,才突然想起来去搜一下。被人占了。有一个已经在跑的订阅工具 app 也叫 Renewly,功能还不完全重叠——这种重名是 Apple 审核环节大概率会让你改的那种。

这个锅就是没经验导致的。作为一个日常就在 App Store 搜 app、自己也跑一堆自托管工具的人,「发布前先查名字」这种事不用别人教。我偏偏就忘了——咕咕本咕,放了自己一鸽子

只能第三次改名。这次更彻底:英文叫 DueSub(Due + Subscription 的缝合),中文叫 续然(续是续费,然是自然、果然)。

踩完坑的经验——名字想好之后第一件事:去 App Store 和 Google Play 都搜一遍,再去 Namecheap 看看 .com 在不在(最好但不是必须),都空着再去设计图标、改代码、改本地化。我这次反过来做,付了 3 次改名的工时。

翻车现场 2:通知的三个坑(同一天翻了三次)

这个 App 最核心的功能是到期提醒——你订的 VPS 明天扣费,我提前 7 天、3 天、1 天推送,当天上午 9 点再补一刀。这个功能不对,整个 App 就是一个「带搜索框的表格」。

结果 04-22 那天我翻了三次车,一天修了三个 BUG。

坑一:九点以后打开 App,当天的提醒丢了。
调度逻辑是每天早上 9 点对「当天到期的项」推送一次。自测 OK。结果某天下午我打开 App,发现明明有一项今天到期,却没推送。根因是 App 长时间没启动,调度队列里根本没这条通知,系统自然不会补发。修法是 App 启动时 fallback 检查一次——当天有到期项、现在已经过 9 点、用户今天还没收到,就立刻补推。

坑二:自动续费的文案跟代码对不上。
设置页之前有个「自动续费项默认不提醒」的开关,文案写「你已经设置自动扣款了,不需要再提醒」。听起来很合理——但代码不是这么做的。代码里自动续费项依然推 7/3/1 天的提醒,只有当天 9 点不推。这种「你说的是 A,代码做的是 B」最阴——不 crash、不报错、但就是跟用户说好的不一样。改了文案——提前几天提一下不是坏事,是自动扣那一刻再来一下才烦。

坑三:App 开着的时候,通知横幅被系统吞了。
iOS 的默认行为——App 在前台时,系统不弹横幅。理由是 App 自己处理。这对聊天软件合理,对一个到期提醒 App 就是「你盯着屏幕的时候我就不提醒你」——有点傻缺。我真机上复现:早上 9 点 App 开着,该推的一声没响。我当时盯着屏幕看了 10 分钟,以为自己又写炸了。修法其实很简单——一行代码的事,让 App 主动告诉系统「前台也请弹」。

三个坑修完、真机回归测过,这一天我感受到了**「软件这事儿怎么每个角落都能翻车」**的经典真理。Claude 写代码很快,但它不会替你想清楚「用户下午 3 点才打开 App 会发生什么」——你得自己变成产品经理兼测试,一个个角落去踩。

翻车现场 3:Bundle ID 的最后一公里

全程最让我心里一凉的一次。

Apple 的 Bundle ID(可以理解成 App 的全球唯一身份证号)一旦在 App Store Connect 注册并提交过 build(也就是打包上传过一次安装文件),就不能改了——要改只能注册新 App ID、开新 App 记录,之前填的元数据、截图、审核资料全部作废从头来

我最早的 Bundle ID 前缀用了我日常 handle,但开发者账号实名信息是另一个名字。两边对不上,Apple 校验过不去。

只能改 Bundle ID。改它意味着:

  • Xcode 里所有 target 的 Bundle ID
  • 主 App 和小组件共享数据用的 App Group
  • 证书和描述文件要重签
  • 测试机上装过的旧版全部失效,要重装

最阴的是 App Group(让主 App 和桌面小组件共享数据的一个"命名空间",Apple 规定这个名字全球唯一)。我旧的 group 名改新的时候报冲突,说这个名字有人用过(其实是我自己,几分钟前注册的、没删)。加了个 .shared 后缀绕过——这个本来不应该存在的后缀永远留在我代码里了,作为一个「我和 Apple 的命名空间规则打过架」的纪念。

修完、重签、重装、回归——折腾好一会儿才终于走到 App Store Connect 那一步。

翻车现场 4:App Store Connect 是一个 checkbox 地狱

到这一步我才意识到:写 App 只是上架这件事的冰山一角。真正的灾难在 ASC。

让我列一下这次填过的表(不完整,凭记忆):

  • App 名称 / 副标题 / 推广文本 / 描述 / 关键词(英文中文两套
  • 主类别 / 副类别 / 年龄评级(一份 20 多题的问卷,问我「本 App 是否包含恐怖元素」——我做的是订阅提醒)
  • 版本号 / 构建号 / 上架日期
  • 隐私政策 URL(每种语言一份,英文一个、中文一个)
  • Marketing URL / Support URL
  • 12 张截图(6.9" iPhone,iPad 跳过只做 iPhone)
  • App Icon 1024×1024
  • App 隐私标签(和代码里的 PrivacyInfo.xcprivacy 是两份独立的表,要自己保证内容一致)
  • 内容版权声明(不是 App 的版权,是 App 里用没用别人的素材)
  • 出口合规性(加密算法使用)
  • IDFA 使用声明
  • DSA 欧盟合规声明(新增的,个人开发者选 Non-Trader 才不会公开家庭住址)
  • App 审核联系方式 + 演示账户 + 审核备注
  • 定价 + 可用国家地区
  • Mac / Vision Pro 兼容性(默认勾,记得关)
  • 发布方式(自动 / 手动)

整理这份清单用了一下午。一个勾一个勾过,途中踩的坑:

  • 勾了「所有国家」才发现默认包括中国大陆——国区要备案我没备,赶紧去掉
  • 英文的隐私政策 URL 填完以为就行——ASC 跳出红 banner:简体中文 - 隐私政策网址 - 此栏为必填项。每种语言要独立一个 URL
  • 以为提交时会弹「出口合规 / IDFA / 内容版权」三连问——这次居然没弹。后来才知道如果你在 Info.plist / xcprivacy / App 信息页都提前答过了,ASC 不再来烦你
  • 备注里写了 Settings 里有个 "Seed Sample Data" 按钮——结果代码里英文按钮实际叫 "Fill sample data"。自己的 App,按钮名都记错。这给 Apple reviewer 看到,他大概会觉得我连自己 app 都没摸熟

最后所有字段绿勾、红 banner 消失、「提交以供审核」按钮可点。深呼吸,点下去。

然后画面一片祥和。没有弹窗、没有「你确定吗」、没有任何仪式感——左侧栏那个黄色小点变成「正在等待审核」,就这样。

吐槽一下:上架 App 这个流程,真的太复杂了

我要认真吐一下槽。

Apple 的 App Store 是 iOS 生态的核心支柱,用户体验堪称行业标杆。但它对开发者的体验,是另一个世界。

作为一个独立开发者、副业开发者、个人开发者,你要面对:

  1. ¥688 / 年的开发者费($99)。App 一分钱不赚,每年也得续。这个我认——毕竟用了整套工具链和分发网络。但作为一个常年买小鸡的人,每年还是要叹一声——这笔钱够我买一台好的服务器了
  2. 证书体系。App ID / Bundle ID / Provisioning Profile / Distribution Certificate / Push Certificate……随便一个过期,线上炸。
  3. ASC 的 30 多个字段 + 一堆合规声明。DSA、隐私标签、xcprivacy、内容版权、出口合规、IDFA、年龄问卷、类别、定价、可用区。
  4. 审核的黑盒。什么时候过、为什么过、拒了怎么改,全靠邮件 + Resolution Center。
  5. 多语言隔离填写。每个 locale 要独立填描述、关键词、URL——漏一个返工重来。

这套流程对成熟团队(有专门的 release manager 和 compliance)是日常,对一个摸着石头过河的独立开发者——「完成率劝退」比代码本身高 10 倍。我完全理解为什么那么多做了一半的 iOS App 最后没上架——不是代码没写完,是上架的活儿没人愿意干

我这次能走完,95%的功劳给 Claude——不是它写代码快,是它陪我把这 30 多个 checkbox 一个一个过完。如果让我自己看 Apple 文档去填,我多半中途就放弃了。

顺便说一下国区(其实我想上的)

这次上架,我主动跳过了中国大陆区——但这不是我本意。

我本来是想上国区的。不是说看重国区下载量,就是觉得一个中文作者做的中文工具,中文应用商店里没它,多少有点别扭。

备案这事我是知道的。早几年折腾服务器域名的时候,我就顺手买了一个十年的 .cn 域名挂在腾讯云、老老实实走完了 ICP 备案;当时配套也买过一台大陆服务器——但国内服务器的体验真的让人一言难尽,带宽小得可怜还卖得贵,到期我就没续费了。反正我要跑的服务都在境外,非要在大陆放一台机器没必要。

这次准备上架国区,我盘算了一下以为挺简单——.cn 域名还在、备案号还在、腾讯云账号还在、实名信息跟 Apple 开发者账号对得上。填个备案号就完事了吧?

结果一查流程才发现:光域名备案不够,备案得绑定在一台「正在使用中」的境内服务器上。我那台大陆机子早停了,备案跟着就失效了——要恢复,得再租一台国内服务器

这就有意思了——我这个 App 完全离线、不联网、不部署任何东西。我不需要服务器,没有任何后端服务要跑,也没有任何 API 要托管。仅仅因为「要在国区上架」这个理由,我被强制要求去租一台我完全用不上的大陆服务器

这一点我是真的不太理解。规则的本意大概是想给在国区上架的 App 留一个可追溯的境内主体,但对一个纯离线工具来说,服务器这条要求完全是空转——我没有后端、没有数据回传、没有任何需要境内托管的东西,却要为此每年多掏一份云厂商的钱。

算一下数:国内一台够用的轻量应用服务器(能用于备案的最低配起),一年 400 块起步;加上 Apple 开发者 ¥688;加上偶尔维护备案的小成本——对一个不收费的免费 App每年多花 1000 多块为爱发电,实在不太合理

所以这次我选了 All Countries except China mainland——174 个区全部开放,国区先空着。等哪天要做付费功能,有盈利模型能把这 1000 多块年成本覆盖掉,再回头补上国区不迟。

如果你也是个人开发者、做的是免费离线工具——国区这件事可以先放一放。把其他 174 个区跑通、把用户反馈收起来、把付费模型验证出来,再回头说国内的事。

Claude Code 作为 iOS IDE 的体验

回到这次最初的目标之一——「摸一下能力边界」。

我不懂 Swift,不会 SwiftUI 的声明式语法,SwiftData 的 @Model 到现在也讲不清原理。但一点都不慌——因为我不需要懂,我只需要知道我要什么

  • 「加一个设置项,让用户切换显示货币」——Claude 去加
  • 「这个列表行高再紧一点」——Claude 去改
  • 「真机跑一下,别只编译通过」——Claude 真的会去 build、装真机、抓日志
  • 「这个通知为啥没弹,你查一下」——Claude 读上下文、看 delegate、写假设、去验证

我的角色从「写代码」变成了「定需求 + 审效果 + 做判断」。前者要懂语法,后者要懂用户。

爽的地方:你不再因为「不会 Swift」而放弃 iOS App 这个想法

不爽的地方:它跑偏的时候你得看得出来——代码能力不是凭空被替代的,你能让 Claude 写代码,但你必须能看出它写的是不是你要的。

这次 4 天我踩到的能力边界大致在:

  • 需要你当产品经理。Claude 不会主动想「用户下午 3 点打开会怎样」这种边界 case
  • 需要你当测试。它说「已修复」不等于修了,必须你跑一遍真机复现
  • 证书 / 签名 / 打包的坑它不一定记得住,要你盯着它去查 Apple 最新文档
  • ASC 的字段含义它有时候会猜错,你得自己去对官方说明

其他的——写代码、读 API、调 debug、查栈、写测试——它比我快得多得多。

成本账

粗略算一下这个 App 到目前为止的总投入:

成本
Apple 开发者账号 ¥688 / 年
Claude Code 订阅 已订的 Max 档,这次没多花
域名 + 托管 ¥0(Landing 和隐私政策挂 GitHub Pages)
服务器 ¥0(没备案,不需要)
图标 ¥0(Claude + SF Symbols + 手调)
截图 ¥0(模拟器截图 + 简单标题文字)
总计 ¥688

跳过国区之后,全部成本就剩一张 Apple 开发者年费。对一个本来一行 Swift 都没写过的人——这个投入产出比,放在 Claude Code 出现之前是完全不可想象的

写在最后

这不是一篇「你也能 4 天做 iOS App」的鸡血文。你不能,我也不能——如果换一个更复杂的 App(联网、账号、支付、音视频、AI 推理),这个周期会翻好几倍。

但有一件事值得说——「我不会写代码」,不再是做东西的理由了

过去十年,「有想法但不会写代码」是劝退无数人的天花板。想做的东西卡在「找不到技术合伙人 / 招不起开发」这一步上。今天这个天花板被 Claude Code 这类工具狠狠砸了一个洞

不是洞下面一切都容易,iOS 上架流程该复杂还是复杂,国区备案的门槛该离谱还是离谱。但写代码本身这件事,从「不可能」,变成了「要不要动手」。

当开发成本降到接近于零,真正稀缺的是什么

这次最让我想明白的一件事——开发成本的下降,反过来把产品问题推到了台前

过去「找到真实需求 + 招到靠谱开发 + 写出能用的代码」三件事捆在一起,能搞定其中任何一个都算稀罕。现在 Claude Code 把第二、第三件事的门槛降到了个人能承受的范围——那第一件事——你到底在解决一个真问题,还是在自嗨——就变成了唯一卡住你的那个门槛。

我这个 App 是我自己的小真实痛点。规模不大,也不打算做成生意。但在做的过程里我越来越相信——在今天,独立开发者是真的能吃上饭的。这两年海外 indie dev 圈里,赚到钱的人一抓一大把,有年收入几十万美金的,也有做个 $10/月小工具把生活费搞出来的。核心都不是他们代码写得多牛——而是他们找到了一小群真实付费用户的真实需求

代码这条护城河正在被填掉,用户洞察成了新的护城河。对不少想副业糊口、或者想看能不能全职独立的人,这可能是十年难遇的一个窗口期——代码能力第一次不再是硬卡点,但同时,你对用户的理解的重要性被放大到前所未有。

下一个坑

这次 DueSub 是免费 App,没盈利模型——它本来就是给我自己用的,顺手做成了产品。下一个我想挖的坑,是做一个带付费功能的 App:走一遍订阅 / 一次性内购的完整流程,去碰 StoreKit、走税务合规、看看 Apple 30% 抽水到底怎么切、体验一下从 0 到第一个付费用户的全过程。

具体做啥还没定——先把用户洞察这一步想清楚再动手。这次改名三连已经告诉我了,想清楚再动手,比手快多跑一版省事得多。

最后

回到博客侧边栏那四个字——learn or earn

这回 learn 到了 iOS 一整套流程、Claude 能力边界、App Store 审核的全部坑;earn 谈不上,免费 App 没盈利模型。但摸清一条从 0 到 1 的路径本身,就是这次最大的 earn——下一次就知道怎么走第二步了。

App 叫 DueSub / 续然,现在在审核队列里,预计 24–48 小时后上架非国区 App Store。免费、离线、不要账号——如果你也跟我一样囤着一堆 VPS 和域名、又老忘开邮箱——装一个试试。

国区的事儿,以后再说吧。

咕咕下一篇接着挖坑。

后记 · 发博客之前 App 先过审了

正文写到上面那段「在审核队列里,预计 24-48 小时」的时候,App 确实还在审核。结果博客还没来得及排版发出,苹果那边先完事了。

这篇博客发出来的时候,App 就已经在除中国大陆外的各区 App Store 可搜可下了:

DueSub: Subscription Tracker —— 免费、离线、无需登录。

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需求的更推荐港版,我这个就当纪念了 = =