Bare Metal install Script for SnipeIT

This commit is contained in:
Michel Roegl-Brunner 2024-11-27 14:44:30 +01:00
parent 8e7a9f363a
commit 4953773698
3 changed files with 209 additions and 0 deletions

72
ct/snipeit.sh Normal file
View File

@ -0,0 +1,72 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
_____ _ _____ _______
/ ____| (_) |_ _|__ __|
| (___ _ __ _ _ __ ___ | | | |
\___ \| '_ \| | '_ \ / _ \ | | | |
____) | | | | | |_) | __/_| |_ | |
|_____/|_| |_|_| .__/ \___|_____| |_|
| |
|_|
EOF
}
header_info
echo -e "Loading..."
APP="SnipeIT"
var_disk="20"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /var ]]; 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
msg_ok "Updated ${APP} LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"

101
install/snipeit-install.sh Normal file
View File

@ -0,0 +1,101 @@
#!/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
catch_errors
setting_up_container
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
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_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 "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
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
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"
msg_info "Generate APP_KEY"
php artisan key:generate --force
msg_ok "Done"
msg_info "Configure NGINX"
echo -e '
server {
listen 80;
server_name '$IPADDRESS';
root /var/www/html/snipe-it/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
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;
}
}' > /etc/nginx/conf.d/snipeit.conf
systemctl restart nginx
msg_ok "Configured NGINX"
msg_ok "SnipeIT is up and running, head to $IPADDRESS to reach the site"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

36
json/snipeit.json Normal file
View File

@ -0,0 +1,36 @@
{
"name": "SnipeIT",
"slug": "snipeit",
"categories": [
8
],
"date_created": "2024-25-11",
"type": "ct",
"updateable": false,
"privileged": false,
"interface_port": null,
"documentation": null,
"website": "https://snipe-it.readme.io/docs/introduction",
"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":{
"type": "default",
"script": "ct/snipeit.sh",
"resources": {
"cpu": "2",
"ram": "2048",
"hdd": "20",
"os": "debian",
"version": "12"
}
},
"default_credentials": {
"username": null,
"password": null
},
"notes":
{
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
"type": "warning"
}
}