Bebe MomentBebe Moment

Troubleshooting

Photo page returns 500 / log shows MEDIA_SERVICE_TOKEN env required

If media-backed pages (timeline, detail) return 500 and the log shows MEDIA_SERVICE_TOKEN env required, the container is missing MEDIA_SERVICE_TOKEN / MEDIA_JWT_SECRET.

  • The root .env is both gitignored and dockerignored, so it is not baked into the image. These values must be passed as runtime env (compose environment: / Synology Container Manager environment).
  • /api/health does not touch media and stays 200, so a health check won't catch this — verify with a real photo page.

Generate:

openssl rand -hex 32

Page loads but photos don't (broken thumbnails)

The signed URL points at a port that isn't exposed (e.g. :3001).

  • This deployment exposes only port 3000; the browser reaches the internal media (:3001) via the /media/* Next rewrite.
  • Do not set MEDIA_PUBLIC_BASE_URL / NEXT_PUBLIC_MEDIA_BASE_URL. Unset falls back to PUBLIC_URL, serving /media/... same-origin.
  • Setting :3001 makes the browser unable to reach it and images break.

pg16 → pg17 upgrade incompatibility

The Postgres data directory is incompatible across major versions. You cannot bring an existing pg16 volume up under a pg17 image directly.

  • pg_dump from the old version → restore into pg17, then clear pg/ and start, or
  • use the built-in app backup/restore (Settings → Admin → Backup).

Login drops after switching to https

When PUBLIC_URL changes from http to https, the session cookie flips to the __Secure- prefix. The existing cookie is invalidated, so a one-time re-login is required (expected behavior).

Push / digest / memory notification times are off

Quiet hours, digests, and memory pushes are evaluated using container-local time. If TZ is wrong (e.g. the default UTC), daytime pushes in your local timezone can get suppressed by quiet hours. Set the family timezone, e.g. TZ=Asia/Seoul.

Uploads cut off midway

Large tus uploads and SSE are sensitive to reverse-proxy timeouts. Set the proxy timeout to ≥ 600s and allow WebSocket (on the DSM reverse proxy, Custom Header → Create > WebSocket).

For install-specific issues, also see the troubleshooting sections in the Linux and Synology guides.