sarveshpatel commited on
Commit
571b9ea
Β·
verified Β·
1 Parent(s): cb8cab0

Create start.sh

Browse files
Files changed (1) hide show
  1. start.sh +141 -0
start.sh ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo "=========================================="
5
+ echo "πŸš€ Starting PostgreSQL + pgAdmin Space"
6
+ echo "=========================================="
7
+
8
+ # Environment variables (set via HF Space secrets)
9
+ export HF_TOKEN="${HF_TOKEN:-}"
10
+ export XET_DATASET="${XET_DATASET:-your-username/postgres-backup}"
11
+ export PGPASSWORD="${POSTGRES_PASSWORD:-postgres123}"
12
+
13
+ # Create pgAdmin runner script
14
+ cat > /app/run_pgadmin.py << 'PGADMIN_RUNNER'
15
+ import os
16
+ os.environ['PGADMIN_DEFAULT_EMAIL'] = 'admin@admin.com'
17
+ os.environ['PGADMIN_DEFAULT_PASSWORD'] = 'admin123'
18
+ os.environ['PGADMIN_CONFIG_SERVER_MODE'] = 'False'
19
+ os.environ['PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED'] = 'False'
20
+
21
+ import sys
22
+ sys.path.insert(0, '/app')
23
+ from pgadmin_config import *
24
+
25
+ from pgadmin4 import app
26
+ from pgadmin4.pgAdmin4 import create_app
27
+
28
+ application = create_app()
29
+
30
+ if __name__ == '__main__':
31
+ application.run(
32
+ host='0.0.0.0',
33
+ port=7860,
34
+ debug=False,
35
+ use_reloader=False,
36
+ threaded=True
37
+ )
38
+ PGADMIN_RUNNER
39
+
40
+ # ============================================
41
+ # RESTORE FROM XET STORAGE (if available)
42
+ # ============================================
43
+ echo "πŸ“¦ Checking for existing backup in Xet dataset..."
44
+
45
+ python3 << 'RESTORE_SCRIPT'
46
+ import os
47
+ import sys
48
+ from pathlib import Path
49
+
50
+ try:
51
+ from huggingface_hub import hf_hub_download, list_repo_files, HfApi
52
+
53
+ hf_token = os.environ.get('HF_TOKEN')
54
+ dataset_id = os.environ.get('XET_DATASET', 'your-username/postgres-backup')
55
+
56
+ if not hf_token:
57
+ print("⚠️ No HF_TOKEN set, skipping restore")
58
+ sys.exit(0)
59
+
60
+ api = HfApi(token=hf_token)
61
+
62
+ try:
63
+ files = list_repo_files(dataset_id, repo_type="dataset", token=hf_token)
64
+ if 'backup/pg_backup.sql' in files:
65
+ print(f"βœ… Found backup in {dataset_id}, will restore after PostgreSQL starts")
66
+ # Download backup file
67
+ backup_path = hf_hub_download(
68
+ repo_id=dataset_id,
69
+ filename="backup/pg_backup.sql",
70
+ repo_type="dataset",
71
+ token=hf_token,
72
+ local_dir="/data"
73
+ )
74
+ print(f"πŸ“₯ Downloaded backup to {backup_path}")
75
+ else:
76
+ print("ℹ️ No backup found, starting fresh")
77
+ except Exception as e:
78
+ print(f"ℹ️ Could not access dataset: {e}")
79
+
80
+ except ImportError as e:
81
+ print(f"⚠️ Import error: {e}")
82
+ except Exception as e:
83
+ print(f"⚠️ Restore check failed: {e}")
84
+ RESTORE_SCRIPT
85
+
86
+ # ============================================
87
+ # INITIALIZE POSTGRESQL
88
+ # ============================================
89
+ echo "πŸ—„οΈ Setting up PostgreSQL..."
90
+
91
+ if [ ! -f "/data/postgres/PG_VERSION" ]; then
92
+ echo "πŸ“ Initializing new PostgreSQL database..."
93
+
94
+ # Initialize as postgres user
95
+ sudo -u postgres /usr/lib/postgresql/15/bin/initdb -D /data/postgres -E UTF8 --locale=C
96
+
97
+ # Configure PostgreSQL
98
+ echo "host all all 127.0.0.1/32 md5" >> /data/postgres/pg_hba.conf
99
+ echo "local all all trust" >> /data/postgres/pg_hba.conf
100
+
101
+ # Start temporarily to create user and database
102
+ sudo -u postgres /usr/lib/postgresql/15/bin/pg_ctl -D /data/postgres -l /tmp/pg_init.log start
103
+
104
+ sleep 3
105
+
106
+ # Create user and database
107
+ sudo -u postgres psql -c "ALTER USER postgres PASSWORD '${PGPASSWORD}';"
108
+ sudo -u postgres psql -c "CREATE DATABASE appdb OWNER postgres;"
109
+
110
+ # Restore from backup if exists
111
+ if [ -f "/data/backup/pg_backup.sql" ]; then
112
+ echo "πŸ”„ Restoring from backup..."
113
+ sudo -u postgres psql -d appdb -f /data/backup/pg_backup.sql || echo "⚠️ Restore had some issues, continuing..."
114
+ echo "βœ… Restore completed"
115
+ fi
116
+
117
+ # Stop temporary instance
118
+ sudo -u postgres /usr/lib/postgresql/15/bin/pg_ctl -D /data/postgres stop
119
+
120
+ echo "βœ… PostgreSQL initialized"
121
+ else
122
+ echo "βœ… PostgreSQL data directory exists"
123
+ fi
124
+
125
+ # Ensure correct ownership
126
+ chown -R postgres:postgres /data/postgres
127
+ chmod 700 /data/postgres
128
+
129
+ echo "=========================================="
130
+ echo "πŸŽ‰ Starting services via Supervisor"
131
+ echo "=========================================="
132
+ echo ""
133
+ echo "πŸ“Š pgAdmin will be available at: https://your-space.hf.space"
134
+ echo "πŸ‘€ Login: admin@admin.com / admin123"
135
+ echo "πŸ—„οΈ PostgreSQL: localhost:5432"
136
+ echo "πŸ“¦ Xet Dataset: ${XET_DATASET}"
137
+ echo ""
138
+ echo "=========================================="
139
+
140
+ # Start supervisor (manages PostgreSQL, pgAdmin, and sync)
141
+ exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf