折腾私有文档管理库MrDoc, 顺便升级WSL2

缘起

突然的想法, 搜索关键词Markdown+思维导图得到了MrDoc项目的介绍

MrDoc 是基于Python开发的在线文档系统,适合作为个人和小型团队的私有云文档、云笔记和知识管理工具。致力于成为优秀的私有化在线文档部署方案。

先下载了在 Win10 + Python3.8官方嵌入式精简环境下折腾一番, 顺利跑起来了...
进行了简单的测试, 功能也十分强大, 现在才0.67的版本, 不知道1.0版本会是什么样子, 期待

官方部署手册中使用Debian10环境, 有之前搭建本地SmartDNS和编译OpenWrt时折腾WSL下Debian系统的经验, 本以为是手拿把抓的简单事, 缺没想到...大坑(PS:折腾时间小于1天的算不上巨坑)

现在把一番折腾之后的经验顺过来记录一遍, 以鉴后来...自己翻看

第一步, 升级WSL2

早就知道WSL2各种秒杀WLS, 奈何需要启用Hyper-V, 一旦启用VMware就用不了了...
昨天折腾MrDoc实在是走投无路了, 搜关键词VMware WSL2 共存,看到这篇文章才放下心来, 开干
先查看系统版本号是否满足: Win+R运行winver, 要求版本号大于18917才行...不满足条件的可以歇歇了

运行winver查看版本号

关于开启WSL的方法, 参见搭建本地SmartDNS的经验, 这里只说升级.

下载升级WSL2组件,执行, 一路Next...

# 查看WSL系统列表
wsl --list --verbose #或 wslconfig /l
# 设置默认启用WSL2
wsl --set-default-version 2
# 升级现有WSL Debian系统至WSL2
wsl --set-version Debian 2

如果现有系统目录巨大...还是放弃转换算了, 多装一个子系统会更快捷...:sob:

第二步, 启用systemd

参考

sudo apt install daemonize #安装依赖
sudo nano /etc/profile #编辑配置文件
# 追加如下内容
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')

if [ -z "$SYSTEMD_PID" ]; then
   sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
   SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
fi

if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
    exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME
fi

sudo nano /etc/sudoers  # 编辑
# 追加
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
%sudo ALL=(ALL) NOPASSWD: /usr/bin/nsenter -t [0-9]* -a su - [a-zA-Z0-9]*

source /etc/profile  # 应用上述修改内容
systemctl --version  # 查看结果

这里可能需要重启电脑, 未验证

接下来的操作与官方《使用 Nginx + uWSGI 部署 MrDoc》内容一致, 不再赘述.

结果展示

结果展示

WSL局域网服务

关键点: WSL添加静态IP Host端口映射

WSL添加静态IP, 参见:掩码对照表

ip addr add 172.27.127.2/28 broadcast 172.27.127.15 dev eth0 label eth0:1

嫌每次启动执行命令麻烦的话, 可以用服务的方式自动执行, 参考

本机端口映射:

netsh interface portproxy add v4tov4 80 172.27.127.2 86 0.0.0.0

解释:netsh interface portproxy add v4tov4 [监听端口] [转发地址] [转发端口] [监听地址]

最后在Win10防火墙中添加入站规则-端口-TCP-80-允许...

防火墙规则

到这一步, 可以用Host的局域网ip访问WSL中的Debian下的MrDoc服务.

如果还要穿过路由器的话, 可以在路由器端设置端口转发规则或UPNP规则, 以OpenWrt为例, 网络-防火墙-端口转发, 如下图:

端口转发

END

你可能感兴趣的:(折腾私有文档管理库MrDoc, 顺便升级WSL2)