115 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
clear
 | 
						|
ARG1=$1
 | 
						|
WHO=$(whoami)
 | 
						|
APP_ID=$(cat /proc/sys/kernel/random/uuid)
 | 
						|
RANDOM_SECRET=$(echo $(($(date +%s%N) / 1000000)) | sha256sum | base64 | head -c 32)
 | 
						|
SENTRY_DSN="https://9e7a74326f29422584d2d0bebdc8b7d3@o1082494.ingest.sentry.io/6091062"
 | 
						|
 | 
						|
UBUNTU_MAJOR_MIN=20
 | 
						|
UBUNTU_MINOR_MIN=04
 | 
						|
OS_OK="nok"
 | 
						|
 | 
						|
set -eou pipefail
 | 
						|
 | 
						|
if [ $ARG1 ] && [ $ARG1 == "-d" ]; then
 | 
						|
    set -x
 | 
						|
fi
 | 
						|
 | 
						|
function errorchecker() {
 | 
						|
    exitCode=$?
 | 
						|
    if [ $exitCode -ne "0" ]; then
 | 
						|
        echo "$0 exited unexpectedly with status: $exitCode"
 | 
						|
        exit $exitCode
 | 
						|
    fi
 | 
						|
}
 | 
						|
trap 'errorchecker' EXIT
 | 
						|
 | 
						|
if [ $WHO != 'root' ]; then
 | 
						|
    echo 'Run as root please: sudo sh -c "$(curl -fsSL https://get.coollabs.io/coolify/install.sh)"'
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
. /etc/lsb-release
 | 
						|
if [ $DISTRIB_ID != 'Ubuntu' ]; then
 | 
						|
    echo 'Not supported OS, please open an issue on Github to get supported version.'
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
DISTRIB_RELEASE_MAJOR=$(echo "$DISTRIB_RELEASE" | cut -d'.' -f 1)
 | 
						|
DISTRIB_RELEASE_MINOR=$(echo "$DISTRIB_RELEASE" | cut -d'.' -f 2)
 | 
						|
 | 
						|
if [ "$DISTRIB_RELEASE_MAJOR" -ge "$UBUNTU_MAJOR_MIN" ] &&
 | 
						|
    [ "$DISTRIB_RELEASE_MINOR" -ge "$UBUNTU_MINOR_MIN" ]; then
 | 
						|
    OS_OK="ok"
 | 
						|
fi
 | 
						|
 | 
						|
if [ $OS_OK == 'nok' ]; then
 | 
						|
    echo "Ubuntu version less than $UBUNTU_MAJOR_MIN.$UBUNTU_MINOR_MIN."
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
function installPodman() {
 | 
						|
    apt-get update -y
 | 
						|
    apt-get install curl wget gnupg2 -y
 | 
						|
    if [ "$DISTRIB_RELEASE_MAJOR" -eq "20" ] && [ "$DISTRIB_RELEASE_MINOR" -eq "04" ]; then
 | 
						|
        echo 'Installing on 20.04'
 | 
						|
        source /etc/os-release
 | 
						|
        sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"
 | 
						|
        wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key -O- | apt-key add -
 | 
						|
        apt-get update -y
 | 
						|
        apt-get -y install podman
 | 
						|
        return 0
 | 
						|
    elif [ "$DISTRIB_RELEASE_MAJOR" -eq "20" ] && [ "$DISTRIB_RELEASE_MINOR" -eq "10" ]; then
 | 
						|
        apt-get -y install podman
 | 
						|
        return 0
 | 
						|
    elif [ "$DISTRIB_RELEASE_MAJOR" -gt "20" ]; then
 | 
						|
        apt-get -y install podman
 | 
						|
        return 0
 | 
						|
    else
 | 
						|
        exit 1
 | 
						|
    fi
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
if [ ! -x "$(command -v podman)" ]; then
 | 
						|
    while true; do
 | 
						|
        read -p "Podman not found, should I install it automatically? [Yy/Nn] " yn
 | 
						|
        case $yn in
 | 
						|
        [Yy]*)
 | 
						|
            installPodman
 | 
						|
            break
 | 
						|
            ;;
 | 
						|
        [Nn]*)
 | 
						|
            echo "Please install docker manually and update it to the latest, but at least to $DOCKER_MAJOR.$DOCKER_MINOR"
 | 
						|
            exit 0
 | 
						|
            ;;
 | 
						|
        *) echo "Please answer Yy or Nn." ;;
 | 
						|
        esac
 | 
						|
    done
 | 
						|
fi
 | 
						|
 | 
						|
# Making base directory for coolify
 | 
						|
if [ ! -d coolify ]; then
 | 
						|
    mkdir coolify
 | 
						|
fi
 | 
						|
 | 
						|
echo "COOLIFY_APP_ID=$APP_ID
 | 
						|
COOLIFY_SECRET_KEY=$RANDOM_SECRET
 | 
						|
COOLIFY_DATABASE_URL=file:../db/prod.db
 | 
						|
COOLIFY_SENTRY_DSN=$SENTRY_DSN
 | 
						|
COOLIFY_HOSTED_ON=docker" >coolify/.env
 | 
						|
 | 
						|
systemctl start podman.socket
 | 
						|
systemctl enable podman.socket
 | 
						|
 | 
						|
podman volume create coolify-db
 | 
						|
podman volume create coolify-ssl-certs 
 | 
						|
podman volume create coolify-letsencrypt
 | 
						|
 | 
						|
 | 
						|
cd coolify && podman run --privileged -tid --env-file .env -v /var/run/podman/podman.sock:/var/run/podman/podman.sock -v coolify-db-sqlite:/app/db docker.io/coollabsio/coolify:latest /bin/sh -c "env | grep COOLIFY > .env && docker-compose up -d --force-recreate"
 | 
						|
echo "Done"
 | 
						|
exit 0
 |