什么是 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