网络要求与防火墙设置

Screenbird 本身只使用 HTTPS 和 WebSocket Secure,全部走 443 端口。在管控比较严格的网络里,请把下面这些域名加入白名单:一份是仪表板需要的,另一份是屏幕,也就是播放器需要的。如果您使用的是 Amazon Signage Stick 或者 Fire TV,请再阅读“Amazon 设备的时间同步”这一节,这些设备自己还需要额外的连接。

什么情况下才需要用到这份清单?

绝大多数家庭网络和办公网络都是开箱即用的,不必额外配置什么。只有在下列这几种情况下,才需要用到这份清单:网络会拦截它不认识的域名;网络里使用了代理服务器,或者启用了网页过滤;又或者屏幕被单独放在一个互联网访问受限的 VLAN 里。

仪表板一侧所需的域名

下面这些域名,适用于团队成员用来上传和管理内容的那些电脑,也就是打开仪表板的那些机器:

  • screenbird.app:仪表板本身,也就是您日常办公时打开的那个界面
  • dev.screenbird.app:预发布环境,只有在您的团队确实用它来做测试的时候才需要放行
  • *.supabase.co:数据库和登录,这个域名同时还要走 WebSocket 连接
  • cdn.screenbird.app:您上传的文件、图片、视频,以及自定义的字体
  • integrations.screenbird.app:仪表板中显示的那些应用预览画面
  • lh3.googleusercontent.com 和 avatars.githubusercontent.com:已连接账户上的头像
  • challenges.cloudflare.com:登录和注册的时候出现的那个安全校验组件
  • wss://api.screenbird.app:仪表板与各块屏幕之间的实时更新通道
  • js.stripe.com 和 *.js.stripe.com:注册时以及变更订阅时弹出的那个支付窗口
  • api.stripe.com 和 hooks.stripe.com:完成支付的整个过程,其中包括 3D Secure 验证
  • m.stripe.com 和 m.stripe.network:Stripe 用来做风控检查的两个地址

只有在用到特定功能时才需要放行的域名:

  • apis.google.com 和 docs.google.com:Google Drive、文档、表格和幻灯片所用的文件选择器
  • images.pexels.com:内置的图库照片,在 Designer 里挑图时会用到
  • api.qrserver.com:设计模板当中所生成的那些二维码
  • geocoding-api.open-meteo.com:天气应用里搜索地点的时候会用到

屏幕一侧所需的域名

下面这些域名,适用于每一台运行着播放器的设备,也就是接在屏幕背后的那一台硬件:

  • player.screenbird.app:播放器本身,网页播放器用的也是这个地址
  • api.screenbird.app:设备登记、心跳和内容获取,这个域名同时还要走 WebSocket 连接
  • cdn.screenbird.app:屏幕上实际播放的那些内容文件
  • media.screenbird.app:播放器应用的安装文件,以及后续的版本更新
  • integrations.screenbird.app:屏幕上的所有应用和设计都在这个域名里运行
  • mirror.screenbird.app:只有用到屏幕共享功能的时候才需要放行,它同时也要走 WebSocket
  • fonts.googleapis.com 和 fonts.gstatic.com:应用和设计当中所用到的字体文件

只有在用到特定应用时才需要放行的域名:

  • www.youtube.com 和 player.vimeo.com:几款视频类应用需要用到

某个连接或者某款应用您根本不用,那么它对应的那个域名也就不必放行。

端口与协议

  • 所有的流量都走 443 端口上的 HTTPS 协议
  • 仪表板与屏幕之间的实时更新,走的也是同一个 443 端口,用的是 WebSocket Secure(WSS)

Screenbird 本身不使用其他端口。不过 Amazon Signage Stick 或者 Fire TV 还需要额外的连接(UDP 123 端口和 TCP 80 端口)来校准自己的时钟,详见下面这一节。

Amazon 设备的时间同步

这一节只适用于 Amazon Signage Stick 和 Fire TV。如果您用的是 Samsung、LG、Android TV、电脑、Mac 或者 Raspberry Pi,可以跳过这一节。

这些设备断电之后,时钟并不会继续走动。它们是在开机时从互联网上获取时间的,一旦这一步失败,设备就会以几周甚至几个月之前的日期启动。日期一旦不对,所有安全连接都会被拒绝,屏幕也就随之保持离线,哪怕 443 端口完全放行、所有域名都已经加入白名单,也无济于事。

因此请放行这些连接:

  • ftv-smp.ntp-fireos.com,UDP 协议,123 端口:用来获取时间。这个名称会解析到 time.aws.com;如果防火墙按 DNS 名称设置白名单,请两个都放行
  • firetvcaptiveportal.com、fireoscaptiveportal.com 和 kindle-time.amazon.com,TCP 协议,80 端口,且不能被拦截:用于网络检查,也是获取时间的备用方案

即使 UDP 123 已经放行,80 端口也是必需的。设备只会在已通过验证的网络上设置时间,而这个验证本身就是 80 端口上的一次请求。如果出站 80 端口被封锁,无论 UDP 123 上是什么情况,时钟都不会被设置。

设备每次连接网络时都会重试,此后每 7 天只重试一次。因此,错过第一次尝试的屏幕可能会在很长时间里停留在错误的日期。防火墙修正之后,请重启设备或让它重新连接网络,以触发新的一次尝试。

需要留意:

  • 设备使用的是固定地址,不接受网络下发的时间服务器,所以让它指向您自己的时间服务器也没有用。
  • 80 端口上的流量不能被拦截。把请求原样转发到互联网的透明代理是没问题的。自己直接应答(例如返回拦截页面)的代理或网页过滤器,会把时钟设成它自己的时间,而这只有在该代理的时钟正确时才是对的。重放旧响应的缓存可能会设置出过时的时间。
  • 请使用没有登录页面(强制门户)的网络。在有登录页面的网络上,设备只尝试一次,并且不保存结果,因此在通过门户之前,时钟是不可靠的。很多访客网络恰恰就是这么做的。

如果屏幕已经配对,但设备明明已经联网,屏幕却还是离线,这就是最应该先排查的地方。

带宽

需要多少带宽,取决于您那些内容文件有多大。屏幕会把每一个文件下载一次,之后就在本地播放它,因此下载完成之后几乎不再产生流量。空闲状态下,屏幕只靠每 60 秒一次的心跳信号来保持这条连接。万一 WebSocket 走不通,屏幕也不会就此停下,而是每小时主动去取一次自己的内容。直播流,以及那些需要不断拉取新数据的应用,则会持续占用带宽,具体占用多少,取决于它所连接的数据源。

短暂的网络中断不会打断播放,已经下载到本地的那些内容会照常继续播下去。

验证网络是否配置正确

想确认防火墙是否已经放行到位,最快的办法就是在这台设备本身上打开一个浏览器,分别访问下面这两个地址:

  • https://player.screenbird.app:这个地址上应当出现带着配对码的配对画面
  • https://screenbird.app:这个地址上应当出现仪表板的登录页面

这两个地址当中只要有一个打不开,就去防火墙的日志里查一查,看看是上面列出的哪一个域名被拦了下来,然后再有针对性地把那个域名放行。

我的数据都存放在哪里?

  • 数据库运行在 Supabase 位于巴黎的机房里,区域是 eu-west-3。
  • 异地备份存放在 Backblaze 位于阿姆斯特丹的机房里,区域是 eu-central-003。
  • 仪表板、应用和文件都通过 Cloudflare 的网络分发出去,这张网络在全球各地的边缘节点上运行。

完整的数据处理方列表,以及各项数据的保留期限,都写在 screenbird.app 网站上的隐私声明里。

企业批量部署时的支持

如果您要在企业网络后面批量部署大量的屏幕,并且需要一份可以直接交给自家 IT 部门的说明文档,那么请发邮件到 support@screenbird.app。

相关文章

© screenbird.app