Update setup_demo.sh

This commit is contained in:
Stefan Pejcic 2024-12-02 18:44:45 +01:00 committed by GitHub
parent bf755462d6
commit eebb2fe48a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,7 +3,14 @@
# this script is used for creating demo.openpanel.org on every new version release # this script is used for creating demo.openpanel.org on every new version release
# it installs latest version of openpanel, creates dummy accounts with data, and finally adds them on the login pages. # it installs latest version of openpanel, creates dummy accounts with data, and finally adds them on the login pages.
# #
# todo: generate droplet snapshot when finished, edit existing restore task to use new snapshot and droplet id's. #
: '
wget -O /root/demo.sh https://raw.githubusercontent.com/stefanpejcic/OpenPanel/refs/heads/main/demo/2087/setup_demo.sh && \
export DIGITALOCEAN_TOKEN="XXXXXXXXXXXXXXXXXXX" && \
bash <(curl -sSL https://openpanel.org) --hostname=demo.openpanel.org --post_install=/root/demo.sh
'
#
# todo: edit existing restore task to use new snapshot and droplet id's.
# #
@ -93,14 +100,9 @@ printf '{"timestamp": "%s", "users": 2, "domains": 3, "websites": 4}\n' "${dates
get_droplet_id() { get_droplet_id() {
droplet_id=$(curl http://169.254.169.254/metadata/v1/id) droplet_id=$(curl http://169.254.169.254/metadata/v1/id)
echo "droplet id: $droplet_id" echo "droplet id: $droplet_id"
} }
echo "Installing latest panel version.."
bash <(curl -sSL https://openpanel.org) --hostname=demo.openpanel.org
echo "Creating dummy accounts for demo.." echo "Creating dummy accounts for demo.."
@ -131,8 +133,8 @@ upload_wp_site_files() {
mkdir -p /tmp/wp-site mkdir -p /tmp/wp-site
cd /tmp/wp-site cd /tmp/wp-site
wget $wp_archive wget $wp_archive
tar -xzvf $wp_archive tar -xzvf wordpress-latest.tar.gz
cp -r wordpress/ $wp_site_path/ cp -r wordpress/. $wp_site_path
rm -rf /tmp/wp-site rm -rf /tmp/wp-site
} }
@ -141,47 +143,52 @@ create_db_user_import_wpdb() {
# step 1. start mysql # step 1. start mysql
docker exec stefan bash -c "service mysql start" docker exec stefan bash -c "service mysql start"
# step 2. create user, db and privileges # Define variables
db_name="stefan_wp" db_name="stefan_wp"
db_user="stefan_wp" db_user="stefan_wp"
db_password="9823bdbds6732fdsw232rsd" db_password="9823bdbds6732fdsw232rsd"
run_command_in_user_container() {}
command="$1"
docker exec stefan bash -c "mysql -u root -e '$command;'"
}
create_db_command="CREATE DATABASE $db_name"
create_user_command="CREATE USER '$db_user'@'%' IDENTIFIED BY '$db_password'"
privileges_command="GRANT ALL PRIVILEGES ON $db_name TO '$db_user'@'%'"
flush_command="FLUSH PRIVILEGES"
phpmyadmin_also="GRANT ALL ON *.* TO 'phpmyadmin'@'localhost'"
create_db_user_import_wpdb $create_db_command # Function to run a command in the Docker container
create_db_user_import_wpdb $create_user_command run_command_in_user_container() {
create_db_user_import_wpdb $privileges_command command="$1"
create_db_user_import_wpdb $phpmyadmin_also docker exec stefan bash -c "mysql -u root -e \"$command\""
create_db_user_import_wpdb $flush_command }
# Define SQL commands
create_db_command="CREATE DATABASE $db_name;"
create_user_command="CREATE USER '$db_user'@'%' IDENTIFIED BY '$db_password';"
privileges_command="GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'%';"
phpmyadmin_also="GRANT ALL ON *.* TO 'phpmyadmin'@'localhost';"
flush_command="FLUSH PRIVILEGES;"
# Execute SQL commands
run_command_in_user_container "$create_db_command"
run_command_in_user_container "$create_user_command"
run_command_in_user_container "$privileges_command"
run_command_in_user_container "$phpmyadmin_also"
run_command_in_user_container "$flush_command"
# TODO REST FROM > https://git.devnet.rs/stefan/2083/-/blob/main/modules/wordpress.py # TODO REST FROM > https://git.devnet.rs/stefan/2083/-/blob/main/modules/wordpress.py
# step 3. todo: test connection
# step 4. import wp tables
} }
connect_wpdb_and_files() { connect_wpdb_and_files() {
# edit wpconfig # edit wpconfig
wp_config_file="wp-config.php" wp_config_file="wp-config.php"
domain="demo.openpanel.org"
username="stefan"
cd /home/stefan/demo.openpanel.org cd /home/stefan/demo.openpanel.org
mv wp-config-sample.php "$wp_config_file" mv /home/stefan/demo.openpanel.org/wp-config-sample.php /home/stefan/demo.openpanel.org/$wp_config_file
sed -i "s/database_name_here/$db_name/g" "$wp_config_file" sed -i "s/database_name_here/$db_name/g" "$wp_config_file"
sed -i "s/username_here/$db_user/g" "$wp_config_file" sed -i "s/username_here/$db_user/g" "$wp_config_file"
sed -i "s/password_here/$db_password/g" "$wp_config_file" sed -i "s/password_here/$db_password/g" "$wp_config_file"
docker exec stefan bash -c 'wp core install --url=https://demo.openpanel.org --title="Demo Site" --admin_user=stefan --admin_password="ash732vfadsf" --admin_email=admin@openpanel.org --path=/home/stefan/demo.openpanel.org --allow-root' # install
docker exec stefan bash -c 'wp core install --url=https://${domain} --title="Demo Site" --admin_user=${username} --admin_password="ash732vfadsf" --admin_email=admin@${domain} --path=/home/${username}/${domain} --allow-root'
# autologin # autologin
docker exec stefan bash -c 'wp package install aaemnnosttv/wp-cli-login-command --path=/home/stefan/demo.openpanel.org --allow-root' docker exec stefan bash -c 'wp package install aaemnnosttv/wp-cli-login-command --path=/home/${username}/${domain} --allow-root'
# prettylinks # prettylinks
echo " echo "
@ -194,30 +201,79 @@ connect_wpdb_and_files() {
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] RewriteRule . /index.php [L]
# END WordPress # END WordPress
" > /home/stefan/demo.openpanel.org/.htaccess " > /home/${username}/${domain}/.htaccess
# permissions # permissions
chown -R 1000:33 /home/stefan/demo.openpanel.org/ chown -R 1000:33 /home/${username}/${domain}/
# salts
docker exec ${username} bash -c "wp config shuffle-salts --path=/home/${username}/${domain}/ --allow-root"
}
create_snapshot() {
# get panel version
version=(opencli version)
# Create snapshot
response=$(curl -s -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d "{\"type\":\"snapshot\",\"name\":\"${version} demo snapshot\"}" \
"https://api.digitalocean.com/v2/droplets/$droplet_id/actions")
# Extract the snapshot ID from the response
snapshot_id=$(echo "$response" | jq -r '.action.resource_id')
# Output the snapshot ID
if [ "$snapshot_id" != "null" ] && [ -n "$snapshot_id" ]; then
echo "Snapshot ID: $snapshot_id"
else
echo "Failed to retrieve snapshot ID."
fi
} }
##########################################
##########################################
echo "creating fake data for admin dashbord"
# todo: activity log and access, docker stats
write_fake_data write_fake_data
echo "configuring admin panel on port 2087"
setup_admin_panel setup_admin_panel
echo "configuring user panel on port 2083"
setup_user_panel setup_user_panel
# TODO: also some helloworld py or node app # TODO: also some helloworld py or node app
echo "download wp files"
upload_wp_site_files upload_wp_site_files
echo "Creating db and user"
create_db_user_import_wpdb create_db_user_import_wpdb
echo "connect files to database"
connect_wpdb_and_files connect_wpdb_and_files
echo "add site to wpmanager"
opencli websites-scan -all opencli websites-scan -all
#echo "DONE." echo "get droplet id"
get_droplet_id get_droplet_id
echo "cleaning up.."
rm -rf /root/demo.sh
echo "creating snapshot"
create_snapshot
# todo: change snapshot id in the file for job!
# test in 1hr
# $snapshot_id