什么是 LinkWarden ?
Linkwarden
是一个自托管、开源协作书签管理器,用于收集、组织和存档网页。目标是将您在网络上找到的有用网页和文章组织到一个地方,并且由于有用的网页可能会消失(参见链接失效的必然性),Linkwarden
还将每个网页的副本保存为屏幕截图和
官方提供了试用站点: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
,但没找到现成的镜像,所以需要自己编译
# 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
构建镜像和容器运行的基本命令如下👇
# 下载代码
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
,其他的未做任何改动
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
文件
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 | 数据库访问地址,格式如下👇: |
postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@数据库主机地址:5432/${POSTGRES_DB}
更多的环境变量,请参考
.env.sample
文件:https://github.com/linkwarden/linkwarden/blob/main/.env.sample
然后执行下面的命令
# 新建文件夹 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/