Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
163 lines
5.6 KiB
Bash
Executable File
163 lines
5.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Setup PostgreSQL for Sankofa on r630-01
|
|
# VMID: 7803, IP: ${DB_HOST:-192.168.11.53}
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR/.env.r630-01" 2>/dev/null || true
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
|
|
# Configuration
|
|
# Load IP configuration
|
|
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
|
|
|
|
PROXMOX_HOST="${PROXMOX_HOST:-${PROXMOX_HOST_R630_01:-192.168.11.11}}"
|
|
VMID="${VMID_SANKOFA_POSTGRES:-7803}"
|
|
CONTAINER_IP="${SANKOFA_POSTGRES_IP:-192.168.11.53}"
|
|
DB_NAME="${DB_NAME:-sankofa}"
|
|
DB_USER="${DB_USER:-sankofa}"
|
|
DB_PASSWORD="${DB_PASSWORD:-$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-24)}"
|
|
POSTGRES_VERSION="${POSTGRES_VERSION:-16}"
|
|
|
|
# SSH function
|
|
ssh_r630_01() {
|
|
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 root@"$PROXMOX_HOST" "$@"
|
|
}
|
|
|
|
# Execute command in container
|
|
exec_container() {
|
|
ssh_r630_01 "pct exec $VMID -- $*"
|
|
}
|
|
|
|
main() {
|
|
echo ""
|
|
log_info "========================================="
|
|
log_info "PostgreSQL Setup for Sankofa"
|
|
log_info "========================================="
|
|
echo ""
|
|
log_info "Container VMID: $VMID"
|
|
log_info "Container IP: $CONTAINER_IP"
|
|
log_info "Database: $DB_NAME"
|
|
log_info "User: $DB_USER"
|
|
echo ""
|
|
|
|
# Check if container exists and is running
|
|
log_info "Checking container status..."
|
|
if ! ssh_r630_01 "pct status $VMID >/dev/null 2>&1"; then
|
|
log_error "Container $VMID does not exist or is not running"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if container is running
|
|
local status=$(ssh_r630_01 "pct status $VMID" 2>/dev/null | awk '{print $2}' || echo "stopped")
|
|
if [[ "$status" != "running" ]]; then
|
|
log_info "Starting container $VMID..."
|
|
ssh_r630_01 "pct start $VMID"
|
|
sleep 5
|
|
fi
|
|
log_success "Container is running"
|
|
echo ""
|
|
|
|
# Install PostgreSQL
|
|
log_info "Installing PostgreSQL $POSTGRES_VERSION..."
|
|
exec_container bash -c "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -y -qq wget ca-certificates gnupg lsb-release"
|
|
|
|
exec_container bash -c 'wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --batch --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg'
|
|
|
|
exec_container bash -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
|
|
|
exec_container bash -c "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -y -qq postgresql-$POSTGRES_VERSION postgresql-contrib-$POSTGRES_VERSION"
|
|
|
|
log_success "PostgreSQL installed"
|
|
echo ""
|
|
|
|
# Configure PostgreSQL
|
|
log_info "Configuring PostgreSQL..."
|
|
exec_container bash -c "systemctl enable postgresql"
|
|
exec_container bash -c "systemctl start postgresql"
|
|
|
|
# Wait for PostgreSQL to be ready
|
|
log_info "Waiting for PostgreSQL to start..."
|
|
sleep 5
|
|
|
|
# Create database and user
|
|
log_info "Creating database and user..."
|
|
exec_container bash -c "sudo -u postgres psql << 'EOF'
|
|
-- Create user
|
|
CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD';
|
|
|
|
-- Create database
|
|
CREATE DATABASE $DB_NAME OWNER $DB_USER ENCODING 'UTF8';
|
|
|
|
-- Grant privileges
|
|
GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;
|
|
|
|
-- Connect to database and grant schema privileges
|
|
\c $DB_NAME
|
|
GRANT ALL ON SCHEMA public TO $DB_USER;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO $DB_USER;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO $DB_USER;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON FUNCTIONS TO $DB_USER;
|
|
|
|
-- Enable extensions
|
|
CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";
|
|
CREATE EXTENSION IF NOT EXISTS \"pg_stat_statements\";
|
|
EOF"
|
|
|
|
log_success "Database and user created"
|
|
echo ""
|
|
|
|
# Configure PostgreSQL for remote access (if needed)
|
|
log_info "Configuring PostgreSQL for network access..."
|
|
exec_container bash -c "echo \"host all all ${NETWORK_192_168_11_0:-192.168.11.0}/24 md5\" >> /etc/postgresql/$POSTGRES_VERSION/main/pg_hba.conf"
|
|
exec_container bash -c "sed -i \"s/#listen_addresses = 'localhost'/listen_addresses = '*'/\" /etc/postgresql/$POSTGRES_VERSION/main/postgresql.conf"
|
|
|
|
# Restart PostgreSQL
|
|
exec_container bash -c "systemctl restart postgresql"
|
|
sleep 3
|
|
|
|
log_success "PostgreSQL configured for network access"
|
|
echo ""
|
|
|
|
# Test connection
|
|
log_info "Testing database connection..."
|
|
if exec_container bash -c "PGPASSWORD='$DB_PASSWORD' psql -h localhost -U $DB_USER -d $DB_NAME -c 'SELECT version();' >/dev/null 2>&1"; then
|
|
log_success "Database connection successful"
|
|
else
|
|
log_error "Database connection failed"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# Summary
|
|
log_success "========================================="
|
|
log_success "PostgreSQL Setup Complete"
|
|
log_success "========================================="
|
|
echo ""
|
|
log_info "Database Configuration:"
|
|
echo " Host: $CONTAINER_IP"
|
|
echo " Port: 5432"
|
|
echo " Database: $DB_NAME"
|
|
echo " User: $DB_USER"
|
|
echo " Password: $DB_PASSWORD"
|
|
echo ""
|
|
log_info "Next steps:"
|
|
echo " 1. Update .env.r630-01 with the database password"
|
|
echo " 2. Run database migrations: ./scripts/run-migrations-r630-01.sh"
|
|
echo ""
|
|
}
|
|
|
|
main "$@"
|