gitlab-selfhosted/install_gitlab.sh

73 lines
2.4 KiB
Bash

#!/bin/bash
set -euo pipefail
echo "Welcome to GitLab Docker Automated Installer"
read -p "Enter LXC container IP to access GitLab (used only for instructions): " LXC_IP
read -p "Enter GitLab admin email: " ADMIN_EMAIL
read -p "Enter SMTP email address: " SMTP_EMAIL
read -p "Enter SMTP email password: " -s SMTP_PASS
echo
read -p "Enter SMTP server address (e.g. smtp.gmail.com): " SMTP_SERVER
read -p "Enter SMTP port (default 465): " SMTP_PORT
SMTP_PORT=${SMTP_PORT:-465}
read -p "Enter initial root password for GitLab admin: " -s ROOT_PASS
echo
GITLAB_HOME=/srv/gitlab
CONTAINER_NAME=gitlab
echo "Preparing persistent directories..."
mkdir -p $GITLAB_HOME/config $GITLAB_HOME/logs $GITLAB_HOME/data
chmod -R 755 $GITLAB_HOME
echo "Removing any existing GitLab container..."
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
fi
echo "Updating system and installing Docker dependencies..."
apt-get update -y && apt-get upgrade -y
apt-get install -y docker.io docker-compose curl sudo
systemctl enable docker
systemctl start docker
echo "Pulling GitLab Docker image..."
docker pull gitlab/gitlab-ce:latest
echo "Running GitLab container..."
docker run -d \
--hostname gitlab.local \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://localhost'; \
gitlab_rails['smtp_enable'] = true; \
gitlab_rails['smtp_address'] = '$SMTP_SERVER'; \
gitlab_rails['smtp_port'] = $SMTP_PORT; \
gitlab_rails['smtp_user_name'] = '$SMTP_EMAIL'; \
gitlab_rails['smtp_password'] = '$SMTP_PASS'; \
gitlab_rails['smtp_domain'] = 'localhost'; \
gitlab_rails['smtp_authentication'] = 'login'; \
gitlab_rails['smtp_enable_starttls_auto'] = false; \
gitlab_rails['smtp_tls'] = true; \
gitlab_rails['gitlab_email_from'] = '$SMTP_EMAIL'; \
gitlab_rails['gitlab_email_reply_to'] = '$SMTP_EMAIL'; \
gitlab_rails['gitlab_admin_email'] = '$ADMIN_EMAIL'; \
gitlab_rails['initial_root_password'] = '$ROOT_PASS';" \
-p 443:443 -p 80:80 -p 2222:22 \
--name $CONTAINER_NAME \
--restart always \
-v $GITLAB_HOME/config:/etc/gitlab \
-v $GITLAB_HOME/logs:/var/log/gitlab \
-v $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:latest
echo "GitLab container is launching. It may take a few minutes to initialize."
echo "Your GitLab admin login:"
echo " Username: root"
echo " Password: $ROOT_PASS"
echo "Access GitLab at http://$LXC_IP"
echo "To watch logs: sudo docker logs -f $CONTAINER_NAME"