引言
2026年8月31日上午9点35分左右,Wikidot又一次宕机,全球均不可访问。
将Wikidot的站点迁移的必要性逐渐增长。Wikijump目前仍未知何时开发完毕,SCPRU的RuFoundation引擎完全没有中文本土化导致难以应用。
那么,真神降临 —— ProjectWikit是由Kakushi主创开发的维基引擎,其基于Wikidot的FTML语法上增加了额外的功能。同时,其提供了Wikit CLI备份工具,允许你备份某个维基站点的所有公开内容,包括页面源代码、历史记录、附件、论坛帖子、站点成员数据,并可以直接迁移到ProjectWikit上。
本文为使用使用Docker部署ProjectWikit的教程。默认已安装了Docker。本人已使用CentOS进行部署。若有不确定内容请参考原Github页面
开始部署
首先,先将其放到指定目录,例如我的服务器挂载扩展盘 /www1 ,就先建立目录
sudo mkdir -p /www1/ProjectWikit
cd /www1
然后克隆项目
sudo git clone https://github.com/WikitTeam/ProjectWikit.git ProjectWikit
cd ProjectWikit
把目录权限交给当前用户
sudo chown -R $USER:$USER /www1/ProjectWikit
配置 .env
如果是有部署宝塔或者类似的可视化工具,可以直接进入 /www1/ProjectWikit ,找到 .env 文件进行编辑
主要需要修改内容:
# ---- 自动更新 ----
HOST_PROJECT_DIR=/www1/ProjectWikit
# ---- 数据库 ----
DB_PG_DATABASE=数据库名,比如projwikit
DB_PG_USERNAME=admin
DB_PG_PASSWORD=你的数据库密码
# ---- Django ----
SECRET_KEY=一段随机的字符
剩下可选的可以按自己需求修改
启动、初始化
docker compose up -d
docker exec -it wikitgo-web-1 python manage.py migrate
docker exec -it wikitgo-web-1 python manage.py createsite \
-s 站点缩写内部标识,比如wikit-wiki \
-d 你的域名或ip \
-t "网站标题" \
-H "网站副标题"
如果弄 docker exec -it wikitgo-web-1 python manage.py createsite 时出现问题,可能是数据库结构还没有更新,执行:
docker exec -it wikitgo-web-1 python manage.py migrate
如果这个执行不了,可能是权限问题,执行
#给 files 目录全部权限
sudo chmod -R 777 ./files
# 确保 media 目录存在并有权限
sudo mkdir -p ./files/media
sudo chmod -R 777 ./files
# 重新执行迁移
docker exec -it wikitgo-web-1 python manage.py migrate
然后再尝试前面的创建站点
创建superadmin账号、填充初始数据
先执行下面指令,然后按其指导写名字、邮箱、密码
Kakushi建议不要和自己的Wikidot账号重名防止验证账号时出错
docker exec -it wikitgo-web-1 python manage.py createsuperuser
然后填充初始数据。如果需要迁移,请跳过此步骤,见下文“迁移”一处
docker exec -it wikitgo-web-1 python manage.py seed
然后访问自己ip的8000端口即可访问
迁移
使用Wikit CLI备份工具,备份后将 _users、files、forum、meta、pages 文件夹一并放入 ./archive 目录,然后执行
docker exec -it wikitgo-web-1 python manage.py seed -a ./archive
杂谈
如果你和我一样脑子抽了,建站填的localhost然后访问不了网站(403 Forbidden),可以直接改数据库
docker exec -it wikitgo-web-1 python manage.py shell
然后输入
from web.models import Site
site = Site.objects.first()
print(site.domain) # 先看一下当前是什么
site.domain = 'IP地址'
site.media_domain = 'IP地址'
site.save()
exit()

Comments 1 条评论
这个引擎可以像mediawiki一样支持rss订阅吗