为学校搭建竞赛wiki
==123==
起因
- 发现竞赛的弱校,无论是CTF/ACM亦或着是其他的竞赛。都有几个痛点
- 出现人才断层,即俩三届无人可用 ^ff33c2
- 出现知识断层,没人也就无人传授知识点
- 第一种情况我们无法避免,只能招新时扩大宣传力度。
- 第二种完全可以避免,如何传授知识,除了面对面。那便只有文字.
突然某一天意识到有wiki的存在
那便整一个
wiki的选择
- 语雀
- 优点:在线,免费,美观
- 缺点:团队版需付费
- wiki.js
- nodejs
- 优点:强大,美观,权限控制严格,脱离传统文件夹结构
- 缺点:2h2gserver起步,
- MediaWiki
- 优点:强大
- 缺点:折腾,太折腾
- DokuWiki
- 优点:轻量化,部署快
- 缺点:丑,且权限不严格
- MinDoc
- 优点:美观,部署快,轻量化
- 缺点:官网的css都失效了,权限不够严格
- BookStack
- 优点:强大
- 缺点:功能多余,丑
还有很多不一一列举了,最终选择了wiki.js
理由是权限严格,同时刚好wiki可以给多个工作室用。多个竞赛用来分享知识点。
服务器的选择
- 选择了海外腾讯云。搞活动便宜了一些
- 为何不选国内?备案太过于繁琐。
- 为何不选国外主机厂商?国外厂商更贵233
上线wiki.js
- 轻量服务器,选择的是宝塔+centos
- 首先安装docker。可参考官网docker安装教程
https://docs.docker.com/engine/install 在下面有个列表,选择对应的系统,之后复制粘贴即可,这里以[centos](Install Docker Engine on CentOS | Docker Documentation)为例:
1 | sudo yum install -y yum-utils |
测试docker,运行以下俩条命令,显示hello world可以了。
1 | sudo systemctl start docker |
- 参考官方安装指南,
1 | # Create installation directory for Wiki.js |
ufw设置一波,也可以用iptables,firewall都可以。
1 | sudo ufw allow http |
- 启动wiki
1 | docker start db |
这时候就可以访问了,ip直接访问,默认是只有80端口
- 启用https
- 这里用Let’s Encryp 来演示,还是参考官网文档
1 | docker stop wiki |
注: 访问需要手动加上https,如果想直接重定向,需要进wiki后台更改,有可视化GUI界面
后续配置
- 分配权限
- 需求:
- 内部wiki,外部不可以访问
- 分ACM,CTF,游戏开发三个大类
- 所有人都可以查看所有文档,但只能修改自己工作室的。
- 需一个普通管理增加用户和分配权限
以下是权限分配
- 关于group(组)和页面规则,可以康康官网的文档
- 个人理解,页面规则是组的的详细配置,具体配置。一个组里面更详细的分配,某个目录可以访问/修改,某个目录禁止访问/修改
w
:write(写入权限)r
:read(读取权限)- 组可以定义成员的具体权限,具体可以访问/编辑哪个目录。
- 用户可以加入多个组,叠加权限
实现以上需求看图
- 关于文件目录与传统目录的区别
- 愚见:不用像传统目录先创建文件夹,在创建文件。直接创建文件
具体请看 官方文档
更多功能
- 后台具有很多功能,包括主题
- 备份
- 注意备份:只备份md文件。
- 使用git进行备份。由于是docker安装,所以直接用ssh方式,私钥填入contents就行
- sftp,可以备份到其他server上
- 渲染
- 支持katex,注意有小bug,遇到
x^{x^3}
这种情况需要改为x^{{x^3}}
,因为wiki的多层渲染导致的历史遗留问题。
- 支持katex,注意有小bug,遇到
- 升级
- 只需在后台一键升级即可
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 impdx!