Nextcloud Talk
Nextcloud Talk integration via webhook bot with DMs, rooms, reactions, and markdown message support.
Tags: workspace, self-hosted, nextcloud, open-source
Category: Workspace
Use Cases
- Self-hosted AI assistant for Nextcloud-native organizations
- Team knowledge bot in Nextcloud Talk rooms
- Personal AI assistant integrated with your Nextcloud productivity suite
- Privacy-focused AI chat for organizations that keep all data on-premises
- Document Q&A bot alongside Nextcloud Files
- Small team AI helper without introducing another messaging platform
Tips
- Set apiUser and apiPassword to enable proper DM detection — this is strongly recommended
- Use the --feature reaction flag when registering the bot to enable emoji reactions
- Configure webhookPublicUrl if running behind a reverse proxy so Nextcloud can reach the callback
- Use chunkMode: 'newline' for cleaner message splitting on paragraph boundaries instead of hard character limits
- Prefer room tokens (from the URL) in room allowlists for stability
- Multi-account support lets you connect multiple Nextcloud instances from one OpenClaw gateway
- Block streaming can be disabled per-channel if you prefer complete messages over progressive delivery
Known Issues & Gotchas
- The bot must be installed via occ CLI on the Nextcloud server — there's no web UI for bot creation
- Bot must be enabled per-room in room settings — installing the bot alone doesn't activate it anywhere
- Without apiUser/apiPassword, DMs are treated as rooms because the webhook payload doesn't distinguish them
- webhookPublicUrl must be set if the gateway is behind a reverse proxy or has a different external URL
- allowFrom matches Nextcloud user IDs only — display names are not matched
- Media cannot be uploaded — the bot API only supports sending URLs, so files must be hosted elsewhere
- The webhook listener defaults to port 8788 — ensure it doesn't conflict with other services
- Bot shared secret should be kept secure — it authenticates all webhook traffic
Alternatives
- Mattermost
- Matrix
- Slack
- Synology Chat
Community Feedback
Love that OpenClaw has a Nextcloud Talk plugin. My whole stack is self-hosted Nextcloud, and now I have an AI assistant right in the same platform where I manage files and calendar.
— Reddit r/Nextcloud
The webhook bot API is a bit limited compared to other platforms, but the OpenClaw integration makes the most of it. Reactions work well and markdown rendering is clean.
— Nextcloud Community Forum
Nextcloud Talk + OpenClaw is perfect for small teams who want everything self-hosted. Setup is straightforward once you understand the occ command for bot registration.
— GitHub Discussions
Frequently Asked Questions
Can the bot start conversations?
No. Nextcloud Talk bots cannot initiate DMs. The user must send the first message to the bot. For outbound delivery, use the message send command targeting a room or user.
Why are my DMs being treated as rooms?
The webhook payload doesn't distinguish DMs from rooms by default. Configure apiUser and apiPassword in your OpenClaw config to enable room-type lookups, which properly detects DMs.
Is the Nextcloud Talk plugin bundled with OpenClaw?
No. It's a separate plugin: openclaw plugins install @openclaw/nextcloud-talk. It's not included in the core package.
Can I send images through the bot?
Not as direct uploads. The bot API doesn't support media uploads. You can send image URLs, and they'll be rendered as links in the chat. Upload images to Nextcloud Files and share the URL instead.
What Nextcloud version is required?
The webhook bot API requires Nextcloud Talk 18+ (Nextcloud 28+). Earlier versions don't support the talk:bot:install command.
Configuration Examples
Basic setup with DM detection
channels:
nextcloud-talk:
enabled: true
baseUrl: "https://cloud.example.com"
botSecret: "shared-secret"
apiUser: "bot-user"
apiPassword: "app-password"
dmPolicy: pairingRoom-scoped with allowlists
channels:
nextcloud-talk:
enabled: true
baseUrl: "https://cloud.example.com"
botSecret: "shared-secret"
groupPolicy: allowlist
rooms:
"abc123token":
requireMention: true
"def456token":
requireMention: falseBehind reverse proxy
channels:
nextcloud-talk:
enabled: true
baseUrl: "https://cloud.example.com"
botSecret: "shared-secret"
webhookPort: 8788
webhookPath: "/nextcloud-talk-webhook"
webhookPublicUrl: "https://gateway.example.com/nextcloud-talk-webhook"
dmPolicy: open
allowFrom:
- "*"Installation
openclaw plugins install @openclaw/nextcloud-talk