什么是 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=8347
USE_COMPOSER=false
RUN_MIGRATIONS=false
INSTALL_NODE=false
APP_NAME=Benotes
APP_ENV=production
APP_DEBUG=false
APP_URL=http://192.168.0.197:${APP_PORT}
APP_TIMEZONE=Asia/Shanghai
APP_KEY=7aGLzKFJTCkTkbLuJ3BoU3kNjkv6t67GWrC2izhrf9yEPTREvgeHJ2cMSptmuGnU
JWT_SECRET=hNwrp6N8NY2xaQayb5ikAFSPwD7iomwaZvVDUabT3JjTh35ejMw3pfTBUqsr8sJR
USE_FILESYSTEM=true
DB_CONNECTION=mysql
DB_HOST=192.168.0.197
DB_PORT=3307
DB_DATABASE=benotes
DB_USERNAME=benotes
DB_PASSWORD=123456
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
MAIL_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/benotes
container_name: benotes
restart: unless-stopped
environment:
DB_CONNECTION: ${DB_CONNECTION}
RUN_MIGRATIONS: ${RUN_MIGRATIONS}
ports:
- ${APP_PORT}:80
volumes:
- ./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