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
 | 
