obsidian多端使用者,也想在线使用
偶然发现大佬的项目:https://github.com/Nystik-gh/ignis,十分感谢大佬的开源
亲测可行,基本测试了下,能用
以下是我通过gemini协助搭建起来的


以往想在浏览器里用 Obsidian,只能用 Docker 跑一个笨重的 Linux 桌面(VNC 方案),体验很卡。 最近开源界出了一个神器叫 Ignis。它是一个轻量级的 Web 包装层,直接在浏览器里加载 Obsidian 的官方 JS 核心。
- 原理: 它通过把 Electron API 替换成浏览器 API,让你直接在网页上操作原汁原味的 Obsidian,文件直接存在服务器上。
- 支持: 核心编辑功能、Markdown 语法、Canvas(画布)、主题、绝大多数社区插件。
- 同步方式: 你可以用 Docker 把 Ignis 部署在你的 NAS 或服务器上,直接把 Obsidian 的文件夹(Vault)挂载进容器。你既可以在电脑上用客户端改,也可以在外面随时打开浏览器登录网页修改,数据完全实时同步。
方式1,在线需网络,个人测试有一定问题,可能是我自己网络问题
docker-compose.yml
services:
ignis:
# 关键修改:直接指定项目的代码仓库和对应的子目录
build:
context: https://github.com/Nystik-gh/ignis.git#main
context_dir: apps/ignis-server
container_name: ignis-obsidian
ports:
- "3000:3000"
volumes:
- /vol1/1000/docker/ignis/vaults:/vaults # 存放你 Obsidian 笔记的真实路径
- /vol1/1000/docker/ignis/config:/config # 存放 Ignis 配置的路径
restart: unless-stopped
这种方式我没跑通,自身网络问题,若是有问题自行寻找ai协助
方式2,手工,个人通过这种方式成功
为您梳理的完整 Docker Compose 本地编译、打包及排坑流程。您可以直接复制保存为 .md 文件。
Ignis (Obsidian 网页版) Docker Compose 本地编译、打包与排坑全记录
本项目基于单体仓库(Mono-repo)架构的开源项目 Ignis 进行本地编译、固化与部署。
1. 环境准备与基础镜像拉取
由于国内环境或代理源失效(例如飞牛官方源返回 401 Unauthorized),直接在编译时拉取基础镜像可能失败。我们采用标准代理源手动预拉取 node:22-slim 基础镜像:
Bash
# 使用目前存活的国内加速节点拉取基础镜像
docker pull docker.m.daocloud.io/library/node:22-slim
# 为镜像打上标准标签,骗过后续的 Dockerfile 编译阶段
docker tag docker.m.daocloud.io/library/node:22-slim node:22-slim
2. 源码下载与目录结构
由于宿主机可能存在 DNS 污染或无法直连 GitHub(Could not resolve host: github.com),因此不采用远程 Git 构建,而是下载源码到本地进行完全离线编译。
- 下载源码:从 GitHub 下载项目主分支的 Zip 包并解压。
- 存放路径:将解压后的完整目录放至
fnOS 宿主机的 /vol1/1000/docker/ignis/ 下。
标准的本地目录结构应如下所示:
Plaintext
/vol1/1000/docker/ignis/
**── ignis-main/ # 解压出来的完整源码根目录(即构建上下文 context)
** **── apps/
** ** **── ignis-server/
** ** **── Dockerfile # 核心 Dockerfile 路径
** **── packages/
** **── package.json
** **── ...
**── obsidian/
** **── vaults/ # 本地 Obsidian 笔记挂载目录
**── config/ # Ignis 配置文件挂载目录
**── docker-compose.yml # Docker Compose 配置文件
3. 第一阶段:本地编译与端口修正
在当前目录下创建并配置 docker-compose.yml。
关键避坑点(端口修正)
根据容器日志,Ignis 服务端在容器内部实际监听的端口是 8080,而非默认的 3000。因此宿主机的端口(例如 35701)必须映射到内部的 8080。
3.1 编写 docker-compose.yml(编译版)
YAML
services:
ignis:
build:
context: /vol1/1000/docker/ignis/ignis-main # 将构建上下文设为解压后的项目根目录
dockerfile: apps/ignis-server/Dockerfile # 显式指定相对于 context 的 Dockerfile 路径
container_name: ignis-obsidian
ports:
- "35701:8080" # 宿主机端口 : 容器内部监听端口
volumes:
- /vol1/1000/docker/ignis/obsidian/vaults:/vaults
- /vol1/1000/docker/ignis/config:/config
restart: unless-stopped
3.2 执行首次编译与启动
在 /vol1/1000/docker/ignis 目录下执行:
Bash
docker compose up -d --build
注:初次打开网页时,容器后台会自动前往 Obsidian 官网下载并解压官方核心 v1.12.7,若页面暂时空白请稍作等待。
4. 第二阶段:固化容器为本地镜像并导出
为了摆脱对编译环境和外部源码目录的依赖,将当前运行成功、且已内置好 Obsidian 核心的容器永久固化。
4.1 提交容器为本地镜像
参考官方版本号(0.8.7 - Karm),将运行中的容器 ignis-obsidian 打包:
Bash
docker commit ignis-obsidian ignis:0.8.7-karm
4.2 导出镜像为本地 TAR 包
将生成的镜像打包成归档文件,方便下载备份或跨机器迁移:
Bash
docker save -o ./ignis-0.8.7-karm.tar ignis:0.8.7-karm
完成后可通过飞牛文件管理器下载 ignis-0.8.7-karm.tar(约 330MB)。后续如需在其他设备导入,只需执行 docker load -i ignis-0.8.7-karm.tar。
4.3 升级 docker-compose.yml 为“纯镜像版”
现在可以完全移除 build 逻辑,改用刚刚固化好的本地镜像来运行:
YAML
services:
ignis:
image: ignis:0.8.7-karm # 直接引用本地固化好的镜像
container_name: ignis-obsidian
ports:
- "35701:8080"
volumes:
- /vol1/1000/docker/ignis/obsidian/vaults:/vaults
- /vol1/1000/docker/ignis/config:/config
restart: unless-stopped
应用更改:
Bash
docker compose down
docker compose up -d