Skip to content

Instantly share code, notes, and snippets.

@rafirh
Created December 8, 2025 01:15
Show Gist options
  • Select an option

  • Save rafirh/0a53ea1ad9b7151fef72e48087da8791 to your computer and use it in GitHub Desktop.

Select an option

Save rafirh/0a53ea1ad9b7151fef72e48087da8791 to your computer and use it in GitHub Desktop.
#!/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