目录远程访问
  1. 开始使用

    1. Kryspal Media 是什么
    2. 系统需求
    3. 用 Docker 安装
    4. 初次设置
    5. 升级与备份
  2. 媒体库

    1. 创建与管理媒体库
    2. 文件与文件夹命名
    3. 放文件很自由
    4. 元数据与 NFO
    5. 标签
    6. 图片
    7. strm 与网盘
    8. StrmTool 设置
    9. 字幕
    10. 片头片尾
    11. 搜索技巧
    12. 演员
    13. 重复影片
  3. 播放

    1. 网页观影端
    2. 第三方播放器
    3. 远程访问
  4. 成员与设备

    1. 成员
    2. 家长控制
    3. 设备与同时播放
  5. 插件

    1. 插件中心
    2. 插件一览
    3. 第三方插件
  6. 从其他服务器迁移

    1. 从 Emby 迁移
    2. 从 Jellyfin 迁移
  7. 授权与方案

    1. 方案比较
    2. PRO 功能详解
    3. MAX 功能详解
    4. 购买、启用与更换服务器
    5. 离线宽限与到期
  8. 疑难排解

    1. 日志与回报问题

远程访问

Kryspal Media 不替你中转流量,也不做 HTTPS 终结。想在外面观看,需要你自己让服务器能被访问。这一页说明两种常用做法、需要注意的设置,以及 Caddy、Nginx、Nginx Proxy Manager 的最小示例。

本页内容
  1. 选一种方式
  2. 需要注意的设置
  3. 最小示例
  4. Caddy
  5. Nginx
  6. Nginx Proxy Manager
  7. 检查是否正常
  8. 出问题时

选一种方式#

  • VPN,例如 Tailscale。 在服务器所在的机器和你的设备上都装好,然后用服务器的 VPN 地址加 5797 端口访问。不向互联网暴露任何东西,最简单也最安全。
  • 带 HTTPS 的反向代理。 代理监听 443、持有证书,再把请求转给服务器。想要一个在任何播放器里都能用的正常网址,就用这种。

无论哪种,都不要在路由器上转发 5797 端口,它是明文 HTTP。要转发端口,只转发外网访问端口 5798,并在它前面放反向代理。

需要注意的设置#

端口。 compose 文件已经发布了 5797(局域网)和 5798(外网),并设置了 EXTERNAL_HTTP_ADDR: ":5798"。两个端口访问的是同一个服务器,包括管理后台。区别只在于连接如何被判定:从 5798 进来的一律算外网。请让反向代理指向 5798。

可信代理。 把代理的地址告诉服务器,它才能看出真正连进来的是谁。在 compose 文件里,服务器的 environment 下:

environment:
  EXTERNAL_HTTP_ADDR: ":5798"
  TRUSTED_PROXIES: "192.168.1.5"

值是用逗号分隔的地址或网段(例如 Docker 网络 172.18.0.0/16)。有一项格式不对,服务器就无法启动。不设置的话,所有请求看起来都来自代理,登录失败次数限制会把你所有的观众当成一个客户端;如果代理在内网地址上,外网的人还可能被当成在你的局域网里。

公网访问网址。 在「系统设置 → 网络」里填写你的播放器从外网访问时用的地址,例如 https://media.example.com:8443。可以带路径(https://example.com/media)。必须是完整的 http:// 或 https:// 地址,不能带用户名、查询参数或片段;结尾的斜杠会被去掉。设置之后,只要服务器要给外网连接一个完整地址,就用它:交给外部播放器的播放链接、复制出来的播放地址和播放列表,以及告诉 Emby、Jellyfin 类播放器的服务器地址。来自局域网的连接仍然用局域网地址。这样就不用完全依赖代理传的请求头;用 443 以外的端口时尤其重要,因为很多代理会把 Host 里的端口丢掉。建议填上,即使代理也传了下面这些头。

代理必须传的请求头。

  • Host 要保持访问者输入的样子。从网页发起的修改(保存设置等),如果 Origin 和 Host 对不上,会被以 403 拒绝。
  • X-Forwarded-Host 和 X-Forwarded-Proto。没有设置公网访问网址时,服务器用它们生成交给 Infuse 等外部播放器的串流地址。两者都缺的话,播放器拿到的是 http://server:5797/... 这样的内部地址,从外网连不上。

WebSocket。 播放器会保持一条 WebSocket 连接。代理必须转发 Upgrade 和 Connection 头,读取超时至少 60 秒(服务器每 30 秒发一次心跳)。

串流与大文件。 不要缓冲或缓存响应,并允许 Range 请求,播放器才能拖动进度。读取和发送超时要设长一点,免得长片被切断。服务器已经通知 Nginx 系代理不要缓冲。如果你在管理后台上传图片,代理必须接受至少 20 MiB 的请求体(Nginx 默认的 1 MiB 不够)。

HTTPS。 证书由代理持有。服务器看到 X-Forwarded-Proto: https 时,会自动把登录 Cookie 标为安全。

把 VPN 当作本地。 通过 VPN 连进来的设备默认算外网。想把某个 VPN 网段算作局域网,加上 LAN_RANGES,例如 Tailscale:LAN_RANGES: "100.64.0.0/10"。

最小示例#

把 media.example.com 换成你自己的域名,192.168.1.10 换成服务器的地址。

Caddy#

Caddy 自己会传 Host、X-Forwarded-Host、X-Forwarded-Proto,支持 WebSocket,不缓冲串流,证书也自动申请。

media.example.com {
    reverse_proxy 192.168.1.10:5798
}

Nginx#

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 443 ssl;
    server_name media.example.com;
    ssl_certificate     /etc/ssl/media.example.com.pem;
    ssl_certificate_key /etc/ssl/media.example.com.key;
    client_max_body_size 50m;

    location / {
        proxy_pass http://192.168.1.10:5798;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_buffering off;
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}

Nginx Proxy Manager#

  1. Proxy Hosts → Add Proxy Host。 域名填 media.example.com,协议 http,转发主机 192.168.1.10,端口 5798,打开 Websockets Support。
  2. SSL 页:申请证书,打开 Force SSL。
  3. Advanced 页,自定义配置:
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
client_max_body_size 50m;

NPM 自己会传转发头。TRUSTED_PROXIES 填 NPM 容器或所在机器的地址。

检查是否正常#

  1. 在你的网络之外打开 https://media.example.com 并登录。
  2. 在网页播放器里播放一个文件,再把同一个地址(443 端口)加到你的播放器里。

出问题时#

  • 在管理后台保存时报 403。 代理改了 Host 头,请原样传递。
  • 播放器拿到的地址不能用。 代理没有传 X-Forwarded-Host 和 X-Forwarded-Proto。
  • 全部被当成局域网,或一个人登录失败连累别人。 把代理加进 TRUSTED_PROXIES。
  • 播放几分钟后中断,或实时画面不更新。 调大代理的读取超时,并关闭缓冲。

管理后台也能通过同一个地址访问。请使用强密码,或者如果不需要在外网使用后台,就在代理上限制对后台的访问。关于日志和反馈问题时该附什么,见日志与问题反馈。