postgre-tls/start.sh

61 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo -e "${GREEN}[Postgre-TLS] Preparing to start PostgreSQL container...${NC}"
# Create secrets directory if needed
mkdir -p secrets
# Generate SSL certificates if missing
if [ ! -f "secrets/ca.crt" ] || [ ! -f "secrets/server.crt" ] || [ ! -f "secrets/server.key" ]; then
echo -e "${YELLOW}[Postgre-TLS] Generating SSL certificates for local development...${NC}"
openssl genrsa -out secrets/ca.key 2048
openssl req -new -x509 -key secrets/ca.key -out secrets/ca.crt -days 365 \
-subj "/C=US/ST=State/L=City/O=Postgre-TLS/CN=Postgre-TLS-CA" -batch
openssl genrsa -out secrets/server.key 2048
openssl req -new -key secrets/server.key -out secrets/server.csr \
-subj "/C=US/ST=State/L=City/O=Postgre-TLS/CN=localhost" -batch
openssl x509 -req -in secrets/server.csr \
-CA secrets/ca.crt -CAkey secrets/ca.key \
-CAcreateserial -out secrets/server.crt -days 365
rm secrets/server.csr
chmod 600 secrets/server.key
chmod 644 secrets/server.crt secrets/ca.crt
# Remove CA private key for security
rm secrets/ca.key
echo -e "${GREEN}[Postgre-TLS] SSL certificates generated in secrets/${NC}"
fi
# Generate password if missing
if [ ! -f "secrets/postgres_password" ]; then
echo -e "${YELLOW}[Postgre-TLS] Generating random password for PostgreSQL...${NC}"
openssl rand -base64 32 > secrets/postgres_password
chmod 600 secrets/postgres_password
echo -e "${GREEN}[Postgre-TLS] Generated password stored in secrets/postgres_password${NC}"
echo -e "${YELLOW}[Postgre-TLS] Your PostgreSQL password is:${NC}"
cat secrets/postgres_password
echo ""
fi
# Manage container
echo -e "${YELLOW}[Postgre-TLS] Managing Docker container...${NC}"
docker-compose down -v || true # Graceful down with volume removal
docker-compose build
docker-compose up -d
echo -e "${GREEN}[Postgre-TLS] Container started successfully!${NC}"
echo -e "${YELLOW}[Postgre-TLS] Run ./connect.sh to test the connection.${NC}"