🍣

Docker版Cantaloupeを使用して、S3バケットにアクセスしSSL通信を行う方法

2024/01/27に公開

概要

Docker版のCantaloupeの使い方を以下で紹介しました。

https://zenn.dev/nakamura196/articles/35b2192171c29e

このDocker版Cantaloupeを(大規模ではない)production環境で使用するには、Amazon S3との接続や、SSL対応が求められます。その方法を一例を紹介します。

Amazon S3との接続

公式では以下で紹介されています。

https://cantaloupe-project.github.io/manual/5.0/sources.html#S3Source

日本語の記事として以下があります。

https://zenn.dev/nakamura196/articles/b59cdbca551984

また、今回扱うDocker版では、以下に記載がありました。

https://github.com/Islandora-Devops/isle-buildkit/blob/main/cantaloupe/README.md#settings

そこで、S3と最低限の接続を行うためのリポジトリを作成しました。

https://github.com/nakamura196/docker_cantaloupe_s3

.env.example.envにリネームまたはコピーして、必要な値を入力します。

SSL対応

以下の記事を参考にしました。EC2上にDockerをインストールし、nginx-proxynginx-proxy-lets-encryptを利用してSSL化を行いました。

https://qiita.com/atsuya/items/7cb6e0ccee63d751d41f

proxy/docker-compose.yml
version: '3'
# proxy
services:

  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - html:/usr/share/nginx/html
      - dhparam:/etc/nginx/dhparam
      - vhost:/etc/nginx/vhost.d
      - certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - /srv/docker/nginx-proxy-with-encrypt/log:/var/log/nginx
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
    restart: always

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: nginx-proxy-lets-encrypt
    depends_on:
    - "nginx-proxy"
    volumes:
    - certs:/etc/nginx/certs:rw
    - vhost:/etc/nginx/vhost.d
    - html:/usr/share/nginx/html
    - /var/run/docker.sock:/var/run/docker.sock:ro

volumes:
  certs:
  html:
  vhost:
  dhparam:

networks:
  default:
    external:
      name: common_link
cantaloupe/docker-compose.yml
services:
  cantaloupe:
    image: islandora/cantaloupe:2.0.10
    environment:
      CANTALOUPE_ENDPOINT_ADMIN_ENABLED: false
      CANTALOUPE_ENDPOINT_ADMIN_SECRET: my_admin_pass
      CANTALOUPE_SOURCE_STATIC: S3Source
      CANTALOUPE_S3SOURCE_ACCESS_KEY_ID: ${CANTALOUPE_S3SOURCE_ACCESS_KEY_ID}
      CANTALOUPE_S3SOURCE_SECRET_KEY: ${CANTALOUPE_S3SOURCE_SECRET_KEY}
      CANTALOUPE_S3SOURCE_REGION: ${CANTALOUPE_S3SOURCE_REGION}
      CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME: ${CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME}
      CANTALOUPE_S3SOURCE_LOOKUP_STRATEGY: BasicLookupStrategy # Or another strategy if needed
      VIRTUAL_HOST: <カスタムドメイン>
      LETSENCRYPT_HOST: <カスタムドメイン>
      LETSENCRYPT_EMAIL: <メールアドレス>
    restart: always


networks:
  default:
    external:
      name: common_link

まとめ

IIIF画像サーバの小中規模の利用にあたっては、上記のような形が比較的容易な導入方法の一つに当たるかと思います。

S3を使ったIIIF画像配信にあたっては、以下のツールもあります。

https://github.com/samvera/serverless-iiif

上記リポジトリの最新の内容を反映できていない古い記事になりますが、以下の日本語記事も参考になりましたら幸いです。

https://zenn.dev/nakamura196/articles/72e49979edf582

IIIF画像サーバの導入方法の一つとして参考になりましたら幸いです。

Discussion