coolify/scripts/install.sh
Andras Bacsai 460ae85226
V2 (#111)
Just v2
2022-02-10 15:47:44 +01:00

112 lines
3.5 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"
DOCKER_MAJOR=20
DOCKER_MINOR=10
DOCKER_VERSION_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
echo -e "Welcome to Coolify installer! \n"
echo "This script will install all the required packages and services to run Coolify."
echo -e "If you want to install Coolify on a different OS, please open an issue on Github to get supported version.\n\n"
echo -e "To see what I'm doing, please check:"
echo -e "https://github.com/coollabsio/get.coollabs.io/blob/main/static/coolify/install_v2.sh\n\n"
if [ $WHO != 'root' ]; then
echo 'Run as root please: sudo sh -c "$(curl -fsSL https://get.coollabs.io/coolify/install.sh)"'
exit 1
fi
if [ ! -x "$(command -v docker)" ]; then
while true; do
read -p "Docker Engine not found, should I install it automatically? [Yy/Nn] " yn
case $yn in
[Yy]*)
sh -c "$(curl -fsSL https://get.docker.com)"
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 Y or N." ;;
esac
done
fi
SERVER_VERSION=$(docker version -f "{{.Server.Version}}")
SERVER_VERSION_MAJOR=$(echo "$SERVER_VERSION" | cut -d'.' -f 1)
SERVER_VERSION_MINOR=$(echo "$SERVER_VERSION" | cut -d'.' -f 2)
if [ "$SERVER_VERSION_MAJOR" -ge "$DOCKER_MAJOR" ] &&
[ "$SERVER_VERSION_MINOR" -ge "$DOCKER_MINOR" ]; then
DOCKER_VERSION_OK="ok"
fi
if [ $DOCKER_VERSION_OK == 'nok' ]; then
echo "Docker version less than $DOCKER_MAJOR.$DOCKER_MINOR, please update it to at least to $DOCKER_MAJOR.$DOCKER_MINOR"
exit 1
fi
# Adding docker daemon configuration
cat <<EOF >/etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "5"
},
"features": {
"buildkit": true
},
"live-restore": true
}
EOF
# Restarting docker daemon
sh -c "systemctl daemon-reload && systemctl restart docker"
# Downloading docker compose cli plugin
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
# Making base directory for coolify
if [ ! -d coolify ]; then
mkdir coolify
fi
if [ -f coolify/.env ]; then
echo -e "Coolify is already installed, using some of the existing settings."
else
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
fi
cd coolify && docker run -tid --env-file .env -v /var/run/docker.sock:/var/run/docker.sock -v coolify-db-sqlite coollabsio/coolify:latest /bin/sh -c "env | grep COOLIFY > .env && docker compose up -d --force-recreate"
echo -e "Congratulations! Your coolify is ready to use.\n"
echo "Please visit http://<Your Public IP Address>:3000/ to get started."
echo "It will take a few minutes to start up, don't worry."