Skip to content

Deploying Islandora

Introduction

Islandora is an open-source digital repository framework that combines Drupal, Fedora, and a suite of microservices to enable the creation, management, and preservation of digital collections. ISLE (ISLandora Enterprise) is the Docker-based deployment method that packages the entire Islandora stack into a set of containers that are easy to install, configure, and maintain.

Developed by a community of libraries, archives, and museums, Islandora provides institutions with the tools to build robust digital repositories for managing complex digital assets including images, audio, video, PDFs, and compound objects. The platform leverages Drupal’s powerful content management capabilities while utilizing Fedora for standards-based digital object storage.

Key highlights of Islandora:

  • Drupal Foundation: Built on Drupal 10 for flexible content modeling and user interface customization
  • Fedora Repository: Standards-based digital object storage with preservation capabilities
  • Microservices Architecture: Modular services for derivatives, OCR, and media processing
  • Linked Data Support: Native support for RDF and linked data standards
  • IIIF Compliance: International Image Interoperability Framework for image delivery
  • Solr Search: Powerful faceted search and discovery
  • Flexible Content Models: Support for various digital object types and relationships
  • Preservation Ready: Built-in support for digital preservation workflows
  • Community Driven: Active open-source community with regular updates
  • Institutional Scale: Designed for libraries, archives, and cultural heritage organizations

This guide walks through deploying Islandora using ISLE on Klutch.sh, configuring the component services, and setting up the platform for production use.

Why Deploy Islandora on Klutch.sh

Deploying Islandora on Klutch.sh provides several advantages for digital repository management:

Simplified Deployment: ISLE packages Islandora’s complex stack into Docker containers that Klutch.sh can deploy automatically. Push to GitHub, and your repository deploys.

Persistent Storage: Attach persistent volumes for Fedora objects, Drupal files, and database storage. Your digital collections survive container updates.

HTTPS by Default: Klutch.sh provides automatic SSL certificates for secure access to your repository.

GitHub Integration: Connect your ISLE configuration repository for automated deployments when you update configurations.

Scalable Resources: Allocate CPU and memory appropriate for your collection size and expected traffic.

Environment Variable Management: Securely store database credentials and API keys through Klutch.sh’s environment system.

Custom Domains: Use your institution’s domain for a professional repository presence.

Always-On Availability: Your digital repository remains accessible 24/7 for researchers and the public.

Prerequisites

Before deploying Islandora on Klutch.sh, ensure you have:

  • A Klutch.sh account
  • A GitHub account with a repository for your ISLE configuration
  • Basic familiarity with Docker and containerization concepts
  • Understanding of Drupal administration
  • (Optional) A custom domain for your repository

Understanding Islandora Architecture

ISLE deploys multiple interconnected containers:

Drupal: The main web application providing user interface, content management, and API endpoints.

Fedora: Repository service storing digital objects and their metadata in a standards-compliant manner.

Solr: Search index providing faceted search and discovery capabilities.

Alpaca: Message broker connecting Drupal to microservices for derivative generation.

Crayfish: Suite of microservices handling image processing, PDF generation, and OCR.

Database: MariaDB/MySQL storing Drupal configuration and content metadata.

Traefik: Reverse proxy handling routing between services.

Preparing Your Repository

To deploy Islandora on Klutch.sh, fork or clone the official ISLE repository.

Repository Structure

isle-dc/
├── Dockerfile
├── docker-compose.yml
├── .env
├── certs/
├── config/
│ ├── drupal/
│ ├── fedora/
│ └── solr/
└── README.md

Creating a Custom Dockerfile

For Klutch.sh deployment, create a consolidated Dockerfile:

FROM islandora/drupal:latest
# Set environment variables
ENV DRUPAL_DEFAULT_PROFILE=standard
ENV DRUPAL_DEFAULT_SITE_ADMIN_PASSWORD=${ADMIN_PASSWORD}
# Configure for production
ENV PHP_MEMORY_LIMIT=512M
ENV PHP_MAX_EXECUTION_TIME=300
# Expose Drupal port
EXPOSE 80
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=180s --retries=5 \
CMD curl -f http://localhost/ || exit 1

Environment Variables Reference

VariableRequiredDefaultDescription
DRUPAL_DEFAULT_SITE_URLYes-Public URL of your Islandora instance
DRUPAL_DEFAULT_SITE_ADMIN_PASSWORDYes-Admin password for Drupal
MYSQL_HOSTYes-Database host address
MYSQL_DATABASEYes-Database name
MYSQL_USERYes-Database username
MYSQL_PASSWORDYes-Database password
FEDORA_URLYes-URL of Fedora repository service
SOLR_URLYes-URL of Solr search service

Deploying Islandora on Klutch.sh

Deploying a full Islandora stack requires multiple services. Follow these steps:

    Fork the ISLE Repository

    Fork or clone the official ISLE repository:

    Terminal window
    git clone https://github.com/Islandora-Devops/isle-dc.git
    cd isle-dc

    Configure Environment

    Create your environment configuration:

    Terminal window
    cp sample.env .env

    Edit the .env file with your settings.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “islandora” or “digital-repository”.

    Deploy Supporting Services

    Islandora requires several supporting services. Deploy each as a separate app:

    1. MariaDB: Database for Drupal
    2. Fedora: Digital object repository
    3. Solr: Search and indexing

    Deploy the Drupal Application

    Create the main Drupal/Islandora app:

    1. Connect your GitHub repository
    2. Select the ISLE repository
    3. Configure HTTP traffic on port 80

    Set Environment Variables

    Configure the required environment variables:

    VariableValue
    DRUPAL_DEFAULT_SITE_URLhttps://your-app-name.klutch.sh
    DRUPAL_DEFAULT_SITE_ADMIN_PASSWORDYour secure admin password
    MYSQL_HOSTYour MariaDB service address
    MYSQL_DATABASEdrupal
    MYSQL_USERYour database username
    MYSQL_PASSWORDYour database password

    Attach Persistent Volumes

    Add persistent storage for your digital repository:

    Mount PathRecommended SizePurpose
    /var/www/drupal/web/sites/default/files100+ GBDrupal public files
    /var/www/drupal/private50+ GBDrupal private files
    /data500+ GBFedora digital objects (if combined)

    Deploy and Initialize

    Click Deploy and wait for all services to start. The initial setup may take several minutes.

    Complete Drupal Installation

    Access your Islandora instance and complete the Drupal installation wizard if prompted.

Initial Configuration

Admin Access

After deployment:

  1. Navigate to https://your-app-name.klutch.sh/user/login
  2. Log in with username admin and your configured password
  3. Complete any remaining setup steps

Content Types

Islandora provides pre-configured content types:

  • Repository Item: Base type for digital objects
  • Collection: Container for grouping items
  • Paged Content: Books and multi-page documents
  • Audio: Audio recordings
  • Video: Video content
  • Image: Single images

Configuring Media Types

Set up media handling:

  1. Navigate to Structure > Media Types
  2. Configure accepted file formats
  3. Set up derivative generation
  4. Configure IIIF image serving

Managing Collections

Creating Collections

To create a new collection:

  1. Navigate to Content > Add Content > Collection
  2. Enter collection title and description
  3. Configure access permissions
  4. Set finding aids and metadata
  5. Publish the collection

Adding Items

Add items to your repository:

  1. Navigate to Content > Add Content > Repository Item
  2. Select the parent collection
  3. Upload digital files
  4. Enter descriptive metadata
  5. Configure access and rights
  6. Publish the item

Batch Ingest

For large collections:

  1. Prepare metadata in CSV format
  2. Use the Migrate module for batch import
  3. Configure field mappings
  4. Run the migration
  5. Verify imported content

Production Best Practices

Security Recommendations

  • Admin Security: Use strong passwords and limit admin accounts
  • Database Security: Restrict database access to application containers only
  • File Permissions: Ensure proper file permissions on volumes
  • Regular Updates: Keep Drupal and modules updated
  • Access Control: Configure content access permissions appropriately

Performance Optimization

  • Caching: Enable Drupal caching and consider Varnish
  • Search Indexing: Regularly optimize Solr indexes
  • Image Delivery: Use IIIF for efficient image serving
  • Database Tuning: Optimize MariaDB for your workload

Backup Strategy

  1. Database Backups: Daily MariaDB dumps
  2. Fedora Backups: Regular Fedora repository exports
  3. File Backups: Back up Drupal files directory
  4. Configuration Export: Export Drupal configuration regularly
  5. Test Restores: Periodically verify backup integrity

Troubleshooting Common Issues

Microservices Not Connecting

Symptoms: Derivatives not generating, services timing out.

Solutions:

  • Verify all service containers are running
  • Check network connectivity between containers
  • Review service logs for errors
  • Verify URLs in environment configuration

Search Not Working

Symptoms: Content not appearing in search results.

Solutions:

  • Check Solr container status
  • Reindex content in Drupal
  • Verify Solr schema is correct
  • Check Solr connection settings

Slow Performance

Symptoms: Pages load slowly, timeouts occur.

Solutions:

  • Enable caching in Drupal
  • Increase PHP memory limits
  • Optimize database queries
  • Scale up container resources

Additional Resources

Conclusion

Deploying Islandora on Klutch.sh enables institutions to run a professional digital repository platform with Docker-based simplicity. ISLE’s containerized architecture combined with Klutch.sh’s persistent storage and HTTPS support provides a solid foundation for managing digital collections.

Whether you’re building a new digital repository or migrating an existing collection, Islandora on Klutch.sh delivers the infrastructure needed for reliable, standards-compliant digital preservation and access.