Important
Active development now happens at https://codeberg.org/Conduction/opentalk.
This GitHub mirror is read-only β issues, pull requests, and new commits should go to Codeberg.
Update your remote with: git remote set-url origin https://codeberg.org/Conduction/opentalk
GDPR-compliant video conferencing for Nextcloud β secure meetings, screen sharing, and end-to-end encryption via the Nextcloud AppAPI
IMPORTANT DISCLAIMER
This repository contains only a Nextcloud ExApp wrapper for OpenTalk, developed and maintained by Conduction B.V.. The wrapper packages the upstream OpenTalk controller as a containerized application managed by Nextcloud's AppAPI.
OpenTalk itself is developed by OpenTalk GmbH.
Conduction does NOT provide:
- Support, SLAs, or guarantees for the OpenTalk platform
- Licensing or pricing for OpenTalk
- Bug fixes or feature development for the upstream OpenTalk controller
- Any warranty regarding OpenTalk's functionality or fitness for purpose
For OpenTalk support, licensing, pricing, and services, contact OpenTalk GmbH directly.
For issues specific to the Nextcloud wrapper (AppAPI integration, container lifecycle, proxy layer), you may open an issue on this repository.
OpenTalk is a secure, open-source video conferencing platform developed in Germany by OpenTalk GmbH with a strong focus on data protection and GDPR compliance. It is designed as a sovereign alternative to commercial cloud-based video conferencing solutions, keeping all communication data under your own control.
Key capabilities of the OpenTalk platform:
- Secure Video and Audio Conferencing -- High-quality WebRTC-based meetings via LiveKit
- Screen Sharing -- Present your screen or individual application windows
- End-to-End Encryption -- Optional E2EE for maximum confidentiality
- OIDC / Keycloak Authentication -- Enterprise single sign-on integration
- Moderation Tools -- Meeting controls, waiting rooms, and participant management
- Recording -- Server-side meeting recording (when configured)
- Data Sovereignty -- Self-hosted, no data leaves your infrastructure
For full documentation, see docs.opentalk.eu.
This Nextcloud ExApp (External Application) wraps the upstream OpenTalk controller in a container that Nextcloud manages through the AppAPI framework. Specifically, this wrapper:
- Packages the OpenTalk controller binary from the official upstream image
- Implements AppAPI lifecycle endpoints (
/heartbeat,/init,/enabled) - Starts and manages the OpenTalk controller process inside the container
- Proxies all requests from Nextcloud to the OpenTalk controller
- Reports health status back to Nextcloud
This app does not modify or extend the OpenTalk platform itself. It only provides the integration layer between Nextcloud and the upstream OpenTalk controller.
| Dependency | Version | Notes |
|---|---|---|
| Nextcloud | 30 -- 33 | |
| AppAPI | latest | Must be installed and configured with a deploy daemon |
| Docker | -- | Required for ExApp container deployment |
| PostgreSQL | 14+ | OpenTalk database backend |
| Redis | 6+ | Caching and session management |
| Keycloak | 20+ | OIDC authentication provider |
| LiveKit | 1.x | WebRTC media server for video/audio |
| RabbitMQ | 3.x | Message broker (optional) |
- Ensure AppAPI is installed and configured with a deploy daemon
- Search for OpenTalk in the Nextcloud External Apps section
- Click Install -- Nextcloud will pull and start the container automatically
# Register the ExApp with AppAPI
docker exec -u www-data nextcloud php occ app_api:app:register \
opentalk your_daemon_name \
--info-xml /path/to/appinfo/info.xml \
--force-scopes
# Enable the ExApp
docker exec -u www-data nextcloud php occ app_api:app:enable opentalkConfigure via Nextcloud Admin Settings or container environment variables. All environment variables are defined in appinfo/info.xml and passed through by AppAPI.
| Variable | Description |
|---|---|
OPENTALK_CTRL_DATABASE__URL |
PostgreSQL connection string (e.g., postgres://user:pass@host:5432/opentalk) |
OPENTALK_CTRL_REDIS__URL |
Redis connection string (e.g., redis://localhost:6379/) |
OPENTALK_CTRL_OIDC__AUTHORITY |
Keycloak OIDC provider URL (e.g., http://keycloak:8080/realms/opentalk) |
OPENTALK_CTRL_LIVEKIT__SERVICE_URL |
LiveKit WebRTC server URL |
OPENTALK_CTRL_LIVEKIT__API_KEY |
LiveKit API key |
OPENTALK_CTRL_LIVEKIT__API_SECRET |
LiveKit API secret |
| Variable | Description |
|---|---|
KEYCLOAK_URL |
Keycloak server URL (e.g., http://keycloak:8080) |
KEYCLOAK_REALM |
Keycloak realm name (default: commonground) |
KEYCLOAK_CLIENT_ID |
OIDC client ID (default: opentalk) |
KEYCLOAK_CLIENT_SECRET |
OIDC client secret |
+-----------------------------------------+
| Nextcloud + AppAPI |
+-------------------+---------------------+
| AUTHORIZATION-APP-API
v
+-----------------------------------------+
| OpenTalk ExApp Container |
| +-----------------------------------+ |
| | FastAPI Wrapper (port 9000) | |
| | - /heartbeat (health check) | |
| | - /init (initialization) | |
| | - /enabled (enable/disable) | |
| | - /* (proxy to ctrl) | |
| +----------------+------------------+ |
| | |
| +----------------v------------------+ |
| | OpenTalk Controller (port 11311) | |
| | (upstream binary from | |
| | registry.opencode.de/opentalk) | |
| +-----------------------------------+ |
+-----------------------------------------+
| | |
PostgreSQL Redis Keycloak LiveKit
The FastAPI wrapper (ex_app/lib/main.py) handles the AppAPI contract:
/init-- Starts the OpenTalk controller process and waits for it to become healthy (up to 90 seconds)/enabled-- Starts or stops the controller based on the enabled state/heartbeat-- Checks controller health by probinghttp://localhost:11311/v1//*-- Proxies all other requests to the OpenTalk controller
| Resource | URL |
|---|---|
| OpenTalk Website | opentalk.eu |
| OpenTalk Documentation | docs.opentalk.eu |
| OpenTalk Source Code | gitlab.opencode.de/opentalk/controller |
| OpenTalk GmbH (Support & Licensing) | opentalk.eu |
| This Wrapper (GitHub) | ConductionNL/opentalk |
| Nextcloud AppAPI | GitHub / Docs |
EUPL-1.2 -- See LICENSE for details.
This license applies to the Nextcloud ExApp wrapper only. The upstream OpenTalk controller is licensed separately under its own terms. See the OpenTalk project for upstream licensing.
Nextcloud wrapper built by Conduction B.V. -- open-source software for Dutch government and public sector organizations.
OpenTalk platform developed by OpenTalk GmbH -- secure video conferencing made in Germany.