Skip to content

Commit a3b263b

Browse files
FIX (installation): Fix installation on Debian
1 parent a956dcc commit a3b263b

File tree

1 file changed

+74
-19
lines changed

1 file changed

+74
-19
lines changed

install-postgresus.sh

Lines changed: 74 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#!/bin/bash
22

3+
set -e # Exit on any error
4+
35
# Check if script is run as root
46
if [ "$(id -u)" -ne 0 ]; then
57
echo "Error: This script must be run as root (sudo ./install-postgresus.sh)" >&2
@@ -27,39 +29,88 @@ else
2729
log "Directory already exists: $INSTALL_DIR"
2830
fi
2931

32+
# Detect OS
33+
detect_os() {
34+
if [ -f /etc/os-release ]; then
35+
. /etc/os-release
36+
OS=$ID
37+
VERSION_CODENAME=${VERSION_CODENAME:-}
38+
else
39+
log "ERROR: Cannot detect OS. /etc/os-release not found."
40+
exit 1
41+
fi
42+
}
43+
3044
# Check if Docker is installed
3145
if ! command -v docker &> /dev/null; then
3246
log "Docker not found. Installing Docker..."
3347

34-
# Install Docker
48+
detect_os
49+
log "Detected OS: $OS, Codename: $VERSION_CODENAME"
50+
51+
# Install prerequisites
3552
apt-get update
36-
apt-get remove -y docker docker-engine docker.io containerd runc
37-
apt-get install -y ca-certificates curl gnupg lsb-release
38-
mkdir -p /etc/apt/keyrings
39-
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
40-
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
53+
apt-get install -y ca-certificates curl gnupg
54+
55+
# Set up Docker repository
56+
install -m 0755 -d /etc/apt/keyrings
57+
58+
# Determine Docker repo URL based on OS
59+
case "$OS" in
60+
ubuntu)
61+
DOCKER_URL="https://download.docker.com/linux/ubuntu"
62+
# Fallback for unsupported versions
63+
case "$VERSION_CODENAME" in
64+
plucky|oracular) VERSION_CODENAME="noble" ;; # Ubuntu 25.x -> 24.04
65+
esac
66+
;;
67+
debian)
68+
DOCKER_URL="https://download.docker.com/linux/debian"
69+
# Fallback for unsupported versions
70+
case "$VERSION_CODENAME" in
71+
trixie|forky) VERSION_CODENAME="bookworm" ;; # Debian 13/14 -> 12
72+
esac
73+
;;
74+
*)
75+
log "ERROR: Unsupported OS: $OS. Please install Docker manually."
76+
exit 1
77+
;;
78+
esac
79+
80+
log "Using Docker repository: $DOCKER_URL with codename: $VERSION_CODENAME"
81+
82+
# Download and add Docker GPG key (no sudo needed - already root)
83+
curl -fsSL "$DOCKER_URL/gpg" | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
84+
chmod a+r /etc/apt/keyrings/docker.gpg
85+
86+
# Add Docker repository
87+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] $DOCKER_URL $VERSION_CODENAME stable" > /etc/apt/sources.list.d/docker.list
88+
4189
apt-get update
42-
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
90+
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
91+
92+
# Verify Docker installation
93+
if ! command -v docker &> /dev/null; then
94+
log "ERROR: Docker installation failed!"
95+
exit 1
96+
fi
97+
4398
log "Docker installed successfully"
4499
else
45100
log "Docker already installed"
46101
fi
47102

48-
# Check if docker-compose is installed
49-
if ! command -v docker-compose &> /dev/null && ! command -v docker compose &> /dev/null; then
50-
log "Docker Compose not found. Installing Docker Compose..."
51-
apt-get update
52-
apt-get install -y docker-compose-plugin
53-
log "Docker Compose installed successfully"
103+
# Check if docker compose is available
104+
if ! docker compose version &> /dev/null; then
105+
log "ERROR: Docker Compose plugin not available!"
106+
exit 1
54107
else
55-
log "Docker Compose already installed"
108+
log "Docker Compose available"
56109
fi
57110

58111
# Write docker-compose.yml
59112
log "Writing docker-compose.yml to $INSTALL_DIR"
60113
cat > "$INSTALL_DIR/docker-compose.yml" << 'EOF'
61-
version: "3"
62-
63114
services:
64115
postgresus:
65116
container_name: postgresus
@@ -75,11 +126,15 @@ log "docker-compose.yml created successfully"
75126
# Start PostgresUS
76127
log "Starting PostgresUS..."
77128
cd "$INSTALL_DIR"
78-
docker compose up -d
79-
log "PostgresUS started successfully"
129+
if docker compose up -d; then
130+
log "PostgresUS started successfully"
131+
else
132+
log "ERROR: Failed to start PostgresUS!"
133+
exit 1
134+
fi
80135

81136
log "Postgresus installation completed successfully!"
82137
log "-------------------------------------------"
83138
log "To launch:"
84139
log "> cd $INSTALL_DIR && docker compose up -d"
85-
log "Access Postgresus at: http://localhost:4005"
140+
log "Access Postgresus at: http://localhost:4005"

0 commit comments

Comments
 (0)