什么是 LibreKB ?
LibreKB
是一款知识库Web
应用程序。免费、开源、自托管,基于PHP/MySQL
。
官方并没有 Docker
镜像,老苏这次图省事,并没有像往常一样构建一个镜像,而是基于 Docker
搭建了一个 LAMP
环境,其中 LAP
由镜像 php:8.1-apache
完成,M
由群晖的 MariaDB 10
完成
之所以这么干,是因为上次应网友要求折腾 acg-faka
没成功,留下了一个现成的环境,干掉之前,怎么也得利用一下,发挥点作用吧
准备工作
建数据库
老苏用了群晖自带的 MariaDB 10
数据库。
在 phpMyAdmin
中创建名为 librekb
的空数据库。
为便于说明,假设数据库密码为
123456
所以根据上面的设置,最后得到的数据库相关的参数如下:
- 数据库主机:
192.168.0.199
- 数据库端口:
3307
; - 数据库用户:
librekb
- 数据库密码:
123456
- 数据库库名:
librekb
,因为勾选了与用户同名;
下载代码
下载地址:https://github.com/michaelstaake/LibreKB/releases
安装
安装镜像
在群晖上以 Docker 方式安装。
之所以没用图形界面安装,是因为后续还要在命令行安装数据库驱动
如果你熟悉命令行,可能用 docker cli
更快捷
# 新建文件夹 librekb 和 子目录
mkdir -p /volume2/docker/librekb/www
# 进入 librekb 目录
cd /volume2/docker/librekb
# 运行容器
docker run -d \
--restart unless-stopped \
--name librekb \
-p 8954:80 \
-v $(pwd)/www:/var/www/html \
php:8.1-apache
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: '3'
services:
php-apache-environment:
image: php:8.1-apache
container_name: librekb
volumes:
- ./www:/var/www/html/
ports:
- 8954:80
然后执行下面的命令
# 新建文件夹 librekb 和 子目录
mkdir -p /volume2/docker/librekb/www
# 进入 librekb 目录
cd /volume2/docker/librekb
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
上传代码
因为还没上传代码,所以在浏览器中输入 http://群晖IP:8954
只能看到错误页
可以在本地解压后上传
代码上传完成后,应该下面👇这个样子的
直接刷新页面是会报错,因为还要修改设置文件 config.php
设置代码的修改
还需要重命名 config.example.php
文件为 config.php
,并修改其中数据库连接和邮件设置,邮件是用于密码重置的
下面👇是一个示例,其中 192.168.0.199
为群晖主机的 IP
,其他参数比较简单,就不一一说明
<?php
require 'vendor/phpmailer/src/Exception.php';
require 'vendor/phpmailer/src/PHPMailer.php';
require 'vendor/phpmailer/src/SMTP.php';
class Config {
public function __construct() {
/* Database Configuration */
$this->db_host = '192.168.0.199:3307';
$this->db_user = 'librekb';
$this->db_pass = '123456';
$this->db_name = 'librekb';
/* System Configuration */
$this->systemURL = 'http://192.168.0.199:8954/'; //example https://kb.example.com/ or https://example.com/kb/
$this->updateCheck = 'yes'; //change this to no if you wish to disable the update check.
/* Email Configuration */
$this->mailHost = 'smtp.88.com'; //Set the SMTP server to send through
$this->mailSMTPAuth = true; //Enable SMTP authentication
$this->mailUsername = 'wbsu2003@88.com'; //SMTP username
$this->mailPassword = '<第三方邮件客户端密码>'; //SMTP password
$this->mailSMTPSecure = 'ssl'; //Enable implicit TLS encryption
$this->mailPort = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
$this->mailFrom = 'wbsu2003@88.com';
}
}
require_once('classes/Database.php');
require_once('classes/Search.php');
require_once('classes/Email.php');
require_once('classes/Article.php');
require_once('classes/Category.php');
require_once('classes/Setting.php');
require_once('classes/User.php');
?>
安装驱动
虽然设置已完成,涉及到数据库的页面会显示错误Connection failed: could not find driver
,因为默认 php:8.1-apache
没有带数据库 PDO MySQL
驱动
所以要执行👇下面的命令来安装,这里假设你容器的名称未做修改,就叫 librekb
# 安装 PDO MySQL 驱动
docker exec -it librekb /bin/bash docker-php-ext-install pdo_mysql
# 重新启动容器
docker restart librekb
Bug 代码的修改
虽然老苏不是程序员,但是还是觉得 /admin/index.php
应该是有 bug
的,在创建分类时会报错
Warning: Undefined array key "slug" in /var/www/html/admin/index.php on line 161
Warning: Undefined array key "icon" in /var/www/html/admin/index.php** on line 163
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/admin/index.php:161) in /var/www/html/admin/index.php on line 175
查看了一下代码
而在页面中实际上并没有找到 slug
和 icon
,可能是下一版作者准备添加的内容吧
新建文章时同样也会报错
Warning: Undefined array key "slug" in /var/www/html/admin/index.php on line 377
Warning: Undefined array key "featured" in **/var/www/html/admin/index.php** on line 382
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/admin/index.php:377) in /var/www/html/admin/index.php on line 393
所以老苏修改了一下,其实也就是把报错的几行做了注释,可以在 https://github.com/wbsu2003/synology/blob/main/LibreKB/index.php 找到,替换掉 /admin
目录中的 index.php
即可
运行
上面这些都做完之后,终于可以打开 http://群晖IP:8954/install.php
进行安装了
后端
第一步要创建管理员
安装完成
打开页面 http://群晖IP:8954/admin
,或者直接点页面上的 admin
登录成功后的主界面
为了安全,需要删除 install.php
和 update.php
,不然页面上会有提示
点 Create Category
创建类别
完成之后
可以在该分类下 Create Article
完成之后
前端
回到前端的首页 http://群晖IP:8954
进入分类
查看文档
参考文档
michaelstaake/LibreKB: Knowledge Base Web App - Free, Open Source, Self Hosted, PHP/MySQL
地址:https://github.com/michaelstaake/LibreKB
LibreKB
地址:https://librekb.com/
Categories - docs.librekb.com
地址:https://docs.librekb.com/