开源的笔记和书签应用Benotes
创始人
2024-04-18 18:01:37
0次

在这里插入图片描述

什么是 Benotes ?

Benotes 一个开源的自托管笔记和书签网络应用程序。使用 Laravel 和轻量级 Lumen 框架构建,可以作为 PWA 安装并托管在几乎任何地方。同时支持 Markdown 和富文本编辑器。

软件特点:

  • URL 会自动保存图片、标题和描述
  • 同时支持 markdown 和富文本编辑器
  • 可以作为 PWA 安装在您的移动设备(和台式机)上
  • 通过此应用程序共享内容(如果作为 PWA 安装并受您的浏览器支持)
  • 可以通过公共可用 URL 共享集合
  • 链接可以立即粘贴为新帖子
  • 由于使用了轻量级的 Lumen 框架和良好支持的 PHP 语言,几乎可以在任何地方托管
  • 使用和不使用持久存储层(支持文件系统和 S3)
  • 也可以通过 Docker 或 Heroku 托管
  • 通过每日备份保护您的数据

在这里插入图片描述

【注意】:该项目目前处于测试阶段。您可能会遇到错误或错误。

准备工作

建数据库

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

在这里插入图片描述

为了便于说明,我们假设数据库密码为 123456

.env 文件

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

如果用了中文,保存时建议采用 utf-8 格式

APP_PORT=8347USE_COMPOSER=false
RUN_MIGRATIONS=false
INSTALL_NODE=falseAPP_NAME=Benotes
APP_ENV=production
APP_DEBUG=false
APP_URL=http://192.168.0.197:${APP_PORT}
APP_TIMEZONE=Asia/ShanghaiAPP_KEY=7aGLzKFJTCkTkbLuJ3BoU3kNjkv6t67GWrC2izhrf9yEPTREvgeHJ2cMSptmuGnU
JWT_SECRET=hNwrp6N8NY2xaQayb5ikAFSPwD7iomwaZvVDUabT3JjTh35ejMw3pfTBUqsr8sJR
USE_FILESYSTEM=trueDB_CONNECTION=mysql
DB_HOST=192.168.0.197
DB_PORT=3307
DB_DATABASE=benotes
DB_USERNAME=benotes
DB_PASSWORD=123456CACHE_DRIVER=file
QUEUE_CONNECTION=syncMAIL_DRIVER=smtp
MAIL_HOST=smtp.88.com
MAIL_PORT=465
MAIL_USERNAME=wbsu2003@88.com
MAIL_PASSWORD=<第三方邮件客户端密码>
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=wbsu2003@88.com
MAIL_FROM_NAME="Benotes"

如果你想使用 SQLite,上面数据库设置部分用下面的替换就可以了

DB_CONNECTION=sqlite
DB_HOST=
DB_PORT=
DB_DATABASE=storage/database.sqlite
DB_USERNAME=
DB_PASSWORD=

主要的几个变量说明见下表👇

可变值
APP_URL项目地址
APP_KEY应用程序标识,用验证接入的合法性,老苏一般用 Bitwarden 生成,你也可以用 openssl 来生成
DB_CONNECTION数据库类型
DB_HOST数据库主机名或者 IP
DB_PORT数据库端口
DB_DATABASE数据库库名
DB_USERNAME数据库用户
DB_PASSWORD数据库密码,老苏只是演示用的
MAIL_DRIVER发送邮件的协议,默认 smtp
MAIL_HOSTsmtp协议邮件主机地址
MAIL_PORT邮件端口,SSL协议端口号默认为 465
MAIL_USERNAME邮件账号
MAIL_PASSWORD邮件第三方客户端密码
MAIL_ENCRYPTION发送加密,可选 SSL、TLS 和无
MAIL_FROM_ADDRESS发送的电子邮件地址
MAIL_FROM_NAME发送的姓名

还支持 S3 对象存储:https://github.com/fr0tt/benotes/blob/master/installation.md#optional-s3-as-filesystem

命令行安装

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

# 新建文件夹 benotes 和 子目录
# storage 目录用来存放 SQLite 数据库,对外暴露需要映射 /var/www/storage 目录,用 MariaDB 可以不用建
mkdir -p /volume2/docker/benotes/{logs,storage}# 进入 benotes 目录
cd /volume2/docker/benotes# 将 .env 文件放入当前目录# 运行容器
docker run -d \--restart unless-stopped \--name benotes \--env-file ./.env \-p 8347:80 \-v $(pwd)/logs:/var/lib/nginx/logs/\-v $(pwd)/.env:/var/www/.env \fr0tt/benotes# 进入容器
docker exec -it benotes sh# 数据库迁移
php artisan migrate# 创建用户
php artisan install --only-user

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

version: "3.6"services:benotes:image: fr0tt/benotescontainer_name: benotesrestart: unless-stoppedenvironment:DB_CONNECTION: ${DB_CONNECTION}RUN_MIGRATIONS: ${RUN_MIGRATIONS}ports:- ${APP_PORT}:80volumes:- ./logs/:/var/lib/nginx/logs/- ./.env:/var/www/.env

然后执行下面的命令

# 新建文件夹 benotes 和 子目录
# storage 目录用来存放 SQLite 数据库,对外暴露需要映射 /var/www/storage 目录,用 MariaDB 可以不用建
mkdir -p /volume2/docker/benotes/{logs,storage}# 进入 benotes 目录
cd /volume2/docker/benotes# 将 docker-compose.yml 和 .env 文件放入当前目录# 一键启动
docker-compose up -d# 访问应用程序服务
docker-compose exec --user application benotes sh# 做一些必要的工作,如数据库迁移和管理员帐户创建
sh docker/install.sh

在这里插入图片描述

输入 yes 开始数据库迁移

在这里插入图片描述

然后设置管理员,用户名回车就可以,设置邮件和密码即可

在这里插入图片描述

运行

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

在这里插入图片描述

登录成功之后

在这里插入图片描述

收藏网站

选中 Uncategorized,点 Create 创建一个 Post,内容中只要输入一个 URL,例如老苏的博客地址: https://laosu.ml/

在这里插入图片描述

点 Save 之后,主界面就有了,可以看到已经抓到了网站的 title 等信息

在这里插入图片描述

收藏文章

在这里插入图片描述

虽然获取到了文章的信息,但是图片没出来,主要是因为 jsdelivr 在国内没有备案

在这里插入图片描述

把 cdn.jsdelivr.net 加入科学上网的白名单,就 OK了

在这里插入图片描述

从数据库看,图片只是链接,并没有抓下来

在这里插入图片描述

新建类型

新建一个 Collection

在这里插入图片描述

保存之后,就出现在左侧菜单中了

在这里插入图片描述

刚开始我们建的都是放在 Uncategorized 中

在这里插入图片描述

选择需要更改的书签,点 Transfer 即可更改

在这里插入图片描述

点左侧的 群晖,已经更新成功

在这里插入图片描述

参考文档

fr0tt/benotes: An open source self hosted notes and bookmarks taking web app.
地址:https://github.com/fr0tt/benotes

Benotes
地址:https://benotes.org/

benotes/installation.md at master · fr0tt/benotes
地址:https://github.com/fr0tt/benotes/blob/master/installation.md

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...