Skip to main content

Docker Development Setup

OpenRegister includes a complete Docker Compose setup for developers and partners. This guide will help you quickly get started with a fully-configured development environment including Nextcloud, MariaDB, Solr, and Ollama.

๐Ÿš€ Two Setup Modesโ€‹

OpenRegister provides two docker-compose configurations to suit different needs:

FeatureProduction/Testing ModeDeveloper Mode
Filedocker-compose.ymldocker-compose.dev.yml
Best ForPartners, testers, evaluationDevelopers, contributors
App SourceNextcloud App StoreLocal code (mounted)
Code ChangesโŒ Not possibleโœ… Live editing
DependenciesAuto-downloadedAuto-built from source
Startup Time~2-3 minutes~3-5 minutes
Use CaseTesting featuresDeveloping features
Commanddocker-compose up -ddocker-compose -f docker-compose.dev.yml up -d

๐Ÿ“ฆ Production/Testing Mode (docker-compose.yml)โ€‹

Perfect for partners, testers, and quick evaluation.

  • โœ… Downloads OpenRegister from Nextcloud App Store
  • โœ… Automatically installs and enables the app
  • โœ… Production-ready configuration
  • โœ… No local code required

Usage:

docker-compose up -d

๐Ÿ‘จโ€๐Ÿ’ป Developer Mode (docker-compose.dev.yml)โ€‹

Perfect for developers working on OpenRegister code.

  • โœ… Mounts local code into the container
  • โœ… Automatically builds dependencies
  • โœ… Live code changes (use npm run watch)
  • โœ… Full development environment

Usage:

docker-compose -f docker-compose.dev.yml up -d

Overviewโ€‹

The docker-compose setup provides:

  • Nextcloud: Latest version with OpenRegister pre-mounted
  • MariaDB: Database backend for Nextcloud
  • Solr: Full-text search engine in standalone mode
  • Ollama: Local LLM inference for AI features (privacy-focused, no external API needed)
  • Persistent Volumes: Data preservation across container restarts

Quick Startโ€‹

Prerequisitesโ€‹

  • Docker and Docker Compose installed
  • WSL2 (for Windows users)
  • At least 8GB RAM available
  • 20GB free disk space

Production/Testing Mode (App Store)โ€‹

Use this if: You want to test OpenRegister without modifying code.

  1. Navigate to the openregister directory:
cd /path/to/apps-extra/openregister
  1. Start all services:
docker-compose up -d
  1. Wait for services to initialize (first start takes 2-3 minutes):
# Watch the logs (including OpenRegister auto-setup)
docker-compose logs -f nextcloud

# Check service health
docker-compose ps

What's happening during startup:

  • Nextcloud initializes the database
  • OpenRegister is downloaded from App Store
  • The app is automatically enabled
  • Ready to use!
  1. Access Nextcloud:
  • URL: http://localhost:8080
  • Username: 'admin'
  • Password: 'admin'
  • OpenRegister is already enabled and ready!

Developer Mode (Local Code)โ€‹

Use this if: You want to develop and make changes to OpenRegister code.

  1. Navigate to the openregister directory:
cd /path/to/apps-extra/openregister
  1. Start all services:
docker-compose -f docker-compose.dev.yml up -d
  1. Wait for services to initialize (first start takes 3-5 minutes):
# Watch the logs (including dependency installation and build)
docker-compose -f docker-compose.dev.yml logs -f nextcloud

# Check service health
docker-compose -f docker-compose.dev.yml ps

What's happening during startup:

  • Nextcloud initializes the database
  • Composer dependencies are installed
  • NPM dependencies are installed
  • Frontend assets are built
  • The app is enabled and ready
  1. Access Nextcloud:
  1. Enable live development:
# On your host machine, run:
npm run watch

Now any changes to Vue/JS files will automatically rebuild!

Service Configurationโ€‹

Nextcloudโ€‹

Container Name: 'nextcloud'
Port: 8080 โ†’ 80
Volumes:

  • 'nextcloud:/var/www/html' - Nextcloud core files
  • './custom_apps:/var/www/html/custom_apps' - Custom apps folder
  • '.:/var/www/html/custom_apps/openregister' - OpenRegister app (mounted for development)
  • './docker/entrypoint-openregister.sh' - Auto-setup script

Environment:

  • PHP Memory Limit: 4G
  • Upload Limit: 2G
  • Post Max Size: 2G
  • Timezone: Europe/Amsterdam

Database Connection:

  • Host: 'db'
  • Database: 'nextcloud'
  • User: 'nextcloud'
  • Password: '!ChangeMe!'

Auto-Setup:

  • On startup, automatically installs dependencies and enables OpenRegister
  • Script location: 'docker/entrypoint-openregister.sh'
  • Runs in background while Nextcloud starts

MariaDBโ€‹

Container Name: 'db'
Port: Not exposed (internal only)
Version: MariaDB 10.6

Database Credentials:

  • Root Password: '!ChangeMe!'
  • Database: 'nextcloud'
  • User: 'nextcloud'
  • Password: '!ChangeMe!'

Features:

  • Transaction isolation: READ-COMMITTED
  • Binary logging enabled
  • Persistent volume for data

Solr (Search Engine)โ€‹

Container Name: 'openregister-solr'
Port: 8983 โ†’ 8983
Version: Solr 9 (slim)

Configuration:

  • Mode: Standalone (simpler for development)
  • Heap Size: 512MB
  • No external dependencies

Access:

Internal URL for Nextcloud: Use 'http://solr:8983' in OpenRegister Solr configuration.

Ollama (Local LLM)โ€‹

Container Name: 'openregister-ollama'
Port: 11434 โ†’ 11434
Image: ollama/ollama:latest

Configuration:

  • Host: '0.0.0.0' (accessible from other containers)
  • Volume: 'ollama:/root/.ollama' (persistent model storage)

Internal URL for Nextcloud: Use 'http://ollama:11434' in OpenRegister LLM configuration.

Models Location: Models are stored in the persistent volume and survive container restarts.

Initial Configurationโ€‹

1. Verify OpenRegister is Enabledโ€‹

The app is automatically enabled during container startup. You can verify with:

# Check app status
docker exec -u 33 nextcloud php /var/www/html/occ app:list | grep openregister

# View auto-setup logs
docker logs nextcloud | grep "OpenRegister"

2. Setup Solrโ€‹

Initialize Solr infrastructure:

# Setup Solr collections and schema
docker exec -u 33 nextcloud php /var/www/html/occ openregister:solr:manage setup

# Verify Solr health
docker exec -u 33 nextcloud php /var/www/html/occ openregister:solr:manage health

3. Configure Ollamaโ€‹

Download Modelsโ€‹

Before using Ollama, you need to download the AI models:

# Download embedding model (required for search)
docker exec openregister-ollama ollama pull nomic-embed-text

# Download chat model (choose one based on your needs)

# Recommended: Meta Llama 3.1 (best balance, function calling support)
docker exec openregister-ollama ollama pull llama3.1

# Alternative: Mistral (European AI, ethical focus)
docker exec openregister-ollama ollama pull mistral

# Alternative: Phi-3 (smaller, efficient)
docker exec openregister-ollama ollama pull phi3

# High Quality (requires powerful hardware)
docker exec openregister-ollama ollama pull llama3.1:70b

Configure in OpenRegisterโ€‹

  1. Log in to Nextcloud (http://localhost:8080)
  2. Go to Settings โ†’ Administration โ†’ OpenRegister
  3. Navigate to LLM Configuration
  4. Set up Ollama:
    • Embedding Provider: Ollama
    • Ollama URL: 'http://ollama:11434'
    • Embedding Model: 'nomic-embed-text'
    • Chat Provider: Ollama
    • Chat Model: 'llama3.1' (or your chosen model)

Development Workflowโ€‹

Production/Testing Modeโ€‹

For testing and evaluation (no code changes):

# View logs
docker-compose logs -f nextcloud

# Restart services
docker-compose restart nextcloud

# Stop services
docker-compose down

# Start services
docker-compose up -d

Developer Modeโ€‹

For active development with code changes:

Making Code Changesโ€‹

The OpenRegister directory is mounted directly into the container, so changes are immediately available:

# Install dependencies (run on host)
npm install
composer install

# Watch for frontend changes (automatic rebuild)
npm run watch

# Lint code
npm run lint

Viewing Logsโ€‹

# All services
docker-compose -f docker-compose.dev.yml logs -f

# Specific service
docker-compose -f docker-compose.dev.yml logs -f nextcloud
docker-compose -f docker-compose.dev.yml logs -f solr
docker-compose -f docker-compose.dev.yml logs -f ollama

# Filter logs
docker logs nextcloud-dev | grep 'OpenRegister'

Restarting Servicesโ€‹

# Restart all services
docker-compose -f docker-compose.dev.yml restart

# Restart specific service
docker-compose -f docker-compose.dev.yml restart nextcloud
docker-compose -f docker-compose.dev.yml restart ollama

Database Accessโ€‹

Connect to the database from your host machine:

Using Docker:

docker exec -it db mysql -u nextcloud -p'!ChangeMe!' nextcloud

Using DBeaver or other DB tools:

  • Host: 'localhost'
  • Port: 3306 (if exposed in your docker-compose)
  • Database: 'nextcloud'
  • Username: 'nextcloud'
  • Password: '!ChangeMe!'

Accessing Containersโ€‹

# Access Nextcloud container
docker exec -it nextcloud bash

# Access as www-data user (for occ commands)
docker exec -it -u 33 nextcloud bash

# Access Ollama container
docker exec -it openregister-ollama bash

AI Features Testingโ€‹

Test Ollama Connectionโ€‹

# Check if Ollama is running
docker exec openregister-ollama curl -s http://localhost:11434/api/tags

# List downloaded models
docker exec openregister-ollama ollama list

# Test model inference
docker exec openregister-ollama ollama run llama3.1 "Hello, how are you?"

Test Vectorizationโ€‹

  1. Create a test object in OpenRegister
  2. Check if it was vectorized:
docker exec -u 33 nextcloud php /var/www/html/occ openregister:solr:debug query "your search term"

Monitor Model Performanceโ€‹

# Watch Ollama logs
docker logs -f openregister-ollama

# Check resource usage
docker stats openregister-ollama

Troubleshootingโ€‹

Auto-Setup Issuesโ€‹

If OpenRegister isn't automatically enabled:

# Check auto-setup logs
docker logs nextcloud | grep "OpenRegister"

# Manually trigger setup
docker exec -u 33 nextcloud bash /entrypoint-openregister.sh

# Or manually enable
docker exec -u 33 nextcloud php /var/www/html/occ app:enable openregister

Container Won't Startโ€‹

# Check container status
docker-compose ps

# View error logs
docker-compose logs [service-name]

# Restart specific service
docker-compose restart [service-name]

Nextcloud Installation Issuesโ€‹

# Reset Nextcloud (WARNING: destroys data)
docker-compose down -v
docker-compose up -d

Solr Connection Issuesโ€‹

# Check if Solr is accessible from Nextcloud
docker exec nextcloud curl -s http://solr:8983/solr/admin/info/system

# Check Solr health
docker exec openregister-solr curl -s http://localhost:8983/solr/admin/info/system

# View Solr logs
docker logs openregister-solr

Ollama Issuesโ€‹

# Check if Ollama is accessible
docker exec nextcloud curl -s http://ollama:11434/api/tags

# Check Ollama logs
docker logs openregister-ollama

# Restart Ollama
docker-compose restart ollama

# Check disk space for models
docker exec openregister-ollama df -h

Out of Memoryโ€‹

If services crash due to memory:

  1. Increase Docker memory limit:

    • Docker Desktop: Settings โ†’ Resources โ†’ Memory
    • Recommended: At least 8GB
  2. Reduce Solr heap:

    • Edit 'docker-compose.yml'
    • Change 'SOLR_HEAP=512m' to '256m'
  3. Use smaller Ollama models:

    • Use 'phi3' instead of 'llama3.1:70b'

Performance Issuesโ€‹

# Check resource usage
docker stats

# Optimize Solr index
docker exec -u 33 nextcloud php /var/www/html/occ openregister:solr:manage optimize

# Clear caches
docker exec -u 33 nextcloud php /var/www/html/occ maintenance:mode --on
docker exec -u 33 nextcloud php /var/www/html/occ files:cleanup
docker exec -u 33 nextcloud php /var/www/html/occ maintenance:mode --off

Stopping the Environmentโ€‹

Production/Testing Modeโ€‹

# Temporary stop (preserves data)
docker-compose stop

# Full shutdown (preserves data)
docker-compose down

# Complete reset (DESTROYS ALL DATA)
docker-compose down -v

Developer Modeโ€‹

# Temporary stop (preserves data)
docker-compose -f docker-compose.dev.yml stop

# Full shutdown (preserves data)
docker-compose -f docker-compose.dev.yml down

# Complete reset (DESTROYS ALL DATA)
docker-compose -f docker-compose.dev.yml down -v

โš ๏ธ Warning: Using -v flag will delete all data including databases, uploaded files, and downloaded models!

Advanced Configurationโ€‹

Custom Port Mappingโ€‹

Edit 'docker-compose.yml' to change ports:

ports:
- "8081:80" # Change Nextcloud port to 8081

Resource Limitsโ€‹

Add resource limits to services:

services:
ollama:
deploy:
resources:
limits:
memory: 8G
cpus: '4'

Using GPU for Ollamaโ€‹

For NVIDIA GPUs:

services:
ollama:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]

Production Considerationsโ€‹

This docker-compose setup is designed for development and testing only. For production:

  1. Change all default passwords
  2. Use proper SSL/TLS certificates
  3. Set up proper backup procedures
  4. Configure firewall rules
  5. Use external database with proper credentials
  6. Configure Solr authentication
  7. Set up monitoring and logging
  8. Review and harden security settings
  9. Use production-grade hardware/infrastructure
  10. Consider using managed services for AI (OpenAI) instead of local Ollama

Additional Resourcesโ€‹

Supportโ€‹

For issues or questions:

  1. Check the troubleshooting section
  2. Review the logs: 'docker-compose logs -f'
  3. Contact: info@conduction.nl
  4. GitHub Issues: OpenRegister Issues