9.4 KiB
obsidian-remote
这个 Docker 镜像允许你在 Docker 中以容器形式运行 obsidian,并通过你的 web 浏览器访问它。
请使用 http://localhost:8080/ 在本地访问它,除非你已对其进行安全设置并清楚自己在做什么,否则不要将其暴露在网络上!
- 使用容器
- 使用 Docker Compose
- 启用 obsidian-git 插件的 GIT
- 在浏览器中重新加载 Obsidan
- 设置 PUID 和 PGID
- 添加缺失的字体
- 通过反向代理托管
- 通过 Nginx Proxy Manager (NPM) 托管
- 更新 Obsidian
- 本地构建
- 从外部源复制/粘贴
使用容器
运行一个交互版本来测试它。这里使用的是基于 Windows 的路径,请根据您运行的操作系统进行更新。
docker run --rm -it `
-v D:/ob/vaults:/vaults `
-v D:/ob/config:/config `
-p 8080:8080 `
ghcr.io/sytone/obsidian-remote:latest
在后台以守护进程方式运行它。
docker run -d `
-v D:/ob/vaults:/vaults `
-v D:/ob/config:/config `
-p 8080:8080 `
ghcr.io/sytone/obsidian-remote:latest
ARM 容器现在可用,未来会使其更简单。ARM 镜像在 Docker Hub 而不在 GitHub 容器注册表中。
docker run -d `
-v D:/ob/vaults:/vaults `
-v D:/ob/config:/config `
-p 8080:8080 `
sytone/obsidian-remote:latest
端口
| 端口 | 描述 |
|---|---|
| 8080 | HTTP Obsidian Web 界面 |
| 8443 | HTTPS Obsidian Web 界面 |
映射的卷
| 路径 | 描述 |
|---|---|
| /vaults | 主机上 Obsidian 钥匙库的位置 |
| /config | 用于存储 Obsidian 配置和 ssh 数据的位置(obsidian-git) |
环境变量
| 环境变量 | 描述 |
|---|---|
| PUID | 为容器用户设置用户 ID。默认值:911。 |
| PGID | 为容器用户设置组 ID。默认值:911。 |
| TZ | 为容器设置时区,应与您的时区匹配。默认值:Etc/UTC。请参阅 tz 数据库时区列表以获取有效选项。 |
| DOCKER_MODS | 用于向容器添加类似 git 的模组。例如: DOCKER_MODS=linuxserver/mods:universal-git 。请参阅 Docker Mods 以获取详细信息。 |
| KEYBOARD | 用于设置用于输入的键盘。例如:KEYBOARD=en-us-qwerty 或 KEYBOARD=de-de-qwertz,其他可能的值(未测试)可以在 https://github.com/linuxserver/docker-digikam#keyboard-layouts 找到。 |
| CUSTOM_PORT | 容器监听的内部端口,用于 http,如果需要从默认的 3000 端口更改。 |
| CUSTOM_HTTPS_PORT | 容器监听的内部端口,用于 https,如果需要从默认的 3001 端口更改。 |
| CUSTOM_USER | HTTP 基本认证用户名,默认为 abc。 |
| PASSWORD | HTTP 基本认证密码,默认为 abc。如果未设置,则无需认证。 |
| SUBFOLDER | 如果运行子文件夹反向代理,则需要在应用中创建一个子文件夹,例如 `/subfolder/`。 |
| TITLE | 网页浏览器中显示的页面标题,默认为“KasmVNC 客户端”。 |
| FM_HOME | 这是文件管理器的主目录(起始目录),默认为 `/config`。 |
使用 Docker Compose
services:
obsidian:
image: 'ghcr.io/sytone/obsidian-remote:latest'
container_name: obsidian-remote
restart: unless-stopped
ports:
- 8080:8080
- 8443:8443
volumes:
- /home/obsidian/vaults:/vaults
- /home/obsidian/config:/config
environment:
- PUID=1000
- PGID=1000
- TZ=America/Los_Angeles
- DOCKER_MODS=linuxserver/mods:universal-git
- CUSTOM_PORT="8080"
- CUSTOM_HTTPS_PORT="8443"
- CUSTOM_USER=""
- PASSWORD=""
- SUBFOLDER=""
为 obsidian-git 插件启用 GIT
此容器使用来自 linuxserver.io 的基础镜像。这意味着您可以使用 linuxserver.io 的修改。要添加对 git 的支持,请像这样添加 DOCKER_MODS 环境变量: DOCKER_MODS=linuxserver/mods:universal-git 。
Docker CLI 示例
docker run -d `
-v D:/ob/vaults:/vaults `
-v D:/ob/config:/config `
-p 8080:8080 `
-e DOCKER_MODS=linuxserver/mods:universal-git `
ghcr.io/sytone/obsidian-remote:latest
在浏览器中重新加载 Obsidan
如果您对插件进行了更改或需要重新启动 Obsidan,则无需停止并重新启动 Docker 容器,只需关闭 Obsidan UI,右键点击以显示菜单并重新打开即可。这里有一个简短的视频演示了如何操作。
设置 PUID 和 PGID
要设置 PUID 和 PGID,请在命令行中使用以下环境变量,默认值为 911/911
docker run --rm -it `
-v D:/ob/vaults:/vaults `
-v D:/ob/config:/config `
-e PUID=1000 `
-e PGID=1000 `
-p 8080:8080 `
ghcr.io/sytone/obsidian-remote:latest
或者,如果你使用 docker-compose,请将它们添加到 environment 部分中:
environment:
- PUID=1000
- PGID=1000
你最有可能使用自己的用户 ID,可以通过运行以下命令获取。你需要关注的两个值是 uid 和 gid。
id $user
添加缺失的字体
感谢 @aaron-jang 提供了这个示例。
在 Obsidian 中使用所需语言的字体,请下载该字体并按如下方式添加到磁盘:
使用 Docker CLI 映射字体文件
-v {downloaded font directory}:/usr/share/fonts/truetype/{font name}
使用 Docker Compose 映射字体文件
volumes:
- {downloaded font directory}:/usr/share/fonts/truetype/{font name}
通过反向代理托管
如果您要这样做,请确保以某种方式对其进行保护!您还需要确保启用了 websocket 支持。
Nginx 配置示例
这是一个示例,我建议使用基于 SSL 的代理和某种形式的身份验证。
server {
set $forward_scheme http;
set $server "10.10.10.10";
set $port 8080;
listen 80;
server_name ob.mycooldomain.com;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_http_version 1.1;
access_log /data/logs/ob_access.log proxy;
error_log /data/logs/ob_error.log warn;
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_http_version 1.1;
# Proxy!
add_header X-Served-By $host;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass $forward_scheme://$server:$port$request_uri;
}
}
通过 Nginx Proxy Manager (NPM) 托管
感谢 @fahrenhe1t 提供这个示例。
如果你在 Docker 中安装 obsidian-remote,可以通过 Nginx Proxy Manager(NPM - 运行在同一 Docker 实例上)代理它,并使用访问列表提供用户身份验证。obsidian-remote 容器必须与 Nginx Proxy Manager 在同一网络中。如果你不将 IP 地址暴露给容器外部,身份验证将通过 NPM 进行:
services:
obsidian:
image: 'ghcr.io/sytone/obsidian-remote:latest'
container_name: obsidian-remote
restart: unless-stopped
ports:
- 8080 #only exposes port internally to the container
volumes:
- /home/obsidian/vaults:/vaults
- /home/obsidian/config:/config
environment:
- PUID=1000
- PGID=1000
- TZ=America/Los_Angeles
- DOCKER_MODS=linuxserver/mods:universal-git
networks:
default:
name: <your nginx proxy manager network>
external: true
在 NPM 中创建一个代理主机,指向 "obsidian-remote:8080" 容器,选择你的域名,使用 Let's Encrypt SSL 证书,启用 WebSocket。这个视频对此进行了说明:Nginx Proxy Manager - ACCESS LIST 保护内部服务
更新 Obsidian
obsidian 默认会在容器内更新自身。如果你重新创建容器,就需要再次进行更新。该仓库会定期更新,以保持与最新版本的 obsidian 同步。
本地构建
要本地构建和使用它,请运行以下命令:
docker build --pull --rm `
-f "Dockerfile" `
-t obsidian-remote:latest `
"."
要运行本地构建的镜像,请运行以下命令:
docker run --rm -it `
-v D:/ob/vaults:/vaults `
-v D:/ob/config:/config `
-p 8080:8080 `
obsidian-remote:latest bash
从外部源复制/粘贴
点击浏览器窗口左侧的圆圈。在那里,您可以找到用于更新远程剪贴板或从中复制的内容的文本框。

