selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

open-web-calendar logo

Self-host open-web-calendar

v1.51

Embeddable ICS calendar for websites

ReleaseOpen SourceGPL-2.0
Updated4 months ago
LanguagePython
Setup difficultyModerate
MobileResponsive
Stars
334
Port
80 (HTTP in Docker container)
Docker
niccokunzmann/open-web-calendar
Install with Docker

What is open-web-calendar?

Open Web Calendar is a self-hosted web application that displays ICS calendar feeds on websites via embeddable iframes. It fetches calendar data server-side, solving CORS and authentication issues that browser-only calendars face with self-hosted CalDAV servers like Nextcloud. The calendar supports multiple ICS sources, month/week/day/agenda views, customizable time zones, over 30 languages, custom CSS styling, and a developer API for dynamic customization. It can be deployed via Docker, Docker Compose, Python package (pip), or one-click platforms like Vercel, Heroku, Cloudron, and YunoHost. The project is licensed under GPL-2.0 and has no required external dependencies — it runs as a standalone Python/Flask application with optional proxy configuration for SSRF protection.

Should you self-host open-web-calendar?

open-web-calendar scores 53/100 on selfhost.directory (how scoring works) and ranks #9 of 30 in Calendar & Contacts. It has 334 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is GPL-2.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Radicale (69/100, 5 152 stars). It scores higher overall, so compare the two before you pick. See open-web-calendar vs Radicale side by side.

Features

  • CalDAV event sign-upAdded in v1.49
  • Custom CSS styling
  • Customizable time zones
  • Developer API
  • Embeddable calendar via iframe
  • Month, week, day, and agenda views
  • Multi-language Support
  • Multiple ICS calendar sources
  • Offline and intranet support
  • Privacy-focused (no external tracking)
  • SSRF protection via proxy
  • Subscribe to calendar (ICS export)

open-web-calendar README

How to install open-web-calendar

Install open-web-calendar with Docker

Environment variables
OWC_SPECIFICATION, WORKERS, HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, ALLOWED_HOSTS, APP_DEBUG, CACHE_DIRECTORY, CACHE_FILE_SIZE, CACHE_SIZE, CACHE_REQUESTED_URLS_FOR_SECONDS, OWC_ENCRYPTION_KEYS, PORT

docker run -d --rm -p 5000:80 --name open-web-calendar niccokunzmann/open-web-calendar

Runs on port 80 inside container, mapped to host port 5000

How to configure open-web-calendar

  • ALLOWED_HOSTSComma-separated list of clients allowed to access the service. Empty or * permits everyone.

    Comma-separated list of clients allowed to access the service. Empty or * permits everyone.

    values: localhost, 192.168.0.1, api.myserver.com, *

  • ALL_PROXYProxy for all requests to fetch ICS files.

    Proxy for all requests to fetch ICS files.

    values: proxy URL

  • APP_DEBUGfalseSet the debug flag for the app.

    Set the debug flag for the app.

    values: true, false

  • CACHE_DIRECTORYtemporary directory (e.g. /tmp/)Directory for caching downloaded calendar files.

    Directory for caching downloaded calendar files.

    values: any valid path

  • CACHE_FILE_SIZE20Maximum size of one file in the cache in MB.

    Maximum size of one file in the cache in MB.

    values: 0 to disable, any positive number

  • CACHE_REQUESTED_URLS_FOR_SECONDS600Seconds to cache calendar files to reduce bandwidth and delay.

    Seconds to cache calendar files to reduce bandwidth and delay.

    values: 0 to disable, any positive number

  • CACHE_SIZE200Maximum cache size in MB.

    Maximum cache size in MB.

    values: 0 to disable, unlimited, any positive number

  • HTTP_PROXYProxy for HTTP requests to fetch ICS files.

    Proxy for HTTP requests to fetch ICS files.

    values: proxy URL

  • HTTPS_PROXYProxy for HTTPS requests to fetch ICS files.

    Proxy for HTTPS requests to fetch ICS files.

    values: proxy URL

  • OWC_ENCRYPTION_KEYSComma-separated list of Fernet encryption keys for hiding sensitive URL information.

    Comma-separated list of Fernet encryption keys for hiding sensitive URL information.

    values: base64-encoded keys

  • OWC_SPECIFICATIONYAML or JSON string or file path to override default calendar specification for all calendars.

    YAML or JSON string or file path to override default calendar specification for all calendars.

    values: valid YAML/JSON

  • PORT5000 (80 in Docker)Port the service runs on.

    Port the service runs on.

    values: any valid port number

  • WORKERS4Number of parallel workers to handle requests (Docker only).

    Number of parallel workers to handle requests (Docker only).

    values: any positive integer

open-web-calendar releases & version history

More in Calendar & Contacts

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…