支持存档的书签服务LinkWarden

什么是 LinkWarden ?

Linkwarden 是一个自托管、开源协作书签管理器,用于收集、组织和存档网页。目标是将您在网络上找到的有用网页和文章组织到一个地方,并且由于有用的网页可能会消失(参见链接失效的必然性),Linkwarden 还将每个网页的副本保存为屏幕截图和 PDF,确保可访问性即使原始内容不再可用。

官方提供了试用站点:https://linkwarden.app

重要说明

本文完成于 8 月,当时官方提供了 Dockerfile ,但是没有现成的镜像,发文时老苏发现官方对 Dockerfile 文件做了比较大的调整 ,而且也在 ghcr.io 提供了镜像,连 logo 都做了变更。 😂

老苏建议大家用官方的镜像,请将下文中 docker-compose.yml 中的 wbsu2003/linkwarden 替换为 ghcr.io/linkwarden/linkwarden:latest,其他的都是一样的。

ghcr.io 镜像的下载,可以试试 docker 代理网站:https://dockerproxy.com/,可能是现在用的人太多,速度有时候会非常慢,下载失败也是常事,不行就多试几次吧。

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

官方提供了 Dockerfile,但没找到现成的镜像,所以需要自己编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# playwright doesnt support debian image  
FROM ubuntu:focal

RUN apt-get update && apt-get install wget xz-utils -y

RUN mkdir /data

WORKDIR /data

RUN wget https://nodejs.org/dist/v20.5.0/node-v20.5.0-linux-x64.tar.xz -O nodejs.tar.xz \
&& mkdir /opt/nodejs \
&& tar -xf nodejs.tar.xz --strip-components 1 -C /opt/nodejs \
&& rm nodejs.tar.xz
ENV PATH="$PATH:/opt/nodejs/bin"
RUN npm install -g yarn

COPY ./package.json ./yarn.lock ./playwright.config.ts ./

RUN yarn
RUN npx playwright install-deps

COPY . .

RUN yarn prisma generate
RUN yarn build

CMD yarn prisma migrate deploy && yarn start

构建镜像和容器运行的基本命令如下👇

1
2
3
4
5
6
7
8
9
10
11
# 下载代码
git clone https://github.com/linkwarden/linkwarden.git

# 或者加个代理
git clone https://ghproxy.com/github.com/linkwarden/linkwarden.git

# 进入目录
cd linkwarden

# 构建镜像
docker build -t wbsu2003/linkwarden:v1 .

老苏就修改了 nodejs 的版本,从 v20.5.0 改为了 v20.5.1 ,其他的未做任何改动

1
2
3
4
RUN wget https://nodejs.org/dist/v20.5.1/node-v20.5.1-linux-x64.tar.xz -O nodejs.tar.xz \  
&& mkdir /opt/nodejs \
&& tar -xf nodejs.tar.xz --strip-components 1 -C /opt/nodejs \
&& rm nodejs.tar.xz

编译出来的镜像有点大,就这样吧

官方镜像是一样的

命令行安装

将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
version: "3.5"

services:
postgres:
image: postgres:14
container_name: linkwarden-db
restart: always
volumes:
- ./pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_USER=linkwarden
- POSTGRES_PASSWORD=qP4oMQGewTi
- POSTGRES_DB=linkwarden

linkwarden:
image: wbsu2003/linkwarden
container_name: linkwarden-web
restart: always
platform: linux/x86_64
ports:
- 3035:3000
volumes:
- ./data:/data/data
environment:
- DATABASE_URL=postgresql://linkwarden:qP4oMQGewTi@postgres:5432/linkwarden
- NEXTAUTH_URL=http://192.168.0.197:3035
- NEXTAUTH_SECRET=23NhmBsT7TzC6996XwLX9PjPNnAciPZV
depends_on:
- postgres
  • postgres 环境变量
可变
POSTGRES_USER 数据库用户,设为 linkwarden
POSTGRES_PASSWORD 数据库密码,用 vaultwarden 生成
POSTGRES_DB 数据库库名,设为 linkwarden
  • linkwarden 环境变量
可变
NEXTAUTH_URL 站点地址
NEXTAUTH_SECRET 随机字符串,可用vaultwarden 生成,或者用 openssl rand -base64 32 创建
DATABASE_URL 数据库访问地址,格式如下👇:
1
postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@数据库主机地址:5432/${POSTGRES_DB}

更多的环境变量,请参考 .env.sample 文件:https://github.com/linkwarden/linkwarden/blob/main/.env.sample

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 linkwarden 和 子目录
mkdir -p /volume1/docker/linkwarden/{data,pgdata}

# 进入 linkwarden 目录
cd /volume1/docker/linkwarden

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3035 就能看到登录界面

第一次需要注册

密码不能少于 8 个字符

登录成功后的主界面

Collections 是分类,可以设置为共享或者协作

有了分类就可以添加 Link

Link 属性除了 Collection ,还支持 Tags,查询起来会比较快

新增一个 link

可用固定在主页

可用截屏或者导出 pdf

效果还行

最后来一张官方的效果图

参考文献

Daniel31x13/link-warden: A self-hosted bookmark + archive manager to store your useful links.
地址:https://github.com/Daniel31x13/link-warden

Linkwarden
地址:https://linkwarden.app/