自托管书签管理器LinkAce

news2024/11/29 1:47:41

在这里插入图片描述

本文完成于 9 月下旬,当时的版本是 v1.10.4,发稿时最新版本为 v1.10.5

什么是 LinkAce ?

LinkAce 是一个自托管档案,用于收集您喜爱的网站的链接,并保存文章以供日后阅读。LinkAce 提供了一个长期存档来存储指向网站、媒体文件或其他任何具有有效 URL 的链接。用户可以对添加的链接进行分类以便以后找到它们,并与朋友、家人或同事共享链接列表。但是,LinkAce 不提供同步浏览器书签的解决方案。

LinkAce 有两个不同版本的镜像:

  • 一个包含应用程序和 Web 服务器的容器(标记为linkace/linkace:simple),simple 版中,只需要一个 Docker 容器和一个可选的数据库。如果您在 Docker 之外使用托管数据库,则只需运行一个容器。
  • LinkAce 作为带有独立 Web 服务器的独立容器(标记为linkace/linkace:latest),高级设置与简单设置没有太大区别,但可能不适合某些环境。具体来说,它为应用程序和 Web 服务器使用不同的容器。docker-compose 文件还包括 Redis 的配置,从而提高了性能。

老苏介绍的是基于 linkace/linkace:simple 的安装,你可以在 https://github.com/Kovah/LinkAce/releases/tag/v1.10.5 找到官方提供的安装样板文件,当然你也可以跟着老苏一步一步操作

如果不想搭建,可以试试官方的 demo 站点:https://demo.linkace.org/guest/links

准备

建数据库

数据库直接用的群晖的 MariaDB 10,在 phpMyAdmin 中创建了名为 linkace 的数据库

.env 文件

环境变量文件 .env 的设置,需要根据上一步数据库的设定做调整

## LINKACE CONFIGURATION

## Basic app configuration
COMPOSE_PROJECT_NAME=linkace
# The app key is generated later, please leave it like that
APP_KEY=z8E9VP5NAV2Bhtt2ewDy8vJcv25fYjCi

## Configuration of the database connection
## Attention: Those settings are configured during the web setup, please do not modify them now.
# Set the database driver (mysql, pgsql, sqlsrv)
DB_CONNECTION=mysql
# Set the host of your database here
DB_HOST=192.168.0.197
# Set the port of your database here
DB_PORT=3307
# Set the database name here
DB_DATABASE=linkace
# Set both username and password of the user accessing the database
DB_USERNAME=linkace
DB_PASSWORD=123456

变量的具体说明见下表👇

可变
COMPOSE_PROJECT_NAME项目名称
APP_KEY应用程序标识,用验证接入的合法性,老苏一般用 Bitwarden 生成
DB_CONNECTION数据库类型
DB_HOST数据库主机名或者 IP
DB_PORT数据库端口
DB_DATABASE数据库库名
DB_USERNAME数据库用户
DB_PASSWORD数据库密码,老苏只是演示用的

还支持邮件设置,具体参数可以看:https://www.linkace.org/docs/v1/setup/post-setup/

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 linkace ,选择第一个 linkace/linkace,版本选择 simple

在这里插入图片描述

docker 文件夹中,创建一个新文件夹 linkace,并在其中建两个子文件夹,分别是 backupslogs,并将 .env 放入到 linkace 目录

需要为 .env 文件和 logs 目录设置 Everyone 用户的写入权限

文件夹装载路径说明
docker/linkace/.env/app/.env环境变量文件
docker/linkace/backups/app/storage/app/backups备份目录
docker/linkace/logs/app/storage/logs日志目录

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
876680

默认有 3 个端口

老苏只保留了 80 端口

在这里插入图片描述

导入数据库表

在导入数据库表之前,如果你打开网页,会看到服务器错误

在这里插入图片描述

需要进入终端机中

在这里插入图片描述

执行 php artisan migrate,并输入 yes 进行导入

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 linkace 和 子目录
mkdir -p /volume2/docker/linkace/{backups,logs}

# 进入 linkace 目录
cd /volume2/docker/linkace

# 将 .env 放入当前目录

# 修改 .env 文件 和 logs 目录的权限
chmod 666 {.env,logs}

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name linkace \
   -p 8766:80 \
   -v $(pwd)/.env:/app/.env \
   -v $(pwd)/backups:/app/storage/app/backups \
   -v $(pwd)/logs:/app/storage/logs \
   linkace/linkace:simple

# 导入数据库表,输入 yes 开始导入
docker exec -it linkace php artisan migrate

在这里插入图片描述

如果你再次执行,会显示 Nothing to migrate.

在这里插入图片描述

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: "3"

services:
  linkace:
    image: linkace/linkace:simple
    container_name: linkace
    restart: unless-stopped
    ports:
      - "8766:80"
    volumes:
      - ./.env:/app/.env
      - ./backups:/app/storage/app/backups
      - ./logs:/app/storage/logs

然后执行下面的命令

# 新建文件夹 linkace 和 子目录
mkdir -p /volume2/docker/linkace/{backups,logs}

# 进入 linkace 目录
cd /volume2/docker/linkace

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

# 修改 .env 文件 和 logs 目录的权限
chmod 666 {.env,logs}

# 一键启动
docker-compose up -d

# 导入数据库表,输入 yes 开始导入
docker exec -it linkace php artisan migrate

运行

在浏览器中输入 http://群晖IP:8766 就能看到主界面

在这里插入图片描述

向导

如果没有执行 chmod 666 {.env,logs}

在这里插入图片描述

必须都是小绿勾才行

在这里插入图片描述

配置数据库,直接点 Configue Database

在这里插入图片描述

勾选 I confirm that all data should be deleted and overwritten with a new LinkAce database 继续点 Configue Database

在这里插入图片描述

创建管理员账号

设置完成,点 Go to the Dashboard

在这里插入图片描述

中文

配置完成后,进入主界面

在这里插入图片描述

右上角 Setting 中可以设置语言

在这里插入图片描述

保存之后,界面就是中文了

在这里插入图片描述

书签

设置完成后,尝试添加第一个书签

在这里插入图片描述

添加完成

在这里插入图片描述

回到首页

参考文档

GitHub - Kovah/LinkAce: Your self-hosted bookmark archive. Free and open source.
地址:https://github.com/Kovah/LinkAce

LinkAce - Your self-hosted bookmark archive. Free and open source.
地址:https://www.linkace.org/

Setup with Docker - LinkAce
地址:https://www.linkace.org/docs/v1/setup/setup-with-docker/

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

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

相关文章

NVIDIA 7th SkyHackathon(二)开发套件的安装与测试

1.NeMo 开源工具包 1.1 关于 NeMo NeMo(Neural Modules)是 NVIDIA 发布的基于 PyTorch 的开源工具包,它允许开发者快速构建、训练和微调会话式人工智能模型 NeMo 由 NeMo Core 和 NeMo Collection 组成,NeMo Core 为所有模型和…

[附源码]Python计算机毕业设计Django的中点游戏分享网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

内容理解之情感计算

导语 概念定义:情感计算是自然语言处理领域的重要研究方向之一,其目标是赋予计算机类似于人一样的观察、理解和生成各种情感表达的能力,它是一个高度综合化的跨学科领域,涉及计算机科学、心理学、社会学和认知科学等。通过多学科…

物联网卡有哪些类型

伴随着科学技术的不断升级,不断发展,5G和物联网必定成为未来生活的主角,而现在5G已经慢慢在我们生活越来越常见,这是我们肉眼可以看见的,其实物联网如同5G一样,在我们生活中也随处可见,如我们平…

谈谈Go语言中函数的本质

在很多编程语言中,都会有函数一说,今天我们来聊聊Go语言中的函数。 废话不多说,咱们直接上代码~ 代码 package mainimport "fmt"func main() {fmt.Printf("%T\n", function1)fmt.Printf("%T\n", function2)…

跨越速运如何构建实时统一的运单分析

作者:张杰,跨越速运大数据架构师(本文为作者在 StarRocks Summit Asia 2022 上的分享) 作为大型现代化综合速运企业,跨越速运拥有 3000 多家服务网点 ,日均处理 30 多万票运单。海量运单数据涌来&#xff…

博科交换机使用

博科交换机使用 ip查询 博科交换机的默认IP地址是10.77.77.77,用户名admin,密码:password。 ipaddrshowip修改 ipaddrset端口查询 交换机的端口表示为(A,B)或者(A,B;C,D)。 A,C表示交换机的…

使用JLINK给GD32下载程序

使用JLINK给GD32下载程序关于GD32单片机需要的工具和软件包①Jlink仿真器一个②相关软件包下载准备①选择好芯片②在DEBUG中选择JLINK下载现象总结关于GD32单片机 GD32是兆易创新基于Arm Cortex-M内核和RISC-V内核,推出的32位通用微控制器,对比了下两者…

[附源码]Python计算机毕业设计SSM流浪宠物申领信息平台(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Java中进制基础知识与算法题

本篇文章旨在给大家普及下计算机内部数据的机器级表示方式,即:二进制、八进制、十进制、十六进制… 对于进制,我们从小最先接触的是十进制,这个也是我们日常生活中应用最多的数值统计方式。然而,现实中我们感觉到的媒体…

python的opencv操作记录(十)——图像融合

文章目录前言opencv中的一个方法泊松融合图像梯度图像散度融合图像散度通过散度场进行图像重建泊松融合的一般逻辑前言 最近碰到一个项目上的难题,是要从电动显微镜对焦的多张图像进行融合。因为,显微镜物镜的景深范围较小,可能在同一视野中…

地理空间数据共享资源大汇总

1.全国12.5米分辨率ALOS高程数据 全国12.5米分辨率DEM数据,该数据由锐多宝的地理空间提供并进行分省裁剪与镶嵌,由测绘营地进行影像坐标系转换。 ALOS-12.5m高程数据参数: 覆盖范围:全国(仅有小部分区域存在数据空白…

本机使用python操作hdfs搭建及常见问题

一.虚拟机安装CentOS7并配置共享文件夹 二.CentOS 7 上hadoop伪分布式搭建全流程完整教程 三.本机使用python操作hdfs搭建及常见问题 四.mapreduce搭建 五.mapper-reducer编程搭建 本机使用python操作hdfs搭建及常见问题一、环境搭建1.打开虚拟机系统,打开hadoop2.修…

【JavaScript 逆向】极验四代滑块验证码逆向分析

前言 相较于三代滑块,四代的逻辑流程更简短,底图没混淆,某些点校验不严格 声明 本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除! 案例目标 滑动验证码&…

[NAS] QNAP/威联通 常用设置和操作

🍁简介 QNap 产品是一种可扩展的数据存储解决方案。它们包括具有 1 到 30 个驱动器托架的设备,并提供 HDMI、Thunderbolt 2 和 USB 3.1 等连接选项,以及 802.11ac/a/n Wi-Fi 和高达每秒 40 Gb 的以太网。内置软件提供基本服务,例如…

WeetCode2滑动窗口系列

一丶[无重复字符的最长子串](3. 无重复字符的最长子串 - 力扣(Leetcode))# 思路:# 维护一个窗口,窗口中不存在重复的字符,窗口右边界从第一个字符移动到最后,使用一个变量记录窗口大小的最大值 那么问题就变成了&…

浅谈h264和h265的区别

相比h264,压缩同样的视频获得同样的质量的情况下,h265可以做到压缩后的大小为前者的一半,但压缩时间复杂度增加。h264编码单元为宏块(MB),最大划分为16x16,而h265编码单元为编码树单元(CTU),最大划分为64x6…

C++ 不知算法系列之深入动态规划算法思想

1. 前言 前面写过一篇博文,介绍了什么是动态规划算法。动态规划算法的最大特点,原始问题可以通过分解成规模更小的子问题来解决,子问题之间互成依赖关系,先计算出来的子问题的结果会影响到后续子问题的结果。 有点类似于武侠片中…

Python——变量以及基础数据类型练习题

要求:注意变量名的命名规范问题!!!不能再出现没有意义的变量名!!!一行一注释,用下划线命名法。 请使用相对应的数据类型,不能全部使用字符串!!&a…

HotSpot VM垃圾收集器——Serial Parallel CMS G1垃圾收集器的JVM参数、使用说明、GC分析

目录HotspotVM的垃圾收集器简介1. Serial Collector2. Parallel Collector(throughput collector)3. Concurrent Mark Sweep Collector(CMS)4. Garbage-First Garbage Collector(G1)5. Z Garbage Collector…