支持存档的书签服务LinkWarden

news2024/12/27 11:55:35

在这里插入图片描述

什么是 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,但没找到现成的镜像,所以需要自己编译

# 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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1183449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

读者自荐的 4 个 GitHub 项目

本期推荐的 4 个开源项目,为读者在开源项目 Awesome-GitHub-Repo 的评论区自推的, 如果你开源了不错的项目,想让大家看到,也可以去 Awesome-GitHub-Repo 进行投稿。 本期推荐开源项目目录: 1. DB-GPT 2. 定制中国传统节日头像 3. …

闪客网盘系统源码,已测试对接腾讯COS及本地和支付(支持限速+按时收费+文件分享+可对接易支付)- 修复版

正文概述 资源入口 支持对文件下载限速 对接易支付 推广赚钱啥的功能 源码非常的好 支持腾讯cos 阿里云cos 本地储存 远程存储 源码仅支持服务器搭建 php7.2 伪静态thinkphp 运行目录public 导入数据库 修改config目录下的database.php数据库信息 后台地址: 域名/ad…

参考文献管理软件 EndNote 21 mac v21.2中文版特点和功能

EndNoter mac是一款参考文献管理软件,旨在帮助学术研究者、学生和专业人士有效地管理和引用参考文献。该软件提供了许多功能,使用户可以轻松地组织、搜索和引用各种类型的文献。 EndNoter mac软件特点和功能 1. 参考文献管理:EndNoter允许用户…

中小企业如何实现数字化转型发展?

数字化转型已成为企业未来发展的必然趋势,行业头部企业在此过程中持续投入自动化、信息化及数字化技术。虽然大多数系统投入不能仅基于短期投资回报率决策,且资源投入大见效慢、失败率也高,但数字化转型是不可逆转的过程,未来生存…

基于Skywalking的全链路跟踪实现

在前文“分布式应用全链路跟踪实现”中介绍了分布式应用全链路跟踪的几种实现方法,本文将重点介绍基于Skywalking的全链路实现,包括Skywalking的整体架构和基本概念原理、Skywalking环境部署、SpringBoot和Python集成Skywalking监控实现等。 1、Skywalki…

代码随想录算法训练营第四十五天丨 动态规划part08

139.单词拆分 思路 背包问题 单词就是物品,字符串s就是背包,单词能否组成字符串s,就是问物品能不能把背包装满。 拆分时可以重复使用字典中的单词,说明就是一个完全背包! 动规五部曲分析如下: 确定dp…

java网络通信:Springboot整合Websocket

网络通信 什么是webSocket?WebSocket 原理springboot整合websocket过程 网络通信三要素:ip地址(ipv4、ipv6)、端口号(应用程序的唯一标识)、协议(连接和通信的规则,常用:…

9 网关的作用

1、总结: 1.如果离开本局域网,就需要经过网关,网关是路由器的一个网口。 2.路由器是一个三层设备,里面有如何寻找下一跳的规则 3.经过路由器之后 MAC 头要变,如果 IP 不变,相当于不换护照的欧洲旅游&#…

Android:Type io.reactivex.android.R is defined multiple times

项目直接运行没有问题,但是打正式包会报这个错误, 错误的重点是io.reactivex.android.R这个引用的包与项目中引用的包冲突, 需要改成相同的版本 即可

Java中对象的比较:复写基类的equals+Comparble接口类的比较+比较器比较+PriorityQueue的比较+源码分析

文章目录 Java中对象的比较一、元素的比较二、对象的比较1.复写基类的equals2.基于Comparble接口类的比较3.基于比较器比较三种方法的对比 4. 集合框架中PriorityQueue的比较方式 Java中对象的比较 一、元素的比较 在Java中,基本类型的对象可以直接比较大小。 二、…

哪款手机便签软件支持存储录音文件并支持转文字?

手机便签类软件带有存储录音转文字功能是比较实用的,很多人通常会整理很多录音类型的文件,录音文件整合在一起后,后续有需要可以逐条点开播放收听。尤其是在工作中,当领导说一些重点时,大家无法借助灵活的大脑来成功的…

第20章_Myisam与InnoDB

文章目录 区别如何选择innodb额外补充知识innodb为什么推荐使用自增ID作为主键innodb引擎4大特性 区别 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条…

编写MBR主引导记录

BIOS 检测,初始化硬件。挑一些重要的,能保证计算机能运行那些硬件的基本IO操作。 唤醒BIOS 唤醒BIOS需要知道其入口地址,在最后将跳转到0x7c00处 接电的一瞬间,cs:ip寄存器被初始化为0xF000:0xFFF0,所以等效地址是0…

Mybatis-Plus前后端分离多表联查模糊查询分页

数据准备 数据库配置: /*Navicat Premium Data TransferSource Server : localhost_3306Source Server Type : MySQLSource Server Version : 80100 (8.1.0)Source Host : localhost:3306Source Schema : test01Target Server Type : MySQLT…

Ubuntu20.0工作区(workspace)介绍,切换工作区方式和快捷键

Ubuntu20.0工作区(workspace)介绍,切换工作区方式和快捷键 先修改一下ubuntu截屏的快捷键查看工作区新建工作区工作区切换 先修改一下ubuntu截屏的快捷键 修改为 查看工作区 按下Super键(即Windows键),可…

sql学习笔记(三)

目录 1.四舍五入 2.向上取整 3.向下取整 4.Hive 分区 5.case when条件语句 6.日期函数 7.字符串函数 8.窗口函数 1️⃣排序函数 1.四舍五入 round select round(3.14) —>3 2.向上取整 ceiling select ceiling(12.15) —>13 3.向下取整 floor select flo…

【网络协议】

网络协议 1 网络通讯1.1 防火墙1.2 子网掩码1.3 网关1.4 2 SSH2.1 SSH2.2 SSH12.3 SSH2 3 Telnet4 Telnet/SSL5 NFS6 TFTP7 FTP8 SFTP9 HTTP10 HTTPS11 NAT12 加密 1 网络通讯 1.1 防火墙 所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法&…

spring中纯注解实现Advice

背景:课本上是注解和Xml文件混用的方式,研究了一下用配置类加注解和测试方法实现各种通知方式的切入。 1.首先dao的接口,增删改查 public interface UserDaoAspect {public void add();public void delete();public void update();public vo…

【K-means聚类算法】实现鸢尾花聚类

文章目录 前言一、数据集介绍二、使用步骤1.导包1.2加载数据集1.3绘制二维数据分布图1.4实例化K-means类,并且定义训练函数1.5训练1.6可视化展示2.聚类算法2.1.可视化生成3其他聚类算法进行鸢尾花分类 前言 例如:随着人工智能的不断发展,机器…

Vue 3 相对于 Vue2,模板和组件的一些变化

目录 1,模板的变化1,v-modelvue2vue3 2,v-if 和 v-for3,keyv-forv-if 4,Fragment 2,组件的变化1,Teleport2,异步组件 1,模板的变化 1,v-model vue2 对组件…