Pocket 关停后怎么办:linkding 自托管书签库 + 全文存档实测
2026-08-16 · DevCraft Studio
Pocket 关了,你的几千条收藏随时可能蒸发。本文在 512MB 小机上用 Docker 实测 linkding:导入浏览器书签、自动抓元数据、Wayback 与本地全文存档、配 OIDC 和反向代理,手把手给你一个永不关站的私人书签库。
延伸阅读
更多相关攻略推荐:【IP 地址 06】IPv4 枯竭之后:CGNAT / NAT64 、电子书不再租借:Calibre-Web 私有书库 + Kindle/、2026 VPS 选购决策树与白皮书:一张图看懂怎么买、如何给 VPS 厂商做"信用评估":跑路、超售与售后风险排查手册、你买的小厂 VPS 可能是二道贩子:reseller 与 WHMCS。
为什么是 linkding:Pocket 关停之后
Pocket 在 2025 年正式关停,很多人的"稍后读"清单一夜之间失去了归宿。更扎心的是,当年你辛辛苦苦收藏的上千个链接,不一定能完整导出,即便导出,也只是冷冰冰的网址,网页本身还可能在原地消失。这就是把数据交给 SaaS 的代价:它说关就关,你毫无办法。
linkding 是一个开源、极简、自托管的书签管理器,用 Docker 一条命令就能跑起来,默认用 SQLite,不需要额外数据库。它在 GitHub 上拿到 10k+ stars,采用 MIT 协议,最妙的是它对资源极其克制——官方镜像在 512MB 内存的小机器上也能稳稳运行。对于被 Pocket 吓到的重度收藏用户来说,它几乎是成本最低、最省心的自托管方案。
这篇文章我会用一台最低配的便宜 VPS 从头部署一遍,把导入书签、自动抓元数据、全文存档、反向代理和单点登录都走通,并把我踩过的坑一一列出来,让你照抄就能成。
很多人会问,为什么不干脆用浏览器自带同步?答案很简单:浏览器同步的是"收藏夹",不是"知识库"。它不会帮你自动摘要、不会去重、不会存档原文,换设备、换浏览器就乱套。linkding 把这些都接管了,而且数据完全在你自己手里,谁也关不掉。哪怕有一天项目停止维护,你的 SQLite 文件也能被任何支持 Django 的环境直接读出来,没有锁定风险。
准备一台便宜 VPS:512MB 到底够不够
先说结论:只跑基础镜像,512MB 完全够用。linkding 本体是 Python + Django,常驻内存大概在 80MB 到 150MB 之间,剩下内存留给系统和 Docker 绰绰有余。唯一的例外是"全文 HTML 存档"功能,它依赖一个叫 latest-plus 的镜像,里面塞了一个 Chromium 做整页快照,这种镜像吃内存,建议至少 1GB。
所以我们分两档来选机器:
- 只想管理书签、自动抓标题和图标、存 Wayback 链接:512MB 内存、5GB 硬盘就够,年付几美元的机器随便挑。
- 想要本地整页 HTML 快照(断网也能读全文):选 1GB 内存起步,硬盘给到 15GB 以上,因为快照会越攒越多。
这方面我常推荐的几家里,RackNerd 的年付小机、CloudCone 的按量计费套餐、Lisahost 的亚洲优化线路、以及 Virtono 的欧洲机房,都很适合当书签库的家。它们都支持 Docker,且价格低到几乎可以忽略不计。选一个离你近、延迟低的就行。
系统建议装 Ubuntu 22.04 或 Debian 12,然后先装好 Docker 和 Docker Compose:
curl -fsSL https://get.docker.com | sh
装完执行 docker version 能看到客户端和服务端,就可以进入下一步了。如果机器只有 512MB,记得顺便开一下 Swap,避免偶尔的内存峰值把容器挤崩:fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile,再写进 /etc/fstab 让它开机自动挂载。这一步在超低价 OpenVZ 小机上尤其有用。
用 Docker Compose 部署 linkding
linkding 官方直接提供了 docker-compose.yml 和 .env.sample。我们新建一个目录,把配置写进去。最简洁的 compose 文件长这样:
services:
linkding:
image: sissbruecker/linkding:latest
container_name: linkding
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./data:/etc/linkding/data
把这段存成 docker-compose.yml,然后在同目录建一个 data 文件夹(mkdir data),再执行:
docker compose up -d
等镜像拉下来、容器起来,浏览器打开 http://你的IP:9090 就能看到登录页了。注意:linkding 镜像不会自动建管理员账号,首次访问会报错或让你登录却没账号,这是新手第一个坑。
创建初始用户的命令是:
docker compose exec linkding python manage.py createsuperuser --username=joe --email=joe@example.com
回车后会让你输入密码,设一个强密码即可。嫌麻烦也可以在 .env 里写 LD_SUPERUSER_NAME 和 LD_SUPERUSER_PASSWORD,容器启动时自动建好。登录进去,一个干净的极简书签界面就在你手里了。
导入浏览器书签 + 自动抓取元数据
Pocket 导出的如果还是链接,第二步就是把你浏览器里多年收藏也搬过来。linkding 支持标准的 Netscape HTML 格式,也就是 Chrome、Firefox、Edge "导出书签"生成的那个 HTML 文件。操作路径是:设置 → 导入,选文件上传即可。
上传之后 linkding 会在后台逐个请求这些网址,自动抓取标题、描述和网站图标。这一步非常关键,因为原始书签往往只有网址没有名字,整理起来像天书。抓完元数据后,每条书签都会带上可读的标题和一句话简介,体验立刻接近 Pocket。
几个实操要点:
- 书签多的话(比如几千条),导入会跑一阵子,别急,去后台任务页能看到进度。
- 如果某些网址已经 404,linkding 默认会做 URL 校验并可能报错;想原样保留死链,可以在环境变量里设
LD_DISABLE_URL_VALIDATION=True。 - 给书签打标签是核心玩法,建议用
分类/子分类的层级写法,比如dev/python,以后筛选又快又准。
另外强烈建议装官方浏览器扩展(Firefox 和 Chrome 商店都有),平时看到好文章点一下就存进自己的库,比 Pocket 的体验只多不少。
自动存档:本地 HTML 与 Wayback Machine
只存网址是不够的——原文随时可能被删、被改、甚至整站关停。linkding 提供两层存档保险:
- Wayback Machine 存档:linkding 的后台任务会自动把每个书签提交到 Internet Archive 的 Wayback Machine,生成一个永久快照链接。这是默认开启的,不需要你额外配置,只要别把
LD_DISABLE_BACKGROUND_TASKS设成 True。 - 本地 HTML 全文快照:需要切换到
latest-plus镜像(带 Chromium),它会用 SingleFile 把整页存成离线 HTML,断网也能读全文。代价是镜像大、吃内存,且快照占磁盘,记得定期清理或挂载大硬盘。
我的建议是:小机先用基础镜像 + Wayback 存档,性价比最高;真有"网页消失恐惧症"再升到 1GB 机器开本地快照。切换镜像只需改 compose 里的 image 一行,重新 docker compose up -d 即可,数据都在挂载的 data 目录里,不会丢。
上反向代理 + HTTPS:别忘了 Host 头
直接用 IP:9090 访问既不优雅也不安全。生产环境应该套一个反向代理并上 HTTPS。常见组合是 Nginx 或 Caddy 在前,linkding 在后。
这里有个中文圈教程几乎必漏的坑:Nginx 默认会把 Host 头改写成 proxy_pass 里的地址,导致 linkding 收不到正确的域名,登录时直接 CSRF 报错、提交表单 403。解决办法是在 location 块里加两行:
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
如果你不想动代理配置,也可以直接给 linkding 设置可信源:LD_CSRF_TRUSTED_ORIGINS=https://bookmarks.yourdomain.com。两个办法二选一,推荐两个都做,双保险。
Caddy 最简单,一句 reverse_proxy localhost:9090 就能跑,它默认不改写 Host 头,基本开箱即用。证书全自动,省心。无论用哪家 VPS,只要解析好域名,十分钟就能 HTTPS 化。
用 OIDC 做单点登录
如果你家里已经有一套统一的身份认证(比如 Authentik、Authelia、Keycloak,或者支持 OIDC 的账号系统),linkding 原生支持 OIDC 单点登录,不用每人记一套密码。
开启方式是在环境变量里设:
LD_ENABLE_OIDC=True
再补齐 OIDC 端点:
OIDC_OP_AUTHORIZATION_ENDPOINT=https://auth.example.com/api/oidc/authorization
OIDC_OP_TOKEN_ENDPOINT=https://auth.example.com/api/oidc/token
OIDC_OP_USER_ENDPOINT=https://auth.example.com/api/oidc/userinfo
OIDC_RP_CLIENT_ID=linkding
OIDC_RP_CLIENT_SECRET=你的客户端密钥
这样登录页就会出现 "Login with SSO" 按钮。默认用邮箱作为用户名(OIDC_USERNAME_CLAIM=email),也可以改成 preferred_username。自签证书的话把 OIDC_VERIFY_SSL 设成 False 先跑通。
如果你只是想用 Authelia 这类认证代理挡在前面,不接 OIDC,也可以走 auth proxy 模式:设 LD_ENABLE_AUTH_PROXY=True 和 LD_AUTH_PROXY_USERNAME_HEADER=HTTP_REMOTE_USER,由代理负责鉴权,linkding 信任它传来的用户名头。
避坑清单:中文教程常漏的 7 个点
- 不建管理员账号:镜像不自带用户,必须先
createsuperuser,否则登不进去。 - 反向代理丢 Host 头:Nginx 不配
proxy_set_header Host $host必踩 CSRF 403。 - 数据目录权限:宿主机
data目录权限不对时容器起不来,建议chown -R 1000:1000 data或确保可写。 - latest-plus 吃内存:开本地快照前先确认内存 ≥1GB,否则 Chromium 会被 OOM 杀掉。
- 后台任务被关:设了
LD_DISABLE_BACKGROUND_TASKS=True就不会有 Wayback 存档,别手滑。 - 域名没加可信源:用域名访问却没配
LD_CSRF_TRUSTED_ORIGINS,表单提交会失败。 - 只备份镜像不备份 data:所有书签都在挂载的
data/db.sqlite3,重装系统前一定先拷走这个目录。
备份与升级
自托管最怕"好不容易攒起来,一夜回到解放前"。linkding 的备份极简:它用 SQLite,整个数据库就是一个文件 data/db.sqlite3。定期把 data 目录整个打包就行:
tar czf linkding-backup-$(date +%F).tar.gz data
可以写个 cron 每天凌晨打包,再用 rclone 推到对象存储或另一台机器。升级也很轻量,因为数据在外挂卷里:
docker compose pull && docker compose up -d
拉新镜像、重启容器即可,书签一条不丢。建议升级前先打一个备份包,养成习惯。