Eufy E220 live view public WordPress page (RTSP, go2rtc and Caddy) in combination with working HB3

I got an Eufy E220 camera working on a public WordPress page, while still keeping the actual recordings on the Eufy HomeBase 3 / S380.

Home Assistant is not in the actual video path yet.

The final video path is:

Eufy E220 → RTSP → go2rtc → Caddy reverse proxy → HTTPS subdomain → WordPress iframe

Eufy setup

The important part for my Eufy E220 was the configuration order.

What worked for me:

1. Insert a microSD card into the Eufy E220
2. Add the camera first as a standalone camera
3. Enable continuous / 24/7 recording
4. Then link the camera to the HomeBase 3

After that, continuous recording remained active in my setup, but the relevant recordings were stored on the HomeBase 3 instead of the microSD card.

I would treat this as a practical workaround/configuration order rather than a guaranteed official feature. It may depend on firmware and app version.

RTSP

In the Eufy app I enabled NAS/RTSP for the E220.

The RTSP URL looks like this:

rtsp://USER:[email protected]:554/live0

I also reserved a fixed DHCP address for the camera, so the RTSP URL does not break when the camera reconnects.

go2rtc

go2rtc runs in Docker on a small Ubuntu machine.

My go2rtc configuration is roughly:

streams:
  eufy_e220:
    - "rtsp://USER:[email protected]:554/live0"
    - "ffmpeg:eufy_e220#audio=opus"

webrtc:
  candidates:
    - camera.example.com:8555

The second line is used to provide Opus audio for WebRTC compatibility.

Caddy reverse proxy

Caddy is used as HTTPS reverse proxy in front of go2rtc.

Example Caddyfile:

camera.example.com {
    reverse_proxy 127.0.0.1:1984
}

Caddy handles HTTPS automatically.

Router forwarding

The following ports are forwarded to the Ubuntu machine:

TCP 80   → Ubuntu machine port 80
TCP 443  → Ubuntu machine port 443
TCP 8555 → Ubuntu machine port 8555
UDP 8555 → Ubuntu machine port 8555

Port 80/443 are for Caddy and HTTPS. Port 8555 TCP/UDP is used by go2rtc WebRTC.

WordPress embed

The WordPress page uses a simple iframe:

<iframe
  src="https://camera.example.com/webrtc.html?src=eufy_e220"
  width="800"
  height="450"
  style="border:0; max-width:100%;"
  allow="autoplay; fullscreen">
</iframe>

The stream takes about 5–10 seconds to appear, but after that it runs reliably.