Laminar/cfg/jobs/photoprism.run
2025-02-14 20:34:13 +09:00

52 lines
2 KiB
Bash
Executable file

#!/bin/env bash
# Upstream doc: https://dl.photoprism.app/pkg/linux/README.html
set -euxo pipefail
IMAGE="ubuntu/24.04"
DIST="${IMAGE%%/*}"
VER="${IMAGE#*/}"
VER="${VER%/*}"
VER="${VER//./-}"
UPSTREAM_VER="1.2409.15+240915-e1280b2fb"
UPSTREAM_VER_DASH="${UPSTREAM_VER//[.+]/-}"
UPSTREAM_NAME="photoprism"
SERIAL="3benoitjpnet"
CNAME="$UPSTREAM_NAME-$UPSTREAM_VER_DASH-$SERIAL-$DIST-$VER"
ALIAS="$UPSTREAM_NAME-$UPSTREAM_VER-$SERIAL"
cd "$WORKSPACE"
incus launch images:$IMAGE "$CNAME" --quiet
wait_network "$CNAME"
incus exec "$CNAME" -- apt update
incus exec "$CNAME" -- apt upgrade -y
incus exec "$CNAME" -- apt install -y --no-install-recommends wget
incus exec "$CNAME" -- wget -q "https://dl.photoprism.app/pkg/linux/deb/photoprism_${UPSTREAM_VER}_amd64.deb" -O /tmp/photoprism.deb
incus exec "$CNAME" -- apt install -y /tmp/photoprism.deb syncthing
incus exec "$CNAME" -- groupadd photoprism
incus exec "$CNAME" -- useradd -g photoprism -d /opt/photoprism -s /bin/false photoprism
incus exec "$CNAME" -- chown -R photoprism:photoprism /opt/photoprism
MARIADB_PASS=$(openssl rand -hex 32)
PHOTOPRISM_PASS=$(openssl rand -hex 32)
incus exec "$CNAME" -- mysql -e "CREATE DATABASE photoprism;"
incus exec "$CNAME" -- mysql -e "CREATE USER 'photoprism'@'localhost' IDENTIFIED BY '$MARIADB_PASS';"
incus exec "$CNAME" -- mysql -e "GRANT ALL PRIVILEGES ON photoprism.* TO 'photoprism'@'localhost';"
incus exec "$CNAME" -- mysql -e "FLUSH PRIVILEGES;"
incus file push <(sed -e "s/SED_DATABASE_PASSWORD/$MARIADB_PASS/" -e "s/SED_ADMIN_PASSWORD/$PHOTOPRISM_PASS/" "$WORKSPACE"/defaults.yaml) \
"$CNAME"/etc/photoprism/defaults.yml
incus file push "$WORKSPACE"/{syncthing,photoprism}.service \
"$CNAME"/etc/systemd/system/
incus exec "$CNAME" -- systemctl daemon-reload
incus exec "$CNAME" -- systemctl enable syncthing photoprism
laminarc run incus_publish \
CNAME="$CNAME" \
UPSTREAM_NAME=$UPSTREAM_NAME \
UPSTREAM_VER=$UPSTREAM_VER \
IMAGE=$IMAGE \
SERIAL=$SERIAL \
ALIAS=$ALIAS