Created
December 8, 2025 01:15
-
-
Save rafirh/0a53ea1ad9b7151fef72e48087da8791 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 GEONETWORK + NGINX REVERSE PROXY ===" | |
| # -------- INPUT USER -------- | |
| read -p "Masukkan domain (tanpa https://): " DOMAIN | |
| read -p "Masukkan port GeoNetwork (contoh 5002): " GN_PORT | |
| echo "" | |
| echo ">>> Domain: $DOMAIN" | |
| echo ">>> Port GeoNetwork: $GN_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 GEONETWORK -------- | |
| echo "=== DOWNLOAD & EXTRACT GEONETWORK ===" | |
| # Buat folder jika belum ada | |
| sudo mkdir -p /opt/geonetwork | |
| # Download ZIP langsung ke folder geonetwork | |
| sudo wget -O /opt/geonetwork/geonetwork.war \ | |
| https://sourceforge.net/projects/geonetwork/files/GeoNetwork_opensource/v3.12.11/geonetwork.war | |
| # Install unzip jika belum | |
| sudo apt install unzip -y | |
| # Extract WAR file | |
| sudo mkdir -p /opt/geonetwork/webapps/geonetwork | |
| sudo unzip /opt/geonetwork/geonetwork.war -d /opt/geonetwork/webapps/geonetwork/ | |
| # -------- DOWNLOAD JETTY -------- | |
| echo "=== DOWNLOAD JETTY ===" | |
| sudo wget -O /opt/geonetwork/jetty.tar.gz \ | |
| https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.48.v20220622/jetty-distribution-9.4.48.v20220622.tar.gz | |
| sudo tar -xzf /opt/geonetwork/jetty.tar.gz -C /opt/geonetwork/ | |
| sudo mv /opt/geonetwork/jetty-distribution-* /opt/geonetwork/jetty | |
| # Hapus file tar.gz | |
| sudo rm /opt/geonetwork/jetty.tar.gz | |
| # -------- SET PORT -------- | |
| echo "=== CONFIGURE PORT GEONETWORK ($GN_PORT) ===" | |
| # Edit jetty.http.port di start.ini | |
| if grep -q "^jetty.http.port=" /opt/geonetwork/jetty/start.ini; then | |
| sudo sed -i "s/^jetty.http.port=.*/jetty.http.port=$GN_PORT/g" /opt/geonetwork/jetty/start.ini | |
| else | |
| echo "jetty.http.port=$GN_PORT" | sudo tee -a /opt/geonetwork/jetty/start.ini > /dev/null | |
| fi | |
| # Link webapp ke jetty | |
| sudo ln -sf /opt/geonetwork/webapps/geonetwork /opt/geonetwork/jetty/webapps/geonetwork | |
| # -------- SYSTEMD SERVICE -------- | |
| echo "=== CREATE SERVICE ===" | |
| cat <<EOF | sudo tee /etc/systemd/system/geonetwork.service > /dev/null | |
| [Unit] | |
| Description=GeoNetwork Service | |
| After=network.target | |
| [Service] | |
| Type=simple | |
| User=root | |
| WorkingDirectory=/opt/geonetwork/jetty | |
| Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 | |
| Environment=GEONETWORK_DATA_DIR=/opt/geonetwork/data_dir | |
| ExecStart=/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar /opt/geonetwork/jetty/start.jar | |
| Restart=on-failure | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable geonetwork | |
| sudo systemctl start geonetwork | |
| echo "=== CEK STATUS GEONETWORK ===" | |
| sudo systemctl status geonetwork --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/geonetwork.conf > /dev/null | |
| server { | |
| listen 80; | |
| listen [::]:80; | |
| server_name $DOMAIN; | |
| access_log /var/log/nginx/geonetwork.access.log; | |
| error_log /var/log/nginx/geonetwork.error.log; | |
| client_max_body_size 100M; | |
| location = / { | |
| return 301 \$scheme://\$host/geonetwork; | |
| } | |
| location /geonetwork { | |
| proxy_pass http://localhost:$GN_PORT/geonetwork; | |
| 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; | |
| } | |
| } | |
| EOF | |
| sudo nginx -t && sudo systemctl restart nginx | |
| echo "====================================" | |
| echo "INSTALL SELESAI!" | |
| echo "Akses GeoNetwork via: http://$DOMAIN/geonetwork" | |
| echo "Default credentials: admin / admin" | |
| echo "====================================" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment