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

279 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# obsidian-remote
这个 Docker 镜像允许你在 Docker 中以容器形式运行 [obsidian](https://obsidian.md/),并通过你的 web 浏览器访问它。
请使用 `http://localhost:8080/` 在本地访问它,除非你已对其进行安全设置并清楚自己在做什么,否则不要将其暴露在网络上!
* [使用容器](#using-the-container)
* [端口](#ports)
* [映射卷](#mapped-volumes)
* [环境变量](#environment-variables)
* [使用 Docker Compose](#using-docker-compose)
* [启用 obsidian-git 插件的 GIT](#enabling-git-for-the-obsidian-git-plugin)
* [Docker CLI 示例](#docker-cli-example)
* [在浏览器中重新加载 Obsidan](#reloading-obsidan-in-the-browser)
* [设置 PUID 和 PGID](#setting-puid-and-pgid)
* [添加缺失的字体](#adding-missing-fonts)
* [使用 Docker CLI 映射字体文件](#map-font-file-using-docker-cli)
* [使用 Docker Compose 映射字体文件](#map-font-file-using-docker-compose)
* [通过反向代理托管](#hosting-behind-a-reverse-proxy)
* [Nginx 配置示例](#example-nginx-configuration)
* [通过 Nginx Proxy Manager (NPM) 托管](#hosting-behind-nginx-proxy-manager-npm)
* [更新 Obsidian](#updating-obsidian)
* [本地构建](#building-locally)
* [从外部源复制/粘贴](#copypaste-from-external-source)
## 使用容器
运行一个交互版本来测试它。这里使用的是基于 Windows 的路径,请根据您运行的操作系统进行更新。
```PowerShell
docker run --rm -it `
-v D:/ob/vaults:/vaults `
-v D:/ob/config:/config `
-p 8080:8080 `
ghcr.io/sytone/obsidian-remote:latest
```
在后台以守护进程方式运行它。
```PowerShell
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 容器注册表中。
```PowerShell
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
```YAML
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 示例
```PowerShell
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](./assets/ReloadExample.gif)
## 设置 PUID 和 PGID
要设置 PUID 和 PGID请在命令行中使用以下环境变量默认值为 911/911
```PowerShell
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 部分中:
```yaml
environment:
- PUID=1000
- PGID=1000
```
你最有可能使用自己的用户 ID可以通过运行以下命令获取。你需要关注的两个值是 uid 和 gid。
```powershell
id $user
```
## 添加缺失的字体
感谢 @aaron-jang 提供了这个示例。
在 Obsidian 中使用所需语言的字体,请下载该字体并按如下方式添加到磁盘:
### 使用 Docker CLI 映射字体文件
```PowerShell
-v {downloaded font directory}:/usr/share/fonts/truetype/{font name}
```
### 使用 Docker Compose 映射字体文件
```PowerShell
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](https://nginxproxymanager.com/)NPM - 运行在同一 Docker 实例上代理它并使用访问列表提供用户身份验证。obsidian-remote 容器必须与 Nginx Proxy Manager 在同一网络中。如果你不将 IP 地址暴露给容器外部,身份验证将通过 NPM 进行:
```yaml
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 保护内部服务](https://www.youtube.com/watch?v=G9voYZejH48)
## 更新 Obsidian
obsidian 默认会在容器内更新自身。如果你重新创建容器,就需要再次进行更新。该仓库会定期更新,以保持与最新版本的 obsidian 同步。
## 本地构建
要本地构建和使用它,请运行以下命令:
```PowerShell
docker build --pull --rm `
-f "Dockerfile" `
-t obsidian-remote:latest `
"."
```
要运行本地构建的镜像,请运行以下命令:
```PowerShell
docker run --rm -it `
-v D:/ob/vaults:/vaults `
-v D:/ob/config:/config `
-p 8080:8080 `
obsidian-remote:latest bash
```
## 从外部源复制/粘贴
点击浏览器窗口左侧的圆圈。在那里,您可以找到用于更新远程剪贴板或从中复制的内容的文本框。
![image](https://user-images.githubusercontent.com/1399443/202805847-a87e2c7c-a5c6-4dea-bbae-4b25b4b5866a.png)