62 lines
2.8 KiB
Bash
62 lines
2.8 KiB
Bash
#!/usr/bin/env bash
|
|
# Runs only on 103 from a verified release directory. It never downloads images.
|
|
set -euo pipefail
|
|
|
|
ROOT="${ROOT:-/Users/john/Project/Memind}"
|
|
RUNTIME_DIR="${IMGPROXY_RUNTIME_DIR:?IMGPROXY_RUNTIME_DIR is required}"
|
|
IMAGE_TAG="${IMGPROXY_IMAGE_TAG:?IMGPROXY_IMAGE_TAG is required}"
|
|
CONTAINER="${IMGPROXY_CONTAINER:-memind-imgproxy}"
|
|
NODE_BIN="${NODE_BIN:-/opt/homebrew/opt/node@24/bin/node}"
|
|
DOCKER_BIN="${DOCKER_BIN:-/opt/homebrew/bin/docker}"
|
|
PLIST="$HOME/Library/LaunchAgents/cn.tkmind.imgproxy-compat.plist"
|
|
GUI="gui/$(id -u)"
|
|
|
|
set -a
|
|
source "$ROOT/.env"
|
|
set +a
|
|
: "${IMGPROXY_SIGNING_KEY:?missing IMGPROXY_SIGNING_KEY}"
|
|
: "${IMGPROXY_SIGNING_SALT:?missing IMGPROXY_SIGNING_SALT}"
|
|
: "${MINDSPACE_STORAGE_ROOT:?missing MINDSPACE_STORAGE_ROOT}"
|
|
|
|
"$DOCKER_BIN" rm -f "$CONTAINER" >/dev/null 2>&1 || true
|
|
"$DOCKER_BIN" run -d --name "$CONTAINER" --restart unless-stopped \
|
|
-p 127.0.0.1:20082:8080 \
|
|
-v "$MINDSPACE_STORAGE_ROOT:/mnt/images:ro" \
|
|
-e IMGPROXY_LOCAL_FILESYSTEM_ROOT=/mnt/images \
|
|
-e IMGPROXY_KEY="$IMGPROXY_SIGNING_KEY" \
|
|
-e IMGPROXY_SALT="$IMGPROXY_SIGNING_SALT" \
|
|
-e IMGPROXY_USE_ETAG=true \
|
|
-e IMGPROXY_ENABLE_WEBP_DETECTION=true \
|
|
"$IMAGE_TAG" >/dev/null
|
|
|
|
for _ in $(seq 1 20); do
|
|
curl -fsS --max-time 2 http://127.0.0.1:20082/health >/dev/null && break
|
|
sleep 1
|
|
done
|
|
curl -fsS --max-time 3 http://127.0.0.1:20082/health >/dev/null
|
|
|
|
cat > "$PLIST" <<EOF
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0"><dict>
|
|
<key>Label</key><string>cn.tkmind.imgproxy-compat</string>
|
|
<key>ProgramArguments</key><array><string>$NODE_BIN</string><string>$RUNTIME_DIR/imgproxy-compat-proxy.mjs</string></array>
|
|
<key>WorkingDirectory</key><string>$RUNTIME_DIR</string>
|
|
<key>EnvironmentVariables</key><dict><key>IMGPROXY_COMPAT_HOST</key><string>10.10.0.2</string><key>IMGPROXY_COMPAT_PORT</key><string>20081</string><key>IMGPROXY_UPSTREAM</key><string>http://127.0.0.1:20082</string></dict>
|
|
<key>RunAtLoad</key><true/><key>KeepAlive</key><true/><key>ThrottleInterval</key><integer>10</integer>
|
|
<key>StandardOutPath</key><string>$HOME/Library/Logs/imgproxy-compat.log</string><key>StandardErrorPath</key><string>$HOME/Library/Logs/imgproxy-compat.log</string>
|
|
</dict></plist>
|
|
EOF
|
|
plutil -lint "$PLIST" >/dev/null
|
|
launchctl bootout "$GUI/cn.tkmind.imgproxy" 2>/dev/null || true
|
|
launchctl disable "$GUI/cn.tkmind.imgproxy" 2>/dev/null || true
|
|
launchctl bootout "$GUI/cn.tkmind.imgproxy-compat" 2>/dev/null || true
|
|
launchctl bootstrap "$GUI" "$PLIST"
|
|
launchctl enable "$GUI/cn.tkmind.imgproxy-compat"
|
|
launchctl kickstart -k "$GUI/cn.tkmind.imgproxy-compat"
|
|
for _ in $(seq 1 20); do
|
|
curl -fsS --max-time 2 http://10.10.0.2:20081/health >/dev/null && break
|
|
sleep 1
|
|
done
|
|
curl -fsS --max-time 3 http://10.10.0.2:20081/health >/dev/null
|