IntraVox beheer-instellingen¶
Deze gids behandelt het Nextcloud-beheer-instellingen-paneel voor IntraVox. Bereikbaar via Nextcloud-beheerinstellingen → IntraVox.
Overzicht¶
Het IntraVox-beheer-instellingen-paneel heeft de volgende tabs:
- Video Services — Configureer toegestane video-embed-domeinen
- Demo-data — Installeer en beheer demo-content
- Externe feeds — Configureer LMS- en feed-verbindingen voor de Feed-widget
Video Services-tab¶
IntraVox bevat een video-widget waarmee editors video's van externe platforms kunnen embedden. Beheerders bepalen welke platforms zijn toegestaan.
Standaard-configuratie¶
De volgende services zijn standaard ingeschakeld voor privacy-first-werking:
| Service | Domein | Privacy-niveau |
|---|---|---|
| YouTube (privacy-modus) | youtube-nocookie.com | Enhanced — geen tracking-cookies |
| Vimeo | player.vimeo.com | Standaard |
Video-services beheren¶
- Ga naar Beheerinstellingen → IntraVox
- Selecteer de tab Video Services
- Schakel services aan/uit met de toggles
Service-categorieën¶
Services zijn gegroepeerd op categorie:
Privacy-vriendelijk¶
- YouTube (privacy-modus) — gebruikt youtube-nocookie.com, geen tracking-cookies
- PeerTube-instances — gefedereerde open-source video-hosting
Populaire platforms¶
- Vimeo — professionele video-hosting
- Dailymotion — video-deel-platform
PeerTube-servers¶
Voor-geconfigureerde PeerTube-instances:
- framatube.org
- peertube.tv
- video.blender.org
- En meer...
Custom video-servers toevoegen¶
Voor organisaties met eigen video-hosting:
- Ga naar Beheerinstellingen → IntraVox → Video Services
- Scroll naar "Custom-domein toevoegen"
- Voer het domein in (bv.
video.bedrijf.nl) - Klik Toevoegen
Vereisten voor custom-domeinen¶
| Vereiste | Beschrijving |
|---|---|
| HTTPS | Alleen HTTPS-domeinen toegestaan (beveiliging) |
| Bereikbaar | Domein moet bereikbaar zijn vanuit browsers van gebruikers |
| Iframe toegestaan | Server moet iframe-embedding toestaan (X-Frame-Options) |
Custom-domeinen verwijderen¶
- Vind het custom-domein in de lijst
- Klik op de X-knop ernaast
- Het domein wordt direct van de whitelist verwijderd
Geblokkeerd-video-gedrag¶
Wanneer een editor een video embed't van een niet-whitelisted domein:
- De video toont een "geblokkeerd"-melding met het domein
- De video-URL blijft bewaard in de pagina-data
- Zodra de admin het domein whitelist, werkt de video automatisch
- Editors kunnen de domein-whitelist niet omzeilen
Video-widget-features¶
Ondersteunde video-bronnen¶
| Bron-type | Beschrijving |
|---|---|
| Externe embed | YouTube, Vimeo, PeerTube, etc. via URL |
| Lokale upload | MP4-, WebM-, OGG-bestanden geüpload naar Nextcloud |
Playback-opties¶
Editors kunnen deze opties per video configureren:
| Optie | Beschrijving | Notes |
|---|---|---|
| Autoplay | Video start bij page-load | Vereist muted |
| Loop | Video herhaalt continu | — |
| Muted | Geen geluid | Vereist voor autoplay |
| Controls | Toon player-controls | Aanbevolen aan |
Lokale video-upload¶
- Klik in de video-widget-editor op "Video uploaden"
- Selecteer een video-bestand (MP4, WebM of OGG)
- Video wordt opgeslagen in de
_media/-folder van de pagina - Max bestandsgrootte wordt bepaald door Nextcloud's PHP-upload-limieten
Externe feeds-tab¶
De Externe feeds-tab laat beheerders verbindingen configureren naar externe systemen — learning management systems (Canvas, Moodle, Brightspace), project management (Jira, OpenProject), knowledge bases (Confluence), samenwerking (SharePoint), en elke custom REST API. Deze verbindingen worden gebruikt door de Feed-widget op IntraVox-pagina's.
Waarom feed-verbindingen configureren als Nextcloud-integratie-apps bestaan?
Veel van deze systemen (OpenProject, Jira, etc.) hebben eigen Nextcloud-integratie-apps. Die apps dienen individuele gebruikers — bestanden linken, taken zoeken, persoonlijke notificaties ontvangen. Feed-verbindingen dienen een ander doel: ze laten je data uit deze systemen tonen op intranet-pagina's zichtbaar voor hele teams of afdelingen. Dat is organisatie-bewustzijn, geen persoonlijke productiviteit. Zie de architectuur-design-principes voor details.
Een verbinding toevoegen¶
- Ga naar Beheerinstellingen → IntraVox → Externe feeds
- Klik + Verbinding toevoegen
- Vul de verbindings-details in (voor niet-LMS-typen staan geavanceerde opties zoals endpoint-pad, response-mapping en custom headers achter de Geavanceerde opties-toggle)
- Klik Verbindingen opslaan
Een verbinding testen¶
Klik na opslaan op Verbinding testen op een verbindings-kaart om credentials en endpoint te verifiëren. Het resultaat toont:
- Verbinding OK — N items als de verbinding werkt
- Een foutmelding (authenticatie, permissies, netwerk) als hij faalt
Verbindingen moeten zijn opgeslagen vóór testen (de server heeft de opgeslagen configuratie nodig om de API-call te maken).
Een verbinding verwijderen¶
Klik op de ×-knop op een verbindings-kaart. Een bevestigings-dialoog toont de verbindings-naam — verwijderen heeft pas effect na klikken op Verbindingen opslaan.
Verbindingen aan- en uitzetten¶
Elke verbinding heeft een actief/inactief-toggle in de verbindings-header. Gebruik dit om een verbinding tijdelijk uit te zetten zonder te verwijderen.
Wanneer een verbinding uitstaat:
- De toggle staat uit (grijs) en de verbindings-kaart wordt visueel gedempt
- Bestaande widgets die deze verbinding gebruiken tonen: "Deze verbinding is momenteel uitgeschakeld door een beheerder."
- De verbinding is niet beschikbaar voor nieuwe widgets in de widget-editor
- Alle verbindings-instellingen (tokens, URLs, mappings) blijven bewaard
Wanneer een verbinding weer aan staat:
- Alle widgets geconfigureerd met deze verbinding tonen automatisch weer data
- Geen herconfiguratie nodig — ze behouden hun connectionId-referentie
- Data verschijnt na de volgende refresh (tot 15 minuten door server-side caching, of direct na page-reload)
Aan/uit-toggle wordt direct opgeslagen — geen aparte Verbindingen opslaan-klik nodig.

Verbindingen exporteren en importeren¶
Gebruik de Exporteren- en Importeren-knoppen onderaan de Externe feeds-tab om verbindings-configuraties tussen Nextcloud-instances te transfereren.
Exporteren downloadt alle verbindingen als intravox-feed-connections.json. Dit bevat alleen configuratie — API-tokens, client-secrets en client-ID's worden nooit geëxporteerd om beveiligingsredenen.
Importeren opent een preview-dialoog met:
- Alle verbindingen gevonden in het bestand
- Welke al bestaan (gematcht op naam, getoond als duplicaten)
- Hoeveel nieuwe verbindingen worden toegevoegd
Na bevestiging worden de nieuwe verbindingen toegevoegd met lege token-velden. Voer API-tokens in en klik Verbindingen opslaan.
Verbindings-velden¶
| Veld | Beschrijving | Vereist |
|---|---|---|
| Naam | Weergavenaam voor deze verbinding (bv. "Canvas Universiteit") | Ja |
| Type | Platform-type: Canvas, Moodle, Brightspace, Jira, Confluence, SharePoint, OpenProject of Custom | Ja |
| Basis-URL | De root-URL van het systeem (bv. https://canvas.voorbeeld.com) |
Ja |
| Actief | Schakel deze verbinding aan of uit | Ja |
Voor LMS-typen (Canvas, Moodle, Brightspace) verschijnen extra velden:
| Veld | Beschrijving |
|---|---|
| API-token (admin-fallback) | Gedeelde API-token als fallback wanneer gebruikers geen eigen account hebben gekoppeld |
| Gebruikers-authenticatie | Hoe gebruikers authenticeren — zie Authenticatie-modi hieronder |
Voor REST API-typen (Jira, Confluence, OpenProject, Custom) verschijnen extra velden:
| Veld | Beschrijving |
|---|---|
| Endpoint-pad | API-pad toegevoegd aan de basis-URL (vooraf ingevuld door preset) |
| Auth-methode | Bearer-token, Basic auth, API-key (custom header), of Geen authenticatie |
| API-token | De API-token of credentials. Format hangt af van auth-methode (zie hieronder) |
| Response-mapping | JSON veld-mapping voor titel, URL, samenvatting, datum, afbeelding, auteur (vooraf ingevuld door preset) |
| Custom request-headers | Extra HTTP-headers verstuurd met elke request (bv. OCS-APIRequest: true) |
Auth-methode-details (REST API-typen)¶
| Auth-methode | Token-format | Voorbeeld |
|---|---|---|
| Bearer-token | Plain API-token | ghp_abc123... |
| Basic auth | gebruikersnaam:wachtwoord (auto-encoded naar base64) |
apikey:abc123... (OpenProject) |
| API-key | Plain key + custom header-naam | Key: abc123, Header: X-API-Key |
| Geen authenticatie | — | Publieke API's |
Gebruikers-authenticatie-modi¶
| Modus | Beschrijving | Use case |
|---|---|---|
| Alleen admin-token (gedeeld) | Alle gebruikers zien dezelfde data via de admin-API-token | Simpele setup, geen personalisatie nodig |
| OAuth2 (per-user, gepersonaliseerd) | Elke gebruiker koppelt eigen account via OAuth2 | Volledige personalisatie, gebruikers zien alleen eigen cursussen |
| Beide (OAuth2 met admin-fallback) | Gekoppelde gebruikers zien gepersonaliseerde data; anderen zien gedeelde data | Geleidelijke uitrol, best of both worlds |
OAuth2-configuratie¶
Bij gebruik van OAuth2 of Beide modus verschijnen extra velden:
| Veld | Beschrijving |
|---|---|
| OAuth2 client-ID | Client-ID uit de LMS Developer Key / OAuth2-app |
| OAuth2 client-secret | Client-secret (versleuteld opgeslagen) |
| Redirect-URI | Wordt automatisch getoond — kopieer naar de LMS OAuth2-configuratie |
| OIDC auto-connect | Schakel in als de LMS dezelfde identity-provider als Nextcloud gebruikt (zie hieronder) |
OAuth2 opzetten per LMS¶
Canvas¶
- Ga in Canvas naar Beheer → Developer Keys
- Klik + Developer Key → API Key
- Voer een naam in (bv. "IntraVox")
- Stel de Redirect-URI in op de waarde uit IntraVox-beheerinstellingen
- Klik Opslaan en noteer Client-ID en Client-Secret
- Zet de key op ON (standaard staat hij op OFF)
- Voer Client-ID en Client-Secret in IntraVox in
Moodle¶
Moodle vereist de local_oauth2-plugin om als OAuth2-provider te werken:
- Installeer de
local_oauth2-plugin op je Moodle-instantie - Configureer een OAuth2-client in Moodle met de Redirect-URI uit IntraVox
- Voer Client-ID en Client-Secret in IntraVox in
Alternatief: handmatige tokens. Kan de OAuth2-plugin niet worden geïnstalleerd? Zet auth-modus op Beide en laat OAuth2-velden leeg. Gebruikers kunnen dan hun persoonlijke Moodle web-service-token handmatig invoeren in de Feed-widget-editor. Genereren in Moodle onder Voorkeuren → Beveiligingssleutels.
Brightspace¶
- Ga in Brightspace naar Beheer → Manage Extensibility → OAuth 2.0
- Klik Register an app
- Voer een naam in (bv. "IntraVox") en stel de Redirect-URI in op de waarde uit IntraVox-beheerinstellingen
- Stel scope in op
core:*:*(of meer granulaire scopes naar wens) - Klik Register en noteer Client-ID en Client-Secret
- Voer Client-ID en Client-Secret in IntraVox in
Alternatief: handmatige tokens. Zet auth-modus op Beide en laat OAuth2-velden leeg. Gebruikers kunnen dan een persoonlijke bearer-token uit hun Brightspace Account Settings invoeren.
OpenProject opzetten¶
OpenProject gebruikt Basic-authenticatie met de API v3. De preset vult endpoint, auth-methode en response-mapping vooraf in.
- Ga in OpenProject naar Mijn account → Access tokens
- Klik + API-token en kopieer de token (slechts één keer getoond)
- Klik in IntraVox-beheerinstellingen → Externe feeds op + Verbinding toevoegen
- Selecteer type OpenProject
- Voer de Basis-URL in (bv.
https://openproject.voorbeeld.com) - Voer de API-token in als
apikey:<je-token>(bv.apikey:7def51d5...) - Klik Verbindingen opslaan
De Feed-widget toont dan een Content-type-dropdown met opties: alle work packages, Open, Verlopen, Mijlpalen, en Recent bijgewerkt.
OIDC auto-connect¶
Indien ingeschakeld probeert IntraVox de bestaande Nextcloud-SSO-token van de gebruiker te gebruiken voor toegang tot de LMS-API — zonder gebruikers-interactie. Dit werkt wanneer:
- Nextcloud en de LMS zijn verbonden met dezelfde identity-provider (bv. Keycloak, Azure AD, Authentik)
- De Nextcloud
user_oidc-app is geïnstalleerd metstore_login_tokenaan - De identity-provider-token heeft de juiste audience/scope voor de LMS-API
Dit is de meest naadloze ervaring voor eind-gebruikers, maar vereist gedeelde SSO-infrastructuur.
Beveiligings-notes¶
- API-tokens en OAuth2-client-secrets zijn at-rest versleuteld via Nextcloud's
ICrypto-service - Per-user OAuth2-tokens (Canvas, Moodle, Brightspace) zijn versleuteld in de database opgeslagen en worden automatisch ververst bij verlopen
- Wanneer een Nextcloud-gebruiker wordt verwijderd, worden al hun opgeslagen LMS-tokens automatisch opgeruimd
- De admin-API-token wordt nooit aan eind-gebruikers blootgesteld — alleen server-side gebruikt
Demo-data-tab¶

Per-taal demo-content: installeer, herinstalleer, of clean-start een complete demo-intranet in een van de ondersteunde talen.
Demo-data installeren¶
- Ga naar Nextcloud-beheerinstellingen → IntraVox
- Selecteer de tab Demo-data
- Klik Installeren naast de taal die je wilt opzetten
- De GroupFolder en permissie-groepen worden automatisch aangemaakt als ze niet bestaan
Status-indicators¶
Het beheer-instellingen-paneel toont:
| Badge | Betekenis |
|---|---|
| Geïnstalleerd | Demo-data is geïnstalleerd en klaar |
| Niet geïnstalleerd | Geen content voor deze taal |
| Lege folder | Folder bestaat maar is leeg |
| Volledig intranet | Complete demo met alle pagina's |
| Alleen homepage | Basis-demo met homepage |
Beschikbare talen¶
| Taal | Vlag | Content-type |
|---|---|---|
| Nederlands | 🇳🇱 | Volledig intranet |
| Engels | 🇬🇧 | Volledig intranet |
| Duits | 🇩🇪 | Alleen homepage |
| Frans | 🇫🇷 | Alleen homepage |
Demo-data opnieuw installeren¶
Om demo-content terug te zetten naar originele staat:
- Klik Herinstalleren naast de taal
- Bevestig de actie
- Alle bestaande content voor die taal wordt vervangen door verse demo-data
Waarschuwing: herinstalleren verwijdert alle aanpassingen aan de demo-content.
Clean Start¶
De Clean Start-knop verwijdert alle content voor een taal en maakt een verse lege homepage. Dit is een onomkeerbare destructieve operatie — je moet DELETE typen in de bevestigings-dialoog om door te gaan.
Beveiligings-overwegingen¶
Video-embeds¶
- Alleen whitelisted domeinen kunnen worden embedded
- Alle externe video's gebruiken HTTPS
- Iframe-sandboxing wordt toegepast
- Geblokkeerde video's tonen domein-naam voor transparantie
Aanbevelingen¶
- Schakel alleen video-services in die je organisatie vertrouwt
- Geef voorkeur aan privacy-vriendelijke opties (YouTube privacy-modus, PeerTube)
- Review custom-domeinen vóór toevoegen
- Audit ingeschakelde services regelmatig
Problemen oplossen¶
Video's spelen niet af¶
- Check of het domein op de whitelist staat in admin-instellingen
- Verifieer dat de video-URL klopt
- Check browser-console op fouten
- Zorg dat de video-service embedding toestaat
Demo-data installeert niet¶
- Verifieer dat PHP
memory_limitminimaal 256 MB is - Check Nextcloud-logs op fouten
- Zorg dat de GroupFolders-app is ingeschakeld
- Probeer via command line:
Custom-domein werkt niet¶
- Verifieer dat het domein HTTPS gebruikt
- Check of de video-server iframe-embedding toestaat
- Test de video-URL direct in een browser
- Check op CORS- of X-Frame-Options-beperkingen