Prefix LXCs hotel-manage-*; group in Proxmox pool + tag
This commit is contained in:
parent
d052d0bddf
commit
4622cc3d45
3 changed files with 110 additions and 71 deletions
40
add-app.sh
40
add-app.sh
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env bash
|
||||
# ┌─────────────────────────────────────────────────────────────────────────┐
|
||||
# │ HNF Manage — Add App LXC │
|
||||
# │ Hotel Manage — Add App LXC │
|
||||
# │ Provisions a single app container and wires it into the stack. │
|
||||
# │ │
|
||||
# │ Usage: bash add-app.sh (or curl-bootstrap, see install/README.md) │
|
||||
|
|
@ -23,7 +23,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
|
||||
# Load secrets from credentials file if present
|
||||
CREDS_FILE=/root/hnf-credentials.txt
|
||||
CREDS_FILE=/root/hotel-manage-credentials.txt
|
||||
if [[ -f "$CREDS_FILE" ]]; then
|
||||
# shellcheck disable=SC1090
|
||||
set -a; source <(grep -v '^#' "$CREDS_FILE" | grep '='); set +a
|
||||
|
|
@ -104,12 +104,18 @@ fi
|
|||
|
||||
# ── Get mgmt public key ───────────────────────────────────────────────────────
|
||||
MGMT_PUBKEY=""
|
||||
[[ -f /root/.ssh/hnf_management.pub ]] && MGMT_PUBKEY=$(cat /root/.ssh/hnf_management.pub)
|
||||
[[ -f /root/.ssh/hotel-manage_deploy.pub ]] && MGMT_PUBKEY=$(cat /root/.ssh/hotel-manage_deploy.pub)
|
||||
|
||||
# ── Resource pool (created by install-stack.sh; reuse if present) ──────────────
|
||||
POOL="hotel-manage"
|
||||
POOL_OPT=""
|
||||
pvesh get "/pools/${POOL}" &>/dev/null || pvesh create /pools --poolid "${POOL}" &>/dev/null || true
|
||||
pvesh get "/pools/${POOL}" &>/dev/null && POOL_OPT="--pool ${POOL}"
|
||||
|
||||
# ── Create LXC ────────────────────────────────────────────────────────────────
|
||||
msg_info "Creating LXC ${LXC_ID} (hnf-${APP_NAME} at 10.10.10.${LAST_OCTET})"
|
||||
msg_info "Creating LXC ${LXC_ID} (hotel-manage-${APP_NAME} at 10.10.10.${LAST_OCTET})"
|
||||
pct create "$LXC_ID" "$TEMPLATE" \
|
||||
--hostname "hnf-${APP_NAME}" \
|
||||
--hostname "hotel-manage-${APP_NAME}" \
|
||||
--memory 512 \
|
||||
--cores 1 \
|
||||
--rootfs "${STORAGE}:8" \
|
||||
|
|
@ -117,6 +123,8 @@ pct create "$LXC_ID" "$TEMPLATE" \
|
|||
--features nesting=1 \
|
||||
--unprivileged 0 \
|
||||
--onboot 1 \
|
||||
--tags "${POOL}" \
|
||||
${POOL_OPT} \
|
||||
--start 1 &>/dev/null
|
||||
sleep 5
|
||||
msg_ok "LXC ${LXC_ID} created"
|
||||
|
|
@ -150,17 +158,17 @@ if [[ "$APP_DB" == "yes" ]]; then
|
|||
msg_info "Creating database ${APP_DB_NAME}"
|
||||
# Run SQL via postgres LXC
|
||||
pct exec 100 -- bash -c "
|
||||
docker exec hnf-postgres psql -U postgres -c \
|
||||
docker exec hotel-manage-postgres psql -U postgres -c \
|
||||
\"CREATE USER ${APP_DB_USER} WITH PASSWORD '${APP_DB_PASS}';\" 2>/dev/null || true
|
||||
docker exec hnf-postgres psql -U postgres -c \
|
||||
docker exec hotel-manage-postgres psql -U postgres -c \
|
||||
\"CREATE DATABASE ${APP_DB_NAME} OWNER ${APP_DB_USER};\" 2>/dev/null || true
|
||||
docker exec hnf-postgres psql -U postgres -d ${APP_DB_NAME} -c \
|
||||
docker exec hotel-manage-postgres psql -U postgres -d ${APP_DB_NAME} -c \
|
||||
\"GRANT ALL ON SCHEMA public TO ${APP_DB_USER};\" 2>/dev/null || true
|
||||
" &>/dev/null
|
||||
msg_ok "Database ${APP_DB_NAME} created"
|
||||
|
||||
# Append DB creds to credentials file
|
||||
cat >> /root/hnf-credentials.txt <<EOF
|
||||
cat >> /root/hotel-manage-credentials.txt <<EOF
|
||||
|
||||
# ${APP_NAME} DB
|
||||
${APP_NAME^^}_DB_PASS=${APP_DB_PASS}
|
||||
|
|
@ -178,13 +186,13 @@ if [[ "$USE_FORGEJO" == "true" ]]; then
|
|||
git clone -q '${FORGEJO_REPO}' /opt/${APP_NAME}
|
||||
" &>/dev/null
|
||||
else
|
||||
tmp=$(mktemp /tmp/hnf-app-XXXX.tar.gz)
|
||||
tmp=$(mktemp /tmp/hotel-manage-app-XXXX.tar.gz)
|
||||
tar czf "$tmp" -C "$(dirname "$LOCAL_SRC")" "$(basename "$LOCAL_SRC")" 2>/dev/null
|
||||
pct push "$LXC_ID" "$tmp" /tmp/hnf-app.tar.gz 2>/dev/null
|
||||
pct push "$LXC_ID" "$tmp" /tmp/hotel-manage-app.tar.gz 2>/dev/null
|
||||
pct exec "$LXC_ID" -- bash -c "
|
||||
mkdir -p /opt && tar xzf /tmp/hnf-app.tar.gz -C /opt
|
||||
mkdir -p /opt && tar xzf /tmp/hotel-manage-app.tar.gz -C /opt
|
||||
mv /opt/$(basename "$LOCAL_SRC") /opt/${APP_NAME} 2>/dev/null || true
|
||||
rm -f /tmp/hnf-app.tar.gz
|
||||
rm -f /tmp/hotel-manage-app.tar.gz
|
||||
" &>/dev/null
|
||||
rm -f "$tmp"
|
||||
fi
|
||||
|
|
@ -192,7 +200,7 @@ msg_ok "App files deployed to /opt/${APP_NAME}"
|
|||
|
||||
# ── Write .env ────────────────────────────────────────────────────────────────
|
||||
msg_info "Writing .env"
|
||||
ENV_TMP=$(mktemp /tmp/hnf-env-XXXX)
|
||||
ENV_TMP=$(mktemp /tmp/hotel-manage-env-XXXX)
|
||||
{
|
||||
echo "NODE_ENV=production"
|
||||
echo "APP_SLUG=${APP_NAME}"
|
||||
|
|
@ -209,7 +217,7 @@ msg_ok ".env written"
|
|||
|
||||
# ── Register app in auth service ──────────────────────────────────────────────
|
||||
msg_warn "Remember to register '${APP_NAME}' in the auth service DB:"
|
||||
printf " docker exec hnf-auth-1 node -e \"\n"
|
||||
printf " docker exec hotel-manage-auth-1 node -e \"\n"
|
||||
printf " const db = require('./src/db.js');\n"
|
||||
printf " db.query(\\\"INSERT INTO apps (slug,name,base_path) VALUES ('%s','%s','%s') ON CONFLICT DO NOTHING\\\");\n" \
|
||||
"$APP_NAME" "$APP_NAME" "$APP_PATH"
|
||||
|
|
@ -233,7 +241,7 @@ cat <<SUMMARY
|
|||
3. Add to Uptime Kuma:
|
||||
http://10.10.10.${LAST_OCTET}:${APP_PORT}${APP_PATH}health
|
||||
4. Add Forgejo webhook:
|
||||
http://10.10.10.105:9000/webhook (secret in /root/hnf-credentials.txt)
|
||||
http://10.10.10.105:9000/webhook (secret in /root/hotel-manage-credentials.txt)
|
||||
5. Add deploy entry to the management repo: updater/deploy-map.js:
|
||||
'${APP_NAME}': { host: '10.10.10.${LAST_OCTET}', path: '/opt/${APP_NAME}' }
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue