A simple CalDAV (calendar) and CardDAV (contact) server.
| Port | 5232 |
| Registry | ghcr.io/daemonless/opencloud-radicale |
| Source | https://github.com/daemonless/opencloud-radicale |
| Website | https://radicale.org/ |
| Tag | Description | Best For |
|---|---|---|
latest |
Upstream Binary. Built from official release. | Most users. Matches Linux Docker behavior. |
Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions.
services:
opencloud-radicale:
image: ghcr.io/daemonless/opencloud-radicale:latest
container_name: opencloud-radicale
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
volumes:
- "/path/to/containers/opencloud-radicale:/config"
ports:
- 5232:5232
restart: unless-stoppedpodman run -d --name opencloud-radicale \
-p 5232:5232 \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=UTC \
-v /path/to/containers/opencloud-radicale:/config \
ghcr.io/daemonless/opencloud-radicale:latest- name: Deploy opencloud-radicale
containers.podman.podman_container:
name: opencloud-radicale
image: ghcr.io/daemonless/opencloud-radicale:latest
state: started
restart_policy: always
env:
PUID: "1000"
PGID: "1000"
TZ: "UTC"
ports:
- "5232:5232"
volumes:
- "/path/to/containers/opencloud-radicale:/config"| Variable | Default | Description |
|---|---|---|
PUID |
1000 |
User ID for the application process |
PGID |
1000 |
Group ID for the application process |
TZ |
UTC |
Timezone for the container |
| Path | Description |
|---|---|
/config |
Configuration and data directory |
| Port | Protocol | Description |
|---|---|---|
5232 |
TCP | Web UI |
This image is functional but may change significantly in a future release.
This image can be used with OpenCloud to provide personal address books
and calendars for each OpenCloud user.
The image relies on OpenCloud acting as an authenticating reverse proxy for radicale. Using it as a standalone
radicale server is probably not a good idea.
To intergrate the radicale service with OpenCloud, you need to add a proxy configuration to OpenCloud.
Create the file /path/to/container/opencloud/config/proxy.yaml with this content (or add the content below
to your existing proxy.yaml configuration file):
additional_policies:
- name: default
routes:
- endpoint: /caldav/
backend: http://radicale:5232
remote_user_header: X-Remote-User
skip_x_access_token: true
additional_headers:
- X-Script-Name: /caldav
- endpoint: /.well-known/caldav
backend: http://radicale:5232
remote_user_header: X-Remote-User
skip_x_access_token: true
additional_headers:
- X-Script-Name: /caldav
- endpoint: /carddav/
backend: http://radicale:5232
remote_user_header: X-Remote-User
skip_x_access_token: true
additional_headers:
- X-Script-Name: /carddav
- endpoint: /.well-known/carddav
backend: http://radicale:5232
remote_user_header: X-Remote-User
skip_x_access_token: true
additional_headers:
- X-Script-Name: /carddavAdd the radicale service to your existing compose file for the OpenCloud stack by merging this:
services:
opencloud:
depends_on:
- radicale
radicale:
image: ghcr.io/daemonless/opencloud-radicale:latest
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
volumes:
- /path/to/containers/opencloud-radicale:/config
restart: unless-stoppedArchitectures: amd64
User: bsd (UID/GID via PUID/PGID, defaults to 1000:1000)
Base: FreeBSD 15.0
Need help? Join our Discord community.