飞牛NAS部署 Linkwarden:书签管理神器
部署 Linkwarden 之前,请确认你的飞牛NAS已经安装并配置好 Docker 环境。飞牛NAS 基于 Debian 系统,在应用中心默认支持 Docker Compose,这会让后续部署非常顺手。Linkwarden 是一款开源的书签管理工具,支持自托管,能够跨平台保存、组织和共享网页书签,非常适合个人或小团队使用。
准备工作
在飞牛NAS上创建一个用于存放 Linkwarden 数据的持久化目录。建议在 Docker 的数据卷路径下新建文件夹,比如 /vol1/1000/docker/linkwarden。这个目录会存储数据库、上传文件等核心数据,确保后续升级不会丢失内容。
打开飞牛NAS的文件管理器或通过 SSH 连接到 NAS,执行以下命令创建目录结构:
mkdir -p /vol1/1000/docker/linkwarden/data
mkdir -p /vol1/1000/docker/linkwarden/backups
data 文件夹用于 PostgreSQL 数据库和 Linkwarden 本身的数据,backups 文件夹用于存放导出的备份文件(可选)。
编写 Docker Compose 配置文件
飞牛NAS强烈推荐使用 Docker Compose 来管理容器。在 /vol1/1000/docker/linkwarden/ 目录下新建一个文件,命名为 docker-compose.yml。使用你喜欢的文本编辑器(如 vim、nano 或飞牛自带的记事本)写入以下内容:
version: '3.8'
services:
linkwarden:
image: ghcr.io/linkwarden/linkwarden:latest
container_name: linkwarden
environment:
- DATABASE_URL=postgresql://linkwarden:your_strong_password@postgres:5432/linkwarden
- NEXTAUTH_SECRET=your_generated_secret_key
- NEXTAUTH_URL=http://你的NAS内网IP:8080
ports:
- "8080:3000"
volumes:
- ./data:/data/data
- ./backups:/data/backups
restart: unless-stopped
depends_on:
- postgres
postgres:
image: postgres:16-alpine
container_name: linkwarden-db
environment:
- POSTGRES_DB=linkwarden
- POSTGRES_USER=linkwarden
- POSTGRES_PASSWORD=your_strong_password
volumes:
- ./data/db:/var/lib/postgresql/data
restart: unless-stopped
请务必修改几个关键参数。your_strong_password 替换为一个至少16位的随机密码,可以通过命令 openssl rand -base64 32 生成。your_generated_secret_key 同样需要替换,命令 openssl rand -base64 48 可生成一个安全密钥。NEXTAUTH_URL 中的 你的NAS内网IP 要换成飞牛NAS的实际IP地址,比如 http://192.168.1.100:8080。如果后续打算通过域名访问,这里可以直接写域名,但需要配合反向代理使用。
启动服务
保存 docker-compose.yml 文件后,在文件所在目录打开终端(或通过SSH连接),执行以下命令:
cd /vol1/1000/docker/linkwarden
docker compose up -d
Docker 会自动拉取 Linkwarden 和 PostgreSQL 的镜像,并创建两个容器。第一次启动可能需要几分钟,具体取决于网络速度。启动完成后,通过 docker compose ps 命令查看容器状态,如果两个容器的状态都是 Up,说明部署成功。
初始化配置
打开浏览器,访问 http://你的NAS内网IP:8080。你会看到 Linkwarden 的设置页面。按照指引创建第一个管理员账户,这里输入的邮箱和密码将作为超级管理员登录凭证。创建完成后,系统会自动跳转到主界面。
Linkwarden 默认情况下只允许注册一个管理员账户。如果需要添加更多用户,可以在管理后台的“Settings” -> “Invite Users”中生成邀请链接。注意,普通用户只能管理自己的书签,无法看到其他用户的内容,这很符合隐私保护需求。
使用技巧与优化
配置反向代理
如果你希望通过域名在外网访问 Linkwarden,建议在飞牛NAS上使用 Nginx Proxy Manager 或 Caddy 做反向代理。代理时注意将 http://localhost:8080 作为目标地址,并且务必启用 WebSocket 支持,因为 Linkwarden 的部分功能(如实时同步)依赖 WebSocket。
备份策略
Linkwarden 的数据全部保存在 PostgreSQL 数据库中,建议定期备份。最简单的方法是在飞牛NAS的计划任务中,添加一个每日备份脚本,将 ./data/db 目录压缩后保存到其他存储空间。例如:
0 3 * * * tar -czf /vol1/1000/backups/linkwarden-db-$(date +%Y%m%d).tar.gz -C /vol1/1000/docker/linkwarden/data/db .
浏览器插件安装
Linkwarden 提供了官方浏览器扩展,支持 Chrome、Firefox 和 Edge。在扩展设置中填入你的服务器地址(例如 http://你的NAS内网IP:8080),登录后即可一键保存当前页面。这个功能非常实用,能够极大提升书签采集效率。
资源占用评估
Linkwarden 使用 Node.js 开发,内存占用相对较低。在飞牛NAS上,两个容器合计内存消耗约 300-500MB,CPU 占用几乎可以忽略。建议飞牛NAS至少有 2GB 可用内存,否则可能影响其他服务运行。
常见问题处理
如果启动后无法访问页面,首先检查端口是否被占用。在飞牛NAS的终端执行 netstat -tulpn | grep 8080,如果端口已被其他服务占用,可以修改 docker-compose.yml 中 ports 的映射,比如改为 "8081:3000",然后重新启动容器。
遇到数据库连接错误时,检查 docker-compose.yml 中 DATABASE_URL 的密码是否与 POSTGRES_PASSWORD 一致。如果不一致,需要修改后执行 docker compose down && docker compose up -d 重新创建容器。
若登录后显示白屏,通常是 NEXTAUTH_URL 配置错误。确保该地址与浏览器访问的地址完全一致,包括端口号和协议(http/https)。
总结
通过 Docker Compose 在飞牛NAS上部署 Linkwarden,只需要一个配置文件加两条命令就能完成,整个过程非常简洁。Linkwarden 不仅界面美观、响应快速,还支持标签、集合、搜索等高级功能,完全能够替代商业书签服务。配合飞牛NAS的24小时开机特性,你的书签库将永远在线,随时可用。