460ae85226
Just v2
112 lines
3.5 KiB
Bash
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." |