| Server IP : 104.129.129.72 / Your IP : 216.73.216.229 Web Server : LiteSpeed System : Linux 123answers 5.15.0-143-generic #153-Ubuntu SMP Fri Jun 13 19:10:45 UTC 2025 x86_64 User : answe8064 ( 1002) PHP Version : 8.2.28 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /opt/installer/apps/ |
Upload File : |
#!/bin/bash
if [ -f "include/startup.sh" ]; then
. include/startup.sh
elif [ -f "../include/startup.sh" ]; then
. ../include/startup.sh
fi
checkTagExist docker-latest-offirepo.success
rootDir=$(rootDir)
engineInstallUrl=https://releases.rancher.com/install-docker/18.09.sh
kamateraDriverUrl=https://github.com/OriHoch/docker-machine-driver-kamatera/releases/download/v1.0.4/docker-machine-driver-kamatera_v1.0.4_linux_amd64.tar.gz
RANCHER_VERSION=v2.2.9
vlan=`cat ${CWM_CONFIGFILE} | grep ^vlan.*=lan-.* | cut -d'=' -f 2`
rancherDomain="rancher.${CWM_SERVERIP//./-}.cloud-xip.io"
echo "Installing Jq" | log
installPackage jq
waitOrStop 0 "Failed apt install: jq"
echo "Enabling certbot for Rancher" | log
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
# remove default vhosts
unlink /etc/nginx/sites-enabled/default
unlink /etc/nginx/sites-enabled/default-ssl
# copy configs to nginx folders
cp $rootDir/tweaks/extras/rancher/letsencrypt.conf /etc/nginx/snippets/
cp $rootDir/tweaks/extras/rancher/rancher.conf /etc/nginx/sites-available/
# symlink sites
ln -s /etc/nginx/sites-available/rancher.conf /etc/nginx/sites-enabled/rancher.conf
systemctl restart nginx
# creating certbot
certbot certonly --agree-tos -n --email ${ADMINEMAIL} --webroot -w /var/lib/letsencrypt/ -d ${rancherDomain}
echo "Creating nginx configuration" | log
# copy ssl configs to nginx folders
cp $rootDir/tweaks/extras/rancher/rancher-ssl.conf /etc/nginx/sites-available/
# symlink sites
ln -s /etc/nginx/sites-available/rancher-ssl.conf /etc/nginx/sites-enabled/rancher-ssl.conf
# add keys to ssl configs
sed -i "s|/path/to/your.key|/etc/letsencrypt/live/${rancherDomain}/privkey.pem|" /etc/nginx/sites-available/rancher-ssl.conf
sed -i "s|/path/to/your.crt|/etc/letsencrypt/live/${rancherDomain}/fullchain.pem|" /etc/nginx/sites-available/rancher-ssl.conf
systemctl restart nginx
echo "Creating Rancher admin" | log
mkdir -p /var/lib/rancher
systemctl start docker.service
docker run -d --name rancher --restart unless-stopped -p 8000:80 -v "/var/lib/rancher:/var/lib/rancher" "rancher/rancher:${RANCHER_VERSION}"
curlBaseParams=( --silent -S --retry-connrefused --retry 3 --retry-delay 2 -H 'content-type: application/json')
echo "Waiting for Rancher to intialize" | log
HTTPD=`curl -s -o /dev/null -w ''%{http_code}'' https://${CWM_SERVERIP}:443 --insecure`
until [ "$HTTPD" == "200" ]; do
sleep 3
HTTPD=`curl -s -o /dev/null -w ''%{http_code}'' https://${CWM_SERVERIP}:443 --insecure`
done
sleep 15
echo "Getting Rancher Login Token" | log
LOGINRESPONSE=`curl --url "https://${rancherDomain}/v3-public/localProviders/local?action=login" --data-binary '{"username":"admin","password":"admin"}' "${curlBaseParams[@]}"`
LOGINTOKEN=`echo $LOGINRESPONSE | jq -r .token`
echo "Changing Web Interface Password" | log
curl --url "https://${rancherDomain}/v3/users?action=changepassword" --data-binary '{"currentPassword":"admin","newPassword":"'${ADMINPASSWORD}'"}' -H "Authorization: Bearer $LOGINTOKEN" "${curlBaseParams[@]}"
echo "Creating API key" | log
APIRESPONSE=`curl --url "https://${rancherDomain}/v3/token" --data-binary '{"type":"token","description":"automation"}' -H "Authorization: Bearer $LOGINTOKEN" "${curlBaseParams[@]}"`
echo "Getting API Token" | log
APITOKEN=`echo $APIRESPONSE | jq -r .token`
echo "Listing available Node drivers" | log
NODEDRIVERS=`curl --url "https://${rancherDomain}/v3/nodedrivers" -H "Authorization: Bearer $APITOKEN" "${curlBaseParams[@]}" | jq -r .data[].actions.deactivate`
echo "Deactivating foreign drivers" | log
for url in ${NODEDRIVERS}; do
curl --url "$url" -d '{}' -X POST -H "Authorization: Bearer $APITOKEN" "${curlBaseParams[@]}"
done
echo "Adding Kamatera Docker Machine Driver" | log
curl --url "https://${rancherDomain}/v3/nodedrivers" -d '{"active":true, "builtin":false, "url":"'${kamateraDriverUrl}'", "whitelistDomains":[]}' -X POST -H "Authorization: Bearer $APITOKEN" "${curlBaseParams[@]}"
echo "Listing available Kubernetes drivers" | log
KONTAINERDRIVERS=`curl --url "https://${rancherDomain}/v3/kontainerdrivers" -H "Authorization: Bearer $APITOKEN" "${curlBaseParams[@]}" | jq -r .data[].actions.deactivate`
echo "Deactivating foreign drivers" | log
for url in ${KONTAINERDRIVERS}; do
curl --url "$url" -d '{}' -X POST -H "Authorization: Bearer $APITOKEN" "${curlBaseParams[@]}"
done
echo "Creating Kamatera templates on Rancher" | log
sleep 10
# Kamatera Control Plane
PLANE_JSON_STRING='{
"engineInsecureRegistry":[],
"engineInstallURL":"'"${engineInstallUrl}"'",
"engineRegistryMirror":[],
"engineStorageDriver":"overlay2",
"kamateraConfig":{
"apiClientId":"'"${CWM_APICLIENTID}"'",
"apiSecret":"'"${CWM_APISECRET}"'",
"billing":"hourly",
"cpu":"2B",
"createServerCommandId":"0",
"datacenter":"'"${CWM_ZONE}"'",
"diskSize":"30",
"image":"ubuntu_server_18.04_64-bit",
"privateNetworkIp":"",
"privateNetworkName":"'"${vlan}"'",
"ram":"2048",
"type":"kamateraConfig"
},
"name":"Kamatera Control Plane",
"useInternalIpAddress":true
}'
curl --url "https://${rancherDomain}/v3/nodetemplates" -d "$(jsonize "$PLANE_JSON_STRING")" -X POST -H "Authorization: Bearer $APITOKEN" "${curlBaseParams[@]}" | log
#Kamatera Worker
WORKER_JSON_STRING='{
"engineInsecureRegistry":[],
"engineInstallURL":"'"${engineInstallUrl}"'",
"engineRegistryMirror":[],
"engineStorageDriver":"overlay2",
"kamateraConfig":{
"apiClientId":"'"${CWM_APICLIENTID}"'",
"apiSecret":"'"${CWM_APISECRET}"'",
"billing":"hourly",
"cpu":"2B",
"createServerCommandId":"0",
"datacenter":"'"${CWM_ZONE}"'",
"diskSize":"50",
"image":"ubuntu_server_18.04_64-bit",
"privateNetworkIp":"",
"privateNetworkName":"'"${vlan}"'",
"ram":"4096",
"type":"kamateraConfig"
},
"name":"Kamatera Worker",
"useInternalIpAddress":true
}'
curl --url "https://${rancherDomain}/v3/nodetemplates" -d "$(jsonize "$WORKER_JSON_STRING")" -X POST -H "Authorization: Bearer $APITOKEN" "${curlBaseParams[@]}" | log
echo "Adding descriptions" | log
descriptionAppend "Rancher web UI: https://${rancherDomain}"
descriptionAppend "Rancher web UI user: admin"
descriptionAppend "Rancher web UI password: ${ADMINPASSWORD}"
descriptionAppend " "
tagScript success
exit 0