> ## Documentation Index
> Fetch the complete documentation index at: https://libops-renovate-github-com-libops-sitectl-isle-0-x.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Islandora plugin

> Islandora sitectl workflows including guided site creation, component management, Fedora and Blazegraph sync, and migration utilities.

export const Compose = () => <Tooltip headline="Compose" tip={<>
        Docker Compose is Docker's tool for defining and running multi-container applications.{" "}
        <a href="https://docs.docker.com/compose/">https://docs.docker.com/compose/</a>.
      </>}>
    <>
      <Icon icon="docker" />
      {" "}
      Compose
    </>
  </Tooltip>;

The Islandora plugin adds Islandora-specific behavior on top of the core sitectl workflow. The plugin binary is `sitectl-isle`. Direct plugin commands live under `sitectl isle` for ISLE-only operations such as cache warming, migration helpers, and fcrepo sync. Create, validate, healthcheck, verify, debug, set, converge, and component inspection are core sitectl commands that dispatch to the Islandora plugin through the active context.

Because every Islandora site is also a Drupal-backed stack, the Islandora plugin includes the Drupal plugin. Shared service commands for MariaDB, Solr, and Traefik come from core `sitectl` and work against Islandora contexts automatically.

## Create

Start a new Islandora site from the [`isle-site-template`](https://github.com/islandora-devops/isle-site-template):

```bash theme={null}
sitectl create isle
```

The create flow:

<Steps>
  <Step title="Clone the template">
    sitectl clones `isle-site-template` from `main` into your chosen directory. Pass `--template-repo` and `--template-branch` to use a different source.
  </Step>

  <Step title="Configure a context">
    sitectl creates a local sitectl context for the new project directory.
  </Step>

  <Step title="Answer component questions">
    sitectl asks about each application component that requires a decision at create time, including fcrepo, Blazegraph, and IIIF. You can answer interactively or pre-supply answers with flags.
  </Step>

  <Step title="Apply component state">
    sitectl writes the <Compose /> file and Drupal config changes that reflect your component choices, so the first `docker compose up` starts the stack you asked for.
  </Step>
</Steps>

After create completes, review the generated changes and add your own Git remote before committing the checkout.

## Component status

See which components are registered and how the project is currently configured:

```bash theme={null}
sitectl component describe
sitectl component describe --path /path/to/project
```

`sitectl component describe` is a core command that dispatches to the Islandora plugin based on the active context. See [Components](/components) for a full explanation of what each status value means.

## Managed components

The Islandora plugin currently manages these application components directly:

| Component                                                                                      | What it controls                                                                                       | Common commands                                                                               |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
| [`fcrepo`](/plugins/isle/fcrepo)                                                               | Fedora Commons service, volume, Drupal Fedora config, and filesystem migration guidance.               | `sitectl set fcrepo enabled` or `sitectl set fcrepo superceded --isle-file-system-uri public` |
| [`blazegraph`](/plugins/isle/blazegraph)                                                       | Blazegraph service, triplestore volume, Alpaca triplestore indexing, and Drupal triplestore actions.   | `sitectl set blazegraph enabled` or `sitectl set blazegraph disabled`                         |
| [`iiif`](/plugins/isle/iiif)                                                                   | The IIIF image server implementation: Cantaloupe or Triplet.                                           | `sitectl set iiif cantaloupe` or `sitectl set iiif triplet`                                   |
| [`iiif-topology`](/plugins/isle/iiif)                                                          | Whether IIIF runs in this Compose project or behind an external upstream.                              | `sitectl set iiif-topology distributed --iiif-upstream-url https://iiif.example.edu`          |
| [`fits`, `crayfits`, `homarus`, `houdini`, `hypercube`, `mergepdf`](/plugins/isle/derivatives) | Whether each derivative microservice runs in this Compose project or uses the managed LibOps endpoint. | `sitectl set homarus distributed` or `sitectl set homarus enabled`                            |

All ISLE component changes are local-only. Run them against the checkout you intend to modify, review the diff, then commit the generated changes.

## Shared services and ingress

Islandora contexts use core service commands for shared infrastructure such as MariaDB, Solr, and Traefik. Use [`sitectl traefik`](/plugins/traefik) for TLS modes, local certificates, Let's Encrypt settings, ingress status, and bot mitigation. The Islandora plugin supplies Drupal-specific route and override wiring where the stack needs it, but the operator-facing ingress command surface belongs to core `sitectl`.

## Component set

Turn a component on or off:

```bash theme={null}
sitectl set fcrepo off
sitectl set blazegraph on --yolo
sitectl set iiif triplet
sitectl set iiif-topology distributed --iiif-upstream-url https://iiif.example.edu
sitectl set fits distributed
sitectl set crayfits distributed
sitectl set homarus distributed
sitectl set houdini distributed
sitectl set hypercube distributed
sitectl set mergepdf distributed
```

sitectl updates the relevant <Compose /> files and Drupal config sync files, then prompts for confirmation. Pass `--yolo` to skip confirmation in automation.

Use `enabled` to move a distributed derivative service back into the base Compose stack, for example `sitectl set homarus enabled`.

See [derivative microservices](/plugins/isle/derivatives) for the full managed endpoint list. See [Traefik service commands](/plugins/traefik) for TLS, ingress status, and bot mitigation.

## Sync

Copy the fcrepo database from one context to another:

```bash theme={null}
sitectl isle sync fcrepo --source museum-prod --target museum-local
```

This backs up fcrepo on the source, stages the artifact, and imports it into the target.

## Validate

Check that the active context's project configuration is valid:

```bash theme={null}
sitectl validate
```

## Verify

After the site is online or after a site update, run verification checks for the
Islandora stack. These checks are meant for CI and update validation: basic
runtime status plus Islandora-specific functionality that should keep working.

```bash theme={null}
sitectl verify
sitectl verify --fcrepo off --iiif triplet --bot-mitigation on
```

Use `--demo-objects` only against disposable CI, preview, development, or staging
sites because it creates demo content before checking that repository storage
grew.

## Migrate

Migrate legacy ISLE Compose service profiles to the current format:

```bash theme={null}
sitectl isle migrate merge-compose-profiles --input docker-compose.yml --output docker-compose.yml
```

## Drupal commands

Because the Islandora plugin includes the Drupal plugin, all `sitectl drupal` commands work against Islandora contexts:

```bash theme={null}
sitectl drupal drush cr
sitectl drupal sync database --source museum-prod --target museum-local
sitectl drupal login
```
