
什么是 Benotes ?
Benotes一个开源的自托管笔记和书签网络应用程序。使用Laravel和轻量级Lumen框架构建,可以作为PWA安装并托管在几乎任何地方。同时支持Markdown和富文本编辑器。
软件特点:
URL 会自动保存图片、标题和描述markdown 和富文本编辑器PWA 安装在您的移动设备(和台式机)上PWA 安装并受您的浏览器支持)URL 共享集合Lumen 框架和良好支持的 PHP 语言,几乎可以在任何地方托管S3)Docker 或 Heroku 托管
【注意】:该项目目前处于测试阶段。您可能会遇到错误或错误。
数据库直接用的群晖的 MariaDB 10,在 phpMyAdmin 中创建了名为 benotes 的数据库

为了便于说明,我们假设数据库密码为
123456
环境变量文件 .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_HOST | smtp协议邮件主机地址 |
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