Skip to content

Calendar

RadicalMuffinMan edited this page Nov 12, 2026 · 3 revisions

Calendar

The Moonfin apps have a Calendar screen that shows what's coming up in Sonarr and Radarr, what aired recently, and which of those titles are already in your library. Moonbase reads both calendars on the server. That keeps the Sonarr and Radarr API keys on the server, and remote apps still see the calendar when Sonarr and Radarr are only reachable on your home network.

The apps show the Calendar button only when Moonbase says the calendar is available to that user. How the screen itself works is covered in each app's wiki.

What you need

On Jellyfin and Emby

  • Seerr turned on in Moonbase with its URL set. See Seerr Setup.
  • Sonarr and Radarr added in Seerr under Settings > Services. Moonbase uses Seerr's default Sonarr and Radarr, and skips 4K servers when a regular one is set.
  • One Seerr admin signed in to Seerr through a Moonfin app or Moonfin Web. Moonbase reads the Sonarr and Radarr connection through that admin's stored session. Any Jellyfin or Emby user works, as long as their Seerr account is the Seerr owner or has the Admin permission.

Nobody else needs to sign in to Seerr to see the calendar. A user without their own Seerr session still gets the whole calendar, and only needs one to open the Seerr page of a title you don't have or to request it.

How Moonbase reaches Sonarr and Radarr

Seerr only tells Moonbase where Sonarr and Radarr are. The calendar itself doesn't pass through Seerr.

  1. Moonbase uses the Seerr admin's session to read Seerr's Sonarr and Radarr settings: the address, port, URL base and API key.
  2. Moonbase asks Sonarr and Radarr for their calendars directly, from the Jellyfin or Emby server, with that API key.
  3. The answer is reused for Cache minutes by every user, and each user's In library marks are worked out on top of it.

Because the request comes from the Jellyfin or Emby server and not from Seerr, that server has to reach Sonarr and Radarr at the address Seerr uses. This mostly trips up Docker setups. If Seerr talks to Sonarr as sonarr:8989 on a Docker network that Jellyfin or Emby isn't on, that name won't resolve from Jellyfin or Emby. Put the media server on the same network, change the address in Seerr to one both can reach (like the host's LAN IP), or set an External URL for it in Seerr. Moonbase tries the External URL when the main address doesn't answer, but only when it's https or on the local network, so the API key never crosses the internet unencrypted.

On Plex

Moonbase for Plex reads the calendar straight from Sonarr and Radarr, so set them in the Calendar section of its admin page's Integrations tab: each one's URL and API key (Settings > General in Sonarr or Radarr). The URL has to be reachable from the Moonbase for Plex service, not from the apps. Until at least one of them is set, the Calendar stays hidden on Plex. The same Sonarr and Radarr also show why a requested download is stuck, see Seerr Notifications.

Settings

In the Moonbase admin page, under Integrations > Calendar:

Setting Default What it does
Who can see the calendar Everyone Admins only hides the Calendar button from everyone who isn't a server admin, and Moonbase turns down their calendar requests.
Days back 14 How many days before today the calendar reaches. This is as far back as Recently aired goes.
Days ahead 90 How many days after today the calendar reaches.
Cache minutes 5 How long one answer from Sonarr or Radarr is reused for every user before they're asked again. 0 asks every time.

On Plex, the server owner is the admin. Home members and friends count as everyone else.

What each user sees

Every entry is checked against the libraries the user can open, by its TVDB, TMDB and IMDb ids. A show or movie found there is marked In library and opens its page in the app, and an episode or movie that's already on the server can be played. Anything else opens its Seerr page.

Each user picks their own style (Agenda or Countdown), filters and actions in the app's Calendar settings. Those sync per device type like the rest of Moonfin's settings, see Settings Sync.

Reminders

On phones, the calendar has a Remind me bell on episodes and movies that aren't on the server yet. Moonbase keeps the reminder and tells that user when the episode or movie lands in a library. It shows up as a push notification on their phone and on screen in any Moonfin app they have open. A reminder goes out even if the user turned off other notifications, since they asked for this one. It's removed once it fires, and each user can keep up to 500.

Reminders work on Jellyfin, Emby and Plex. Moonbase for Plex checks the libraries for new episodes and movies every 2 minutes while anyone has a reminder, so one goes off within a few minutes of its title arriving. Push needs nothing extra, the same as Seerr Notifications. Moonbase for Plex sends it through the same hosted relay, so a Moonbase for Plex image built without the relay key sends no pushes.

Troubleshooting

The Calendar button is missing. Check that Seerr is on (or, on Plex, that Sonarr or Radarr is set), and that Who can see the calendar isn't set to Admins only for a user who isn't an admin. The button also hides in Kids Mode and when the user turns off Show Calendar Button in the app.

"An admin needs to sign in to Seerr in Moonfin before the calendar can load." No Seerr admin has signed in to Seerr through Moonfin yet. Sign one in from any Moonfin app. If you just gave someone the Admin permission in Seerr, Moonbase notices the next time it checks their Seerr session, which happens at most every 5 minutes while they use Moonfin. Signing out of Seerr and back in applies it right away.

"The calendar is limited to admins on this server." Who can see the calendar is set to Admins only. The app usually hides the button first, so this shows when the setting changed while the app was open.

"No Sonarr or Radarr server is linked yet." Seerr has no Sonarr or Radarr under Settings > Services, or on Plex neither one is set on the admin page.

"Couldn't load the calendar." Moonbase couldn't get an answer from Sonarr or Radarr. Check that the address in Seerr (or on the Plex admin page) is reachable from the server, see How Moonbase reaches Sonarr and Radarr. When Seerr's own address for Sonarr or Radarr doesn't answer, Moonbase tries the External URL set in Seerr, but only over https or when that address is on the local network. The server log names the address it tried.

The routes are listed in the API Reference.

Clone this wiki locally