1
0
Fork 0
1Panel-Appstore/apps/obsidian/README.md

9.4 KiB
Raw Permalink Blame History

obsidian-remote

这个 Docker 镜像允许你在 Docker 中以容器形式运行 obsidian,并通过你的 web 浏览器访问它。

请使用 http://localhost:8080/ 在本地访问它,除非你已对其进行安全设置并清楚自己在做什么,否则不要将其暴露在网络上!

使用容器

运行一个交互版本来测试它。这里使用的是基于 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右键点击以显示菜单并重新打开即可。这里有一个简短的视频演示了如何操作。

Reloading Obsidian in the Browser

设置 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 ManagerNPM - 运行在同一 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

从外部源复制/粘贴

点击浏览器窗口左侧的圆圈。在那里,您可以找到用于更新远程剪贴板或从中复制的内容的文本框。

image