
https://github.com/fhriley/kodi-headless-novnc/actions/workflows/actions.yml/badge.svg?branch=master](https://github.com/fhriley/kodi-headless-novnc/actions/workflows/actions.yml)
Docker容器中的无头模式Kodi安装,通常与MySQL Kodi设置配合使用,允许通过Web界面更新媒体库。
https://hub.docker.com/r/fhriley/kodi-headless-novnc
https://github.com/fhriley/kodi-headless-novnc
此镜像相比其他无头镜像有两个主要优势:
Kodi图形界面可通过8000端口的Web浏览器或5900端口的VNC访问,无需运行第二个"真实"的Kodi即可完成所有配置。
此Kodi镜像不使用任何代码补丁,因此可以轻松更新到任何Kodi新版本。
bashdocker run --name=kodi-headless-novnc \ -d --init \ -v <我的数据路径>:/data \ -e KODI_DB_HOST=<我的KODI数据库主机> \ -e KODI_DB_USER=<我的KODI数据库用户> \ -e KODI_DB_PASS=<我的KODI数据库密码> \ -e TZ=<我的时区> \ -p 5900:5900/tcp \ -p 8000:8000/tcp \ -p 8080:8080/tcp \ -p 9090:9090/tcp \ -p 9777:9777/udp \ fhriley/kodi-headless-novnc:Nexus
Docker Compose示例:
yamlversion: "3" services: kodi: image: fhriley/kodi-headless-novnc:Nexus restart: always init: true ports: - "5900:5900/tcp" - "8000:8000/tcp" - "8080:8080/tcp" - "9090:9090/tcp" - "9777:9777/udp" environment: KODI_DB_HOST: 192.168.1.246 KODI_DB_USER: user KODI_DB_PASS: password TZ: America/New_York volumes: - ./kodi_data:/data
| 端口 | 描述 |
|---|---|
5900/tcp | VNC(Kodi图形界面) |
8000/tcp | noVNC HTTP(Kodi图形界面) |
8080/tcp | Web界面 |
9090/tcp | WebSocket |
9777/udp | esall接口 |
| 路径 | 描述 |
|---|---|
/data | Kodi数据和配置文件的存储路径 |
| 变量名 | 描述 |
|---|---|
KODI_DB_HOST | MySQL数据库主机地址(默认值:mysql) |
KODI_DB_USER | Kodi的MySQL用户名(默认值:kodi) |
KODI_DB_PASS | Kodi用户的MySQL密码(默认值:kodi) |
KODI_DB_PORT | MySQL远程端口(默认值:3306) |
KODI_UID | 容器内运行所有进程的用户ID(默认值:2000) |
KODI_GID | 容器内运行所有进程的组ID(默认值:2000) |
KODI_UMASK | 容器内所有进程的umask值(默认值:002) |
TZ | 容器使用的时区(默认值:UTC) |
| 标签 | 代号 | 架构 |
|---|---|---|
latest | Nexus | amd64, armv7, arm64 |
Omega | Omega | amd64, armv7, arm64 |
Nexus | Nexus | amd64, armv7, arm64 |
Matrix | Matrix | amd64, armv7, arm64 |
强烈建议使用代号标签而非latest。Docker会自动为您的平台拉取正确架构的镜像。
使用数据卷(-v标志)时,主机操作系统和容器之间可能出现权限问题。我们通过允许您指定用户KODI_UID和组KODI_GID来避免此问题。确保主机上的数据卷目录归您指定的同一用户所有,即可正常工作。
使用id user命令查看您的用户ID和组ID:
$ id <docker用户> uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)
在此示例中,KODI_UID=1001且KODI_GID=1001。
容器首次启动时,数据库连接设置会自动配置并存储在/data/.kodi/userdata/advancedsettings.xml中。许多其他设置也在此文件内,您可以在生成后修改此文件,或挂载自己的版本。如果挂载自己的版本,数据库配置变量(KODI_DB*)将不会被使用。
如果您打算使用此Kodi实例执行除更新之外的媒体库任务(如清理媒体库等),务必将执行初始媒体库扫描的主机上的sources.xml复制到此实例的userdata文件夹,否则极有可能发生数据库丢失。
docker exec -it kodi-headless-novnc bashdocker logs -f kodi-headless-novnc如果您的媒体与该Docker容器在同一台机器上,且通过smb://在网络上共享媒体,以下方法适用。
首先,将主机媒体目录挂载到容器内的某个位置,使Kodi可以访问。
例如:--mount type=bind,source=/sharedfolders/pool,target=/media
然后,在Kodi的advancedsettings.xml中进行以下配置:
<pathsubstitution> <substitute> <from>smb://192.168.20.3/sharedfolders/pool/</from> <to>/media/</to> </substitute> </pathsubstitution>
完成。
现在Kodi不会通过smb://扫描,而是替换为/media/,扫描速度更快。找到新项目时,会以smb://路径正确存储在SQL中。
如果容器启动后Kodi立即崩溃,请查看以下内容获取可能的修复方法。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务