跳转到主要内容

远程访问

本页面提供一些建议,帮助您在局域网外访问您的 Immich 实例。 您可以阅读 Discord 上的完整讨论

危险

切勿直接将 2283 端口转发到互联网而不进行额外配置。这将通过 HTTP 暴露 Web 界面到互联网,使您容易受到 中间人攻击

选项 1:VPN 连接到家庭网络

您可以使用 VPN 服务建立到您的 Immich 实例的加密连接。OpenVPN 和 Wireguard 是两个流行的 VPN 解决方案。以下是设置服务器 VPN 访问的指南 - Pihole 文档

优点

  • 设置简单且非常安全。
  • 单点潜在故障,即 VPN 软件本身。即使 Immich 存在零日漏洞,您也不会受到风险。
  • Wireguard 和 OpenVPN 都经过独立的安全审计,因此发生严重零日漏洞的风险极小。

缺点

  • 如果您没有静态 IP 地址,则需要设置 动态 DNSDuckDNS 是一个免费的 DDNS 提供商。
  • VPN 软件需要在服务器端和客户端安装并激活。
  • 需要在您的路由器上为服务器打开一个端口。

选项 2:Tailscale

如果您无法在路由器上为 Wireguard 或 OpenVPN 打开端口,Tailscale 是一个不错的选择。Tailscale 在您的服务器和远程设备之间通过对等 Wireguard 隧道进行调解,即使两者之一或两者都在 NAT 防火墙 后面。

视频教程

您可以通过他们创建的 教程视频 学习如何将 Tailscale 与 Immich 设置。

优点

  • 服务器和客户端端的配置最小化。
  • 您可以免受 Immich 的零日漏洞影响。

缺点

  • Tailscale 客户端通常需要以 root 身份运行在您的设备上,与最小化 Wireguard 服务器相比,这略微增加了攻击面。例如,2022 年 11 月在 Windows Tailscale 客户端中发现了一个 远程代码执行漏洞
  • Tailscale 是一项付费服务。不过,它提供一个慷慨的 免费套餐 ,允许最多 3 个用户和最多 100 个设备。
  • Tailscale 需要在服务器端和客户端端安装并运行。

选项 3:反向代理

反向代理是一项位于 Web 服务器与客户端之间的服务。反向代理可以托管在服务器本身或远程托管。客户端可以通过 HTTPS 连接到反向代理,代理将数据中继到 Immich。如果您有自己的域名,并希望像访问其他网站一样从局域网外访问您的 Immich 实例,这种设置最为合理。 如果您没有域名,也可以使用像 DuckDNS 或 no-ip 这样的 DDNS 提供商。这种配置允许 Immich 的 Android 和 iPhone 应用在客户端端无需 VPN 或 Tailscale 应用就可以连接到您的服务器。

如果您正在托管自己的反向代理,Nginx 是一个很好的选项。这里提供了一个有关 Nginx 的示例配置 示例配置

您还需要自己的证书来验证 HTTPS 连接。如果您正在公开访问 Immich,Let's Encrypt 可以为您的域免费颁发证书,并且是推荐选项。或者,一个 自签名证书 可以加密您到 Immich 的连接,但它会在客户端的浏览器上触发安全警告。

Cloudflare 这样的远程反向代理通过隐藏服务器 IP 地址增强了安全性,使得像 DDoS 这样的定向攻击更难实施。

优点

  • 客户端端不需要安装额外的软件。
  • 如果您只需要远程访问 Web 界面,可以设置访问控制,以保护您免受 Immich 的零日漏洞侵害。Cloudflare Access 提供了一个慷慨的免费套餐。

缺点

  • 复杂的配置
  • 根据您的配置,Immich 的 Web 界面和 API 都可能被暴露到互联网。Immich 正在非常积极地开发中,无法排除存在严重安全漏洞的可能性。