# Baikal (CalDAV/CardDAV server)

Mirror of the official Baikal release, kept here so `server-mail-common`'s
Ansible install task doesn't depend on GitHub staying up/reachable.

- Upstream project: https://github.com/sabre-io/Baikal
- Upstream releases: https://github.com/sabre-io/Baikal/releases
- Used by: `server-mail-common` (git@gitlab.summersoft.fay-ar.us:infra/server-mail-common.git),
  opt-in per org via the `enable_caldav` variable.

## Layout

    v<version>/baikal-<version>.zip   -- exact upstream release asset, unmodified
    latest -> v<version>              -- symlink to the current version in use

## Currently in use: v0.9.4

**Version pinned to 0.9.4, not the actual latest upstream release**, because
of a real PHP-version wall hit on `mailtest.jeffrieseye.org` (AlmaLinux 9,
system PHP 8.0.30):

- Baikal's own `composer.json` PHP constraint (`^7.2 || ^8.0` as of 0.9.5)
  is **not a reliable indicator** of what a given release zip actually
  requires -- the bundled `vendor/composer/platform_check.php` in the real
  release asset reflects the *resolved dependency tree* at build time, which
  can be stricter. Confirmed by downloading and checking several release
  zips directly (not just reading composer.json):

  | Version | Real requirement (from the release zip's own platform_check.php) |
  |---|---|
  | 0.11.1, **0.9.5** | `>= 8.1.0` -- 500s immediately on PHP 8.0.30 |
  | **0.9.4** (in use) | `>= 7.4.0` -- works |
  | 0.9.0 - 0.9.3 | `>= 7.2.0` - `>= 8.0.0` -- also work, but older |

  0.9.5 looked like it should have worked based on its composer.json alone
  -- it did not. Verified live: 0.11.1 and 0.9.5 both 500 on this host with
  "Composer detected issues in your platform: ... require a PHP version
  >= 8.1.0"; 0.9.4 returns a normal 302 to the install wizard.

- Fetched: 2026-07-19
- Source: https://github.com/sabre-io/Baikal/releases/download/0.9.4/baikal-0.9.4.zip
- sha256: 47a23aa06bc82504e0f216ea81328d9fa00c9c9d9f178d5487ce8960e941e58e

**Revisit this pin if the host's PHP is ever upgraded** (AlmaLinux 9 has
8.1/8.2/8.3 module streams available) -- but note Roundcube 1.5.15 and
DSPAM's web UI also run on that same system PHP, so upgrading it is a
separate, coordinated decision, not just a Baikal one.

## v0.11.1 (not currently used -- kept for reference)

- Fetched: 2026-07-19
- Source: https://github.com/sabre-io/Baikal/releases/download/0.11.1/baikal-0.11.1.zip
- sha256: 124a83adfdd29b7a2b48ce42ffcbdd39906ea0980bb98f79c8479b4a80647100
- Requires PHP >= 8.1.0 per its own bundled platform_check.php -- do not
  point `baikal_version` at this until the host's PHP is upgraded.

To add a new version: download the release zip from the upstream releases
page above, **check its actual bundled
`vendor/composer/platform_check.php`, not just composer.json**, verify its
checksum, drop it in a new `v<version>/` directory here, update the
`latest` symlink, and append an entry to this file with the same fields --
then bump `baikal_version`/`baikal_sha256` in `server-mail-common/main.yml`
to match.
