2023-09-19 09:44:20 +00:00
2023-09-19 10:12:37 +00:00
#!/bin/bash
PATH = /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
2023-09-19 09:44:20 +00:00
2023-09-19 10:12:37 +00:00
InstallPlugins
2023-09-19 09:44:20 +00:00
2023-09-19 10:12:37 +00:00
### -----------------------------------------------------###
2023-09-19 09:44:20 +00:00
InstallPlugins( ) {
# download apps
mkdir -p /data/apps && cd /data/apps
wget $urls /websoft9-latest.zip
unzip websoft9-latest.zip
cp -r /data/apps/websoft9/docker /data/apps/w9services
rm -f websoft9-latest.zip
# install plugins
cd /usr/share/cockpit
appstore_version = $( cat /data/apps/websoft9/version.json | jq .PLUGINS | jq .APPSTORE | tr -d '"' )
wget $urls /plugin/appstore/appstore-$appstore_version .zip
unzip appstore-$appstore_version .zip
myapps_version = $( cat /data/apps/websoft9/version.json | jq .PLUGINS | jq .MYAPPS| tr -d '"' )
wget $urls /plugin/myapps/myapps-$myapps_version .zip
unzip myapps-$myapps_version .zip
portainer_version = $( cat /data/apps/websoft9/version.json | jq .PLUGINS | jq .PORTAINER | tr -d '"' )
wget $urls /plugin/portainer/portainer-$portainer_version .zip
unzip portainer-$portainer_version .zip
nginx_version = $( cat /data/apps/websoft9/version.json | jq .PLUGINS | jq .NGINX | tr -d '"' )
wget $urls /plugin/nginx/nginx-$nginx_version .zip
unzip nginx-$nginx_version .zip
settings_version = $( cat /data/apps/websoft9/version.json | jq .PLUGINS | jq .SETTINGS | tr -d '"' )
wget $urls /plugin/settings/settings-$settings_version .zip
unzip settings-$settings_version .zip
# install navigator
navigator_version = $( cat /data/apps/websoft9/version.json | jq .PLUGINS | jq .NAVIGATOR | tr -d '"' )
wget $urls /plugin/navigator/navigator-$navigator_version .zip
unzip navigator-$navigator_version .zip
rm -f *.zip
# install library
cd /data
library_version = $( cat /data/apps/websoft9/version.json | jq .PLUGINS | jq .LIBRARY | tr -d '"' )
wget $urls /plugin/library/library-$library_version .zip
unzip library-$library_version .zip
rm -f library-$library_version .zip
# configure cockpit
cp /data/apps/websoft9/cockpit/cockpit.conf /etc/cockpit/cockpit.conf
#####ci-section#####
sudo systemctl daemon-reload
sudo systemctl enable --now cockpit.socket
sudo systemctl restart cockpit.socket
}
StartAppMng( ) {
echo "Start appmanage API ..."
cd /data/apps/w9services/w9redis && sudo docker compose up -d
cd /data/apps/w9services/w9appmanage && sudo docker compose up -d
public_ip = ` bash /data/apps/websoft9/scripts/get_ip.sh`
echo $public_ip > /data/apps/w9services/w9appmanage/public_ip
appmanage_ip = $( docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' websoft9-appmanage)
}
StartPortainer( ) {
echo "Start Portainer ..."
cd /data/apps/w9services/w9portainer && sudo docker compose up -d
docker pull backplane/pwgen
new_password = $( docker run --name pwgen backplane/pwgen 15) !
docker rm -f pwgen
portainer_ip = $( docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' websoft9-portainer)
echo "Portainer init password:" $new_password >> /usr/password.txt
curl -X POST -H "Content-Type: application/json" -d '{"username":"admin", "Password":"' $new_password '"}' http://$portainer_ip :9000/api/users/admin/init
curl " http:// $appmanage_ip :5000/AppUpdateUser?user_name=admin&password= $new_password "
}
InstallNginx( ) {
echo "Install nginxproxymanager ..."
cd /data/apps/w9services/w9nginxproxymanager && sudo docker compose up -d
sleep 30
echo "edit nginxproxymanager password..."
nginx_ip = $( docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' websoft9-nginxproxymanager)
login_data = $( curl -X POST -H "Content-Type: application/json" -d '{"identity":"admin@example.com","scope":"user", "secret":"changeme"}' http://$nginx_ip :81/api/tokens)
#token=$(echo $login_data | grep -Po '(?<="token":")[^"]*')
token = $( echo $login_data | jq -r '.token' )
while [ -z " $token " ] ; do
sleep 5
login_data = $( curl -X POST -H "Content-Type: application/json" -d '{"identity":"admin@example.com","scope":"user", "secret":"changeme"}' http://$nginx_ip :81/api/tokens)
token = $( echo $login_data | jq -r '.token' )
done
echo "Nginx token:" $token
new_password = $( docker run --name pwgen backplane/pwgen 15) !
docker rm -f pwgen
echo "Nginx init password:" $new_password >> /usr/password.txt
curl -X PUT -H "Content-Type: application/json" -H " Authorization: Bearer $token " -d '{"email": "help@websoft9.com", "nickname": "admin", "is_disabled": false, "roles": ["admin"]}' http://$nginx_ip :81/api/users/1
curl -X PUT -H "Content-Type: application/json" -H " Authorization: Bearer $token " -d '{"type":"password","current":"changeme","secret":"' $new_password '"}' http://$nginx_ip :81/api/users/1/auth
sleep 3
curl " http:// $appmanage_ip :5000/AppUpdateUser?user_name=help@websoft9.com&password= $new_password "
echo "edit password success ..."
while [ ! -d "/var/lib/docker/volumes/w9nginxproxymanager_nginx_data/_data/nginx/proxy_host" ] ; do
sleep 1
done
cp /data/apps/w9services/w9nginxproxymanager/initproxy.conf /var/lib/docker/volumes/w9nginxproxymanager_nginx_data/_data/nginx/proxy_host
echo $public_ip
sudo sed -i " s/domain.com/ $public_ip /g " /var/lib/docker/volumes/w9nginxproxymanager_nginx_data/_data/nginx/proxy_host/initproxy.conf
sudo docker restart websoft9-nginxproxymanager
sudo docker cp websoft9-appmanage:/usr/src/app/db/database.sqlite /usr
}
EditMenu( ) {
echo "Start to Edit Cockpit Menu ..."
# uninstall plugins
rm -rf /usr/share/cockpit/apps /usr/share/cockpit/selinux /usr/share/cockpit/kdump /usr/share/cockpit/sosreport /usr/share/cockpit/packagekit
cp -r /data/apps/websoft9/cockpit/menu_override/* /etc/cockpit
echo "---------------------------------- Install success! When installation completed, you can access it by: http://Internet IP:9000 and using Linux user for login to install a app by websoft9's appstore. -------------------------------------------------------"
}