Pocket 关停后怎么办:linkding 自托管书签库 + 全文存档实测

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_NAMELD_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=TrueLD_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

拉新镜像、重启容器即可,书签一条不丢。建议升级前先打一个备份包,养成习惯。