跳转至

Dokuwiki

导言

在安装好dokuwiki后(请参考"Deploy Dokuwiki to localhost"),我们需要思考

  1. 如何批量导入sudo和普通用户
  2. 如何创建和组织wiki内容,
  3. 内容的备份和高效部署。(e.g.,结合github进行备份

基本操作

修改中文

管理 -> 配置设置 修改到中文

停用注册

管理 -> 配置设置-> disableactions 停用 DokuWiki 功能

批量用户导入

管理 -> 用户管理器 使用csv批量导入用户,并发送随机密码到对应邮件。

每个文件夹和文件设置public/authentic

管理 -> 访问控制列表(ACL)管理器

创建新文件和文件夹(命名空间)

命名空间
  • wiki:welcome 在 wiki 目录下创建 welcome文件
  • test:wiki:welcome 两层文件夹
  • :welcome 根文件夹
  • .welcome 当前文件夹下

如果用户有创建的权限,http://222.195.72.221/doku.php?id=xxx,将 xxx 替换成想要的位置,即可创建。删除全部内容,自动删除项。

配置导航栏

  • 修改sidebar,可以简单填写[[wiki:welcome]]来链接内部页面。但是建议安装插件
    • 侧边栏的宽度可以在“模板设置样式”里面调整)

indexmenu plugin

安装好之后,支持拓展的语法

  • {{indexmenu>:}} 根目录,默认展开全部
  • {{indexmenu>:wiki#1|js}} wiki文件夹, #1展开一层 |js并使用js修改格式
  • The site's logo :wiki:logo.png1
  • The favicon :wiki:favicon.ico

使用主题Bootstrap3

  • 布局简洁大气,强力推荐
  • 还可以进一步选择颜色主题,选择Bootswatch.com主题插件,
  • 保存后,设置里勾选主题切换器,推荐flatly

基本语法

  • 语法与markdown有所区别,需要额外学习 http://222.195.72.221/doku.php?id=wiki:syntax
  • 当然可以使用编辑页面导航栏的一些。
  • 也支持插件来探索。

文件上传、公开访问

支持3MB内的PDF和图片管理,感觉可以放论文和成员的图片。

dokuwiki/php & nginx 大小限制

sudo vim /etc/php/8.1/fpm/php.ini change post_max_size = 8M and upload_max_filesize = 2M

sudo vim /etc/nginx/nginx.conf and find location ~ \.php$ { add client_max_body_size 25M;2

如何设置能直链访问文件

将对应文件夹的ACL权限,对@ALL设置读取的权限, 即可实现下载。

文件如何组织保存

  • 当前根目录/var/www/html
  • 页面保存在根目录的/data/pages/*
  • 媒体文件在根目录的/data/media/
  • 用户认证在根目录的/conf/users.auth.php 只能被hash了,只能读拷贝,不能写和修改。
文件大小
# shaojiemike @ icarus1 in /var/www/html [21:14:12]
$ du -h -d 1
116K    ./conf
2.7M    ./data
56K     ./bin
2.9M    ./inc
7.1M    ./lib
8.3M    ./vendor
21M     .


# shaojiemike @ icarus1 in /var/www/html/data [21:17:24]
$ du -h -d 1
416K    ./media
8.0K    ./tmp
24K     ./attic
56K     ./pages
8.0K    ./locks
76K     ./meta
172K    ./index
8.0K    ./log
1.8M    ./cache
16K     ./media_meta
8.0K    ./media_attic
2.7M    .

集成LDAP

配置pureldap

in icarus1.acsalab.com

to learn
# shaojiemike @ icarus1 in /etc/ldap [20:16:26]
$ cat ldap.conf

openssl s_client -connect ldap.acsalab.com:636 -servername ldap.acsalab.com -showcerts </dev/null | openssl x509 -text -noout

2023-12-15 12:17:09 /var/www/html/lib/plugins/pureldap/vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler.php(182) FreeDSx\Ldap\Exception\ConnectionException: Unable to connect to server(s): ldaps://ldap.swangeese.fun
#0 /var/www/html/lib/plugins/pureldap/vendor/freedsx/ldap/src/FreeDSx/Ldap/LdapClient.php(311): FreeDSx\Ldap\Protocol\ClientProtocolHandler->send()
#1 /var/www/html/lib/plugins/pureldap/vendor/freedsx/ldap/src/FreeDSx/Ldap/LdapClient.php(326): FreeDSx\Ldap\LdapClient->send()
#2 /var/www/html/lib/plugins/pureldap/vendor/freedsx/ldap/src/FreeDSx/Ldap/LdapClient.php(94): FreeDSx\Ldap\LdapClient->sendAndReceive()
#3 /var/www/html/lib/plugins/pureldap/classes/Client.php(174): FreeDSx\Ldap\LdapClient->bind()
#4 /var/www/html/lib/plugins/pureldap/auth.php(63): dokuwiki\plugin\pureldap\classes\Client->authenticate()
#5 /var/www/html/inc/auth.php(222): auth_plugin_pureldap->checkPass()
#6 /var/www/html/inc/auth.php(174): auth_login()
#7 [internal function]: auth_login_wrapper()
#8 /var/www/html/inc/Extension/Event.php(133): call_user_func_array()
#9 /var/www/html/inc/Extension/Event.php(199): dokuwiki\Extension\Event->trigger()
#10 /var/www/html/inc/auth.php(104): dokuwiki\Extension\Event::createAndTrigger()
#11 /var/www/html/inc/init.php(232): auth_setup()
#12 /var/www/html/doku.php(36): require_once('...')
#13 {main}

# shaojiemike @ icarus1 in /var/www/html/data/log [20:21:20]
$ ldapsearch
SASL/SCRAM-SHA-1 authentication started
Please enter your password:
ldap_sasl_interactive_bind: Invalid credentials (49)
    additional info: SASL(-13): user not found: no secret in database

# shaojiemike @ icarus1 in /var/www/html/data/log [20:27:02] C:49
$ ldapsearch -LLLY EXTERTNAL
ldap_sasl_interactive_bind: Unknown authentication method (-6)
    additional info: SASL(-4): no mechanism available: No worthy mechs found

# shaojiemike @ icarus1 in /var/www/html/data/log [20:27:09] C:250
$ ldapsearch -LLLY EXTERTNAL

认证设置

authplain->pureldap

恢复

修改文件conf/local.php 内容$conf['authtype'] = 'authplain';

实践:如何备份和快速转移部署

思路: docker? + github保存修改。

域名解析问题

CNAME 解析 wiki 到 snode6。 clash报错 ERROR dial tcp4 202.38.72.23:443:connectex:No connection could be made because the target machine actively refused it.

解决:443默认是https, 使用http即可。

参考文献

评论