Meetings and shared calendars are generic functions. Teams calls and shared calendars alike are already shared as OSS. The previous chapter brought mail back to your own side. Here we stand up two things and place them on your own domain, on the machine handed to the AI in 2-02.
- Video meetings — Jitsi Meet (in place of Teams and Zoom)
- Shared calendars — Radicale (CalDAV; in place of Outlook and Google calendar sharing)
Booking (in place of Calendly and Microsoft Bookings) is not stood up in this chapter. With no OSS left that can be self-hosted for it, it is written in 2-12 as a small FastAPI app. It sits directly on this chapter's Jitsi and calendar and on the mail of 2-08.
Stand up Jitsi Meet for meetings
Meetings are Jitsi Meet. Participants need only a browser — no app install, no account. Send a link and the meeting starts. Raise hand, breakout rooms, a whiteboard, recording, and screen sharing all come standard.
Jitsi installs from its official apt repository (Debian 12 or newer). As 2-02 decided, no Docker. Three decisions go with it.
- The ports opened to the outside are 10000/UDP for video and 5349/TCP as its fallback. This chapter opens them for the first time, so it is an action the AI states before performing (2-02)
- The web entrance stays with Caddy (443). Jitsi's installer configures nginx; on the 2-02 machine, nginx listens on localhost and Caddy hands traffic to it. The AI writes the configuration
- Only authenticated people can open a meeting. You open it; anyone with the link joins
# after registering the official apt repository
sudo apt install jitsi-meet # web, prosody, jicofo, and jvb run under systemd
Hand out meet.example.com with your own logo and your own domain.
Large meetings are handled by adding video bridges (JVB). That is "adding," not "standing up" — lining up servers to match the scale.
For serious teaching (attendance records, LMS integration) there is BigBlueButton, but it needs a dedicated Ubuntu machine and does not fit on the 2-02 box. Stand up a separate machine for the duration of a course and tear it down after (2-01). Most courses are fine on Jitsi.
Share calendars with Radicale
Shared calendars are CalDAV. Stand up the lightweight Radicale and Thunderbird connects. On phones, the iPhone's stock calendar speaks CalDAV; Android needs one app such as DAVx⁵. Radicale is in Debian 13's apt.
sudo apt install radicale # runs under systemd; listens on localhost
meet.example.com { reverse_proxy localhost:8443 } # Jitsi's nginx
cal.example.com { reverse_proxy localhost:5232 } # Radicale
Radicale's login is Radicale's own (2-05). Account names match the gate.
Migration is only the future
Moving off Teams or Google Calendar needs no project. Meeting links are disposable; there is nothing to move. For calendars, export only future events as .ics and import them into Radicale — a one-time operation. Recordings or chat worth keeping are inventoried in 2-15's information tidy-up and filed into the 2-07 home as files.
How to check you are done
This chapter is done when these four hold.
- From a browser on another PC you can join a meeting at
meet.example.com, with no app and no account - Two or more people join, and video, audio, and screen sharing work
- Thunderbird and a phone calendar show the same events over CalDAV, and an event entered on one appears on the other
- Seen from outside, the open ports are only 80, 443, ssh, 25/465/587/993 (2-08), 10000/UDP, and 5349/TCP
systemctl status jitsi-videobridge2 prosody jicofo radicale # running under systemd
curl -sI https://meet.example.com | head -1 # the meeting page answers
What the human holds
Values the human supplies
- The domain names for meetings and calendars (
meet.example.com,cal.example.com) - The DNS records that point those names
- The list of people who may open a meeting (Jitsi's authentication)
- The .ics of future events to move
Actions the AI states before performing
- Opening ports 10000/UDP and 5349/TCP
- Changing a DNS record
- Deleting calendar data already entered
- Placing a meeting recording where it can be seen from outside
Versions checked, and when
- Jitsi Meet (the stable channel of the official apt repository
download.jitsi.org), Radicale 3.5 (Debian 13 package), Caddy - The procedure was written on 2026-07-11 and rewritten on 2026-10-05
- If a version has moved, have the AI confirm the official procedure before proceeding
Summary
Meetings and calendars, on your own domain.
- Jitsi Meet — browser-only meetings in place of Teams and Zoom; the official apt, behind Caddy
- Radicale — shared calendars over CalDAV. Thunderbird and the iPhone as they are; Android with one app
- Booking is written in 2-12 — with no OSS left to stand up, it becomes a small FastAPI app
- BigBlueButton on a separate machine — only for serious teaching, for the duration of a course
By now the foundation, the gate, the code, the documents, the mail, the meetings, and the calendars are in place. The next chapter builds the website that shows them to the outside.