#!/bin/sh # vim: set ts=4 sts=4 sw=4 et : cleanup() { if [ -n "${cid}" ]; then echo 'Stopping Meilisearch ...' >&2 podman stop "${cid}" >/dev/null fi unset cid if [ -f "${meilisearch_key}" ]; then rm "${meilisearch_key}" fi unset meilisearch_key if [ -n "${dex_cid}" ]; then echo 'Stopping Dex ...' >&2 podman stop "${dex_cid}" >/dev/null fi unset cid if [ -f "${jwt_key}" ]; then rm "${jwt_key}" fi unset jwt_key if [ -f "${ROCKET_CONFIG}" ]; then rm "${ROCKET_CONFIG}" fi unset ROCKET_CONFIG } trap cleanup INT TERM QUIT EXIT echo 'Generating Meilisearch master key ...' >&2 MEILI_MASTER_KEY=$(tr -cd 0-9A-Za-z_- < /dev/urandom | head -c 32) echo 'Starting Meilisearch ...' >&2 cid=$( export MEILI_MASTER_KEY podman run --rm -d -P \ -e MEILI_NO_ANALYTICS=true \ -e MEILI_MASTER_KEY \ docker.io/getmeili/meilisearch:v1.13 ) port=$(podman port ${cid} 7700/tcp | cut -d: -f2) printf 'Waiting for Meilisearch on port %d ...' "${port}" >&2 until curl -fs -o /dev/null 127.0.0.1:${port}; do printf '.' sleep 0.25 done echo ' ready' >&2 meilisearch_key=$(mktemp meilisearch.token.XXXXXX) curl -s 127.0.0.1:${port}/keys -H "Authorization: Bearer ${MEILI_MASTER_KEY}" \ | jq -r '.results[] | select(.name == "Default Admin API Key") | .key' \ > "${meilisearch_key}" echo 'Starting Dex ...' dex_cid=$( podman run --rm -d \ -p 5556:5556 \ -v ./dex.yaml:/etc/dex/config.yaml:ro,z \ ghcr.io/dexidp/dex \ dex serve /etc/dex/config.yaml ) || exit dex_port=5556 printf 'Waiting for Dex on port %d ...' "${dex_port}" >&2 until curl -fs -o /dev/null 127.0.0.1:${dex_port}/dex/healthz; do printf '.' sleep 0.25 done echo ' ready' >&2 echo 'Generating JWT secret key ...' >&2 jwt_key=$(mktemp jwt.secret.XXXXXX) tr -cd 0-9A-Za-z_- < /dev/urandom | head -c 32 > "${jwt_key}" ROCKET_CONFIG=$(mktemp Rocket.toml.XXXXXX) cat > "${ROCKET_CONFIG}" <