Worked in all requested Changes and also added the Update function.

Per my testing all is working as intendet.
This commit is contained in:
Michel Roegl-Brunner 2024-11-28 16:31:17 +01:00
parent d1933ff5b8
commit 20a3084895
3 changed files with 97 additions and 74 deletions

View File

@ -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
}

View File

@ -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 <<EOF >/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"

View File

@ -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"
}
}
}