Troubleshooting
Common issues and solutions for Riven
Troubleshooting Guide
This guide covers common issues you might encounter with Riven and their solutions.
Installation & Setup Issues
Docker container won't start
Symptoms: Container exits immediately or fails healthcheck
Solutions:
-
Check logs:
docker logs riven
-
Database connection issues:
- Verify PostgreSQL container is running and healthy
- Check
RIVEN_DATABASE_HOST
environment variable - Ensure database credentials are correct
-
FUSE device not available:
# Check if /dev/fuse exists ls -l /dev/fuse # If missing, load fuse module sudo modprobe fuse
-
Permission issues:
- Verify
PUID
andPGID
match your user - Check ownership of data and mount directories
- Verify
"Cross-site POST form submissions are forbidden" error
Symptoms: Getting 403 errors when saving settings in the frontend
Solutions:
-
Check ORIGIN environment variable:
- Must match the URL you're accessing the frontend from
- Example: If accessing via
http://192.168.1.100:3000
, setORIGIN=http://192.168.1.100:3000
-
Behind reverse proxy:
- Remove the
ORIGIN
variable entirely - Your reverse proxy should handle CORS headers
- Remove the
-
Using HTTPS:
- Ensure
ORIGIN
useshttps://
nothttp://
- Ensure
VFS & Filesystem Issues
Media server shows empty /mount directory
Symptoms: /mount
appears empty or files disappear after Riven restart
This is the most common issue - usually mount propagation.
Solutions:
-
Verify host mount is shared:
findmnt -T /path/to/riven/mount -o TARGET,PROPAGATION # Should show: shared or rshared
If not shared:
sudo mount --bind /path/to/riven/mount /path/to/riven/mount sudo mount --make-rshared /path/to/riven/mount
-
Check container mount propagation:
# Inside media server container docker exec -it plex sh -c 'findmnt -T /mount -o TARGET,PROPAGATION,FSTYPE' # Should show: # PROPAGATION: rslave or rshared # FSTYPE: fuse (when VFS is mounted)
-
Verify docker-compose.yml:
- Riven container:
/path/to/riven/mount:/mount:rshared,z
- Media server:
/path/to/riven/mount:/mount:rslave,z
- Riven container:
-
Check Riven logs:
docker logs riven | grep -i "vfs\|mount\|fuse"
-
Clear stale FUSE mount:
# If Riven crashed and left a stale mount sudo fusermount -uz /path/to/riven/mount # or sudo umount -l /path/to/riven/mount # Then restart Riven
Files not appearing in VFS
Symptoms: Items marked "Completed" but files don't show in /mount
Solutions:
-
Check item state:
- Open the item in Riven web UI
- Verify state is "Completed"
- Check if filesystem_entry exists
-
Check Riven logs:
docker logs riven | grep -i "filesystem\|vfs"
-
Verify debrid service:
- Log into your debrid service web UI
- Confirm the torrent/files still exist
- Check if files were deleted due to inactivity
-
Check VFS mount:
# Inside Riven container docker exec -it riven ls -la /mount # Should show movies/, shows/, etc.
-
Re-register files:
- In Riven UI, try removing and re-adding the item
- Or trigger a library re-scan
VFS mount failed to start
Symptoms: Logs show "Failed to initialize RivenVFS" or FUSE errors
Solutions:
-
Check FUSE is available:
# On host ls -l /dev/fuse modprobe fuse
-
Verify container capabilities:
- docker-compose.yml must include:
cap_add: - SYS_ADMIN security_opt: - apparmor:unconfined devices: - /dev/fuse
- docker-compose.yml must include:
-
Check mount path permissions:
# Mount path should be writable docker exec -it riven touch /mount/test
-
SELinux systems:
- Ensure
:z
flag is present in volume mount - May need to adjust SELinux policies
- Ensure
Scraping & Downloading Issues
No torrents found
Symptoms: Items stuck in "Scraped" or "Failed" state with no streams
Solutions:
-
Check scraper configuration:
- Verify at least one scraper is enabled
- Check API keys for Jackett/Prowlarr/etc.
- Test scraper URLs manually
-
Check scraper logs:
docker logs riven | grep -i "scraper\|torrent"
-
Verify ranking settings:
- Settings might be too restrictive
- Try relaxing quality filters temporarily
-
Check debrid service:
- Some torrents may not be cached
- Try different scrapers
-
Manually scrape:
- Use the manual scrape feature in the web UI
- Select torrents directly
Items stuck in "Downloaded" state
Symptoms: Torrent added to debrid but item doesn't progress
Solutions:
-
Check debrid service:
- Log into debrid web UI
- Verify torrent is actually downloaded (100%)
- Check if files are still available
-
Check file size filters:
- Settings → Downloaders
- Verify
movie_filesize_mb_min/max
andepisode_filesize_mb_min/max
- Ensure files aren't being filtered out
-
Check video extensions:
- Settings → Downloaders →
video_extensions
- Ensure file types are included (mp4, mkv, avi)
- Settings → Downloaders →
-
Force refresh:
- Remove the item and re-add it
- Or use the "Retry" button in the UI
Debrid API errors
Symptoms: "API key invalid" or rate limit errors
Solutions:
-
Verify API key:
- Check the API key in Settings
- Generate a new key from your debrid service
- Ensure no extra spaces or quotes
-
Rate limiting:
- Real-Debrid has API rate limits
- Riven includes built-in rate limiting
- Wait a few minutes and try again
-
Proxy settings:
- If behind VPN/proxy, set
proxy_url
in downloader settings
- If behind VPN/proxy, set
-
Service status:
- Check if debrid service is down: https://status.real-debrid.com/
- Try a different debrid service temporarily
Content Service Issues
Overseerr webhook not working
Symptoms: Requests in Overseerr not appearing in Riven
Solutions:
-
Verify webhook URL:
- Should be:
http://riven:8080/api/v1/webhook/overseerr
- Or:
http://<riven-ip>:8080/api/v1/webhook/overseerr
- Should be:
-
Check authorization header:
- Format:
Bearer <YOUR_RIVEN_API_KEY>
- Get API key from Riven settings
- Format:
-
Test webhook:
- Approve a test request in Overseerr
- Check Riven logs for webhook receipt
-
Network connectivity:
- Ensure Overseerr can reach Riven
- Try pinging from Overseerr container
Trakt not syncing
Symptoms: Watchlist items not appearing in Riven
Solutions:
-
Check API key:
- Verify Trakt API key is correct
- May need to re-authorize OAuth if using
-
Check update interval:
- Default is 86400 seconds (24 hours)
- Lower it temporarily to test
-
Manual trigger:
- Restart Riven to force immediate sync
- Or wait for next update cycle
-
Check logs:
docker logs riven | grep -i "trakt"
Media Server Integration Issues
Plex not scanning new content
Symptoms: New files in VFS but Plex doesn't see them
Solutions:
-
Enable auto-scan:
- Plex Settings → Library
- Enable "Scan my library automatically"
-
Manual scan:
- Hover over library → "Scan Library Files"
-
Check updater settings:
- Riven Settings → Updaters → Plex
- Verify enabled and configured
- Check Plex URL and token
-
Verify library paths:
- Plex libraries should point to:
/mount/movies
for movies/mount/shows
for TV shows
- Plex libraries should point to:
-
Check Plex logs:
- Look for filesystem access errors
Jellyfin/Emby not updating
Symptoms: Similar to Plex issues
Solutions:
-
Check updater configuration:
- Settings → Updaters
- Verify API key and URL
-
Test API connection:
curl -H "X-Emby-Token: YOUR_API_KEY" http://jellyfin:8096/System/Info
-
Manual library scan:
- Use Jellyfin/Emby web UI
- Dashboard → Libraries → Scan Library
-
Check logs:
docker logs riven | grep -i "jellyfin\|emby"
Performance Issues
Slow streaming / buffering
See the Performance Tuning guide for detailed solutions.
Quick fixes:
-
Increase prefetch:
fetch_ahead_chunks = 6-8
-
Increase cache:
cache_max_size_mb = 20480
(20 GB)
-
Use tmpfs for cache:
cache_dir = /dev/shm/riven-cache
-
Check network speed:
- Test connection to debrid CDN
High CPU usage
Symptoms: Riven using excessive CPU
Solutions:
-
Check concurrent operations:
- Multiple scraping sessions
- Reduce concurrent scraper requests
-
Database optimization:
- Older installations may have large databases
- Consider periodic cleanup
-
Disable cache metrics:
cache_metrics = false
(reduces logging overhead)
High memory usage
Symptoms: Riven consuming too much RAM
Solutions:
-
Reduce cache size:
- Lower
cache_max_size_mb
- Lower
-
Use disk-based cache:
- Instead of
/dev/shm
, use a disk path
- Instead of
-
Check for memory leaks:
- Restart Riven periodically
- Update to latest version
Database Issues
"Database is locked" errors
Symptoms: SQLite locked database errors
Riven should use PostgreSQL, not SQLite. SQLite is not recommended for production.
Solutions:
-
Switch to PostgreSQL:
- Follow the docker-compose.yml in the installation guide
- PostgreSQL handles concurrent access better
-
Backup and migrate:
- Export your data
- Set up PostgreSQL
- Restart fresh
Database migration failures
Symptoms: Errors during Riven startup about database schema
Solutions:
-
Check logs:
docker logs riven | grep -i "alembic\|migration"
-
Manual migration:
docker exec -it riven alembic upgrade head
-
Backup first:
docker exec -it riven-db pg_dump -U postgres riven > backup.sql
-
Last resort - reset database:
- ONLY if you're okay losing data
- Stop containers, delete database volume, restart
Logging & Debugging
Enable debug logging
# Set in docker-compose.yml
RIVEN_DEBUG=DEBUG
View specific logs
# VFS logs
docker logs riven 2>&1 | grep -i "vfs\|fuse\|mount"
# Scraper logs
docker logs riven 2>&1 | grep -i "scraper\|torrent"
# Database logs
docker logs riven 2>&1 | grep -i "database\|sql"
Follow logs in real-time
docker logs -f riven
Getting Help
If none of these solutions work:
- Check GitHub Issues: https://github.com/rivenmedia/riven/issues
- Join Discord: https://discord.gg/rivenmedia
- Provide Details:
- Riven version
- Docker/OS version
- Full logs (use pastebin)
- Configuration (remove API keys!)
- Steps to reproduce
See Also
- Filesystem (VFS) - VFS configuration and troubleshooting
- Architecture - Understanding how Riven works
- Performance Tuning - Optimize your setup