File size: 2,704 Bytes
79becd2
 
 
6ff9480
94f1533
 
 
79becd2
 
6ff9480
79becd2
94f1533
de5b0e9
94f1533
77a2880
 
94f1533
 
5266caf
79becd2
 
 
a603a7e
fd3f2e6
 
 
 
 
 
 
 
 
94f1533
79becd2
0a550c0
 
5266caf
0a550c0
79becd2
94f1533
5266caf
79becd2
 
 
 
c7401ed
e9bdc69
 
2261097
f7ed979
e9bdc69
f002194
 
c7401ed
 
f7ed979
b318189
 
 
 
 
cfa5bdb
 
3b348aa
 
fa4eb55
 
83cd8b1
cfa5bdb
 
 
5d58014
 
 
 
 
 
 
cfa5bdb
 
b318189
cfa5bdb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/sh

# Create necessary directories in the persistent /data volume
echo "Creating necessary directories in the persistent /data volume..."
mkdir -p /data/postgresql/data /data/postgresql/run
chmod 0700 /data/postgresql/data
chmod 0755 /data/postgresql/run

# Initialize PostgreSQL if not already initialized
echo "Initializing PostgreSQL if not already initialized..."
if [ ! -f "/data/postgresql/data/PG_VERSION" ]; then
    # Initialize database
    echo "Initializing database..."
    initdb -D /data/postgresql/data
    
    # Modify pg_hba.conf to allow local connections
    echo "local all all trust" > /data/postgresql/data/pg_hba.conf
    echo "host all all 127.0.0.1/32 trust" >> /data/postgresql/data/pg_hba.conf
    echo "host all all 0.0.0.0/0 trust" >> /data/postgresql/data/pg_hba.conf
fi

# Start PostgreSQL with the persistent directories
echo "Starting PostgreSQL..."
# First, check if there's a postmaster.pid file and remove it if the process isn't running
if [ -f "/data/postgresql/data/postmaster.pid" ]; then
    pid=$(cat /data/postgresql/data/postmaster.pid | head -1)
    if ! kill -0 "$pid" 2>/dev/null; then
        echo "Removing stale PID file..."
        rm /data/postgresql/data/postmaster.pid
    fi
fi

pg_ctl -D /data/postgresql/data -o "-c listen_addresses='*' -c unix_socket_directories='/data/postgresql/run'" start

# Create the 'node' database if it doesn't exist
echo "Creating 'node' database if it doesn't exist..."
createdb -h localhost node || true

# Wait for PostgreSQL to be ready
echo "Waiting for PostgreSQL to be ready..."
until pg_isready -h localhost; do
  echo "Waiting for PostgreSQL to be ready..."
  sleep 1
done

# Set NEXTAUTH_URL based on SPACE_HOST if available
if [ -n "$SPACE_ID" ]; then
    echo "Setting NEXTAUTH_URL to https://huggingface.co/spaces/${SPACE_ID}"
    export NEXTAUTH_URL="https://huggingface.co/spaces/${SPACE_ID}"
else
    echo "WARNING: SPACE_ID not found"
fi

# Update DATABASE_URL to use TCP connection
export DATABASE_URL="postgresql://postgres:postgres@localhost:5432/node"

# Export these environment variables to influence Next.js binding
export HOSTNAME="0.0.0.0"
export HOST="0.0.0.0"
export PORT=3000

# Start Next.js in the background
./web/entrypoint.sh node ./web/server.js \
    --keepAliveTimeout 110000 \
    --hostname "0.0.0.0" \
    --port 3000 \
    --experimental-hostname-validation=false \
    --experimental-https=false &

# Wait a moment for the server to start
sleep 5

# Debug network information
echo "Network Debug Information:"
echo "-------------------------"
ip addr show
echo "-------------------------"
netstat -tulpn
echo "-------------------------"

# Keep the script running
wait