> ## Documentation Index
> Fetch the complete documentation index at: https://sitectl.libops.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Core service commands

> Shared sitectl commands for infrastructure services used across application stacks.

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>;

Core service commands are built into `sitectl` for infrastructure behavior that repeats across application stacks. Use them from any context whose <Compose /> project contains the relevant service.

```bash theme={null}
sitectl mariadb backup
sitectl solr status
sitectl traefik status
sitectl set ingress enabled --mode https --domain app.example.org
```

The boundary is ownership:

* Core `sitectl` owns shared service operations, stable command namespaces, and helpers that are useful across many applications.
* Application plugins own app-specific workflows, create flows, CLIs, migrations, sync helpers, and the small amount of route or config wiring needed to connect an app to shared services.

This keeps common operations consistent across Drupal, Islandora, WordPress, OJS, Omeka, and ArchivesSpace without requiring every app plugin to carry its own MariaDB, Solr, cache, or Traefik implementation.

## Ingress is a component

TLS mode selection, domain publication, Cloudflare Origin CA, Let's Encrypt settings, custom certificates, mkcert development certificates, trusted upstream proxies, and upload/read timeout tuning belong to the `ingress` component. App plugins supply app-specific router names, route files, and every supported backend environment mapping needed to keep Traefik and the application aligned. When a runtime has no app-specific mapping for a setting, the component changes the Traefik edge only; operators should not assume the backend limit also changed.

## Service areas

<CardGroup cols={2}>
  <Card title="MariaDB" icon="database" href="/plugins/mariadb">
    Back up, restore, sync, and inspect MariaDB-compatible database services.
  </Card>

  <Card title="Memcached" icon="memory" href="/plugins/memcached">
    Inspect Memcached containers and read runtime stats from cache services.
  </Card>

  <Card title="Solr" icon="magnifying-glass" href="/plugins/solr">
    Inspect Solr containers and run Solr's built-in status command.
  </Card>

  <Card title="Traefik" icon="route" href="/plugins/traefik">
    Inspect the Traefik service container.
  </Card>

  <Card title="Valkey" icon="database" href="/plugins/valkey">
    Inspect Valkey containers and ping cache services from inside the stack.
  </Card>
</CardGroup>

## When to use an app plugin

Use an application plugin when the command is about the application itself: Drush for Drupal, WP-CLI for WordPress, OJS tools, Omeka API resources, ArchivesSpace API helpers, or ISLE migration and repository workflows. Use core service commands when the operation is about a shared infrastructure service inside the stack.
