Last active
December 8, 2025 00:39
-
-
Save rafirh/8e1c255cb81f62e45c860e1469d5d083 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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