Install with Docker
Docker Compose runs calsync and its setup page. This is the easiest route.
Start it
You need Docker with the Compose plugin.
git clone https://github.com/jakescalesAI/calsync
cd calsync
docker compose up -d
Open http://localhost:8484 in a browser on the same machine. Compose publishes the port on that machine only.
First visit
- The page asks for a setup code. Get it from the logs:
docker compose logs calsync - Choose a password for the page. It guards your sign-ins, so make it a good one.
Add your calendars
- Make a sign-in app for your provider: Google or Microsoft. Paste its details into the page.
- Add a calendar: Google, Outlook or Microsoft 365, or a published .ics link. Sign in when asked.
- Choose the calendars to keep in sync. Give each a short name.
- Set the options on each calendar. See below.
- Press Preview changes. It shows how many events would be added, updated and removed. Nothing has changed yet.
- Press Apply and keep syncing.
Options on each calendar
- Copies here only say Busy
- Copies on this calendar have no title or location.
- Never write to this calendar
- Read only. calsync uses it as a source and never writes to it.
- Don't copy X here
- One switch for every other calendar, named X. Events from X are not copied here.
How often it runs
In the settings, choose every 2, 5, 10, 15, 30 or 60 minutes. The default is 5.
The way out
On each calendar, "Delete the copies calsync made here" removes every copy calsync made on it. It touches nothing else. From the command line, calsync purge does the same.
Everyday commands
docker compose ps # is it running?
docker compose logs calsync # what has it done?
docker compose down # stop it
git pull && docker compose up -d --build # update
Your sign-ins and calendar data live in the Docker volume calsync-data, on your machine. To change the port, time zone or allowed host names, see Settings and environment.
Put calsync behind your own HTTPS proxy before you expose it to the internet.