{"id":21645108,"url":"https://github.com/libops/islandora-microservices","last_synced_at":"2026-05-17T20:01:39.860Z","repository":{"id":240146634,"uuid":"801766230","full_name":"libops/islandora-microservices","owner":"libops","description":"Islandora Microservices as a Service","archived":false,"fork":false,"pushed_at":"2025-03-14T19:22:56.000Z","size":64,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-14T20:29:44.517Z","etag":null,"topics":["cloudrun","islandora","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"libops"}},"created_at":"2024-05-16T21:51:05.000Z","updated_at":"2025-03-02T18:49:57.000Z","dependencies_parsed_at":"2024-05-17T01:25:09.432Z","dependency_job_id":"6295ddab-1948-4b8b-ba36-5d9809d2aeb0","html_url":"https://github.com/libops/islandora-microservices","commit_stats":null,"previous_names":["libops/islandora-microservices"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libops%2Fislandora-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libops%2Fislandora-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libops%2Fislandora-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libops%2Fislandora-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libops","download_url":"https://codeload.github.com/libops/islandora-microservices/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244460235,"owners_count":20456301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudrun","islandora","terraform"],"created_at":"2024-11-25T05:47:13.388Z","updated_at":"2026-05-17T20:01:34.801Z","avatar_url":"https://github.com/libops.png","language":"HCL","funding_links":["https://github.com/sponsors/libops"],"categories":[],"sub_categories":[],"readme":"# Multi-region, horizontally autoscaled Islandora microservices\n\nYour Islandora instance can use the Islandora microservices that are fully managed by this repository. Image derivatives, video derivatives, OCR, hOCR, FITS metadata all can be generated on media uploaded to your repository by this service. All the services are set to autoscale to meet the needs of your repository during times of heavy ingestion or migrations.\n\n## How it works\n\nThe microservices are running in multiple regions, and your microservice requests will route to the region closest to your Islandora server (though if your nearest region is experiencing an outage, your request will route to an available region).\n\n```mermaid\nflowchart TD\n    A[Alice] --\u003e|Uploads TIFF image| B(Islandora Server\\nin Indiana)\n    B -- GET fa:fa-image derivative --\u003e C{Load Balancerfa:fa-network-wired}\n    C -.-|Nevada| G[imagemagick fa:fa-magic-wand-sparkles]\n    C -.-|Oregon| D[imagemagick fa:fa-magic-wand-sparkles]\n    C -.-|Iowa| E[imagemagick fa:fa-magic-wand-sparkles]\n    C --\u003e|Ohio| F[imagemagick fa:fa-magic-wand-sparkles]\n    C -.-|Virginia| H[imagemagick fa:fa-magic-wand-sparkles]\n    F[imagemagick fa:fa-magic-wand-sparkles]-- fa:fa-image derivative --\u003eB\n```\n\n## Services Available\n\n- https://microservices.libops.site/crayfits\n  - [Harvard File Information Toolset (FITS)](https://github.com/harvard-lts/fits)\n- https://microservices.libops.site/homarus\n  - ffmpeg\n    - audio/*\n    - video/*\n- https://microservices.libops.site/houdini\n  - Imagemagick\n    - image/*\n- https://microservices.libops.site/hypercube\n  - tesseract\n    - application/pdf\n    - image/*\n- https://microservices.libops.site/libreoffice\n  - libreoffice - convert microsoft documents to PDF\n- https://microservices.libops.site/ocrpdf\n  - add OCR to a PDF with no OCR\n- https://microservices.libops.site/pandoc\n  - [Pandoc](https://pandoc.org/) - convert various file formats using pandoc\n- https://microservices.libops.site/whisper\n  - OpenAI Whisper to generate VTT transcript files from audio and video\n    - audio/*\n    - video/*\n\n## Regions available\n\nAll services are available in all regions (except OpenAI Whisper, which is only in us-central1 due to GPU support)\n\n| Region Name                 | City/Area                   |\n|-----------------------------|-----------------------------|\n| **us-east4**                | Ashburn, Virginia           |\n| **us-east5**                | Columbus, Ohio              |\n| **us-central1**             | Council Bluffs, Iowa        |\n| **us-west3**                | Salt Lake City, Utah        |\n| **us-west1**                | The Dalles, Oregon          |\n| **us-west4**                | Las Vegas, Nevada           |\n| **us-south1**               | Dallas, Texas               |\n| **northamerica-northeast1** | Montréal, Québec, Canada    |\n| **northamerica-northeast2** | Toronto, Ontario, Canada    |\n| **australia-southeast1**    | Sydney, New South Wales     |\n| **australia-southeast2**    | Melbourne, Victoria         |\n\n\n## Install\n\nTo use these managed service, in your ISLE `docker-compose.yml` you can point to the respective service to have it perform your derivative generation.\n\n```\n    alpaca-prod: \u0026alpaca-prod\n        \u003c\u003c: [*prod, *alpaca]\n        environment:\n            ALPACA_DERIVATIVE_FITS_URL: https://microservices.libops.site/crayfits\n            ALPACA_DERIVATIVE_HOMARUS_URL: https://microservices.libops.site/homarus\n            ALPACA_DERIVATIVE_HOUDINI_URL: https://microservices.libops.site/houdini\n            ALPACA_DERIVATIVE_OCR_URL: https://microservices.libops.site/hypercube\n```\n\nYour files must have a network route over the WWW in order to use this service (or at least from Google Cloud to your Islandora Server). For private files, Islandora handles sending the proper authentication token to allow this service to process your files.\n\n### Post Install\n\nYou could then remove the crayfits, fits, houdini, hypercube, and homarus services from your production ISLE deployment. This should allow you to grant those saved compute resources to other ISLE services. One great way to reallocate some of those resources would be increasing the number of php-fpm workers on your Islandora Drupal site in order to take full advantage of the auto scaled derivative generation.\n\n## Monitoring\n\nA VALE dashboard for this service is available at https://www.libops.io/microservices\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibops%2Fislandora-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibops%2Fislandora-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibops%2Fislandora-microservices/lists"}