ghcr.io/linuxserver/obsidian:v1.12.7-ls124
LinuxServer.io 团队为您带来又一个容器版本,其特点包括:
- 定期且及时的应用更新
- 简单的用户映射(PGID、PUID)
- 带有s6 overlay的自定义基础镜像
- 每周基础操作系统更新,在整个LinuxServer.io生态系统中共享通用层,以最小化空间占用、停机时间和带宽
- 定期安全更新
您可以通过以下渠道找到我们:
- 博客 - 关于如何使用我们的容器的所有内容,包括操作指南、观点等更多信息!
- *** - 与社区和团队进行实时支持/聊天。
- Discourse - 在我们的社区论坛上发帖。
- https://github.com/linuxserver - 查看我们所有仓库的源代码。
- Open Collective - 请考虑通过***或为我们的预算做出贡献来支持我们
https://github.com/linuxserver/docker-obsidian
Obsidian 是一款笔记应用,可让您在设备上创建、链接和组织笔记,并提供数百种插件和主题来自定义您的工作流程。您还可以在线发布笔记、离线访问笔记,并通过端到端加密安全同步笔记。
支持的架构
我们利用docker manifest实现多平台支持。更多信息可从docker https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list%E5%92%8C%E6%88%91%E4%BB%AC%E7%9A%84%E5%85%AC%E5%91%8A%E6%AD%A4%E5%A4%84%E8%8E%B7%E5%8F%96%E3%80%82
只需拉取 lscr.io/linuxserver/obsidian:latest 即可获取适合您架构的正确镜像,但您也可以通过标签拉取特定架构的镜像。
此镜像支持的架构如下:
| 架构 | 可用 | 标签 |
|---|---|---|
| x86-64 | ✅ | amd64-\ |
| arm64 | ✅ | arm64v8-\ |
应用设置
可通过以下地址访问应用:
- [***]
严格反向代理
此镜像默认使用自签名证书。这自然意味着协议为 https。如果您使用的反向代理会验证证书,则需要为容器禁用此检查。
现代GUI桌面应用可能与最新的Docker系统调用限制存在兼容性问题。在具有较旧内核或libseccomp版本的主机上,您可以使用带有 --security-opt seccomp=unconfined 设置的Docker来允许这些系统调用。
安全性
[!WARNING] 此容器提供对主机系统的特权访问。除非已正确保护,否则不要将其暴露在互联网上。
完整功能需要HTTPS。 现代浏览器功能(如用于视频和音频的WebCodecs)在不安全的HTTP连接上无法运行。
默认情况下,此容器没有身份验证。可选的 CUSTOM_USER 和 PASSWORD 环境变量可启用基本HTTP身份验证,这仅适用于在受信任的本地网络上保护容器。对于互联网暴露,我们强烈建议将容器放在反向代理(如 https://github.com/linuxserver/docker-swag%EF%BC%89%E5%90%8E%E9%9D%A2%EF%BC%8C%E5%B9%B6%E4%BD%BF%E7%94%A8%E5%BC%BA%E5%A4%A7%E7%9A%84%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%9C%BA%E5%88%B6%E3%80%82
Web界面包含一个具有无密码 sudo 访问权限的终端。任何有权访问GUI的用户都可以在容器内获得root控制权,安装任意软件,并探测您的本地网络。
虽然通常不推荐,但某些 legacy 环境(特别是那些使用较旧硬件或过时Linux发行版的环境)可能需要停用标准seccomp配置文件才能运行容器化桌面软件。这可以通过使用 --security-opt seccomp=unconfined 参数来实现。务必仅在绝对必要时使用此选项,因为它会禁用Docker的关键安全层,增加容器逃逸漏洞的可能性。
FullColor 4:4:4 编码
如果您注意到文本模糊,尤其是黑色背景上的浅色文本,可以通过在侧边栏中启用 FullColor 4:4:4 编码或使用jpeg编码模式向浏览器发送真正的8位颜色。
硬件加速注意事项: 目前,只有Nvidia GPU支持在 Zero Copy 模式下编码此颜色配置文件。如果在Intel或AMD GPU上启用FullColor 4:4:4,系统将回退到CPU编码。这会迫使CPU从GPU读取像素,导致性能显著下降。
硬件加速与Wayland
我们已将桌面容器从X11过渡到现代Wayland堆栈,现在Wayland是默认选项。
硬件回退注意事项: 在 x86_64 架构上,Wayland堆栈需要支持AVX2的处理器(Intel Haswell代或更新版本)。如果您的处理器缺少AVX2(如较旧的CPU或某些低端赛扬处理器),容器将自动回退到X11。
重要: X11的GPU加速支持已弃用。未来硬件加速的开发将完全专注于Wayland堆栈。
如果您遇到兼容性问题并需要手动禁用Wayland(强制回退到X11),可以通过设置以下环境变量来实现:
-e PIXELFLUX_WAYLAND=false
为什么选择Wayland?
- 零复制编码: 当与GPU正确配置时,帧在显卡上渲染和编码,无需复制到系统RAM。这大大降低了CPU使用率和延迟。
- 现代堆栈: 单应用容器使用 Labwc(替代Openbox),全桌面容器使用 KDE Plasma Wayland,在保持相同用户体验的同时,提供更现代、高性能和安全的合成环境。
GPU配置
要在Wayland模式下使用硬件加速,我们区分用于 渲染(3D应用/桌面)和 编码(视频流)的显卡。
配置变量:
DRINODE:用于 渲染(EGL)的GPU路径。DRI_NODE:用于 编码(VAAPI/NVENC)的GPU路径。
如果两个变量指向同一设备,容器将自动启用 零复制 编码,显著降低CPU使用率和延迟。如果它们设置为不同的设备,一个将用于 渲染,一个用于 编码,并进行CPU回读。
您也可以使用环境变量 AUTO_GPU=true,设置后将使用容器中检测到的第一张显卡(例如 /dev/dri/renderD128)并配置为 零复制。
Intel 和 AMD(开源驱动程序)
适用于Intel和AMD GPU。
devices:
- /dev/dri:/dev/dri
environment:
- PIXELFLUX_WAYLAND=true
# 可选:如果存在多个设备,指定设备(例如:/dev/dri/renderD129)
- DRINODE=/dev/dri/renderD128
- DRI_NODE=/dev/dri/renderD128
Nvidia(专有驱动程序)
前提条件:
-
驱动程序:需要580或更高版本的专有驱动程序。关键是,应使用直接从Nvidia网站下载的
.run文件安装驱动程序。- Unraid:使用Nvidia Driver插件的生产分支。
-
内核参数:必须在主机引导加载程序中设置
nvidia-drm.modeset=1 nvidia_drm.fbdev=1。- 标准Linux (GRUB):编辑
/etc/default/grub并将参数添加到现有的GRUB_CMDLINE_LINUX_DEFAULT行:
- 标准Linux (GRUB):编辑
GRUB_CMDLINE_LINUX_DEFAULT=" nvidia-drm.modeset=1 nvidia_drm.fbdev=1"
然后运行以下命令应用更改:
sudo update-grub
- Unraid (Syslinux):编辑文件
/boot/syslinux/syslinux.cfg,并将nvidia-drm.modeset=1 nvidia_drm.fbdev=1添加到Unraid OS引导项的append行末尾。
-
硬件初始化:在无头系统上,Nvidia显卡需要在GPU上插入物理虚拟插头,以便DRM正确初始化。
-
Docker运行时:配置主机Docker守护进程以使用Nvidia运行时:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
组合配置:
---
services:
obsidian:
image: lscr.io/linuxserver/obsidian:latest
environment:
- PIXELFLUX_WAYLAND=true
# 确保这些指向运行时注入的渲染节点(通常为renderD128)
- DRINODE=/dev/dri/renderD128
- DRI_NODE=/dev/dri/renderD128
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [compute,video,graphics,utility]
- Unraid:确保正确设置DRINODE/DRI_NODE,并在额外参数中添加
--gpus all --runtime nvidia。
SealSkin兼容性
此容器与SealSkin兼容。
SealSkin是一个自托管的客户端-服务器平台,提供安全认证和协作功能,同时使用浏览器扩展拦截用户操作(如点击链接或下载文件),并将其重定向到运行在远程服务器上的安全隔离应用环境。
- SealSkin服务器:https://github.com/linuxserver/docker-sealskin
- 浏览器扩展:Chrome 和 Firefox。
- 移动应用:iOS 和 Android
所有基于Selkies的GUI容器中的选项
此容器基于https://github.com/linuxserver/docker-baseimage-selkies%E3%80%82
点击展开:可选环境变量
| 变量 | 描述 |
|---|---|
| PIXELFLUX_WAYLAND | 如果设置为true,容器将以Wayland模式初始化,运行https://github.com/Smithay/smithay%E5%92%8CLabwc%EF%BC%8C%E5%90%8C%E6%97%B6%E5%90%AF%E7%94%A8GPU%E7%9A%84%E9%9B%B6%E5%A4%8D%E5%88%B6%E7%BC%96%E7%A0%81 |
| SELKIES_DESKTOP | 如果在Wayland模式下设置为true,将使用labwc初始化一个简单的面板 |
| CUSTOM_PORT | 容器监听HTTP的内部端口,如需从默认3000更改时使用 |
| CUSTOM_HTTPS_PORT | 容器监听HTTPS的内部端口,如需从默认3001更改时使用 |
| CUSTOM_WS_PORT | 容器监听WebSocket的内部端口,如需从默认8082更改时使用 |
| CUSTOM_USER | HTTP基本认证用户名,默认为abc。 |
| DRI_NODE | 编码GPU:启用VAAPI/NVENC流编码并使用指定设备,例如/dev/dri/renderD128 |
| DRINODE | 渲染GPU:指定用于EGL/3D加速的GPU,例如/dev/dri/renderD129 |
| AUTO_GPU | 如果在Wayland模式下设置为true,将自动使用第一个可用GPU进行编码和渲染,例如/dev/dri/renderD128 |
| PASSWORD | HTTP基本认证密码,默认为abc。如果未设置,则不进行认证 |
| SUBFOLDER | 应用程序的子文件夹(如果运行子文件夹反向代理),需包含前后斜杠,例如/subfolder/ |
| TITLE | 网页浏览器上显示的页面标题,默认为“Selkies” |
| DASHBOARD | 允许用户设置仪表板。选项:selkies-dashboard、selkies-dashboard-zinc、selkies-dashboard-wish |
| FILE_MANAGER_PATH | 修改默认上传/下载文件路径,路径必须对abc用户具有适当权限 |
| START_DOCKER | 如果设置为false,具有特权的容器将不会自动启动DinD Docker设置 |
| DISABLE_IPV6 | 如果设置为true或任何值,将禁用IPv6 |
| LC_ALL | 设置容器运行的语言,例如fr_FR.UTF-8 ar_AE.UTF-8 |
| NO_DECOR | 如果设置,应用程序将无窗口边框运行,用于PWA。(可通过Ctrl+Shift+d启用/禁用边框) |
| NO_FULL | 使用openbox时不自动全屏应用程序。 |
| NO_GAMEPAD | 禁用用户空间游戏手柄插入器注入。 |
| DISABLE_ZINK | 如果检测到显卡,不设置Zink环境变量(用户空间应用将使用CPU渲染) |
| DISABLE_DRI3 | 如果检测到显卡,不使用DRI3加速(用户空间应用将使用CPU渲染) |
| MAX_RES | 传递容器的更大最大分辨率,默认是16k 15360x8640 |
| WATERMARK_PNG | 容器内水印PNG的完整路径,例如/usr/share/selkies/www/icon.png |
| WATERMARK_LOCATION | 图像在流上的绘制位置,选项如下 |
WATERMARK_LOCATION选项:
- 1:左上角
- 2:右上角
- 3:左下角
- 4:右下角
- 5:居中
- 6:动画
点击展开:可选运行配置(DinD和GPU挂载)
| 参数 | 描述 |
|---|---|
--privileged | 启动Docker-in-Docker (DinD)环境。为获得更好的性能,从主机挂载Docker数据目录,例如-v /path/to/docker-data:/var/lib/docker。 |
-v /var/run/docker.sock:/var/run/docker.sock | 挂载主机的Docker套接字,以便从该容器内管理主机容器。 |
--device /dev/dri:/dev/dri | 将GPU挂载到容器中,可与DRINODE环境变量结合使用,以利用主机显卡进行GPU加速应用。 |
点击展开:传统X11分辨率和加速
[!NOTE] 本部分仅适用于未使用
PIXELFLUX_WAYLAND=true的情况。
在X11模式下通过Nvidia DRM或DRI3使用3D加速时,重要的是将虚拟显示限制在合理的最大分辨率,以避免内存耗尽或性能下降。
-e MAX_RES=3840x2160
应用程序管理
容器内安装应用程序有两种方法:PRoot 应用(推荐用于持久化)和原生应用。
PRoot 应用(持久化)
如果容器被重新创建,原生安装的软件包(例如通过 apt-get install)将不会持久保留。为了在容器更新后保留应用程序及其设置,我们建议使用 https://github.com/linuxserver/proot-apps%E3%80%82%E8%BF%99%E4%BA%9B%E6%98%AF%E5%AE%89%E8%A3%85%E5%88%B0%E7%94%A8%E6%88%B7%E6%8C%81%E4%B9%85%E5%8C%96 $HOME 目录的可移植应用程序。
要安装应用程序,请在容器内使用命令行:
proot-apps install filezilla
支持的应用程序列表可在 https://github.com/linuxserver/proot-apps?tab=readme-ov-file#supported-apps 获取。
原生应用(非持久化)
您可以使用 https://github.com/linuxserver/docker-mods/tree/universal-package-install 模块从系统的原生仓库安装软件包。此方法会增加容器的启动时间,且不具有持久性。将以下内容添加到您的 compose.yaml 中:
environment:
- DOCKER_MODS=linuxserver/mods:universal-package-install
- INSTALL_PACKAGES=libfuse2|git|gdb
参数
容器通过运行时传递的参数进行配置(如上文所述)。这些参数用冒号分隔,格式为 :。例如,-p 8080:80 会将容器内部的 80 端口暴露出来,使其可通过主机 IP 的 8080 端口从外部访问。
| 参数 | 功能 |
|---|---|
-p 3000:3000 | Obsidian桌面GUI的HTTP端口,必须进行代理。 |
-p 3001:3001 | Obsidian桌面GUI的HTTPS端口。 |
-e PUID=1000 | 用户ID - 详见下方说明 |
-e PGID=1000 | 组ID - 详见下方说明 |
-e TZ=Etc/UTC | 指定要使用的时区,参见此列表。 |
-v /config | 容器中的用户主目录,用于存储程序设置和文件。 |
--shm-size= | 这是Electron应用正常运行所必需的。 |
来自文件的环境变量(Docker secrets)
通过使用特殊的前缀FILE__,可以从文件中设置任何环境变量。
例如:
-e FILE__MYVAR=/run/secrets/mysecretvariable
这会根据/run/secrets/mysecretvariable文件的内容设置环境变量MYVAR。
运行应用的Umask
对于我们所有的镜像,您可以使用可选的-e UMASK=022设置来覆盖容器内启动的服务的默认umask设置。
请记住,umask不是chmod,它根据其值减去权限,而不是添加权限。在请求支持之前,请先了解相关知识。
用户/组标识符
使用卷(-v标志)时,主机操作系统和容器之间可能会出现权限问题。我们通过允许您指定用户PUID和组PGID来避免此问题。
确保主机上的任何卷目录都归您指定的同一用户所有,这样任何权限问题都会神奇地消失。
在本示例中PUID=1000和PGID=1000,要查找您的ID,请使用id your_user,如下所示:
id your_user
示例输出:
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
Docker Mods
我们发布了各种https://github.com/linuxserver/docker-mods%EF%BC%8C%E4%BB%A5%E5%9C%A8%E5%AE%B9%E5%99%A8%E5%86%85%E5%90%AF%E7%94%A8%E9%A2%9D%E5%A4%96%E5%8A%9F%E8%83%BD%E3%80%82%E5%8F%AF%E7%94%A8%E4%BA%8E%E6%AD%A4%E9%95%9C%E5%83%8F%E7%9A%84Mod%E5%88%97%E8%A1%A8%EF%BC%88%E5%A6%82%E6%9C%89%EF%BC%89%E4%BB%A5%E5%8F%8A%E5%8F%AF%E5%BA%94%E7%94%A8%E4%BA%8E%E6%88%91%E4%BB%AC%E4%BB%BB%E4%BD%95%E9%95%9C%E5%83%8F%E7%9A%84%E9%80%9A%E7%94%A8Mod%EF%BC%8C%E5%8F%AF%E9%80%9A%E8%BF%87%E4%B8%8A%E6%96%B9%E7%9A%84%E5%8A%A8%E6%80%81%E5%BE%BD%E7%AB%A0%E8%AE%BF%E9%97%AE%E3%80%82
支持信息
- 容器运行时的Shell访问:
docker exec -it obsidian /bin/bash
- 实时监控容器日志:
docker logs -f obsidian
- 容器版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' obsidian
- 镜像版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/obsidian:latest
更新信息
我们的大多数镜像是静态的、版本化的,需要更新镜像并重新创建容器才能更新内部的应用程序。除某些例外情况(在相关的readme.md中注明),我们不建议也不支持在容器内更新应用程序。请参考上方的应用程序设置部分,了解是否推荐对此镜像进行更新。
以下是更新容器的说明:
通过Docker Compose
- 更新镜像:
- 所有镜像:
docker-compose pull
- 单个镜像:
docker-compose pull obsidian
- 更新容器:
- 所有容器:
docker-compose up -d
- 单个容器:
docker-compose up -d obsidian
- 您还可以删除旧的悬空镜像:
docker image prune
通过Docker Run
- 更新镜像:
docker pull lscr.io/linuxserver/obsidian:latest
- 停止运行中的容器:
docker stop obsidian
- 删除容器:
docker rm obsidian
- 使用上述相同的docker run参数重新创建新容器(如果正确映射到主机文件夹,您的
/config文件夹和设置将被保留) - 您还可以删除旧的悬空镜像:
docker image prune
镜像更新通知 - Diun(Docker镜像更新通知器)
[!TIP] 我们推荐使用Diun进行更新通知。不推荐或支持其他自动无人值守更新容器的工具。
本地构建
如果您想对这些镜像进行本地修改以用于开发目的或自定义逻辑:
git clone https://github.com/linuxserver/docker-obsidian.git
cd docker-obsidian
docker build \
--no-cache \
--pull \
-t lscr.io/linuxserver/obsidian:latest .
可以使用lscr.io/linuxserver/qemu-static在x86_64硬件上构建ARM变体,反之亦然
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
注册后,您可以使用-f Dockerfile.aarch64指定要使用的Dockerfile。
版本历史
- 03.04.26: - 通过PIXELFLUX_WAYLAND=false默认禁用Wayland。
- 20.03.26: - 使用Wayland ozone平台修复缩放和加速问题。
- 28.12.25: - 添加Wayland初始化逻辑。
- 21.09.25: - 基于Debian Trixie重新构建。
- 12.07.25: - 基于Selkies重新构建,在启动器中添加no sandbox,现在需要HTTPS。
- 03.04.25: - 更新Chromium启动选项以提高性能。
- 18.06.24: - 修复Kasm的应用程序初始化。
- 06.04.24: - 初始发布。
轩辕镜像配置手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
Docker 配置
登录仓库拉取
通过 Docker 登录认证访问私有仓库
专属域名拉取
无需登录使用专属域名
K8s Containerd
Kubernetes 集群配置 Containerd
K3s
K3s 轻量级 Kubernetes 镜像加速
Dev Containers
VS Code Dev Containers 配置
Podman
Podman 容器引擎配置
Singularity/Apptainer
HPC 科学计算容器配置
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
Harbor 镜像源配置
Harbor Proxy Repository 对接专属域名
Portainer 镜像源配置
Portainer Registries 加速拉取
Nexus 镜像源配置
Nexus3 Docker Proxy 内网缓存
系统配置
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
镜像拉取常见问题
使用与功能问题
配置了专属域名后,docker search 为什么会报错?
docker search 限制
Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?
站内搜不到镜像
机器不能直连外网时,怎么用 docker save / load 迁镜像?
离线 save/load
docker pull 拉插件报错(plugin v1+json)怎么办?
插件要用 plugin install
WSL 里 Docker 拉镜像特别慢,怎么排查和优化?
WSL 拉取慢
轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?
安全与 digest
第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?
新手拉取配置
轩辕镜像合规吗?轩辕镜像的合规是怎么做的?
镜像合规机制
轩辕镜像支持 docker push 上传本地镜像吗?
不支持 push
错误码与失败问题
docker pull 提示 manifest unknown 怎么办?
manifest unknown
docker pull 提示 no matching manifest 怎么办?
no matching manifest(架构)
镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?
invalid tar header(解压)
Docker pull 时 HTTPS / TLS 证书验证失败怎么办?
TLS 证书失败
Docker pull 时 DNS 解析超时或连不上仓库怎么办?
DNS 超时
docker 无法连接轩辕镜像域名怎么办?
域名连通性排查
Docker 拉取出现 410 Gone 怎么办?
410 Gone 排查
出现 402 或「流量用尽」提示怎么办?
402 与流量用尽
Docker 拉取提示 UNAUTHORIZED(401)怎么办?
401 认证失败
遇到 429 Too Many Requests(请求太频繁)怎么办?
429 限流
docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?
D-Bus 凭证提示
为什么会出现「单层超过 20GB」或 413,无法加速拉取?
413 与超大单层
账号 / 计费 / 权限
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务