开源自托管书签和笔记应用 - Benotes
Benotes
是一个开源的自托管 web 应用,可用来管理你的笔记📔和书签🔖,只需单击一个按钮即可保存你的书签,然后就可以以非常优雅的方式进行展示、分类和存储,以便以后使用。
特性
- URLs 会自动保存图片、标题和描述
- 同时支持 markdown 和富文本编辑器
- 可以作为 PWA 安装在不的移动设备(和桌面)上
- 通过该应用共享内容(如果作为 PWA 安装并被你的浏览器支持的话)
- 可以通过公共可用的 URL 进行分享
- 链接可以立即被粘贴为新文章
- 由于使用了轻量级的 Lumen 框架和支持良好的 PHP 语言,几乎可以在任何地方托管
- 可以使用也可以不使用持久存储层(支持文件系统和 S3)
- 也可以通过 Docker 或 Heroku 托管
- 通过每日备份保护你的数据
安装
安装该应用稍微有一点复杂,但是我们可以使用 Docker 来进行简化,下面是我们使用 Docker Compose 安装 Benotes 的过程。
- 获取 Benotes 代码,直接 Clone 代码仓库即可:
git clone https://github.com/fr0tt/benotes_docker-compose
- 进入
benotes_docker-compose
目录并运行以下命令
cp .env.example .env
然后根据实际需求更改相关的环境变量。
- 然后执行下面的命令启动容器并让 Benotes 使用此命令运行初始安装:
docker-compose up -d
- 安装完成后并且数据库和应用都正常运行后,运行以下命令。
docker-compose exec --user application app sh
现在我们在应用程序容器内运行下面这个命令。
php artisan install
按照命令并在设置中键入 yes
,然后创建管理员用户名、电子邮件和密码。
不过需要注意的是还需要对缩略图目录权限进行更改:
chmod -R 774 PWD$/data/storage/app/public/thumbnails
如果不执行上面的命令,Benotes 仍然可以使用,但是会遇到显示图像的问题,并且在尝试添加注释时会弹出如下所示的错误。
使用
到这里 Benotes 就安装完成了,然后我们就可以登录使用了,在首次登录时会有演示说明,这些说明可以让我们了解可以使用 Benotes 做什么,从使用 Markdown 创建笔记到简单的链接书签,等等。
创建分类
默认情况下,所有演示笔记都存储在 Uncategorized
分类中,你可以根据你对笔记或链接书签的想法创建一个新分类,比如我们这里添加一个名为 Web Links
的分类。
我们可以从图标菜单中选择一个图标,该图标将显示在左侧边栏中的旁边,效果如下图所示:
共享分类
如果你愿意,还可以通过给它一个令牌来与其他人公开分享你的收藏,如下所示。
添加书签或注释
我喜欢在 Benotes 中直接添加 Web 链接作为书签,他可以非常容易帮我们抓取该链接的相关 Meta 信息,看起来非常棒。
添加用户
在 Benotes 里添加其他用户也非常容易,也许你的朋友或家人可能想要使用你的 Benotes 实例来保存他们自己的书签或笔记,每个用户配置文件都是完全独立的。
添加标签
Benotes 还有一个标签系统,可以让你进一步完善你的笔记和书签。你可以查看你的标签页面并查看创建的所有标签,也可以通过这些标签浏览相关数据!
搜索
Benotes 的搜索功能也非常棒,可以搜索标题、描述甚至链接文本,通过运行快速搜索轻松找到你需要的内容。
转移笔记
Benotes 的另一个很棒的功能是你只需轻按一下按钮,就可以将笔记或书签从一个类别转移到另一个类别。
备份
目前不支持 SQL Server 和备份 S3 存储。不过我们可以通过执行以下命令手动触发备份:
php artisan backup:run
或者将下面的命令添加到你服务器的 cron 中来定时执行备份任务:
0 * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
这将每小时检查是否有任务需要运行。如果你使用的是 docker,则可以将下面的命令添加到你服务器的 cron 条目中:
0 * * * * cd /path-to-your-project && docker exec -it benotes php artisan schedule:run >> /dev/null 2>&1
默认情况下,每晚都会创建备份计划,如果你想更改它,请将以下内容添加到你的 .env
文件中:
BACKUP_INTERVAL = 0 0 */7 * *
如果想希望使用 S3 兼容对象存储(例如 AWS S3、Digital Ocean Spaces、Minio 等)存储数据,请将以下内容添加到你的 .env
文件中:
BACKUP_DISK = s3
AWS_ACCESS_KEY_ID = yourKeyId
AWS_SECRET_ACCESS_KEY = yourAccessKey
AWS_DEFAULT_REGION = us-east-1
AWS_BUCKET = yourCreativeBucketName
AWS_ENDPOINT = endpointUrl
总结
总体来说我个人是非常喜欢 Benotes 的自托管书签和笔记应用功能,而且还可以使用 Docker 进行安装,非常简单。不过需要注意该项目目前处于测试阶段,在使用过程中可能会遇到错误。
Github 仓库:https://github.com/fr0tt/benotes