Add deployment artifacts and rift config (Phase 13)
Dockerfiles for API server and web UI (multi-stage, alpine:3.21, non-root mcr user). systemd units with security hardening. Idempotent install script. Rift-specific config with MCIAS service token, TLS paths, and Docker compose with loopback port bindings for mc-proxy fronting (28443/29443/28080). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
55
deploy/scripts/install.sh
Executable file
55
deploy/scripts/install.sh
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
SERVICE="mcr"
|
||||
BINARY_SRV="/usr/local/bin/mcrsrv"
|
||||
BINARY_WEB="/usr/local/bin/mcr-web"
|
||||
BINARY_CTL="/usr/local/bin/mcrctl"
|
||||
DATA_DIR="/srv/${SERVICE}"
|
||||
UNIT_DIR="/etc/systemd/system"
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
REPO_DIR="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
||||
|
||||
# Create system user and group (idempotent).
|
||||
if ! id -u "${SERVICE}" >/dev/null 2>&1; then
|
||||
useradd --system --no-create-home --shell /usr/sbin/nologin "${SERVICE}"
|
||||
echo "Created system user ${SERVICE}."
|
||||
fi
|
||||
|
||||
# Install binaries.
|
||||
install -m 0755 "${REPO_DIR}/mcrsrv" "${BINARY_SRV}"
|
||||
install -m 0755 "${REPO_DIR}/mcr-web" "${BINARY_WEB}"
|
||||
install -m 0755 "${REPO_DIR}/mcrctl" "${BINARY_CTL}"
|
||||
echo "Installed binaries."
|
||||
|
||||
# Create data directory structure.
|
||||
install -d -o "${SERVICE}" -g "${SERVICE}" -m 0700 "${DATA_DIR}"
|
||||
install -d -o "${SERVICE}" -g "${SERVICE}" -m 0700 "${DATA_DIR}/backups"
|
||||
install -d -o "${SERVICE}" -g "${SERVICE}" -m 0700 "${DATA_DIR}/certs"
|
||||
install -d -o "${SERVICE}" -g "${SERVICE}" -m 0700 "${DATA_DIR}/layers"
|
||||
install -d -o "${SERVICE}" -g "${SERVICE}" -m 0700 "${DATA_DIR}/uploads"
|
||||
echo "Created ${DATA_DIR}/."
|
||||
|
||||
# Install example config if none exists.
|
||||
if [ ! -f "${DATA_DIR}/${SERVICE}.toml" ]; then
|
||||
install -o "${SERVICE}" -g "${SERVICE}" -m 0600 \
|
||||
"${REPO_DIR}/deploy/examples/mcr.toml" \
|
||||
"${DATA_DIR}/${SERVICE}.toml"
|
||||
echo "Installed example config to ${DATA_DIR}/${SERVICE}.toml — edit before starting."
|
||||
fi
|
||||
|
||||
# Install systemd units.
|
||||
install -m 0644 "${REPO_DIR}/deploy/systemd/${SERVICE}.service" "${UNIT_DIR}/"
|
||||
install -m 0644 "${REPO_DIR}/deploy/systemd/${SERVICE}-web.service" "${UNIT_DIR}/"
|
||||
install -m 0644 "${REPO_DIR}/deploy/systemd/${SERVICE}-backup.service" "${UNIT_DIR}/"
|
||||
install -m 0644 "${REPO_DIR}/deploy/systemd/${SERVICE}-backup.timer" "${UNIT_DIR}/"
|
||||
systemctl daemon-reload
|
||||
echo "Installed systemd units."
|
||||
|
||||
echo ""
|
||||
echo "Done. Next steps:"
|
||||
echo " 1. Edit ${DATA_DIR}/${SERVICE}.toml"
|
||||
echo " 2. Place TLS certs in ${DATA_DIR}/certs/"
|
||||
echo " 3. systemctl enable --now ${SERVICE}"
|
||||
echo " 4. systemctl enable --now ${SERVICE}-web"
|
||||
echo " 5. systemctl enable --now ${SERVICE}-backup.timer"
|
||||
Reference in New Issue
Block a user