From 20a30848955d5478b0988325682985926ad6a7bc Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner Date: Thu, 28 Nov 2024 16:31:17 +0100 Subject: [PATCH] Worked in all requested Changes and also added the Update function. Per my testing all is working as intendet. --- ct/snipeit.sh | 44 ++++++++++---- install/snipeit-install.sh | 116 +++++++++++++++++++------------------ json/snipeit.json | 11 +--- 3 files changed, 97 insertions(+), 74 deletions(-) diff --git a/ct/snipeit.sh b/ct/snipeit.sh index 2d27b928..19045ed0 100644 --- a/ct/snipeit.sh +++ b/ct/snipeit.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) + #Copyright (c) 2021-2024 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT @@ -7,20 +8,19 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m function header_info { clear cat <<"EOF" - _____ _ _____ _______ - / ____| (_) |_ _|__ __| - | (___ _ __ _ _ __ ___ | | | | - \___ \| '_ \| | '_ \ / _ \ | | | | - ____) | | | | | |_) | __/_| |_ | | - |_____/|_| |_|_| .__/ \___|_____| |_| - | | - |_| + _____ _ __________ + / ___/____ (_)___ ___ / _/_ __/ + \__ \/ __ \/ / __ \/ _ \______ / / / / + ___/ / / / / / /_/ / __/_____// / / / +/____/_/ /_/_/ .___/\___/ /___/ /_/ + /_/ EOF } header_info echo -e "Loading..." APP="SnipeIT" -var_disk="20" + +var_disk="4" var_cpu="2" var_ram="2048" var_os="debian" @@ -34,7 +34,7 @@ function default_settings() { PW="" CT_ID=$NEXTID HN=$NSAPP - DISK_SIZE="$var_disk" + DISK_SIZE="$var_disk" CORE_COUNT="$var_cpu" RAM_SIZE="$var_ram" BRG="vmbr0" @@ -57,10 +57,32 @@ function update_script() { header_info check_container_storage check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi +if [[ ! -d /opt/snipe-it ]]; then msg_error "No ${APP} Installation Found!"; exit; fi msg_info "Updating ${APP} LXC" apt-get update &>/dev/null apt-get -y upgrade &>/dev/null +mv /opt/snipe-it /opt/snipe-it-backup +cd /opt +RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" &>/dev/null +unzip -q v${RELEASE}.zip +mv snipe-it-${RELEASE} /opt/snipe-it +cp /opt/snipe-it-backup/.env /opt/snipe-it/.env +cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/ +cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads +cd /opt/snipe-it/ +export COMPOSER_ALLOW_SUPERUSER=1 +composer install --no-dev --prefer-source &>/dev/null +composer dump-autoload &>/dev/null +php artisan migrate --force &>/dev/null +php artisan config:clear &>/dev/null +php artisan route:clear &>/dev/null +php artisan cache:clear &>/dev/null +php artisan view:clear &>/dev/null +chown -R www-data: /opt/snipe-it +chmod -R 755 /opt/snipe-it +rm -rf /opt/v${RELEASE}.zip +rm -rf /opt/snipe-it-backup msg_ok "Updated ${APP} LXC" exit } diff --git a/install/snipeit-install.sh b/install/snipeit-install.sh index 46ae36f1..897feb8a 100644 --- a/install/snipeit-install.sh +++ b/install/snipeit-install.sh @@ -1,9 +1,12 @@ #!/usr/bin/env bash + + #Copyright (c) 2021-2024 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 @@ -13,89 +16,92 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y git -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y nginx -$STD apt-get install -y php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli} -$STD apt-get install -y mariadb-server +$STD apt-get install -y \ + curl \ + composer \ + git \ + sudo \ + mc \ + nginx \ + php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli} \ + mariadb-server msg_ok "Installed Dependencies" -msg_info "Installing Composer" -curl -sS https://getcomposer.org/installer -o composer-setup.php -php composer-setup.php --install-dir=/usr/local/bin --filename=composer -msg_ok "Installed Composer" +msg_info "Setting up database" +DB_NAME=snipeit_db +DB_USER=snipeit +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +mysql -u root -e "CREATE DATABASE $DB_NAME;" +mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" +mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" +{ + echo "SnipeIT-Credentials" + echo "SnipeIT Database User: $DB_USER" + echo "SnipeIT Database Password: $DB_PASS" + echo "SnipeIT Database Name: $DB_NAME" +} >> ~/snipeit.creds +msg_ok "Set up database" -msg_ok "Configre Database\n" -read -r -p "Enter password for Database user: " password -echo -e 'CREATE DATABASE snipeit;' | mysql -echo -e "GRANT ALL ON snipeit.* TO snipeit@localhost identified by '$password';" | mysql -echo -e 'FLUSH PRIVILEGES;' | mysql -msg_ok "Configured Database" +msg_info "Installing Snipe-IT" +cd /opt +RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" +unzip -q v${RELEASE}.zip +mv snipe-it-${RELEASE} /opt/snipe-it -msg_info "Clone SnipeIT from Github" -cd /var/www/html -git clone https://github.com/snipe/snipe-it snipe-it -msg_ok "Finished cloning" - -msg_info "Configure SnipeIT" -cd snipe-it +cd /opt/snipe-it cp .env.example .env IPADDRESS=$(hostname -I | awk '{print $1}') -sed -i "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" .env -sed -i "s|^DB_DATABASE=.*|DB_DATABASE=snipeit|" .env -sed -i "s|^DB_USERNAME=.*|DB_USERNAME=snipeit|" .env -sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=$password|" .env -chown -R www-data: /var/www/html/snipe-it -chmod -R 755 /var/www/html/snipe-it -git config --global --add safe.directory /var/www/html/snipe-it +sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \ + -e "s|^DB_DATABASE=.*|DB_DATABASE=$DB_NAME|" \ + -e "s|^DB_USERNAME=.*|DB_USERNAME=$DB_USER|" \ + -e "s|^DB_PASSWORD=.*|DB_PASSWORD=$DB_PASS|" .env + +chown -R www-data: /opt/snipe-it +chmod -R 755 /opt/snipe-it -msg_ok "Configred SnipeIT" -msg_info "Update SnipeIT dependencies" export COMPOSER_ALLOW_SUPERUSER=1 -composer update --no-plugins --no-scripts -composer install --no-dev --prefer-source --no-plugins --no-scripts -msg_ok "Update OK" +$STD composer update --no-plugins --no-scripts +$STD composer install --no-dev --prefer-source --no-plugins --no-scripts -msg_info "Generate APP_KEY" -php artisan key:generate --force -msg_ok "Done" +$STD php artisan key:generate --force +msg_ok "Installed SnipeIT" -msg_info "Configure NGINX" -echo -e ' +msg_info "Creating Service" + +cat </etc/nginx/conf.d/snipeit.conf server { listen 80; - server_name '$IPADDRESS'; - root /var/www/html/snipe-it/public; - + root /opt/snipe-it/public; + server_name $IPADDRESS; index index.php; location / { - try_files $uri $uri/ /index.php?$query_string; - + try_files \$uri \$uri/ /index.php?\$query_string; } - location ~ \.php$ { - include fastcgi.conf; + location ~ \.php\$ { + include fastcgi.conf; include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; - fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - include fastcgi_params; + fastcgi_split_path_info ^(.+\.php)(/.+)\$; + fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; + include fastcgi_params; } -}' > /etc/nginx/conf.d/snipeit.conf -systemctl restart nginx -msg_ok "Configured NGINX" +} +EOF + +systemctl reload nginx +msg_ok "Configured Service" -msg_ok "SnipeIT is up and running, head to $IPADDRESS to reach the site" motd_ssh customize msg_info "Cleaning up" +rm -rf /opt/v${RELEASE}.zip $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned" diff --git a/json/snipeit.json b/json/snipeit.json index 0eb7228b..e202bc3a 100644 --- a/json/snipeit.json +++ b/json/snipeit.json @@ -10,7 +10,7 @@ "privileged": false, "interface_port": null, "documentation": null, - "website": "https://snipe-it.readme.io/docs/introduction", + "website": "https://snipeitapp.com/", "logo": "https://github.com/snipe/snipe-it/blob/master/public/img/logo.png", "description": "This is a FOSS project for asset management in IT Operations. Knowing who has which laptop, when it was purchased in order to depreciate it correctly, handling software licenses, etc.", "install_methods":{ @@ -19,7 +19,7 @@ "resources": { "cpu": "2", "ram": "2048", - "hdd": "20", + "hdd": "4", "os": "debian", "version": "12" } @@ -27,10 +27,5 @@ "default_credentials": { "username": null, "password": null - }, - "notes": - { - "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.", - "type": "warning" - } + } }