支持存档的书签服务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,但没找到现成的镜像,所以需要自己编译

# 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:14container_name: linkwarden-dbrestart: alwaysvolumes:- ./pgdata:/var/lib/postgresql/dataenvironment:- POSTGRES_USER=linkwarden- POSTGRES_PASSWORD=qP4oMQGewTi- POSTGRES_DB=linkwardenlinkwarden:image: wbsu2003/linkwardencontainer_name: linkwarden-webrestart: alwaysplatform: linux/x86_64ports:- 3035:3000volumes:- ./data:/data/dataenvironment:- DATABASE_URL=postgresql://linkwarden:qP4oMQGewTi@postgres:5432/linkwarden- NEXTAUTH_URL=http://192.168.0.197:3035- NEXTAUTH_SECRET=23NhmBsT7TzC6996XwLX9PjPNnAciPZVdepends_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.mzph.cn/news/134366.shtml

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

相关文章

回归模型原理总结及代码实现

前言 本文将介绍回归模型算法,并总结了一些常用的除线性回归模型之外的模型,其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归、人工神经网络、…

Kibana使用Timelion根据时间序列展示数据

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

工业自动化工厂PLC远程控制网关物联网应用

远程控制网关在工厂自动化领域中起到了至关重要的作用,特别是在工厂PLC数据通讯方面。它充当着数据传输的桥梁,连接了工厂中的各类设备和系统,实现了远程监控和控制的功能。本文将详细介绍远程控制网关在工厂PLC数据通讯中的应用。 远程控制网…

计算机毕业设计 基于SpringBoot的私人西服定制系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

浅谈电力物联网时代物联网技术在电力系统中的应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定201801 摘要:在电力系统建设中,物联网的应用不仅促进了我国电力工业的发展,而且对我国的物联网技术也起到了一定的促进作用。随着物联网技术应用于电力系统,推动了中国工业的快速发展。因…

利用python找出偏序集中极大元、极小元、最大元和最小元

1 问题 在离散数学“关系”这一章的学习过程中,学到偏序集中极大元、极小元、最大元和最小元的求解方法,于是提出能不能用python语言实现偏序集中极大元、极小元、最大元和最小元的求解? 2 方法 判断偏序集中的极大元、极小元、最大元和最小元…

常见React Hooks 钩子函数用法

一、useState useState()用于为函数组件引入状态(state)。纯函数不能有状态,所以把状态放在钩子里面。 import React, { useState } from react import ./Button.cssexport function UseStateWithoutFunc() {const [name, setName] useStat…

了解高防服务器的工作原理

在当今互联网时代,网络安全问题日益突出,各种网络攻击层出不穷。为了保护企业的网络安全,高防服务器应运而生。那么,你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种网络攻击的…

Bun 1.0.7 版本发布,实现多个 Node.js 兼容改进

导读Bun 是一个集打包工具、转译器和包管理器于一体的 JavaScript 运行时,由 Jarred Sumner 发布了 1.0.7 版本。本次更新实现了对 Node.js 运行时的多项兼容性改进,并修复了近 60 个 bug。 根据发布说明,本版本对 “bun install” 命令进行…

uview组件u-tabs添加badge数字消息提醒

效果图 在slot插槽中&#xff0c;使用v-if指令来判断当前选项卡是否是当前激活的选项卡&#xff08;即index是否等于currentTab&#xff09;&#xff0c;以及徽标数是否大于0。 <view><u-tabs:list"listTab" //标题数据:is-scroll"false":curre…

【C++初阶】一、入门知识讲解(C++关键字、命名空间、C++输入输出、缺省参数、函数重载)

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【数据结构初阶】十一、归并排序(比较排序)的讲解和实现 &#xff08;递归版本 非递归版本 -- C语言实现&#xff09;-CSDN博客 引言&#xff1a;什么是C C语言是结构化和模块化的…

pytest全局变量的使用

这里重新阐述下PageObject设计模式&#xff1a; PageObject设计模式是selenium自动化最成熟&#xff0c;最受欢迎的一种模式&#xff0c;这里用pytest同样适用 这里直接提供代码&#xff1a; 全局变量 conftest.py """ conftest.py 全局变量&#xff0c;主要实…

探索ChatGPT在学术写作中的应用与心得

随着人工智能的迅猛发展&#xff0c;ChatGPT作为一种强大的自然语言处理模型&#xff0c;逐渐在学术界引起了广泛的关注。本文将探讨ChatGPT在学术写作中的应用&#xff0c;并分享使用ChatGPT进行学术写作时的一些经验和心得。 01 — ChatGPT在学术写作中的应用 1.文献综述和…

高速串行总线——SATA

SATA简介 SATA的全称是Serial Advanced Technology Attachment(串行高级技术附件&#xff0c;一种基于行业标准的串行硬件驱动器接口)&#xff0c;它是一种电脑总线&#xff0c;主要功能是用作主板和大量存储设备&#xff08;如硬盘及光盘驱动器&#xff09;之间的数据传输 SA…

挑战100天 AI In LeetCode Day04(热题+面试经典150题)

挑战100天 AI In LeetCode Day04&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-62.1 题目2.2 题解 三、面试经典 150 题-63.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&am…

Flink SQL Window TopN 详解

Window TopN 定义&#xff08;⽀持 Streaming&#xff09;&#xff1a; Window TopN 是特殊的 TopN&#xff0c;返回结果是每⼀个窗⼝内的 N 个最⼩值或者最⼤值。 应⽤场景&#xff1a; TopN 会出现中间结果&#xff0c;出现回撤数据&#xff0c;Window TopN 不会出现回撤数据…

蓝桥杯每日一题2023.11.5

题目描述 方格分割 - 蓝桥云课 (lanqiao.cn) 题目分析 对于每个图我们可以从中间开始搜索&#xff0c;如果到达边界点就说明找到了一种对称的方法&#xff0c;我们可以直接对此进行答案记录每次进行回溯就会找到不同的图像&#xff0c;如果是一样的图像则算一种情况&#xff…

[Kettle] Excel输入

Excel文件采用表格的形式&#xff0c;数据显示直观&#xff0c;操作方便 Excel文件采用工作表存储数据&#xff0c;一个文件有多张不同名称的工作表&#xff0c;分别存放相同字段或不同字段的数据 数据源 物理成绩(Kettle数据集2).xls https://download.csdn.net/download/H…

AI智能公文写作助手“文山会海“

公文写作痛点 没思路&#xff0c;公文写作无从下手公文类型繁多&#xff0c;一时难以全面掌握公文内容组织难度大&#xff0c;不易清晰、有逻辑的进行表达时间紧任务急&#xff0c;往往需要在有限的时间内完成大量写作工作反复修改优化&#xff0c;需满足更多新要求&#xff0…

Linux学习之vim跳转到特定行数

参考的博客&#xff1a;《Vim跳到最后一行的方法》 《oeasy教您玩转vim - 14 - # 行头行尾》 《Linux&#xff1a;vim 中跳到首行和最后一行》 想要跳到特定行的话&#xff0c;可以在命令模式和正常模式进行跳转。要是对于vim的四种模式不太熟的话&#xff0c;可以到博客《Linu…