Skip to content

IntraVox Administrator Guide

This guide covers installation, configuration, and maintenance of IntraVox for Nextcloud administrators.

Related documentation: - Admin Settings Guide - Demo data and video services configuration - Engagement Admin Guide - Reactions and comments configuration - Authorization Guide - Permissions and access control - Scalability & Enterprise Readiness - Performance, caching, rate limiting, GDPR - Scenarios - Practical recipes (approval workflows, department intranets) - Architecture - Technical architecture - Engagement Architecture - Engagement system technical details

System Requirements

Component Minimum Recommended
Nextcloud 32+ 32+
PHP 8.1+ 8.2+
PHP memory_limit 256MB 512MB
GroupFolders app Required Required

Note: The default PHP memory_limit of 128MB is insufficient for IntraVox. Demo data installation and large pages require at least 256MB. Increase this in your php.ini:

memory_limit = 512M

Installation

  1. Go to Nextcloud Admin → Apps
  2. Search for "IntraVox"
  3. Click "Download and enable"

Option 2: Manual Installation

  1. Download the latest release from GitHub
  2. Extract to custom_apps/intravox/
  3. Enable via Admin → Apps or occ app:enable intravox
cd /var/www/nextcloud/custom_apps
wget https://github.com/your-repo/intravox/releases/latest/download/intravox.tar.gz
tar -xzf intravox.tar.gz
sudo -u www-data php /var/www/nextcloud/occ app:enable intravox

Permission Groups

IntraVox automatically creates three permission groups during installation:

Group Purpose Permissions
IntraVox Admins Full administrative access Read, Write, Create, Delete, Share
IntraVox Editors Content editing access Read, Write, Create
IntraVox Users Standard read access Read, Share

Automatic Admin Synchronization

When IntraVox is installed or re-enabled, all Nextcloud administrators (members of the admin group) are automatically added to the IntraVox Admins group. This ensures:

  • All NC admins have full IntraVox permissions
  • CLI installations (occ app:enable intravox) work correctly
  • Consistent behavior regardless of who installs the app

Adding Users

To give users access to IntraVox:

  1. For read access: Add users to the IntraVox Users group
  2. For editing access: Add users to the IntraVox Editors group (can create and edit pages, but not delete)
  3. For admin access: Add users to the IntraVox Admins group (or make them a Nextcloud admin)

You can manage group membership via: - Nextcloud Admin → Users → Edit user → Groups - Command line: occ group:adduser "IntraVox Editors" username

Initial Setup

Automatic Setup

When IntraVox is first accessed, it automatically: 1. Creates the permission groups (IntraVox Admins, IntraVox Editors, and IntraVox Users) 2. Syncs Nextcloud admins to IntraVox Admins 3. Creates a GroupFolder named "IntraVox" 4. Sets up the basic folder structure 5. Initializes navigation files

Manual Setup

If automatic setup fails, create the GroupFolder manually:

  1. Go to Admin → GroupFolders
  2. Create a new folder named exactly "IntraVox"
  3. Add at least one group with permissions

GroupFolder Configuration

Adding Groups

  1. Go to Admin → GroupFolders
  2. Find the "IntraVox" folder
  3. Click "Add group"
  4. Select the group and set permissions
Group Purpose Permissions
everyone / all-users All employees Read, Share
intranet-editors Content creators Read, Write, Create, Share
intranet-admins Full administrators All

Important: User groups need both Read and Share permission. The Share permission is required for the RSS feed to work — without it, GroupFolders hides folders from public feed requests. This also applies to ACL rules on subfolders.

Enabling ACL (Advanced Permissions)

For department-based access control:

  1. In GroupFolders, click the settings icon for IntraVox
  2. Enable "Advanced Permissions"
  3. Navigate to subfolders in Nextcloud Files
  4. Use the sharing panel to set ACL rules

See AUTHORIZATION.md for detailed permission setup.

Language Configuration

IntraVox supports multiple languages. Each language has its own content folder. Important: Each user sees the content folder that matches their Nextcloud language setting (Settings → Personal → Language). If a user's language doesn't match any available content folder, they will see an empty intranet instead of the expected content.

IntraVox/
├── nl/           # Dutch content
├── en/           # English content
├── de/           # German content
└── fr/           # French content

Adding a New Language

  1. Create the language folder in IntraVox GroupFolder
  2. Create navigation.json with navigation structure
  3. Create footer.json with footer content
  4. Create home.json for the homepage

Example minimal structure:

IntraVox/
└── es/
    ├── navigation.json
    ├── footer.json
    └── home.json

Demo Data

IntraVox includes demo content to help you get started quickly. Demo data can be installed and managed via Nextcloud Admin SettingsIntraVox.

Quick Start

  1. Go to Nextcloud Admin SettingsIntraVox
  2. Click Install next to your preferred language
  3. The GroupFolder and permission groups are created automatically

Important: Your Nextcloud language setting must match the demo data language. For example, if you install the Dutch demo data, set your language to Nederlands (Settings → Personal → Language). Otherwise you will see an empty Welcome page instead of the demo content.

Available Languages

Language Content
Nederlands 🇳🇱 Full intranet
English 🇬🇧 Full intranet
Deutsch 🇩🇪 Homepage only
Français 🇫🇷 Homepage only

Command Line Installation

sudo -u www-data php occ intravox:import-demo-data --language=en

See ADMIN_SETTINGS.md for detailed demo data management.

Maintenance

Clearing Cache

IntraVox uses Nextcloud's caching. To clear:

sudo -u www-data php occ files:scan --all
sudo -u www-data php occ maintenance:repair

Backup

The IntraVox GroupFolder contains all content. Backup strategies:

  1. File backup: Include the GroupFolder in your file backups
  2. Nextcloud backup: Standard Nextcloud backup includes GroupFolders
  3. Export: Copy the IntraVox folder structure for migration

Health Check

A public endpoint is available for monitoring and orchestration (e.g., Kubernetes liveness probes, uptime monitoring):

GET /apps/intravox/api/health
→ {"status": "ok", "app": "intravox", "version": "1.3.0"}

Audit Logs

Administrative operations are logged with the IntraVox Audit: prefix. Filter for these in your SIEM or log aggregator:

grep "IntraVox Audit" /var/www/nextcloud/data/nextcloud.log

Logged operations: bulk delete/move/update (with page IDs and acting user), license key changes, organization settings, engagement settings.

Log Files

IntraVox logs to the Nextcloud log. View with:

tail -f /var/www/nextcloud/data/nextcloud.log | grep -i intravox

Or in Nextcloud Admin → Logging.

Anonymous Usage Statistics

IntraVox can periodically send anonymous usage statistics to help improve the app. This is opt-in and can be toggled from Settings → IntraVox.

Anonymous usage statistics panel

Toggle Share anonymous usage statistics to enable or disable telemetry. The panel shows when the last report was sent.

What we collect: - Page counts per language - Total user count and active users - IntraVox, Nextcloud and PHP version numbers - A unique hash of your instance URL (privacy-friendly identifier)

What we never collect: - Page content or titles - User names or email addresses - Your actual server URL - Any personal or sensitive data

No personally identifiable information leaves the server. Reports are sent at most once a day.

Troubleshooting

"GroupFolder not found" Error

  1. Verify GroupFolders app is enabled
  2. Check that a folder named exactly "IntraVox" exists
  3. Ensure the current user's group has access
sudo -u www-data php occ app:list | grep groupfolders

Permissions Not Working

  1. Check user is member of a group with GroupFolder access
  2. Verify ACL rules if using Advanced Permissions
  3. Check Nextcloud log for permission errors
  4. Try: occ groupfolders:scan

Pages Not Showing

  1. Verify JSON files are valid (no syntax errors)
  2. Check file permissions on the server
  3. Ensure files are in correct folder structure
  4. Check browser console for JavaScript errors
  1. Clear browser cache
  2. Verify navigation.json is valid JSON
  3. Check that page uniqueIds match between navigation and pages

Images/Videos Not Loading

  1. Verify files exist in the _media/ subfolder
  2. Check file permissions
  3. Ensure file paths in JSON match actual filenames
  4. Try re-uploading the file via Nextcloud Files
  5. For videos: Check that the video domain is whitelisted in Admin Settings

Performance

Optimization Tips

  1. Image sizes: Keep images under 500KB for faster loading
  2. Page structure: Avoid deeply nested pages (max 3-4 levels)
  3. Navigation: Keep navigation items reasonable (< 100 total)

Caching

IntraVox relies on Nextcloud's caching layer. For best performance: - Enable Redis or APCu caching in Nextcloud - Use a CDN for static assets if available

Updates

Updating IntraVox

Via App Store: 1. Go to Admin → Apps → Updates 2. Update IntraVox

Via command line:

sudo -u www-data php occ app:update intravox

Version Compatibility

Always check the CHANGELOG.md for breaking changes before updating.

Video Widget Configuration

IntraVox includes a Video Widget for embedding videos from external platforms or uploading local video files. Administrators control which platforms are allowed via Nextcloud Admin SettingsIntraVoxVideo Services.

Default Services

Service Privacy
YouTube (privacy mode) Enhanced - no tracking
Vimeo Standard

Quick Configuration

  1. Go to Admin SettingsIntraVoxVideo Services
  2. Toggle services on/off
  3. Add custom domains for corporate video servers

Security

  • Only whitelisted domains can be embedded
  • Videos from unknown domains are blocked
  • Only HTTPS sources allowed

See ADMIN_SETTINGS.md for detailed video configuration.

RSS Feed Configuration

IntraVox provides a personal RSS feed for each user. The feed is a public endpoint secured by a personal token. As an administrator, you need to configure two things for feeds to work.

Prerequisites

  1. Enable link sharing: Go to Nextcloud Admin SettingsSharing and enable "Allow users to share via link and emails"
  2. Grant Share permission: Ensure user groups have both Read and Share permissions on the IntraVox GroupFolder

Without link sharing enabled, feeds are completely blocked. Without Share permission, feeds return empty.

GroupFolder Permission Setup

The feed endpoint runs without an authenticated user session. In this context, GroupFolders requires both Read and Share permissions for folders to be visible. This applies to both base GroupFolder permissions and ACL rules.

Without ACL: Set the base permissions for each user group to include Read and Share.

With ACL: Ensure Read + Share is set on every folder in the hierarchy that should be visible in the feed. A subfolder is only reachable if all its parent folders are also visible.

Example: To make Marketing pages visible in the feed for IntraVox Users:

IntraVox (base: Read + Share)
└── en/                      → ACL: Read + Share
    └── departments/         → ACL: Read + Share
        ├── marketing/       → ACL: Read + Share  ✓ visible in feed
        ├── hr/              → ACL: Deny all       ✗ hidden
        └── sales/           → ACL: Deny all       ✗ hidden

Troubleshooting

Problem Solution
Admin sees empty Welcome page after demo import Your Nextcloud language setting doesn't match the demo data language. Change it at Settings → Personal → Language, then clear browser cache or use an incognito window
Users see empty feed Add Share permission to the user group on the language folder(s)
Feed returns 404 Enable "Allow users to share via link and emails" in Sharing settings
Feed works for admins but not regular users Admin group has all permissions; add Share to the user group
Some pages missing from feed Check ACL rules on the specific subfolder and all parent folders

See RSS_FEED.md for the full technical details.

Page Locking

IntraVox uses pessimistic locking to prevent concurrent edits. When a user starts editing a page, it is locked for other users.

  • Locks auto-expire after 15 minutes without activity
  • A heartbeat signal keeps the lock alive during active editing
  • Locks are released on save, cancel, navigation, or tab close

Admin override: IntraVox Admins can force-unlock a page locked by another user. This is useful when a lock was left behind (e.g. after a browser crash). The "Unlock" button appears next to the lock indicator for admins.

Draft Pages

New pages are created as Draft by default. Draft pages are only visible to users with write permission on the page folder.

  • Editors (write permission) can see and edit draft pages
  • Readers (read-only permission) cannot see draft pages at all
  • Draft pages are excluded from: search results, RSS feeds, public share links, and the page tree for readers
  • Editors toggle the status via the Draft/Published button in the edit toolbar

No additional configuration is required. The draft system uses the existing GroupFolder ACL permissions to determine visibility.

Security Considerations

  1. Permissions: Use principle of least privilege
  2. Content: Review user-generated content for sensitive information
  3. Media files: Be aware that uploaded images and videos are accessible to all users with read permission
  4. External links: Content editors can add external links - review navigation regularly
  5. Video embeds: Only allow trusted video platforms via the admin settings
  6. Page locking: Locks prevent concurrent edits but auto-expire after 15 minutes — admins can force-unlock if needed
  7. Draft pages: Draft pages are hidden from readers but visible to all users with write permission on the folder

Integration

MetaVox Integration

If MetaVox is installed, IntraVox can: - Use MetaVox department colors - Respect MetaVox navigation structure - Share theming settings

Theming

IntraVox uses Nextcloud theming variables: - Primary color from Nextcloud settings - Logo from Nextcloud theming - Font settings from Nextcloud

Support

  • GitHub Issues: Report bugs and feature requests
  • Documentation: See other docs/ files for specific topics
  • Nextcloud Forums: Community support