惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
罗磊的独立博客
The GitHub Blog
The GitHub Blog
V
V2EX
Last Week in AI
Last Week in AI
博客园 - 聂微东
MyScale Blog
MyScale Blog
美团技术团队
L
LangChain Blog
博客园 - Franky
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
S
SegmentFault 最新的问题
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
量子位
小众软件
小众软件
宝玉的分享
宝玉的分享
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
D
Docker
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

Mikuの极光星

用 Codex 写了一个 Noctalia 插件 Process Reporter | Mikuの极光星 荣耀 X16 锐龙版(2024)运行 Linux 问题和修复 | Mikuの极光星 Noctalia Plugin Linuxwallpaperengine | Mikuの极光星 Love Love School Days 在 Linux 下游戏汉化补丁安装使用 | Mikuの极光星 Fedora Silverblue 安装记录和不可变 Linux 个人杂谈 | Mikuの极光星 国内外主流对象存储价格对比 | Mikuの极光星 随笔:逝去的一段时光 | Mikuの极光星 Riddle Joker:剧情不足,人设也不足 | Mikuの极光星 在 CachyOS Handheld 下恢复 Steam Input 中文输入 | Mikuの极光星 Fedora Cosmic desktop Beta 一日游 | Mikuの极光星 博客~真周年随笔(大概是一周年) | Mikuの极光星 Waline-Mini 部署体验:基于 Rust 的 Waline 评论系统? | Mikuの极光星 迟来的个人对《拔作岛》第一部游戏动漫杂谈 | Mikuの极光星 Mikuの极光星 Mikuの极光星 Mikuの极光星 Mikuの极光星 Mikuの极光星 我的 KDE Plasma 6 美化方案分享 | Mikuの极光星 Mikuの极光星 自建一个 Fediverse 实例,我们需要准备什么? | Mikuの极光星 Decky Loader——Linux下 Steamdeck 和大屏幕模式的最佳伴侣 | Mikuの极光星 更换网站字体为霞鹜文楷屏幕阅读版(LXGW WenKai Screen) | Mikuの极光星 《Clannad》HD 官方中文版和 Full Voice 汉化版 Linux 运行 | Mikuの极光星 《恋爱与选举与巧克力》携带版试玩体验 | Mikuの极光星 我又用了一段时间 Misskey,发现和 Sharkey 存在一些区别和不足 | Mikuの极光星 Misskey/Sharkey 工具栏:强大且精心的小功能 | Mikuの极光星 浅谈个人与 Fediverse 的过往历史和现状 | Mikuの极光星 《爱上火车》在 Linux 下的视频播放修复 | Mikuの极光星 旮沓给木太好玩辣——2025年上半Gal历程个人总结 | Mikuの极光星
OtterWiki 部署:基于 Python 的轻量知识库系统 | Mikuの极光星
Mikuの鬆, admin@sotkg.com · 2025-10-24 · via Mikuの极光星

前言

前两天我简单介绍了下 Affine 知识库系统,然后有人可能就有疑问了,Affine 占用那么高,我只是想部署一个小知识库,也不需要那么多复杂的特性,有没有轻巧一点的系统呢?

还真有,在之前个人写小 Wiki 在线整理时曾经了解并使用过 OtterWiki 这个知识库系统,使用 Flask 框架,基于 Python 编写,使用 Markdown 作为标记语言,总体来说还是比较舒服的,页面设计不算十分前卫但也不算落后。

且自身还支持 Git Http 服务器,可以通过 Git 协议拉取和管理知识库内容。还是有点意思的。

要求

OtterWiki 的 CPU 需求非常低,你甚至可以在树莓派上运行它。所需的 RAM 大约为 100MiB,官方给出的推荐部署方式是使用 Docker 部署。

需要使用专用域名,例如wiki.example.com,不能使用子目录example.com/wiki,浏览器需要启用 Javascript。

安装 Docker

我们使用 Linuxmirrors 提供的 Docker 安装脚本来执行 Docker 的安装,它可以在多种 Linux 系统上安装 Docker。

bash
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

在遵照脚本步骤完成安装 Docker 后,我们进行下一步操作。

反向代理服务

我个人推荐使用 Caddy 作为反向代理服务的选择,它和 OtterWiki 一样占用的性能极低,且可以自动为域名申请 Https 证书。

Caddy 的部署和安装可以参见官方文档,我们在这里仅介绍 Debian/Ubuntu 环境下的安装和使用方式。

安装 Caddy

使用以下命令在 Debian/Ubuntu 环境下一键安装和启动 Caddy 本身以及需求的组件以及配置 Caddy 官方软件包仓库(稳定版):

bash
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

执行此安装操作后,Caddy 将自动启动并作为名为 caddy 的 systemd 服务运行 Caddy。

配置 Caddy 反向代理

我们打开/etc/caddy/目录下的Caddyfile文件,在最下面首先添加如下配置:

json
wiki.example.com {
  reverse_proxy 127.0.0.1:8080
  encode zstd gzip
}

这代表 Caddy 会反代wiki.example.com的请求,并把请求转发到在本地8080端口上暴露的服务,我们这篇教程会让 OtterWiki 在 8080 端口上部署,这是官方给出的默认配置端口,如果你想要更换端口,那么在上面的配置文件和后面的配置文件中你都需要更换对应端口。

Caddy 支持通过配置文件启用 Zstandard和 Gzip 压缩功能,这是主流的两种压缩算法。我们只需要把 encode zstd gzip加入域名配置文件下方即可,后续加入其他配置也是类似这样放置。

同样你也需要更换wiki.example.com为你实际想部署的域名,完成配置后,确保域名已经解析到服务器的前提下,使用systemctl restart caddy重启 Caddy 服务。

我们先新建放置 OtterWiki 数据的文件夹,然后终端进入其中。

bash
mkdir otterwiki
cd otterwiki

otterwiki目录下新建docker-compose.yml文件并填入如下内容

yaml
services:
  otterwiki:
    image: redimp/otterwiki:2
    restart: unless-stopped
    ports:
      - 127.0.0.1:8080:80
    volumes:
      - ./app-data:/app-data

接下来使用以下命令拉取和启动编排镜像文件:

bash
docker compose up -d

如果你的域名解析和 Caddy 配置正确,稍等片刻你就可以在域名上看到 OtterWiki 了。

结束

OtterWiki 启动后注册的第一个账户将作为管理员账户,所以部署启动后请尽快先注册账户哦。