Skip to content

Instantly share code, notes, and snippets.

@rafirh
Last active December 8, 2025 00:39
Show Gist options
  • Select an option

  • Save rafirh/8e1c255cb81f62e45c860e1469d5d083 to your computer and use it in GitHub Desktop.

Select an option

Save rafirh/8e1c255cb81f62e45c860e1469d5d083 to your computer and use it in GitHub Desktop.
#!/bin/bash
set -e
echo "=== AUTO INSTALL GEOSERVER + NGINX REVERSE PROXY ==="
# -------- INPUT USER --------
read -p "Masukkan domain (tanpa https://): " DOMAIN
read -p "Masukkan port GeoServer (contoh 5001): " GS_PORT
echo ""
echo ">>> Domain: $DOMAIN"
echo ">>> Port GeoServer: $GS_PORT"
echo ""
sleep 2
# -------- INSTALL JAVA 8 --------
echo "=== CEK JAVA 8 ==="
if java -version 2>&1 | grep "1.8" >/dev/null; then
echo "Java 8 sudah terinstall, skip..."
else
echo "Java 8 belum ada, install..."
sudo apt update && sudo apt upgrade -y
sudo apt install openjdk-8-jre -y
fi
# -------- DOWNLOAD GEOSERVER --------
echo "=== DOWNLOAD & EXTRACT GEOSERVER ==="
# Buat folder jika belum ada
sudo mkdir -p /opt/geoserver
# Download ZIP langsung ke folder geoserver
sudo wget -O /opt/geoserver/geoserver.zip \
https://sourceforge.net/projects/geoserver/files/GeoServer/2.21.0/geoserver-2.21.0-bin.zip
# Install unzip jika belum
sudo apt install unzip -y
# Extract langsung ke /opt/geoserver
sudo unzip /opt/geoserver/geoserver.zip -d /opt/geoserver/
# Hapus file ZIP
sudo rm /opt/geoserver/geoserver.zip
# -------- SET PORT --------
echo "=== CONFIGURE PORT GEO SERVER ($GS_PORT) ==="
sudo sed -i "s/^jetty.http.port=.*/jetty.http.port=$GS_PORT/g" /opt/geoserver/start.ini
# -------- SYSTEMD SERVICE --------
echo "=== CREATE SERVICE ==="
cat <<EOF | sudo tee /etc/systemd/system/geoserver.service > /dev/null
[Unit]
Description=GeoServer Service
After=network.target
[Service]
Type=simple
User=root
Environment=GEOSERVER_HOME=/opt/geoserver
Environment=GEOSERVER_DATA_DIR=/opt/geoserver/data_dir
Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
ExecStart=/opt/geoserver/bin/startup.sh
ExecStop=/opt/geoserver/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable geoserver
sudo systemctl start geoserver
echo "=== CEK STATUS GEO SERVER ==="
sudo systemctl status geoserver --no-pager
# -------- CHECK & INSTALL NGINX --------
echo "=== CEK NGINX ==="
if nginx -v >/dev/null 2>&1; then
echo "Nginx sudah terinstall, skip..."
else
echo "Nginx belum ada, install..."
sudo apt install nginx -y
fi
# -------- CONFIGURE NGINX --------
echo "=== CONFIGURE NGINX ==="
cat <<EOF | sudo tee /etc/nginx/sites-enabled/geoserver.conf > /dev/null
server {
listen 80;
listen [::]:80;
server_name $DOMAIN;
access_log /var/log/nginx/geoserver.access.log;
error_log /var/log/nginx/geoserver.error.log;
client_max_body_size 100M;
location = / {
return 301 \$scheme://\$host/geoserver;
}
location /geoserver {
proxy_pass http://localhost:$GS_PORT/geoserver;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_set_header X-Forwarded-Host \$server_name;
proxy_set_header X-Forwarded-Port \$server_port;
proxy_set_header Referer \$http_referer;
proxy_set_header Origin http://\$host;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
proxy_redirect off;
}
location /geoserver/web/ {
proxy_pass http://localhost:$GS_PORT/geoserver/web/;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_set_header X-Forwarded-Port \$server_port;
proxy_set_header Referer \$http_referer;
proxy_set_header Origin http://\$host;
proxy_redirect off;
}
}
EOF
sudo nginx -t && sudo systemctl restart nginx
echo "===================================="
echo "INSTALL SELESAI!"
echo "Akses GeoServer via: http://$DOMAIN/geoserver"
echo "===================================="
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment