Add cashup as a first-class stack service with --only support
This commit is contained in:
parent
22a99f804e
commit
53caeea318
2 changed files with 62 additions and 324 deletions
|
|
@ -250,6 +250,7 @@ gen_secrets() {
|
|||
AUTH_DB_PASS=$(sed -n 's/^AUTH_DB_PASS=//p' "$CREDS_FILE" | head -1)
|
||||
NOTICES_DB_PASS=$(sed -n 's/^NOTICES_DB_PASS=//p' "$CREDS_FILE" | head -1)
|
||||
SETTINGS_DB_PASS=$(sed -n 's/^SETTINGS_DB_PASS=//p' "$CREDS_FILE" | head -1)
|
||||
CASHUP_DB_PASS=$(sed -n 's/^CASHUP_DB_PASS=//p' "$CREDS_FILE" | head -1)
|
||||
CENTRAL_AUTH_SECRET=$(sed -n 's/^CENTRAL_AUTH_SECRET=//p' "$CREDS_FILE" | head -1)
|
||||
SETTINGS_SECRET=$(sed -n 's/^SETTINGS_SECRET=//p' "$CREDS_FILE" | head -1)
|
||||
WEBHOOK_SECRET=$(sed -n 's/^WEBHOOK_SECRET=//p' "$CREDS_FILE" | head -1)
|
||||
|
|
@ -263,6 +264,7 @@ gen_secrets() {
|
|||
AUTH_DB_PASS=$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 24)
|
||||
NOTICES_DB_PASS=$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 24)
|
||||
SETTINGS_DB_PASS=$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 24)
|
||||
CASHUP_DB_PASS=$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 24)
|
||||
CENTRAL_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
SETTINGS_SECRET=$(openssl rand -hex 32)
|
||||
WEBHOOK_SECRET=$(openssl rand -hex 24)
|
||||
|
|
@ -282,6 +284,7 @@ PG_SUPERPASS=${PG_SUPERPASS}
|
|||
AUTH_DB_PASS=${AUTH_DB_PASS}
|
||||
NOTICES_DB_PASS=${NOTICES_DB_PASS}
|
||||
SETTINGS_DB_PASS=${SETTINGS_DB_PASS}
|
||||
CASHUP_DB_PASS=${CASHUP_DB_PASS}
|
||||
CENTRAL_AUTH_SECRET=${CENTRAL_AUTH_SECRET}
|
||||
SETTINGS_SECRET=${SETTINGS_SECRET}
|
||||
WEBHOOK_SECRET=${WEBHOOK_SECRET}
|
||||
|
|
@ -574,6 +577,14 @@ CREATE USER settings WITH PASSWORD '${SETTINGS_DB_PASS}';
|
|||
CREATE DATABASE settings_db OWNER settings;
|
||||
\c settings_db
|
||||
GRANT ALL ON SCHEMA public TO settings;
|
||||
EOF
|
||||
|
||||
# Init SQL — cashup DB
|
||||
push_file 100 /opt/postgres/init/04-cashup.sql <<EOF
|
||||
CREATE USER cashup WITH PASSWORD '${CASHUP_DB_PASS}';
|
||||
CREATE DATABASE cashup_db OWNER cashup;
|
||||
\c cashup_db
|
||||
GRANT ALL ON SCHEMA public TO cashup;
|
||||
EOF
|
||||
|
||||
pct exec 100 -- bash -c "cd /opt/postgres && docker compose up -d" &>/dev/null
|
||||
|
|
@ -813,6 +824,53 @@ EOF
|
|||
|| msg_warn "Settings may need extra time — check LXC 116"
|
||||
}
|
||||
|
||||
# ════════════════════════════════════════════════════════════════════════════
|
||||
# PHASE 8 — CASHUP LXC 117
|
||||
# ════════════════════════════════════════════════════════════════════════════
|
||||
deploy_cashup() {
|
||||
msg_step "8/8 Cashup (LXC 117 · 10.10.10.117)"
|
||||
|
||||
msg_info "Creating LXC 117"
|
||||
create_lxc 117 "10.10.10.117" "cashup" 1024 1
|
||||
msg_ok "LXC 117 created"
|
||||
|
||||
msg_info "Installing Docker"
|
||||
install_docker 117
|
||||
install_mgmt_key 117
|
||||
msg_ok "Docker + SSH ready"
|
||||
|
||||
# Create DB — idempotent via || true, works on fresh installs and re-runs
|
||||
msg_info "Creating cashup database"
|
||||
pct exec 100 -- bash -c "
|
||||
docker exec hotel-manage-postgres psql -U postgres -c \
|
||||
\"CREATE USER cashup WITH PASSWORD '${CASHUP_DB_PASS}';\" 2>/dev/null || true
|
||||
docker exec hotel-manage-postgres psql -U postgres -c \
|
||||
\"CREATE DATABASE cashup_db OWNER cashup;\" 2>/dev/null || true
|
||||
docker exec hotel-manage-postgres psql -U postgres -d cashup_db -c \
|
||||
\"GRANT ALL ON SCHEMA public TO cashup;\" 2>/dev/null || true
|
||||
" &>/dev/null
|
||||
msg_ok "Database cashup_db ready"
|
||||
|
||||
msg_info "Deploying cashup"
|
||||
deploy_service 117 "cashup" "${REPO_ROOT}/cashup" /opt/cashup
|
||||
|
||||
push_file 117 /opt/cashup/.env <<EOF
|
||||
NODE_ENV=production
|
||||
APP_SLUG=cashup
|
||||
DATABASE_URL=postgresql://cashup:${CASHUP_DB_PASS}@10.10.10.100:5432/cashup_db
|
||||
CENTRAL_AUTH_SECRET=${CENTRAL_AUTH_SECRET}
|
||||
OFFICE_IP_CHECK=${OFFICE_IP_CHECK:-${OFFICE_IP:-disabled}}
|
||||
FRONTEND_PORT=3083
|
||||
EOF
|
||||
|
||||
pct exec 117 -- bash -c "cd /opt/cashup && docker compose up -d --build" &>/dev/null
|
||||
|
||||
msg_info "Waiting for cashup"
|
||||
wait_healthy 117 "http://localhost:3083/cashup/api/health" \
|
||||
&& msg_ok "Cashup running at 10.10.10.117:3083" \
|
||||
|| msg_warn "Cashup may need extra time — check LXC 117"
|
||||
}
|
||||
|
||||
# ════════════════════════════════════════════════════════════════════════════
|
||||
# NPM PROXY HOSTS (via API)
|
||||
# ════════════════════════════════════════════════════════════════════════════
|
||||
|
|
@ -912,6 +970,7 @@ SUMMARY
|
|||
9000 Forgejo webhooks
|
||||
112 hotel-manage-noticeboard 10.10.10.112 3080 /notices/
|
||||
116 hotel-manage-settings 10.10.10.116 3080 /settings/api/
|
||||
117 hotel-manage-cashup 10.10.10.117 3083 /cashup/
|
||||
|
||||
── Credentials ───────────────────────────────────────────────
|
||||
Admin login: ${ADMIN_EMAIL}
|
||||
|
|
@ -951,7 +1010,7 @@ SUMMARY
|
|||
# Sources existing credentials and redeploys just the named service.
|
||||
if [[ "${1:-}" == "--only" ]]; then
|
||||
ONLY="${2:-}"
|
||||
VALID="postgres auth portal npm management noticeboard settings"
|
||||
VALID="postgres auth portal npm management noticeboard settings cashup"
|
||||
[[ -z "$ONLY" ]] && msg_error "Usage: install-stack.sh --only <service> (one of: ${VALID})"
|
||||
grep -qw "$ONLY" <<< "$VALID" || msg_error "Unknown service '${ONLY}'. Valid: ${VALID}"
|
||||
CREDS_FILE=/root/hotel-manage-credentials.txt
|
||||
|
|
@ -987,6 +1046,7 @@ if [[ "${1:-}" == "--only" ]]; then
|
|||
management) deploy_management ;;
|
||||
noticeboard) deploy_noticeboard ;;
|
||||
settings) deploy_settings ;;
|
||||
cashup) deploy_cashup ;;
|
||||
esac
|
||||
exit 0
|
||||
fi
|
||||
|
|
@ -1004,5 +1064,6 @@ deploy_npm
|
|||
deploy_management
|
||||
deploy_noticeboard
|
||||
deploy_settings
|
||||
deploy_cashup
|
||||
configure_npm_proxy_hosts
|
||||
print_summary
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue