| 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-5.20.10-offirepo.success
#checkTagExist certbot-nginx.success
rootDir=$(rootDir)
engineInstallUrl=https://releases.rancher.com/install-docker/20.10.sh
kamateraDriverUrl=https://github.com/Kamatera/docker-machine-driver-kamatera/releases/download/v1.1.4/docker-machine-driver-kamatera_v1.1.4_linux_amd64.tar.gz
RANCHER_VERSION=v2.6.2
vlan=`cat ${CWM_CONFIGFILE} | grep ^vlan.*=lan-.* | cut -d'=' -f 2`
cpuarr=("1B" "2B" "4B" "8B" "16B")
memarr=(2048 4096 8192 16384 32768)
dskarr=(30 50)
tmpltarr=("${cpuarr[0]} ${memarr[0]} ${dskarr[0]} Kamatera_Worker_${cpuarr[0]}/${memarr[0]}/${dskarr[0]}"
"${cpuarr[1]} ${memarr[1]} ${dskarr[0]} Kamatera_Worker_${cpuarr[1]}/${memarr[1]}/${dskarr[0]}"
"${cpuarr[2]} ${memarr[1]} ${dskarr[0]} Kamatera_Worker_${cpuarr[2]}/${memarr[1]}/${dskarr[0]}"
"${cpuarr[2]} ${memarr[2]} ${dskarr[1]} Kamatera_Worker_${cpuarr[2]}/${memarr[2]}/${dskarr[1]}"
"${cpuarr[3]} ${memarr[2]} ${dskarr[1]} Kamatera_Worker_${cpuarr[3]}/${memarr[2]}/${dskarr[1]}"
"${cpuarr[3]} ${memarr[3]} ${dskarr[1]} Kamatera_Worker_${cpuarr[3]}/${memarr[3]}/${dskarr[1]}"
"${cpuarr[4]} ${memarr[3]} ${dskarr[1]} Kamatera_Worker_${cpuarr[4]}/${memarr[3]}/${dskarr[1]}"
"${cpuarr[4]} ${memarr[4]} ${dskarr[1]} Kamatera_Worker_${cpuarr[4]}/${memarr[4]}/${dskarr[1]}")
echo "Installing Jq" | log
installPackage jq
waitOrStop 0 "Failed apt install: jq"
echo "(Re)Generating dhparam key file" | log
dhParamFile=/etc/ssl/certs/dhparam.pem
if [ -e $dhParamFile ]; then
rm -f $dhParamFile
fi
openssl dhparam -out $dhParamFile 2048;
#echo "Verifying certbot renewal systemd timer" | log
#systemctl list-timers | grep certbot
#waitOrStop 0 "Cron timers not found (1of2)"
#cat /lib/systemd/system/certbot.timer
#waitOrStop 0 "Cron timers not found (2of2)"
#if ! cat /lib/systemd/system/certbot.service | grep "service nginx reload"; then
# sed -i 's/-q renew/-q renew --deploy-hook "service nginx reload"/' /lib/systemd/system/certbot.service
#fi
#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/register.conf /etc/nginx/sites-available/
# symlink certbot routing
#ln -s /etc/nginx/sites-available/register.conf /etc/nginx/sites-enabled/register.conf
#systemctl restart nginx
#waitOrStop 0 "Restart nginx service failed"
# creating certbot
#execSpecial 3 '(fail|error)' certbot certonly --agree-tos -n --email ${ADMINEMAIL} --webroot -w /var/lib/letsencrypt/ -d ${CWM_DOMAIN} ${CWM_DEBUG:+"--test-cert"}
#waitOrStop 0 "Letsencrypt certificates not created"
# remove certbot routing
#unlink /etc/nginx/sites-enabled/register.conf
#echo "Creating nginx configuration" | log
# copy ssl configs to nginx folders
#cp $rootDir/tweaks/extras/rancher/rancher.conf /etc/nginx/sites-available/
#cp $rootDir/tweaks/extras/rancher/http2_proxy.conf /etc/nginx/snippets/
#cp $rootDir/tweaks/extras/rancher/ssl.2.6.conf /etc/nginx/snippets/
#mv /etc/nginx/snippets/ssl.2.6.conf /etc/nginx/snippets/ssl.conf
# add keys to ssl configs
#cp $rootDir/tweaks/extras/rancher/letsencrypt_certs.conf /etc/nginx/snippets/
#sed -i "s|/path/to/your.key|/etc/letsencrypt/live/${CWM_DOMAIN}/privkey.pem|" /etc/nginx/snippets/letsencrypt_certs.conf
#sed -i "s|/path/to/your.crt|/etc/letsencrypt/live/${CWM_DOMAIN}/fullchain.pem|" /etc/nginx/snippets/letsencrypt_certs.conf
#sed -i "s|/path/to/your.chain|/etc/letsencrypt/live/${CWM_DOMAIN}/chain.pem|" /etc/nginx/snippets/letsencrypt_certs.conf
# symlink sites
#ln -s /etc/nginx/sites-available/rancher.conf /etc/nginx/sites-enabled/rancher.conf
#systemctl restart nginx
#waitOrStop 0 "Restart nginx service failed"
echo "Creating Rancher admin" | log
mkdir -p /var/lib/rancher
systemctl start docker.service
waitOrStop 0 "Start docker service failed"
docker run -d --name rancher --restart unless-stopped \
-p 80:80 -p 443:443 \
-e CATTLE_BOOTSTRAP_PASSWORD=admin \
-v /etc/letsencrypt/live/${CWM_DOMAIN}/fullchain.pem:/etc/rancher/ssl/cert.pem \
-v /etc/letsencrypt/live/${CWM_DOMAIN}/privkey.pem:/etc/rancher/ssl/key.pem \
-v /etc/letsencrypt/live/${CWM_DOMAIN}/chain.pem:/etc/rancher/ssl/cacerts.pem \
--privileged -v "/var/lib/rancher:/var/lib/rancher" "rancher/rancher:${RANCHER_VERSION}"
curlBaseParams=(--insecure --silent -S --retry-connrefused --retry 3 --retry-delay 2 -H 'content-type: application/json')
echo "Waiting for Rancher to intialize" | log
#systemctl restart nginx
#waitOrStop 0 "Restart nginx service failed"
HTTPD=`curl -s -o /dev/null -w ''%{http_code}'' https://${CWM_DOMAIN}:443 --insecure`
until [ "$HTTPD" == "200" ]; do
sleep 3
HTTPD=`curl -s -o /dev/null -w ''%{http_code}'' https://${CWM_DOMAIN}:443 --insecure`
done
sleep 15
echo "Getting Rancher Login Token" | log
LOGINRESPONSE=`curl --url "https://${CWM_DOMAIN}/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://${CWM_DOMAIN}/v3/users?action=changepassword" --data-binary '{"currentPassword":"admin","newPassword":"'${ADMINPASSWORD}'"}' -H "Authorization: Bearer $LOGINTOKEN" "${curlBaseParams[@]}"
echo "Creating API key" | log
APIRESPONSE=`curl --url "https://${CWM_DOMAIN}/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://${CWM_DOMAIN}/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://${CWM_DOMAIN}/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://${CWM_DOMAIN}/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 Panel
PANEL_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_optimized",
"privateNetworkIp":"auto",
"privateNetworkName":"'"${vlan}"'",
"ram":"2048",
"type":"kamateraConfig"
},
"name":"Kamatera Control Panel",
"useInternalIpAddress":true
}'
curl --url "https://${CWM_DOMAIN}/v3/nodetemplates" -d "$(jsonize "$PANEL_JSON_STRING")" -X POST -H "Authorization: Bearer $APITOKEN" "${curlBaseParams[@]}" | log
#Kamatera Worker
for tmplt in "${tmpltarr[@]}"; do
arr=($tmplt)
WORKER_JSON_STRING='{
"engineInsecureRegistry":[],
"engineInstallURL":"'"${engineInstallUrl}"'",
"engineRegistryMirror":[],
"engineStorageDriver":"overlay2",
"kamateraConfig":{
"apiClientId":"'"${CWM_APICLIENTID}"'",
"apiSecret":"'"${CWM_APISECRET}"'",
"billing":"hourly",
"cpu":"'"${arr[0]}"'",
"createServerCommandId":"0",
"datacenter":"'"${CWM_ZONE}"'",
"diskSize":"'"${arr[2]}"'",
"image":"ubuntu_server_18.04_64-bit_optimized",
"privateNetworkIp":"auto",
"privateNetworkName":"'"${vlan}"'",
"ram":"'"${arr[1]}"'",
"type":"kamateraConfig"
},
"name":"'"${arr[3]}"'",
"useInternalIpAddress":true
}'
curl --url "https://${CWM_DOMAIN}/v3/nodetemplates" -d "$(jsonize "$WORKER_JSON_STRING")" -X POST -H "Authorization: Bearer $APITOKEN" "${curlBaseParams[@]}" | log
done
echo "Tweaking NetFilter conntrack_max" | log
sysctl net/netfilter/nf_conntrack_max=131072
service docker restart
waitOrStop 0 "Restart docker failed"
#service nginx restart
#waitOrStop 0 "Restart nginx failed"
echo "Adding descriptions" | log
descriptionAppend "Rancher Web UI: https://${CWM_DOMAIN}"
descriptionAppend "Rancher Username: admin"
descriptionAppend "Rancher Password: ${ADMINPASSWORD}"
descriptionAppend " "
tagScript success
exit 0