diff --git a/storage/minio/README.md b/storage/minio/README.md index da88976a..73fcc597 100644 --- a/storage/minio/README.md +++ b/storage/minio/README.md @@ -3,6 +3,8 @@ ## Features Auto generate keys on server creation bypassing default minio keys +## Update +Auto update minio to latest version using "update" startup feature Automatic Key rotation using "rotate" startup feature diff --git a/storage/minio/egg-minio-s3.json b/storage/minio/egg-minio-s3.json index 9c48eb32..9ef0e0cf 100644 --- a/storage/minio/egg-minio-s3.json +++ b/storage/minio/egg-minio-s3.json @@ -1,14 +1,17 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-12-14T05:29:26+02:00", + "exported_at": "2021-01-11T15:35:14-05:00", "name": "Minio S3", "author": "accounts@bofanodes.io", "description": "MinIO is a cloud storage server compatible with Amazon S3, released under Apache License v2. As an object store, MinIO can store unstructured data such as photos, videos, log files, backups and container images. The maximum size of an object is 5TB.", "features": null, - "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu", + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:ubuntu" + ], "startup": ".\/minio.sh", "config": { "files": "{}", @@ -26,12 +29,12 @@ "variables": [ { "name": "Startup Type", - "description": "normal or rotate", + "description": "normal,rotate,update", "env_variable": "STARTUP_TYPE", "default_value": "normal", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:normal,rotate" + "rules": "required|string|in:normal,rotate,update" } ] -} \ No newline at end of file +} diff --git a/storage/minio/minio.sh b/storage/minio/minio.sh index 48b5818e..777e5abb 100644 --- a/storage/minio/minio.sh +++ b/storage/minio/minio.sh @@ -1,39 +1,51 @@ #!/bin/bash ################################## -echo Starting up.... -echo "Startup Type: $STARTUP_TYPE" +echo "$(tput setaf 2)Starting up...." +echo "Startup Type: $(tput setaf 2)$STARTUP_TYPE" if [ -f "keys/key.txt" ]; then -echo "Key file detected..." +echo "$(tput setaf 2)Key file detected..." export MINIO_ACCESS_KEY=`cat keys/key.txt` else echo minioadmin > keys/key.txt -echo "No key file detected...Preparing First Time Boot" +echo "$(tput setaf 3)No key file detected...Preparing First Time Boot" fi if [ -f "keys/secret.txt" ]; then -echo "Secret file detected..." +echo "$(tput setaf 2)Secret file detected..." export MINIO_SECRET_KEY=`cat keys/secret.txt` else echo minioadmin > keys/secret.txt echo "No secret file detected...Preparing First Time Boot" fi if [ -f "keys/oldsecret.txt" ]; then -echo "Old secret file detected..." +echo "$(tput setaf 1)Old secret file detected..." export MINIO_SECRET_KEY_OLD=`cat keys/oldsecret.txt` fi if [ -f "keys/oldkey.txt" ]; then -echo "Old key file detected..." +echo "$(tput setaf 1)Old key file detected..." export MINIO_ACCESS_KEY_OLD=`cat keys/oldkey.txt` fi if [ -f "keys/justrotated.txt" ]; then -echo "Previous key rotation detected...." -echo "Clearing the Lanes...." +echo "$(tput setaf 3)Previous key rotation detected...." +echo "$(tput setaf 3)Clearing the Lanes...." unset MINIO_ACCESS_KEY_OLD unset MINIO_SECRET_KEY_OLD +echo "$(tput setaf 2)Lanes Cleared!" STARTUP_TYPE=normal rm keys/justrotated.txt rm keys/oldsecret.txt rm keys/oldkey.txt fi + +########################################## +if [ -z "$STARTUP_TYPE" ] || [ "$STARTUP_TYPE" == "update" ]; then +echo "$(tput setaf 3)Performing update...." +echo "$(tput setaf 1)Removing old minio version" +rm minio +echo "$(tput setaf 3)Downloading new minio version" +wget https://dl.min.io/server/minio/release/linux-amd64/minio +chmod +x minio +echo "$(tput setaf 2)Update Complete" +fi ########################################## if [ -z "$STARTUP_TYPE" ] || [ "$STARTUP_TYPE" == "rotate" ]; then touch keys/justrotated.txt @@ -45,12 +57,13 @@ export MINIO_ACCESS_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | h echo $MINIO_ACCESS_KEY > keys/key.txt export MINIO_SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) echo $MINIO_SECRET_KEY > keys/secret.txt -echo Your New Access Key is: $MINIO_ACCESS_KEY -echo Your New Secret Key is: $MINIO_SECRET_KEY -echo Your Old Access Key is: $MINIO_ACCESS_KEY_OLD -echo Your Old Access Key is: $MINIO_SECRET_KEY_OLD -echo Booting... +echo "Your New Access Key is: $(tput setaf 2)$MINIO_ACCESS_KEY" +echo "Your New Secret Key is: $(tput setaf 2)$MINIO_SECRET_KEY" +echo "Your Old Access Key is: $(tput setaf 3)$MINIO_ACCESS_KEY_OLD" +echo "Your Old Access Key is: $(tput setaf 3)$MINIO_SECRET_KEY_OLD" +echo "$(tput setaf 2)Booting..." ./minio server data --address 0.0.0.0:$SERVER_PORT else +echo "$(tput setaf 2)Booting..." ./minio server data --address 0.0.0.0:$SERVER_PORT fi