如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
LinuxServer.io 团队为您带来又一个容器版本,其特点包括:
您可以通过以下渠道找到我们:
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 编码或使用jpeg编码模式向浏览器发送真正的8位颜色。
硬件加速注意事项: 目前,只有Nvidia GPU支持在 Zero Copy 模式下编码此颜色配置文件。如果在Intel或AMD GPU上启用FullColor 4:4:4,系统将回退到CPU编码。这会迫使CPU从GPU读取像素,导致性能显著下降。
我们已将桌面容器从X11过渡到现代Wayland堆栈,现在Wayland是默认选项。
硬件回退注意事项: 在 x86_64 架构上,Wayland堆栈需要支持AVX2的处理器(Intel Haswell代或更新版本)。如果您的处理器缺少AVX2(如较旧的CPU或某些低端赛扬处理器),容器将自动回退到X11。
重要: X11的GPU加速支持已弃用。未来硬件加速的开发将完全专注于Wayland堆栈。
如果您遇到兼容性问题并需要手动禁用Wayland(强制回退到X11),可以通过设置以下环境变量来实现:
-e PIXELFLUX_WAYLAND=false为什么选择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文件安装驱动程序。
内核参数:必须在主机引导加载程序中设置nvidia-drm.modeset=1 nvidia_drm.fbdev=1。
/etc/default/grub并将参数添加到现有的GRUB_CMDLINE_LINUX_DEFAULT行:GRUB_CMDLINE_LINUX_DEFAULT=" nvidia-drm.modeset=1 nvidia_drm.fbdev=1"
然后运行以下命令应用更改:
sudo update-grub
/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]
--gpus all --runtime nvidia。此容器与SealSkin兼容。
SealSkin是一个自托管的客户端-服务器平台,提供安全认证和协作功能,同时使用浏览器扩展拦截用户操作(如点击链接或下载文件),并将其重定向到运行在远程服务器上的安全隔离应用环境。
此容器基于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选项:
点击展开:可选运行配置(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应用正常运行所必需的。 |
通过使用特殊的前缀FILE__,可以从文件中设置任何环境变量。
例如:
-e FILE__MYVAR=/run/secrets/mysecretvariable
这会根据/run/secrets/mysecretvariable文件的内容设置环境变量MYVAR。
对于我们所有的镜像,您可以使用可选的-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)
我们发布了各种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
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 pull
docker-compose pull obsidian
docker-compose up -d
docker-compose up -d obsidian
docker image prune
docker pull lscr.io/linuxserver/obsidian:latest
docker stop obsidian
docker rm obsidian
/config文件夹和设置将被保留)docker image prune
[!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。
来自真实用户的反馈,见证轩辕镜像的优质服务