emby.wiki · 文档
Emby 搭建指南
从新购 VPS 开始,完成 Debian、Ubuntu、Rocky、AlmaLinux 与 Windows Server 的 Emby 安装、初始化、权限、网络配置和维护排错。
目录#
- 这篇教程适合谁
- 准备服务器、系统和登录方式
- Debian / Ubuntu 安装
- Rocky / AlmaLinux 及其他 RPM 系统安装
- Linux 首次启动与检查
- 准备媒体目录和 Linux 权限
- Windows Server 安装与开机运行
- 端口、系统防火墙和云安全组
- 第一次访问与初始化
- Linux 服务管理与日志
- 更新与备份
- 停止、重启和卸载
- 按现象排查常见问题
- 日常维护与验收
- 下一步:客户端与反向代理
- 参考资料与版本差异
1. 这篇教程适合谁#
你已经购买一台 VPS 或云服务器,刚安装好操作系统,希望把自己的电影、剧集或音乐整理成可以通过网页和客户端访问的媒体库。本文从登录服务器讲起,使用 Emby Server 原生软件包,覆盖 Debian、Ubuntu、Rocky Linux、AlmaLinux 和 Windows Server。
Linux 按自己的发行版执行其中一组安装命令,然后继续阅读目录、权限、防火墙和初始化章节。Windows 用户可以直接阅读第 7~9 节。服务管理、备份和排错章节用于安装后的维护。
Emby Server 不会自动提供电影,也不会把你电脑上的文件自动搬到 VPS。你需要把有权使用的媒体上传到服务器,或先挂载能够合法访问的存储。域名和反向代理可以等服务安装成功以后再配置。
2. 准备服务器、系统和登录方式#
2.1 系统与资源怎么选#
| 环境 | 本文的安装方式 | 需要确认的事项 |
|---|---|---|
| Debian / Ubuntu | 官方 stable APT 仓库,备用 .deb | 使用仍受维护的 Debian stable 或 Ubuntu LTS;确认系统与包架构 |
| Rocky Linux / AlmaLinux | 官方 stable RPM 仓库,DNF 安装 | 使用仍受维护的发行版;保留 SELinux 和软件包签名检查 |
| RHEL / CentOS Stream / Oracle Linux / Fedora | 同一 RPM 方法 | 包管理方式相近,但不代表每个版本、CPU 和依赖组合都已通过 Emby 官方认证 |
| Windows Server | 官方 Windows 安装器或 x64 portable ZIP | 本文按带 Desktop Experience 的 x64 环境编写;Server Core 不在这套图形操作步骤范围内 |
Windows Server 2019、2022、2025 是常见云镜像。Emby 下载页给出的 Windows 要求比较宽泛,没有逐项列出这些 Server 版本的完整支持矩阵;应结合当前下载说明和实际错误检查。2025 已有安装器失败的官方论坛记录,见 Windows 安装和排错章节。不要因为旧文档写着 Windows Vista / Windows 7 就新建已停止安全维护的系统。
硬件需求主要由播放方式决定:Direct Play(直接播放) 主要消耗磁盘和网络;实时视频转码需要更多 CPU 或可用的视频加速设备。普通 VPS 通常没有可以使用的 GPU,ARM 服务器也不等于具备硬件转码能力。
作为小规模、以直接播放为主的起点,可以按 2 vCPU、2~4 GB 内存规划 Linux,Windows 还要为操作系统预留更多内存。这是容量规划建议,不是 Emby 的统一最低要求,更不是 4K 转码保证。系统盘应容纳软件、数据库、海报、日志和转码临时文件;媒体空间另算。还要核对出站带宽、月流量和云磁盘费用。
2.2 先保留可靠的管理入口#
在云控制台确认公网 IP、初始用户名、SSH 密钥或密码,并找到串口 / VNC / 救援控制台入口。Linux 通常使用 SSH;Windows 使用 RDP。管理端口只允许自己的来源 IP,SSH 默认 TCP 22,RDP 默认 TCP 3389;如果厂商修改了端口,按实际值处理。
下面的 SSH 命令在你的电脑终端执行,把示例用户名和 IP 改为厂商提供的值:
ssh ubuntu@203.0.113.10
Debian 镜像可能使用 debian,Rocky 可能使用 rocky,部分镜像使用 root、almalinux、opc 或 ec2-user,不要靠猜。指定密钥和非默认端口时:
ssh -p 2222 -i ~/.ssh/your_server_key ubuntu@203.0.113.10
首次连接应与云控制台提供的信息核对主机身份。203.0.113.10 是文档示例地址,不能照抄。以下 Linux 命令在已经登录的 VPS上执行;代码块不带 Shell 提示符,可以整块复制。普通账户保留 sudo;已是 root 时省略 sudo。若最小镜像没有 sudo,用厂商提供的 root / 控制台完成准备,不要为此放宽 SSH 安全策略。
whoami
cat /etc/os-release
uname -m
ps -p 1 -o comm=
df -h
free -h
timedatectl status
/etc/os-release 识别发行版,df -h 看空间,free -h 看内存。本文的服务命令要求 PID 1 是 systemd;受限制的容器型 VPS 若不是 systemd,需要先向厂商确认服务管理能力。系统时间明显不正确时,先按厂商 / 发行版文档恢复时间同步,否则 HTTPS 下载和签名验证可能失败。
2.3 架构名称不要混用#
uname -m 常见结果 | CPU 家族 | Debian / Ubuntu 包架构 | RPM 包架构 |
|---|---|---|---|
x86_64 | 64 位 Intel / AMD | amd64 | x86_64 |
aarch64 | 64 位 ARM | arm64 | aarch64 |
armv7l | 32 位 ARM | 通常是 armhf,还需核对 ABI | 只有当前发行版及下载渠道确实提供匹配包时才可使用 |
amd64 也适用于 Intel 的 64 位 CPU。arm64 与 aarch64 是同一类 64 位 ARM 架构的不同命名,不能安装 x86 包。Debian / Ubuntu 再检查一次用户空间架构:
dpkg --print-architecture
RPM 系统可查询:
rpm --eval '%{_arch}'
官方 APT 仓库当前列有 amd64 arm64 armhf。GitHub 当前稳定版提供 amd64/arm64/armhf 的 DEB,以及 x86_64/aarch64 的 RPM;下载页旧模板中的 ARMv7 RPM 条目不表示当前稳定版一定有该文件。32 位系统、特殊 ABI 和新 CPU 基线须另行确认,不强行安装。
3. Debian / Ubuntu 安装#
3.1 更新系统并安装工具#
在刚安装好的服务器上更新索引、安装系统更新。查看更新清单再确认,安装期间若询问配置文件如何处理,阅读差异,不要盲目覆盖云镜像的 SSH 配置。
sudo apt update
sudo apt upgrade
sudo apt install curl ca-certificates acl util-linux iproute2 procps
这些工具用于 HTTPS 下载、证书验证、ACL、挂载、端口和进程 / 内存检查。软件包管理器会处理 Emby 的依赖,不需要预先照旧教程安装 Mono、旧版 .NET、apt-transport-https 或一长串来历不明的组件。系统更新提示需要重启时,确认云控制台可用后执行 sudo reboot,等待 SSH 恢复再继续。
3.2 添加官方 stable APT 仓库#
按 Emby 官方 APT 文档安装独立 keyring 和 Deb822 来源文件:
sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSL https://pkg.emby.media/keys/emby-public.gpg \
-o /etc/apt/keyrings/emby-public.gpg
sudo chmod 0644 /etc/apt/keyrings/emby-public.gpg
sudo curl -fsSL https://pkg.emby.media/apt/emby.sources \
-o /etc/apt/sources.list.d/emby.sources
cat /etc/apt/sources.list.d/emby.sources
sudo apt update
apt-cache policy emby-server
来源应是 https://pkg.emby.media/apt/,Suites 为 stable,Signed-By 指向刚保存的 keyring。apt-cache policy 应能看到来自这个仓库的候选版本。任何下载或索引更新失败,先解决错误再继续。 不添加 beta 来源,不使用 apt-key、trusted=yes 或关闭签名检查作为修复。
sudo apt install emby-server
dpkg-query -W -f='${Package} ${Version} ${Architecture}\n' emby-server
第二条应显示已安装的包名、版本和正确架构。APT 会自动选择匹配架构,文章不固定一个很快过时的 Emby 版本号。
3.3 备用:手动下载官方 DEB#
只有不采用仓库时才执行这一小节,两种安装方式选一种。前往 官方 Linux 下载页,选择 Debian / Ubuntu、自己的架构和稳定版,复制 .deb 链接;也可以在 官方 GitHub Releases 的 Assets 中查找匹配文件。
把下方变量替换为该文件的完整 HTTPS 地址。不要保留占位文字,也不要下载 beta 或第三方修改包。
EMBY_DEB_URL='PASTE_OFFICIAL_STABLE_DEB_URL_HERE'
EMBY_PACKAGE_DIR=$(mktemp -d /var/tmp/emby-package.XXXXXX)
chmod 0755 "$EMBY_PACKAGE_DIR"
curl -fL --proto '=https' --proto-redir '=https' \
"$EMBY_DEB_URL" -o "$EMBY_PACKAGE_DIR/emby-server.deb"
dpkg-deb -f "$EMBY_PACKAGE_DIR/emby-server.deb" Package Version Architecture
sudo apt install "$EMBY_PACKAGE_DIR/emby-server.deb"
元数据应显示 emby-server 和前面检查出的架构。使用 APT 安装本地包可以从已配置的系统仓库解决依赖,比单独 dpkg -i 更适合新用户。下载文件不会自动建立更新仓库,后续需要手动下载新稳定包再安装。参考:Debian APT 手册、Ubuntu 软件管理。
4. Rocky / AlmaLinux 及其他 RPM 系统安装#
4.1 更新系统并配置官方仓库#
Rocky、AlmaLinux、RHEL、CentOS Stream、Oracle Linux 和 Fedora 使用 RPM / DNF 体系。下面直接下载 .repo 文件,避免 DNF 4 与 DNF 5 的 config-manager 参数差异;不需要为安装 Emby 随意开启 EPEL、CRB 或第三方仓库。
sudo dnf upgrade
sudo dnf install curl ca-certificates acl util-linux iproute procps-ng
sudo curl -fsSL https://pkg.emby.media/rpm/emby.repo \
-o /etc/yum.repos.d/emby.repo
cat /etc/yum.repos.d/emby.repo
sudo dnf makecache --refresh
dnf repolist
dnf info emby-server
当前 stable 仓库 ID 为 emby,地址包含 /rpm/stable/ 和 $basearch,配置中的 gpgcheck=1、repo_gpgcheck=1 应保留。第一次验证可能询问是否导入 Emby 公钥,核对来源为 https://pkg.emby.media/keys/emby-public.asc 及官方文档后确认;不要从未知镜像导入密钥。
sudo dnf install emby-server
rpm -q --queryformat '%{NAME} %{VERSION} %{ARCH}\n' emby-server
应看到匹配的 x86_64 或 aarch64 包。服务管理仍然使用 systemd 的 emby-server,不是 emby、embyserver 或 SysV 的旧命令。
参考:Emby 官方 DNF 文档、Rocky 软件管理。官方论坛也有 AlmaLinux / Rocky 的 RPM 实践讨论,但它不能证明所有新发行版组合均可运行;以包管理器的依赖检查和当前 Emby 说明为准。
4.2 备用:手动下载官方 RPM#
没有配置仓库时,从官方 Linux 下载页或 GitHub 稳定版选择匹配架构的 .rpm,把完整 HTTPS 链接填入变量:
EMBY_RPM_URL='PASTE_OFFICIAL_STABLE_RPM_URL_HERE'
EMBY_PACKAGE_DIR=$(mktemp -d /var/tmp/emby-package.XXXXXX)
chmod 0755 "$EMBY_PACKAGE_DIR"
curl -fL --proto '=https' --proto-redir '=https' \
"$EMBY_RPM_URL" -o "$EMBY_PACKAGE_DIR/emby-server.rpm"
rpm -qp --queryformat '%{NAME} %{VERSION} %{ARCH}\n' \
"$EMBY_PACKAGE_DIR/emby-server.rpm"
sudo dnf install "$EMBY_PACKAGE_DIR/emby-server.rpm"
DNF 负责解析依赖。直接下载不等于已经验证发布者的 RPM 签名;本地包的检查还受系统 localpkg_gpgcheck 策略影响。需要可审计的签名验证时优先用上面的官方仓库;不要在遇到签名错误后追加 --nogpgcheck、--nodeps 或 --force。手动包更新仍需重新下载,不保证仅执行 dnf upgrade 就获得下一版 Emby。
5. Linux 首次启动与检查#
安装包提供服务定义和服务账户,无需手写 systemd unit。确保云安全组尚未向所有来源开放 8096,再执行:
sudo systemctl enable --now emby-server
systemctl is-enabled emby-server
systemctl is-active emby-server
sudo systemctl status emby-server --no-pager -l
sudo ss -lntp 'sport = :8096'
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8096/
预期 is-enabled 为 enabled、is-active 为 active,状态显示 active (running);ss 能看到 8096 的 TCP 监听,HTTP 返回页面或跳转的状态码,例如 200 / 302。不是所有版本都返回同一状态码,000 表示 curl 没有拿到 HTTP 响应。
enable 设置开机启动,--now 同时启动本次服务。端口已经监听只证明进程在接收连接;还需要浏览器能够显示向导 / 登录页。若失败,先查看:
sudo journalctl -u emby-server -n 100 --no-pager
sudo systemctl cat emby-server
id emby
systemctl show emby-server -p User -p Group -p ExecStart
官方 Linux 包通常以 emby 用户运行,默认数据目录为 /var/lib/emby。systemctl cat/show 和后台的服务器信息是确认当前安装路径、运行用户和启动参数的依据;旧文档中的配置文件位置不能替代实际 unit。见 官方 Linux 说明和数据目录说明。
6. 准备媒体目录和 Linux 权限#
6.1 新服务器:使用自己管理的本地目录#
系统盘空间够用时可以先使用 /data/media;数据盘、NAS 挂载可用 /mnt/media。媒体目录、Emby 数据目录和转码临时目录是三件不同的事,不要把电影复制进 /var/lib/emby 当作配置。
下面仅创建新的本地媒体目录:
sudo groupadd -f media
sudo usermod -aG media emby
sudo install -d -o "$(id -un)" -g media -m 2750 \
/data/media /data/media/Movies /data/media/TV /data/media/Music
sudo systemctl restart emby-server
目录所有者是执行命令的当前账户;如果你已切换到 root,它就是 root。2750 允许所有者写入、media 组读取和进入,其他账户不能访问;其中 setgid 位让新建内容继承目录的组。usermod -aG 的 -a 必须保留,它表示追加组,不会替换原来的组。服务需要重启才能取得新增组成员身份。
用 SFTP / WinSCP / 云厂商支持的上传方式,把媒体传到这里;使用普通上传账户时,该账户应拥有目标目录写权限。建议先上传少量文件测试:
/data/media/
├── Movies/
│ └── Example Movie (2024)/Example Movie (2024).mkv
├── TV/
│ └── Example Show/Season 01/Example Show S01E01.mkv
└── Music/
└── Artist/Album/01 - Track.flac
如果上传工具保留了过于严格的文件权限,media 组仍可能读不到内容。对确认由自己管理的这一棵本地目录补充组读取权限:
sudo find /data/media -type d -exec chmod g+rx {} +
sudo find /data/media -type f -exec chmod g+r {} +
sudo -u emby ls -lah /data/media/Movies
目录需要 x 才能进入,文件需要 r 才能读取;不必给电影文件增加可执行位。如果文件没有继承 media 组,再检查 ls -l,按下一节修正实际媒体目录的组。
6.2 已有目录:保留 owner,按需要授权#
“root 能看见”不等于“Emby 能看见”。从每一级父目录检查:
namei -l /mnt/media/Movies
id emby
sudo -u emby ls -lah /mnt/media/Movies
findmnt -T /mnt/media/Movies
/、/mnt、/mnt/media、Movies 每一级都必须允许 emby 遍历。文件放在 /root 或权限为 700 的家目录时,单改最后一级没用;更适合把媒体放到专用目录。
方案 A:media 组。 仅对自己拥有、没有特殊 ACL 的本地媒体目录使用,保留文件原来的所有者:
sudo groupadd -f media
sudo usermod -aG media emby
sudo chgrp -R media /mnt/media
sudo find /mnt/media -type d -exec chmod g+rx {} +
sudo find /mnt/media -type f -exec chmod g+r {} +
sudo systemctl restart emby-server
方案 B:ACL。 想保持现有 owner / group 时,可以只授权 emby;两个方案不必重复执行。先保存原 ACL 便于恢复:
sudo getfacl -Rp /mnt/media > ~/media-acl-before.txt
sudo setfacl -R -m u:emby:rX /mnt/media
sudo find /mnt/media -type d -exec setfacl -m d:u:emby:rx {} +
getfacl /mnt/media/Movies
sudo -u emby ls -lah /mnt/media/Movies
大写 X 给目录遍历权限,不会把普通电影一律设为可执行。默认 ACL 供新建内容继承;移动进来的文件、保留源权限的复制或上传工具可能不继承,上传后仍要检查。观察 getfacl 的 mask 与 #effective,ACL mask 会限制实际权限,后续 chmod 也可能改变 mask。特殊 NAS ACL、只读文件系统或不支持 POSIX ACL 的挂载不能照搬这些递归命令。参考:Emby 权限说明、setfacl 手册。
新目录示例中的 chown 只应在明确要调整新建目录的上传账户时使用,例如 sudo chown your_upload_user:media /data/media/Movies。不要递归把整块共享盘所有者改成 emby。
6.3 数据盘、SMB / NFS 与开机挂载#
VPS 的附加云盘不一定已经挂载。先查看设备和已有文件系统:
lsblk -f
findmnt
若分区已经有文件系统,确认它不是系统盘,再按实际 UUID 挂载到新目录。下方占位符必须替换:
sudo mkdir -p /mnt/media
sudo mount UUID=YOUR_MEDIA_FILESYSTEM_UUID /mnt/media
findmnt /mnt/media
df -h /mnt/media
全新空盘没有文件系统时,应按云厂商的数据盘初始化指南处理。格式化会清空目标设备,不能把教程里示例设备名当作自己的磁盘。 本文不提供可以误格式化系统盘的通用一键命令。
要开机挂载,先备份 /etc/fstab,用系统编辑器加入与实际 UUID、文件系统相匹配的一行。例如已有 ext4 数据分区可以使用:
sudo cp -a /etc/fstab /etc/fstab.before-emby
sudo nano /etc/fstab
nano 若未安装,用对应包管理器安装它,或使用已熟悉的编辑器。下面是 fstab 内容,不是 Shell 命令:
UUID=YOUR_MEDIA_FILESYSTEM_UUID /mnt/media ext4 defaults,nofail 0 2
实际是 XFS 时应使用 xfs 及对应检查设置,不能照抄 ext4 行。保存后检查语法、重新读取配置并验证挂载:
sudo findmnt --verify --verbose
sudo systemctl daemon-reload
sudo mount /mnt/media
findmnt /mnt/media
验证错误时先修复,不急着重启。nofail 让缺失数据盘不阻止系统启动,但仍需阻止 Emby 在未挂载的空目录上扫描。已有 fstab 挂载定义时,执行 sudo systemctl edit emby-server,在编辑器中添加:
[Unit]
RequiresMountsFor=/mnt/media
sudo systemctl daemon-reload
sudo systemctl restart emby-server
它会建立 Emby 对相关挂载单元的依赖与启动顺序。前提是这个路径确实配置了挂载;仅有空目录时,systemd 不会凭空知道你期望挂载哪块盘。见 systemd 挂载依赖说明。
SMB / NFS 需要先在操作系统中完成可靠的挂载,再把本地挂载路径交给 Emby。SMB 常见问题是 UID / GID 映射和共享端 ACL;NFS 常见问题是两端数字 UID / GID 不一致以及导出权限。root_squash 不是让你关闭 NFS 安全选项的理由。用 sudo -u emby ls 检查实际访问,不要在凭据文件中放宽权限,也不要在命令行写 SMB 密码。网络挂载的 _netdev、等待网络和失败行为按存储 / 发行版文档配置;实时监控不可用时用定时扫描。
7. Windows Server 安装与开机运行#
7.1 登录、更新和下载#
用云厂商提供的 RDP 地址登录服务器。在服务器内安装 Windows Update、确认时间和磁盘空间。以下 PowerShell 命令在 Windows Server 上执行,防火墙和服务命令需要以管理员身份打开 PowerShell。
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsArchitecture
Get-Volume | Select-Object DriveLetter, FileSystem, SizeRemaining, Size
用服务器浏览器打开 Emby Server for Windows,选择稳定版 Server,不要误下载 Emby Windows / Theater 客户端。官方页面提供安装器以及 Portable Installation 的 Windows x64 / x86 ZIP。本文面向 x64 Windows Server,Linux ARM64 的包不能用在这里。
7.2 安装器与 portable 两种方式#
安装器方式: 从官方页面下载,使用准备长期运行 Emby 的同一个 Windows 账户启动安装器,按提示完成。安装器可能还需要联网取得程序;允许它访问官方 HTTPS 下载源。安装完成通常会启动 Emby 并打开设置向导,未自动打开就访问 http://localhost:8096。
安装器常见程序位置为 %APPDATA%\Emby-Server\system\EmbyServer.exe,通常不是 C:\Program Files 下的全机安装。%APPDATA% 指的是安装 / 运行账户的 Roaming 目录,不是任意当前账户的目录。
Portable 方式: 从同一官方页面下载 x64 ZIP,解压到固定目录,例如 C:\Emby,保留 ZIP 的 System 子目录结构。程序应位于 C:\Emby\System\EmbyServer.exe;不要把 System 内的文件散放到根目录,也不要在下载文件夹或临时目录运行。
Test-Path 'C:\Emby\System\EmbyServer.exe'
Start-Process -FilePath 'C:\Emby\System\EmbyServer.exe' -WorkingDirectory 'C:\Emby\System'
第一条应为 True,第二条仅适用于已经解压的 portable 安装。普通启动用于先确认程序能运行;每台服务器只选择一种安装,并保留一个实例。
7.3 数据目录和媒体目录#
安装器方式的常见数据目录:
C:\Users\YOUR_WINDOWS_USER\AppData\Roaming\Emby-Server\programdata
保留 System 结构的 portable 安装,数据通常在父目录的 programdata,本例为 C:\Emby\programdata。这里保存配置、用户、数据库、插件、元数据和日志,不能在升级时当作缓存清空。具体位置以后台服务器名称旁 … → Get Server Info / 服务器信息 或启动日志的 Data path 为准;不要假定它一定是 C:\ProgramData。参考:官方数据目录、portable 目录结构讨论。
另建媒体目录,例如存在 D: 数据盘时使用 D:\Media\Movies、D:\Media\TV;只有 C: 时可以使用 C:\Media。在资源管理器「属性 → 安全」中,为运行 Emby 的账户赋予媒体目录“读取和执行 / 列出文件夹 / 读取”,数据目录赋予“修改”。需要保存媒体旁的字幕、NFO 时才增加媒体目录写入权限,不要向 Everyone 授予完全控制。
7.4 未登录也能运行:注册 Windows Service#
“随用户登录启动”不等于“服务器重启后无需登录就运行”。VPS 应考虑 Windows Service;普通安装 不会让你可以直接假定已有 Emby 服务。官方仍提供 NSSM 服务方案,它是第三方服务包装工具。
- 先通过普通启动验证 Emby 可用,再从托盘或后台关闭这个实例,确认任务管理器中没有残留 EmbyServer 进程。
- 在 Emby 设置中关闭普通实例的随登录启动,避免服务与托盘程序抢占端口 / 数据目录。
- 从 NSSM 官方站点取得匹配 Windows 架构的程序,把
nssm.exe放到固定位置,例如C:\Tools\nssm\nssm.exe。服务会依赖这个文件,注册后不要移动或删除它。 - 在管理员 PowerShell 执行以下命令打开服务配置窗口;本文固定使用服务名
EmbyServer:
& 'C:\Tools\nssm\nssm.exe' install EmbyServer
| NSSM 字段 | Portable 示例 | 安装器方式 |
|---|---|---|
| Path | C:\Emby\System\EmbyServer.exe | 使用实际安装账户下的完整 EmbyServer.exe 路径 |
| Startup directory | C:\Emby\System | 上述程序所在目录 |
| Arguments | -service | 同样使用 -service |
| Log on | 有所需目录权限的固定账户 | 先使用原运行账户,避免切换后读错用户目录 |
在 Exit actions 中将默认退出动作设为 Exit / 不自动重启应用,遵循 Emby 官方要求;否则后台点 Shutdown 后 NSSM 可能马上重新拉起。正常重启使用 Windows 的 Restart-Service。
服务账户需要“作为服务登录 / Log on as a service”权限,以及上面列出的目录权限。避免为方便而默认使用权限很高的 LocalSystem;访问 SMB 时,本地系统账户也不会自动拥有你的共享凭据。账户密码在 NSSM 的 Log on 界面输入,不写入脚本 / 命令历史。先用原账户确保目录一致,再考虑单独的低权限服务账户;迁移账户时核对数据目录和 NTFS / 共享权限。
点击 Install service,随后执行:
Set-Service -Name EmbyServer -StartupType Automatic
Start-Service -Name EmbyServer
Get-Service -Name EmbyServer
Get-CimInstance Win32_Service -Filter "Name='EmbyServer'" |
Select-Object Name, State, StartMode, StartName, PathName
Get-NetTCPConnection -LocalPort 8096 -State Listen
Test-NetConnection -ComputerName 127.0.0.1 -Port 8096
应看到服务 Running、启动模式 Auto,8096 监听且 TcpTestSucceeded 为 True。重新访问后台,确认进入的是刚才那一套配置,而不是新的空白向导。服务模式不会自动更新,后面的更新步骤必须手动执行。
8. 端口、系统防火墙和云安全组#
8.1 哪些端口需要开放#
| 端口 | 用途 | 本教程的处理方式 |
|---|---|---|
| TCP 8096 | Emby HTTP 网页、客户端 API 和媒体流 | 初始化用 SSH 隧道 / 本机访问,必要时仅允许自己的公网 IP |
| TCP 8920 | Emby 内置 HTTPS | 默认并非可用的 HTTPS 服务;配置有效证书并启用 TLS 后才按需要开放 |
| SSH / RDP 管理端口 | 操作系统管理 | 保留现有受限规则,按实际端口处理 |
HTTP 8096 没有加密。仅限制来源 IP 不能代替 TLS;初始化和管理员登录优先使用下面的 SSH 隧道或服务器内部浏览器。公网长期使用前,再完成 HTTPS / 私人 VPN。不要仅因为数字相近,就把 https://IP:8096 或 http://IP:8920 当作正确地址。参见 Emby 网络设置。
8.2 Debian / Ubuntu:已启用 UFW 时#
sudo ufw status verbose
如果未安装 UFW,这条命令会提示找不到命令,不等于没有任何防火墙;检查云镜像是否使用 nftables / 其他规则。Status: inactive 表示 UFW 未启用,不要为了照抄教程直接启动它。
已启用 UFW 且需要受限公网连接时,把 198.51.100.25 改成你电脑当前的公网 IPv4:
sudo ufw allow from 198.51.100.25 to any port 8096 proto tcp
sudo ufw status numbered
这个文档示例 IP 不能直接使用。若需要启用 UFW,先按实际 SSH 端口和来源保留 SSH 规则,保持当前连接,再确认新终端能够登录;不要只添加 8096 就执行 ufw enable。UFW 规则中的来源要与云安全组一致。参考:Ubuntu 防火墙文档。
8.3 Rocky / AlmaLinux:firewalld#
sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones
找到公网网卡实际所在 zone,不一定是 public。下面仅以 public 为例,同时限制来源;把 zone 和 IP 替换为真实值:
sudo firewall-cmd --permanent --zone=public \
--add-rich-rule='rule family="ipv4" source address="198.51.100.25/32" port port="8096" protocol="tcp" accept'
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-all
--permanent 保存重启后的规则,reload 让它进入运行配置;reload 也会移除尚未保存的临时规则,所以先确认 SSH 规则已经永久保存。firewalld 未运行时,不应未核对现有规则就临时开启另一套防火墙。检查是否已有向所有来源放行的 8096 规则:新增受限规则不会收紧原来的宽泛规则。参考:firewall-cmd、rich rule 语法。
8.4 Windows Defender Firewall#
在管理员 PowerShell 查看网络配置类别和防火墙状态:
Get-NetConnectionProfile
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction
可以打开 wf.msc,在「入站规则 → 新建规则 → 端口」中选择 TCP 8096、允许连接和当前适用的配置文件,再在规则的「作用域」限制自己的来源 IP。程序规则则必须指向实际 EmbyServer.exe;程序路径或版本目录变化以后重新核对。
也可以创建下面这条来源受限规则。-Profile Any 适应云镜像可能采用的 Public / Private / Domain 类别,来源仍限制为你的 IP:
New-NetFirewallRule -Name 'Emby-HTTP-Admin' -DisplayName 'Emby HTTP from administrator' `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort 8096 `
-RemoteAddress '198.51.100.25' -Profile Any
Get-NetFirewallRule -Name 'Emby-HTTP-Admin' |
Select-Object Name, Enabled, Direction, Action, Profile
把地址替换后再执行。已有安装器建立的宽泛允许规则也需要检查;新的限制规则不会覆盖它。无需关闭 Windows Firewall。参考:Microsoft New-NetFirewallRule。
8.5 云平台外面还有一层#
AWS Security Group / Network ACL、Azure NSG、Google Cloud VPC Firewall、Oracle Cloud NSG / Security List、阿里云 / 腾讯云安全组、Vultr Firewall、DigitalOcean Cloud Firewall 都可能在流量到达系统前阻挡它。
在厂商控制台检查规则是否绑定到实际网卡 / 实例、入站 TCP 端口是否为 8096、来源是否为自己的公网 IP。IPv4 使用 /32 单主机规则,IPv6 使用匹配的 /128 或明确网段。只通过 SSH 隧道 / RDP 内部访问时,不需要新增公网 8096 规则。NAT 型 VPS 还要核对厂商给出的公网映射端口;普通有独立公网 IP 的 VPS 不需要照搬家庭路由器 UPnP 流程。
9. 第一次访问与初始化#
9.1 推荐访问方式#
Linux:在你的电脑另开终端建立 SSH 隧道,用户名、IP、SSH 端口按第 2 节的实际值调整:
ssh -N -L 127.0.0.1:18096:127.0.0.1:8096 ubuntu@203.0.113.10
保留此终端运行,在电脑浏览器打开:
http://127.0.0.1:18096
这里使用 18096 避免与电脑自己的 8096 冲突;SSH 把请求加密传到 VPS 的 8096。看到向导后继续配置,关掉隧道终端后这个访问地址就失效。它只转发端口,不会在你的电脑安装 Emby。
Windows:在 RDP 会话中的服务器浏览器打开 http://localhost:8096。自己的电脑浏览器中的 localhost 指自己的电脑,不是 VPS。
受限公网诊断地址为 http://服务器公网IPv4:8096;IPv6 写成 http://[服务器IPv6]:8096,需要 IPv6 路由、监听和对应防火墙规则。公网 HTTP 适合判断连接问题,管理员凭据仍应通过加密隧道 / 已配置的 HTTPS 输入。
9.2 按向导完成初始化#
不同版本的按钮和中文翻译可能略有差异,流程以 官方初始化说明为准。
- 界面语言:选择中文或需要的显示语言。它与媒体元数据语言不是同一个选项。
- 创建管理员:设置独立用户名和强密码,并保存到密码管理器。不要留空密码,不要与 VPS root / Windows 管理员密码复用。Emby Connect 是可选账号关联,不是这一步的前提。
- 添加媒体库:按电影、剧集、音乐分别选择内容类型和显示名称,再添加服务器上的真实目录,例如
/data/media/Movies或D:\Media\Movies。不要填写电脑本地路径,也不要把配置目录当作媒体库。还没上传媒体时,可以暂时跳过,稍后在后台「媒体库 / Library」添加。 - 元数据语言与地区:按自己希望的海报、简介和分级选择,例如简体中文与中国;英语内容可单独使用 English。文件名和结构尽量规范,先用少量文件检验识别结果。
- 远程访问:只用本机 / 隧道初始化时,可以先不启用公网远程访问;要供远程客户端使用时,启用服务器与该用户的远程连接权限。VPS 通常关闭“自动端口映射 / UPnP”,由云平台规则显式控制。
- 条款与完成:阅读并确认 Emby 条款,完成向导,使用刚创建的本地管理员账号登录。
9.3 进入后台后的检查#
在齿轮或「管理服务器」中查看 Dashboard:确认版本、媒体库、活动任务,并通过服务器信息记录真实数据目录。在 Network 中先保持默认本地端口,尚未配置 TLS 时不要设置“要求所有远程连接使用 HTTPS”;不要把 NAT 云主机的公网 IP 填成网卡上不存在的绑定地址,也不要把整个公网定义成 LAN。
在 Library 中核对文件夹、内容类型、元数据语言与扫描选项。首次扫描需要读取文件并获取元数据,大库不会立刻完成。先添加几部媒体,等待扫描,再播放一部,检查显示的是 Direct Play、Direct Stream 还是 Transcoding。识别不正确时先修正命名或匹配,避免反复扫描整个库。
初次部署可以暂缓视频预览缩略图、片头检测等额外任务,待基本播放正常再逐项开启。网络挂载未必支持实时变化监控,可使用 Scheduled Tasks 定时扫描。参考:媒体库设置、播放方式。
10. Linux 服务管理与日志#
以下命令适用于本文 APT / RPM 原生安装;Windows 的服务名在本文统一为 EmbyServer,不要混用。
| 操作 | Linux 命令 |
|---|---|
| 查看状态 | sudo systemctl status emby-server --no-pager -l |
| 启动 | sudo systemctl start emby-server |
| 停止 | sudo systemctl stop emby-server |
| 重启 Emby | sudo systemctl restart emby-server |
| 设置开机启动 | sudo systemctl enable emby-server |
| 取消开机启动 | sudo systemctl disable emby-server |
| 同时取消自启并停止 | sudo systemctl disable --now emby-server |
| 查看自启 / 运行状态 | systemctl is-enabled emby-server / systemctl is-active emby-server |
disable 本身不停止当前进程;stop 本身不取消下次开机启动。仅改正常后台设置通常不需要 daemon-reload,它用于重新读取 systemd unit / drop-in。
sudo journalctl -u emby-server -b --no-pager
sudo journalctl -u emby-server --since '1 hour ago' -n 200 --no-pager
sudo journalctl -u emby-server -f
第一条看本次开机,第二条看最近一小时,第三条实时跟随,按 Ctrl+C 退出跟随,不会停止 Emby。启动失败优先看 journal;扫描 / 播放问题还要看 Emby 后台 Logs 中的 embyserver、ffmpeg 和硬件检测日志。Linux 默认应用日志在 /var/lib/emby/logs,确认数据目录后再使用:
sudo ls -lt /var/lib/emby/logs
sudo tail -n 100 /var/lib/emby/logs/embyserver.txt
参考:systemctl、journalctl、Emby 日志说明。向论坛提交日志前检查用户名、媒体路径、公网 IP 和令牌;后台导出有匿名化处理,但公网 VPS 的本地地址仍可能出现在日志中。
11. 更新与备份#
11.1 先备份,再改变版本#
记录当前版本、架构、数据目录、媒体挂载和服务账户。升级可能改变数据库结构,安装回旧二进制不等于可以安全降级数据库。升级前保留停止服务时的数据副本和当前版本安装包,并检查新版本发行说明。
Linux 默认数据目录可这样做一份权限受限的离线备份;数据目录改过时替换实际路径:
sudo systemctl stop emby-server
sudo install -d -m 0700 /var/backups/emby
sudo sh -c 'umask 077; tar --acls --xattrs -czpf "/var/backups/emby/emby-$(date +%Y%m%d-%H%M%S).tar.gz" -C /var/lib emby'
sudo ls -lh /var/backups/emby
先确认备份命令成功且磁盘空间充足,再升级。归档可能含密码相关数据、插件配置和个人媒体信息,应加密复制到服务器以外的受控存储。它不包含媒体文件本身,也不包含 fstab、自定义 unit、SMB 凭据等系统配置;这些需要单独安全备份。备份文件与原盘放在同一 VPS 不是灾难恢复。
11.2 APT / DNF 仓库更新#
Debian / Ubuntu 使用官方仓库时:
sudo apt update
apt-cache policy emby-server
sudo apt install --only-upgrade emby-server
sudo systemctl start emby-server
dpkg-query -W -f='${Version}\n' emby-server
RPM 系统使用官方仓库时:
sudo dnf makecache --refresh
dnf list --showduplicates emby-server
sudo dnf upgrade emby-server
sudo systemctl start emby-server
rpm -q emby-server
确认服务状态、本机 HTTP、后台版本和一部媒体播放。若更新失败,保留错误与备份,根据日志处理;不要反复启动、随机替换数据库或混入 beta 包。手动 DEB / RPM 用户重复前面的官方包下载步骤,下载新稳定版并安装;不需要先卸载旧包。包管理器可能在升级时重新启动服务。
11.3 Windows 更新#
普通启动模式可按当前 Emby 的更新提示处理,也可手动从官方页取得新安装器。NSSM 服务模式不会自动更新:停止服务、确认进程退出、备份真实 programdata 和服务设置,再用原账户把新版本装回原位置。
Portable 用户把新 ZIP 先解压到临时目录,核对结构,停止服务后替换原 System 的程序文件,保留原 programdata 和稳定路径;不要把备份恢复成第二套同时运行的实例。重新启动服务,检查服务器信息中的数据路径、版本和媒体库。如果升级后出现全新向导,先停止并检查是否读错数据路径。
12. 停止、重启和卸载#
12.1 重启 Emby 与重启操作系统#
Linux 仅重启 Emby 用 sudo systemctl restart emby-server;重启整个 VPS 使用 sudo reboot,会断开 SSH 并中断所有服务。只在确有系统更新 / 内核维护需求时重启整机。
Windows Service 用管理员 PowerShell:
Stop-Service -Name EmbyServer
Start-Service -Name EmbyServer
Restart-Service -Name EmbyServer
Get-Service -Name EmbyServer
按当前需要选择单条操作,不必把停止、启动、重启连续执行。普通模式从托盘 / 后台 Shutdown 关闭,再从原快捷方式启动;不要用强制结束进程代替正常关机。重启 Windows 使用开始菜单的 Restart,并提前确认 RDP 能恢复。
12.2 Linux 卸载,默认保留数据#
先停止并取消开机启动,完成数据备份,再执行本发行版的卸载命令:
sudo systemctl disable --now emby-server
Debian / Ubuntu:
sudo apt remove emby-server
Rocky / AlmaLinux 等 RPM 系统:
sudo dnf remove emby-server
查看卸载清单再确认,不盲目执行 purge / autoremove。不要把“软件已卸载”理解为“数据库、账号和媒体都已删除”,包维护脚本和版本可能不同,先备份并检查真实数据路径。媒体目录和数据盘不应随卸载删除。
不再需要官方仓库时,可单独移除本文创建的那一个来源文件,然后刷新索引:
sudo rm /etc/apt/sources.list.d/emby.sources
sudo apt update
或 RPM 系统:
sudo rm /etc/yum.repos.d/emby.repo
sudo dnf clean metadata
不要删除其他软件来源或整目录。手动包安装没有创建这些文件,就不执行此步骤。本文不提供递归删除 programdata、/var/lib/emby 或媒体盘的命令;需要完全清理时先核对备份和目录用途。
12.3 Windows 卸载#
NSSM 模式先停止服务,再从 NSSM 移除本文注册的服务:
Stop-Service -Name EmbyServer
& 'C:\Tools\nssm\nssm.exe' remove EmbyServer
确认窗口中的服务名确实是 EmbyServer。安装器方式在原安装账户的「设置 → 应用」或「程序和功能」中卸载 Emby Server。Portable 没有必须使用的系统卸载器:确认进程 / 服务已退出后,移除快捷方式并按需清理程序目录;若 programdata 与程序位于同一父目录,删除整个 C:\Emby 也会删除你的配置,必须先备份。
只删除本教程创建的防火墙规则,例如:
Remove-NetFirewallRule -Name 'Emby-HTTP-Admin'
云安全组中的对应规则也按用途收回,保留 SSH / RDP 管理通道。NSSM 若还被其他服务使用,不要删除它。
13. 按现象排查常见问题#
13.1 下载与安装#
下载失败、404、拿到 HTML。 通常是旧版本地址、选错文件、网络 / DNS / 代理异常。重新从当前官方页面复制链接,使用 curl -fL;TLS 错误先检查系统时间和 CA。不要使用 curl -k、未知网盘包或无校验的一键脚本。HTTP 429 表示限流,不应无休止重试。
APT 找不到 emby-server / NO_PUBKEY。 先查看 /etc/apt/sources.list.d/emby.sources、keyring 是否存在及权限是否为 0644,执行 sudo apt update 并读完整错误,随后查看 apt-cache policy emby-server。候选为空说明索引、来源、架构或渠道还没就绪;不能靠不断执行 install 解决。按官方 keyring 步骤修正,不加 trusted=yes。
DEB 安装失败、缺少依赖。 用 dpkg-deb -f 核对 Package / Architecture,并用 sudo apt install /实际路径/emby-server.deb 让 APT 解析依赖。曾经只用 dpkg 留下未配置包时,先运行 sudo dpkg --audit,再用 sudo apt --fix-broken install 查看修复计划,确认没有意外移除其他软件后再接受。
RPM 提示 nothing provides / 签名失败。 核对 rpm -qp、dnf info emby-server、dnf repolist、系统版本与公钥来源。仓库索引失败就先修复索引,依赖不存在则确认当前平台是否支持,不随意混入别的发行版 RPM。不使用 --nodeps / --force / --nogpgcheck 掩盖错误。
Exec format error、架构不匹配或 Illegal instruction。 对照 uname -m 与包管理器架构。ARM64 不能运行 AMD64 原生包;32 位用户空间也不能仅按 64 位内核判断。Illegal instruction 还可能是 VPS 的 CPU 指令集不足,需要结合日志与官方当前运行时 / 发行版 CPU 要求判断,换包前保留数据。
软件包管理器被锁。 新云镜像可能正在运行 cloud-init 或自动更新。等待它完成并检查真实进程,不直接删除锁文件、强杀更新进程或同时运行两套安装。
13.2 服务失败、没有监听或反复退出#
Unit not found。 dpkg-query -W emby-server 或 rpm -q emby-server 确认原生包已安装;systemctl list-unit-files 'emby*' 检查真实 unit。Portable / 容器安装不会自动拥有相同 systemd 服务。PID 1 不是 systemd 时不能继续套用本文服务命令。
failed / 启动后马上退出。 先获取状态与本次启动日志:
sudo systemctl status emby-server --no-pager -l
sudo journalctl -u emby-server -b -n 200 --no-pager
df -h
df -i
sudo -u emby test -w /var/lib/emby && echo 'data directory writable'
从第一条真正的错误判断:Permission denied 检查数据目录和父目录;No space left 检查磁盘及 inode;绑定错误检查端口;配置 / 插件异常先备份再处理对应项。test -w 只检查目录权限,不保证所有旧文件均可写;不要为“修复”而递归修改整个系统。
服务反复被杀 / OOM。 查看:
free -h
sudo journalctl -k -b --no-pager | grep -Ei 'out of memory|oom|killed process'
确认是否内存耗尽、云套餐限制或并发任务过多。降低扫描 / 转码并发,停掉非必要重任务,按实际需要增加资源。swap 不能保证实时转码性能。不要把无限自动重启当作根因修复。
8096 不监听。 看应用是否完成启动、端口是否被改、监听地址是否只限回环;执行 sudo ss -lntp 'sport = :8096',同时读 journal 和应用日志。短暂初始化期间可以等待再查,持续无监听就不是云防火墙问题。
Address already in use。 用 ss 的 PID / 进程信息找出占用者,停止重复的 Emby 实例或调整明确冲突的服务;不要直接 kill -9 未确认用途的进程。修复真正错误后,若 systemd 因启动次数限制拒绝再试,可执行 sudo systemctl reset-failed emby-server,随后启动并观察日志。
13.3 能本机打开,公网打不开#
按链路从内往外查:Emby 进程 → 监听地址 / 协议 → 系统防火墙 → 云安全组 / NAT → 客户端地址。本机 curl 已失败就先修服务,别反复改安全组。
在服务器检查:
curl -v --connect-timeout 5 http://127.0.0.1:8096/
sudo ss -lntp 'sport = :8096'
ip -br address
ip route
在自己的 Windows 电脑检查连通性时可以使用:
Test-NetConnection -ComputerName 'YOUR_SERVER_PUBLIC_IP' -Port 8096
受限规则允许的来源必须是电脑当前公网 IP;换网络以后可能已变。确认 UFW / firewalld 的实际规则、Windows 当前 Profile 和云安全组绑定。Connection refused 常见于无监听 / 主动拒绝,超时常见于被丢弃 / 路由问题,但不能仅凭一种报错断言根因。
IPv6 地址必须加方括号;先确认客户端有 IPv6。[::]:8096 是否同时接收 IPv4 取决于系统配置,分别检查。云主机公网地址可能通过 NAT 映射,ip addr 未列出它不一定是错误。NAT 型 VPS 使用厂商给出的外部端口,并在 Emby 中正确配置 Public Port;这个选项只告诉客户端地址,不会替你建立云端映射或放行防火墙。
13.4 媒体目录为空、Permission denied、重启后媒体消失#
添加了目录却没有文件。 确认填写的是服务器本地真实路径,内容类型与文件格式正确,再用 sudo -u emby ls -lah /实际目录 查看。重点检查父目录遍历权限、media 组是否生效、ACL mask、软链接指向的真实目录,不能只看管理员的 ls 输出。
挂载盘重启后不见。 findmnt /mnt/media、lsblk -f 核对 UUID 和挂载;目录存在不代表磁盘存在。先恢复挂载再扫描,避免把空目录误当作媒体删除结果。修正 fstab、网络挂载等待和 RequiresMountsFor;不要在挂载失败的目录继续上传,以免把系统盘写满。
SMB / NFS 无法读。 检查共享端授权、客户端 UID / GID、挂载选项和是否只读。Windows 服务不要使用交互登录时的 Z: 映射盘,改为可由服务账户访问的 UNC 路径,例如 \\NAS\Media,并同时检查共享权限和 NTFS 权限。不能通过 Everyone 全控制或让 Linux 服务改为 root 解决。
权限看起来正常,SELinux 仍拒绝。 Rocky / AlmaLinux 等检查:
getenforce
ls -Zd /mnt/media /var/lib/emby
sudo ausearch -m AVC,USER_AVC -ts recent
ausearch 由 audit 工具包提供,未安装时按发行版文档获取审计工具。结合实际 AVC 的进程域、文件标签和挂载类型确定修复方式;包运行在什么 SELinux 域需现场确认,不能凭空套用 Nginx 的 httpd_* 标签。不要关闭 SELinux 或直接生成 / 导入未审查的 allow-all 策略。
13.5 网页、初始化和管理员登录#
页面一直加载 / 空白。 先用本机 HTTP 判断服务响应,查看应用日志;试无痕窗口、刷新缓存、换现代浏览器,暂时禁用该站点相关的内容拦截扩展。检查是否把 HTTP 当 HTTPS、代理 / CDN 是否错误处理请求。原生安装还没验证成功时,先不要加入代理层。
登录失败。 区分本地 Emby 用户、Emby Connect 和操作系统账号;检查用户名大小写、输入法、密码管理器填入的目标站点,以及用户是否允许远程访问。服务器刚重装或切换服务账户时,还要核对是否读错了数据目录。
忘记唯一管理员密码。 按 官方管理员重置流程,从本机地址 / SSH 隧道进入本地登录页,选择 Forgot Password,填写本地管理员用户名,再通过 SSH / RDP 读取界面指定的服务器文件,按其中链接和 PIN 完成重置。不要使用 Emby Connect 替代这套流程,也不要删除用户数据库或在公网分享重置文件。
每次重启都出现新向导。 优先检查 Data path、启动账户、portable 的 System 结构、数据目录是否可写,以及是不是启动了第二个实例。找到原目录并备份;不要直接重复创建管理员来掩盖丢失配置。
13.6 扫描、内存和转码#
扫描时 CPU / IO 很高。 初次提取媒体信息、海报、章节缩略图和片头检测会增加负载。查看 Dashboard 的任务和 Logs,先用小库验证,取消不必要的额外任务、错开扫描与播放。不要一看到高占用就认定安装损坏。
内存高且卡顿。 同时看 free -h 的 available、活动任务、并发转码和 OOM 记录;Linux cache 占用不是同样意义的应用内存泄漏。Windows 用任务管理器和事件查看器检查。持续增长且无任务时,记录版本、发生时段、插件与日志后向 Emby 报告,不随机清空数据库。
播放时 CPU 满载。 在播放信息中确认 Transcoding 原因:客户端不支持编码 / 音轨、码率限制、字幕烧录或网络带宽不足。尽量使用可直接播放的客户端 / 媒体格式;图片字幕烧录仍可能大量使用 CPU,即使 GPU 已启用。查看对应 ffmpeg 日志,不凭套餐 vCPU 数保证实时转码路数。
硬件转码不可用。 需要可用硬件、驱动、设备权限、受支持的编码和相应 Emby Premiere 功能。普通 VPS 看不到 GPU 时,后台勾选不会创造设备。Linux 检查 ls -l /dev/dri、实际设备所属组和 id emby;只有设备存在且确有授权需要时才追加正确组并重启。NVIDIA 查看驱动和厂商 GPU 分配,Windows 查看硬件检测日志、驱动以及 RDP 会话影响。见 官方硬件加速说明。
转码中途失败 / 空间不足。 检查转码临时路径是否存在、可写、剩余空间是否够用;云盘吞吐限制也可能造成卡顿。参考 官方转码设置。不要把正在使用的临时文件当作可随意清理的垃圾。
13.7 Windows 特有问题#
安装器立刻失败。 核对是否下载 Server、x64 是否匹配、Windows Update / 时间 / 官方 HTTPS 源是否可用,读安装日志和 Defender Protection History。Windows Server 2025 的在线安装器问题可按官方建议改用 portable ZIP;不要下载来历不明的“修复版”。
服务无法启动、错误 1069 / 1053。 1069 常见于服务账户密码或“作为服务登录”权限;1053 需要继续读事件日志和应用日志,不能当成单一原因。在 services.msc 检查 Log On、启动类型和状态,在 Event Viewer 的 System / Application 中查看同一时间的事件。
Get-CimInstance Win32_Service -Filter "Name='EmbyServer'" |
Select-Object Name, State, StartMode, StartName, PathName
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Service Control Manager'} -MaxEvents 30
Get-Process -Name EmbyServer -ErrorAction SilentlyContinue
Get-NetTCPConnection -LocalPort 8096 -State Listen
核对 NSSM 文件是否仍在原位置、Application Path / Startup directory 是否正确、Arguments 是否为 -service,以及普通托盘实例是否已关闭。服务启动成功却没有后台时,再核对真实数据目录和监听,不要直接重装清空配置。
RDP 中可播放,服务模式看不到文件。 两种运行身份可能不同,检查服务账户的 NTFS / SMB 权限和 UNC 路径;服务看不到交互用户的映射盘是常见原因。数据目录与媒体目录要分别授权。
Defender 阻止程序或写入。 查看 Protection History 和 Controlled Folder Access 是否有明确拦截记录,核对官方来源;确有误拦截时按 Microsoft / Emby 支持建议处理具体程序 / 路径。不要关闭整台服务器的 Defender,也不要为整个 C: 盘建立排除。
14. 日常维护与验收#
安装完成应能回答这些问题:
- 服务是否正常运行,并设置了开机启动?Windows Service 是否在未登录时仍运行?
- 本机 / 隧道浏览器能否显示后台,管理员密码是否已经设置?
- 是否至少有一个真实媒体目录,可以扫描并播放一部媒体?
- Emby 运行身份能读媒体、能写配置与转码目录,磁盘是否留有余量?
- 云安全组和系统防火墙是否都符合实际访问范围,没有遗留的全公网初始化入口?
- 数据盘 / 网络挂载能否在重启后恢复?是否保存了数据目录与版本记录?
- 是否拥有服务器之外的备份,并知道如何在停止服务状态下恢复到匹配版本?
日常检查 systemctl status / Get-Service、剩余空间、扫描任务和日志。Linux 可用 df -h、df -i、free -h;Windows 查看 Get-Volume 和任务管理器。保留稳定更新渠道,规划维护窗口;大升级前备份,系统安全更新与 Emby 更新分别核对。
重启测试应安排在没有用户播放的时段:确认 SSH / RDP 恢复、数据盘已挂载、服务 active / Running、媒体可播放。出现数据库损坏时保留完整停止状态的备份并阅读官方恢复资料,不要把删库重新扫描当作普通维护。
AlmaLinux 用户可通过 dnf updateinfo --list 查看系统更新公告,参见 AlmaLinux Errata。它是系统维护信息,不能替代 Emby 版本检查。
15. 下一步:客户端与反向代理#
确认 Emby Server 原生访问、权限和播放正常以后,再配置域名与 HTTPS。本站已有对应教程:
按反向代理教程收紧 Emby 的源站访问范围。Emby Connect 帮助客户端发现 / 登录服务器,不会替代云安全组、端口映射或 TLS。本页不额外展开 Nginx、Cloudflare 或证书部署。
16. 参考资料与版本差异#
本文于 2026 年 10 月 2 日核对资料,以官方 stable 仓库为主要安装路径。核对时 GitHub 最新稳定版与 APT / RPM 元数据均列有 4.10.1.0;这只是资料快照,实际安装使用包管理器当时显示的稳定候选版本,不要求固定这一版本。
资料差异需要保留:官方下载页的静态 HTML 仍有旧版占位链接,部分文档镜像显示旧版本;按当前官方仓库 / Releases 核对。Windows 下载页与旧系统要求页的最低系统描述不同,本文不据此推荐过时系统,也不声称所有 Windows Server 版本都经过实际安装验证。RPM 官方辅助脚本与手工仓库的签名处理差异见第 4 节。
主要参考:
- 安装来源:Emby Linux 下载、APT 仓库、DNF 仓库、官方 Releases。
- Windows:官方 Server 下载、Windows Service、NSSM 用法、Microsoft 服务账户。
- 初始化和排错:Emby 安装向导、媒体库、网络、数据目录、日志、管理员重置。
- 系统命令:Debian APT、Ubuntu 软件管理、Rocky 软件管理、systemd 官方手册源码、firewalld 文档。
- 实践补充:Vultr Emby 部署指南用于核对从空服务器到初始化的遗漏项;其 Docker / Traefik 部署不属于本页安装方式。官方 AlmaLinux 讨论、Windows Server 2025 安装器讨论用于核对实际平台问题。
命令根据官方安装文档、当前仓库文本 / 包索引和系统手册交叉核对,完成了静态语法和 Wiki 渲染检查。本文编写过程中没有在本地安装或启动 Emby Server,也没有进行发行版 / Windows Server 的真实安装实验。 特殊云镜像、签名故障、CPU 指令集和硬件转码仍要结合自己服务器的实际日志判断。

