repositories / bugabinga.net
bugabinga.net
personal infrastructure for bugabinga!
owned by admin
services/toad/deploy/start.sh
Raw#!/usr/bin/env bash
set -euo pipefail
user=toad
home_dir=/home/toad
uid="$(id -u "${user}")"
runtime="/run/user/${uid}"
quadlet_dir="${home_dir}/.config/containers/systemd"
enrollment=/data/toad/enrollment.json
gateway_config=/data/toad/gateway.Caddyfile
ingress_env=/data/toad/ingress.env
theme_css=/data/toad/nugu.css
for required in \
"${quadlet_dir}/toad.container" \
"${quadlet_dir}/toad-ingress.container" \
"${quadlet_dir}/toad.network" \
"${enrollment}" \
"${gateway_config}" \
"${ingress_env}" \
"${theme_css}"; do
[[ -f "${required}" ]] || {
echo "missing toad deployment file: ${required}" >&2
exit 1
}
done
chown "${user}:${user}" \
"${quadlet_dir}/toad.container" \
"${quadlet_dir}/toad-ingress.container" \
"${quadlet_dir}/toad.network" \
"${enrollment}" \
"${gateway_config}" \
"${ingress_env}" \
"${theme_css}"
chmod 0640 \
"${quadlet_dir}/toad.container" \
"${quadlet_dir}/toad-ingress.container" \
"${quadlet_dir}/toad.network" \
"${enrollment}" \
"${gateway_config}" \
"${ingress_env}" \
"${theme_css}"
restorecon -F "${gateway_config}" "${ingress_env}"
cd "${home_dir}"
run_toad() {
runuser -u "${user}" -- env \
HOME="${home_dir}" \
USER="${user}" \
LOGNAME="${user}" \
XDG_RUNTIME_DIR="${runtime}" \
DBUS_SESSION_BUS_ADDRESS="unix:path=${runtime}/bus" \
"$@"
}
run_toad systemctl --user daemon-reload
# Quadlet generators create target-wants links from [Install]; generated units cannot be enabled.
for unit in toad.service toad-ingress.service; do
run_toad systemctl --user restart "${unit}" || run_toad systemctl --user start "${unit}"
run_toad systemctl --user --quiet is-active "${unit}"
done
for container in toad toad-ingress; do
run_toad podman container inspect --format '{{.State.Running}}' "${container}" | grep -Fx true
done