本文参加「自力更生」征文活动

前言

作为一个喜欢折腾的代码小白,我经常在各种软件和配置中尝试新功能,积累了不少乱七八糟的经验。只是时间久了以后,需要再次复现时却经常想不起来当时的操作细节。为了解决这个问题,我开始使用 OneNote、印象笔记这种主流笔记软件,尝试将过程记录下来。然而一段时间后,我发现它们的使用逻辑不太适合我。后来我想,用别人的东西始终会受到各种限制,不如干脆自建一个 wiki 网站,可以按照自己的喜好自由编辑。正好家里有台用来备份数据的威联通(QNAP) TS-231P,我尝试将它利用起来,实现我的想法。

这台 NAS 是一个入门级的产品,我最开始用它安装过 WikiMedia 和 WordPress。虽然安装没问题,但因为配置较低的缘故,运行一段时间后内存往往会爆掉,导致网站崩溃。不死心的我继续尝试过其它方案,一遍遍尝试下来,还真的找到了一个能在这台机器上流畅运行的开源 Wiki 软件,它就是 DokuWiki。

DokuWiki 是什么?

DokuWiki 是一个开源的 Wiki 软件,主要用于创建和管理文档、知识库和协作平台。它有很多优点:易于安装和配置,不需要数据库。所有数据都存储在普通文本文件中(txt),容易备份和迁移。 其它的功能例如权限管理、版本控制、插件、模板、搜索等更是一个不少。最关键的是,它只需要很低的配置就能流畅运行。

下载 DokuWiki

DokuWiki 的官方下载地址为:https://download.dokuwiki.org/ 。在下载之前,可以根据自己的需求选择:

  • 版本 / Version:分为开发版(Development Snapshot)、稳定版(Stable)和旧版本(Old Stable)。 建议选择稳定版(Stable)下载。
  • 语言 / Languages:选择需要的语言版本。语言的多少,只会影响文件包的大小,不影响功能。
  • 插件 / Popular Plugins:在这里可以选择一些热门插件打包进安装包,我建议只勾选升级插件 Upgrade Plugin 方便更新 Wiki,其它插件可以在熟悉基础的操作后再下载。

至于 Update 和 Include Web-Server 这两项不需勾选,它们一个是仅下载升级文件,一个是带小型 Web 服务器的版本。

安装 DokuWiki

下载好后的安装包是一个后缀为 tgz 的文件,解压缩后得到名为"dokuwiki"文件夹,将其上传到 NAS 中的 Web 目录下。

打开 QNAP NAS 的控制台,进入应用服务>Web服务器,勾选 "启用 Web 服务器",完成后保存一下设置。

接着在 "虚拟主机" 里启用虚拟主机,点击 "创建虚拟主机",名称可以随意填。根目录的文件路径选择 Web 下的 dokuwiki 文件夹,协议暂时选择 HTTP(后续有需要可以修改为HTTPS)。端口号找一个没有冲突的就行,我这里设置为 10010。

接下来进行本地安装。浏览器打开:http://NAS_IP:10010/install.php,可以进入到安装页面。如果界面是英文,右上角选择 "zh" 就会切换为中文。

在安装界面可以对网站进行一些基础设置,比如"维基名称"是指网站的名称,可以随意填写。"启用 ACL" 建议勾选,这样方便管理用户。设置好管理员账户的账号密码后,其它选项保持默认就行。保存设置后可以通过 http://NAS_IP:10010 访问到 DokuWiki 页面,输入刚刚设置好的账号密码就可以登录啦!

出于安全性考虑,在安装完成后建议到 dokuwiki 的安装目录下删除 install.php 文件。

利用 myQNAPcloud 服务实现外网访问

myQNAPcloud 其实就是威联通(QNAP)官方提供的内网穿透服务,因此可以通过该服务实现外网访问 DokuWiki。有关内网穿透的知识少数派作者 Ivan 在他的文章《也许你也用得上的技术,从零开始了解内网穿透》中有详细的介绍,这里就不占用篇幅再说一遍了。

打开 myQNAPcloud 应用,检查设备的 DDNS 服务是否处于正常状态:

如果 DDNS 服务正常,想要将 DokuWiki 接入外网,只需要在路由器内新增一个端口转发。

设置好之后,应该就可以通过 http://主机名称.myQNAPcloud.cn:10010 访问你的 DokuWiki 了。如果失败,请检查端口转发设置或测试能否在外网环境下通过 myQNAPcloud 服务访问到 NAS。

使用 HTTPS 连接

想使用 HTTPS,就需要 ssl 证书。由于威联通在国内并没有提供免费安装 ssl 证书的功能,因此可以先将 NAS 的地区设置为“全球”,然后就可以在 myQNAPcloud 应用中申请免费的 ssl 证书(由 Let's Encrypt 签发)并自动安装。之后还需要打开 QNAP NAS 的控制台,进入应用服务>Web服务器,勾选 "启用安全连线(HTTPS)"。保存设置后就可以通过 HTTPS 访问 DokuWiki 了。

需要注意的是,将地区更改为全球后,myQNAPcloud 服务的网址会从 "cn" 变为 "com"。因此当你访问某些 NAS 服务时,连接速度可能会变慢。

其实除了使用官方服务,使用花生壳、cpolar、ZeroTier 等也可以实现相同的效果,包括 ssl 证书也可以自行申请并安装。只是它们实现起来会比较复杂,不适合我这种没有代码基础的小白操作。

遇到的问题

这里再说一下我在安装过程中遇到的两个问题,供大家参考。

1.创建词条后,存储的文本文件编码错误

前面说过,DokuWiki 的所有数据都存储在普通文本文件中(txt),文件路径是\data\pages。新安装完成后,若直接创建中文词条,打开该目录下的文件,中文会显示成乱码,需要将文件编码修改为 utf8,方法如下:

打开 dokuwiki\conf\local.php 添加一行配置:

$conf['fnencode'] = 'utf-8';

注意末尾的“;”分号要留着。

2.it seems your data directory is not properly secured 提示

初次安装 DokuWiki 后,进入管理界面有可能会看到 "it seems your data directory is not properly secured" 的安全提示。阅读官方文档后,发现是因为 data、conf、bin 这三个文件夹可以直接被访问的原因。我使用了官方文档中第三条“将目录移出根文档”的方式解决,过程如下:

将 data、conf、bin 三个文件夹从默认的 dokuwiki 中移出;例如我将它们移动到新建的文件夹 web/dokuwiki_data下。

添加下面这一行代码到 conf/local.php

$conf['savedir'] = '/share/Web/dokuwiki_data/data/';

dokuwiki/inc目录下创建 preload.php文件:

<?php

define('DOKU_CONF','/share/Web/dokuwiki_data/conf/');

修改完成后刷新页面即可。需要注意的是,上述例子中的/share,是 NAS 的隐藏根目录,不加它的话网站会无法正确加载。还有就是要注意字母的大小写,如果写错同样也会造成无法访问。

结语

如此一来,DokuWiki 便成功运行在 NAS 上了。这篇文章主要讲的是安装过程,关于语法、主题等内容可以查看官方用户手册,里面有着详细介绍。如果大家对它感兴趣的话,我也可以再写一篇文章介绍介绍自己的使用经验。这篇文章就写到这里了,希望可以帮助到大家!🤝