前两天,某位网友联系我,希望给他培训一下MediaWiki的使用,不是不想帮,实在是自知能力一般。在了解诉求之后,果断推荐他安装BookStack。本来嘛,安装个开源系统总觉得很容易,再不济直接用Docker嘛!
在对方的再三要求下,只能远程操作。安装环境是在群晖的DS918+上,虽然我用的是威联通,但应该大差不差吧,所以当作学习去试了一把。这不试不知道,一试就试出问题和我的水平来了。

面临的问题

进入Docker的界面,点击注册表,发现无法使用。从网上的结果来看,貌似是被墙了,有说升级NAS系统会好,正好那台机器还在6.x下运行,先让对方升级吧(现在回过头来想想,对方也是真信任我,万一升级造成什么损失,那岂不惨了?)
结果一点用都没有,注册表还是不显示任何内容,看来没有特殊方法是不行的。
无奈之下,对方在淘宝找了其他人来帮他docker,我暂时退场。
第二天得到的信息是,淘宝的人也没有帮他搞定,问我还有其他办法没?看了一眼网上的各种信息,貌似用Web Station可以实现网站服务器的功能,群晖的MediaWiki和WordPress以及phpMyAdmin套件都是通过它实现的。PHP、nginx和Apache都支持,外加NAS上的MariaDB套件,基本条件是满足了。
下载最新版的BookStack源码,上传至NAS目录下(比如web)。而新版BookStack已不是简单的开箱即用了,还需要通过composer安装依赖库。
开启NAS的ssh服务,使用终端连接,运行composer install --no-dev,提示没有安装composer。
那就先安装composer,输入以下命令:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
cp composer.phar /usr/local/bin/composer

再次使用composer install --no-dev,返回的错误信息提示,少了几个php扩展,比如fileinfoGD等。先用php -v查看版本,发现系统默认的是PHP8.1.X,而我安装的套件是8.2,得想办法切换版本。
/volume/@appstore/PHP8.2/usr/local/bin中的PHP82文件复制到/bin目录下,并改名为php(记得先将/bin目录下原有的php重命名一下,比如php81,万一出错可以修改回来)。
再次执行composer install --no-dev,运行成功。
回到群晖的Web Station管理界面,首先新建一个网页服务。
Synology-Web_Station_Service_add_new.jpg
Synology-Web_Station_Service_choose_server_type.jpg
点击本机脚本语言网站,选择PHP8.2,点击下一步。
Synology-Web_Station_Service_normal_settings.jpg
名称和描述根据自己的要求填,文档根目录选择上传的BookStack下的public目录。
确认后点击新增,弹出的信息框也直接点击确定。
回到主界面,选择左侧的网络门户,点击新增。
Synology-Web_Station_home_settings.jpg
选择服务和门户类型,设定端口号。
接下来是新建数据库,直接使用phpMyAdmin套件,新建数据库和管理用户。
通过终端修改配置文件.env(将.env.example复制为.env)
APP_URL中使用IP加端口号(比如8181),数据库主机填写IP加MariaDB的端口号,数据库、用户名和密码就用上面新创建的。
按照安装文档,修改文件夹的权限,执行php artisan key:generatephp artisan migrate,从phpMyAdmin中可以看到数据表正在不断创建中。
本以为大功告成了,结果显示500错误。
估计要修改nginx的配置。群晖的Web Station将nginx拆成了及部分,分别位于/usr/local/etc/nginx/conf.d-available//usr/local/etc/apache24/sites-available/下。
Synology-Web_Station_nginx_conf_files.jpg
判断依据就是看生成时间。实在分不清就把网络门户中新建的网站点一下编辑,哪怕什么都不干,配置文件都会重新生成。当然,这也就意味着修改完配置文件就不能随便更改门户设置或者是重启门户甚至是重启NAS,否则就会恢复到初始状态,原有的配置文件丢失并生成新的(文件名都不一样了)。
来来回回试了好久都没有搞定,约定明天继续。

重回docker

原本打算如果有机会的话,再实验一下网上介绍的通过SSH进行docker的方法,包括代理服务器的方法。但当务之急还是先搞定Web Station中的配置问题。
为了方便调试,从网上下了个群晖的虚拟机懒人包,选用DS918+,DSM版本为7.2,基本保持跟网友的系统一致。
因为虚拟机的网络是跟着主机的,所以Container Manager的注册表打开一点问题都没有。
Synology-Container_Manager-Registry.jpg
如果说docker能用,到时候从我的虚拟机中导出,再从对方NAS中导入不就可以了嘛。而且docker比Web Station有优势的地方,不在于安装简单,而是上面提到的Web Station会因为重启导致配置文件丢失。即便你之前备份过配置文件,你也要先确认哪个才是你要修改的,这个工作还是相当麻烦的。虽说NAS是7x24小时不间断运行,但谁能保证一致不重启或者不会误操作呢。
网上有很多关于使用docker安装bookstack的教程,文字版和视频都有。大部分的数据库程序也是用的docker,只有少量使用群晖的Mariadb套件。为了尽可能节约资源,考虑数据库就不用docker了。
从注册表中下载映像,选择最新版的(也是应了对方的要求)。
下载后,选中映像点击运行,修改容器名后,点击下一步。
Synology-Container_Manager-settings_1.jpg
没有https要求的话,删除443端口那行,保留80端口那行,选一个自己喜欢的端口号,后面浏览和配置都会用到。另外,在NAS中新建一个文件夹,点击添加文件夹,选择你刚刚新建的(你也可以直接在添加时新建),右侧的/config将映射到刚刚添加的文件夹。
Synology-Container_Manager-settings_2.jpg
将右侧滚动条向下拉,继续配置环境变量。

可变
PGID默认设为 1000
PUID默认设为 1000
APP_URL可以是局域网IP+端口,也可以是域名
DB_HOST数据库主机
DB_USER数据库用户
DB_PASS数据库密码
DB_DATABASE数据库库名
注意:
1、DB_HOST填写的是主机加端口号,而主机可以直接使用IP地址,端口号可以去查看MariaDB中的设置,默认为3306。
2、APP_URL中使用IP加端口号(端口号就是上面你设的,比如本例中的8888。

设置完毕后,点击下一步。
Synology-Container_Manager-settings_3.jpg
以上所有设置在后期都可以进行修改,所以填写时大可放心。最后点击完成。
就当我以为一切顺利,准备浏览BookStack的页面时,系统还是报500错误。
这里就不得不提一下数据库中的另一个坑。
通常,我建数据库都是先建库,再创建用户并设置权限,但这种方式在群晖的环境中并不适用,就算是docker的设置都正确也没办法连接数据库。
正确的方式是新建用户,并创建与用户同名的数据库,所以为什么在上面能看到DB_DATABASEDB_USER的变量值是一样的道理。
Synology-Mariadb-add_new_user.jpg
因为bookstack的用户名和数据库已经创建过了,所以就用test代替。
如果上述的两步都设置正确,那就重新启动一下容器。然后看一下数据库是否开始填充数据表和内容,如果是的话,稍等几分钟(视性能而定)后,在浏览器中输入APP_URL的值,比如本例中的http://192.168.72.137:8888
BookStack_login.jpg
使用默认的用户名admin@admin.com和密码password登录,创建图书和页面都正常。

导出和导入

将容器导出后发给网友,导入后重新设置环境变量和重建数据库之后,BookStack也运行正常。唯一的不同是,他那边很卡,我在虚拟机上很流畅。

上传文件尺寸的限制

通常在我的站点中是不会上传太大的文件的(比如视频),毕竟流量就是开销。但对方的系统建在本地,所以要求上传视频。BookStack本身的设置并没有太大难度,关键在于docker中的php设置。
先说BookStack的设置问题。将容器停止后,在环境变量中增加一项FILE_UPLOAD_SIZE_LIMIT
Synology-Container_Manager-settings_4.jpg
至于docker中php.ini设置,网上有说通过映射文件达到目的,反正我试了没什么效果,那就直接用终端修改配置文件吧。
Synology-Container_Manager-terminal.jpg
/usr/local/etc/php/usr/local/etc/php/conf.d中的php.ini文件是我按网上的思路映射的。
该方法一旦容器更新后又得设置一次,但重启并不影响。

关于Web Station的安装请参考《在群晖NAS上安装BookStack(二)——使用Web Staion套件》一文。

最后修改:2024 年 04 月 21 日
如果觉得我的文章对你有用,请随意赞赏