2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								#!/usr/bin/env bash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-01 13:37:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# Copyright (c) 2021-2025 community-scripts ORG 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# Author: bvdberg01 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-04 17:54:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Source: https://docs.part-db.de/ 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-24 14:20:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								source  /dev/stdin <<< " $FUNCTIONS_FILE_PATH " 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								color
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								verb_ip6
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								catch_errors
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								setting_up_container
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								network_check
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								update_os
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-06-18 12:03:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								NODE_VERSION = "22"  NODE_MODULE = "yarn@latest"  setup_nodejs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								PG_VERSION = "16"  setup_postgresql
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:56:41 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								PHP_VERSION = "8.4"  PHP_APACHE = "YES"  PHP_MODULE = "xsl,pgsql"  setup_php
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								setup_composer
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 13:48:34 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-17 15:00:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								msg_info "Setting up PHP" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								PHPVER = $( php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";' ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-24 14:20:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sed -i "s@post_max_size = 8M@post_max_size = 100M@g"  /etc/php/${ PHPVER } /apache2/php.ini
							 
						 
					
						
							
								
									
										
										
										
											2025-03-17 15:00:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sed -i "s@upload_max_filesize = 2M@upload_max_filesize = 100M@g"  /etc/php/${ PHPVER } /apache2/php.ini
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								msg_ok "Setting up PHP" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								msg_info "Setting up PostgreSQL" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								DB_NAME = partdb
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								DB_USER = partdb
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								DB_PASS = $( openssl rand -base64 18  |  tr -dc 'a-zA-Z0-9'  |  cut -c1-13) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  sudo -u postgres psql -c " CREATE ROLE  $DB_USER  WITH LOGIN PASSWORD ' $DB_PASS '; " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  sudo -u postgres psql -c " CREATE DATABASE  $DB_NAME  WITH OWNER  $DB_USER  TEMPLATE template0; " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-24 14:20:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  echo  "Part-DB Credentials" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo  " Part-DB Database User:  $DB_USER " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo  " Part-DB Database Password:  $DB_PASS " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo  " Part-DB Database Name:  $DB_NAME " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  >>~/partdb.creds
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								msg_ok "Set up PostgreSQL" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								msg_info "Installing Part-DB (Patience)" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cd  /opt
							 
						 
					
						
							
								
									
										
										
										
											2025-04-01 10:25:46 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								RELEASE = $( curl -fsSL https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest |  grep "tag_name"  |  awk '{print substr($2, 3, length($2)-4) }' ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 14:45:53 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								curl -fsSL " https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v ${ RELEASE } .zip "  -o " /opt/v ${ RELEASE } .zip " 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 11:25:13 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$STD  unzip " v ${ RELEASE } .zip " 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								mv /opt/Part-DB-server-${ RELEASE } / /opt/partdb
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cd  /opt/partdb/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cp .env .env.local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sed -i " s|DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/app.db\"|DATABASE_URL=\"postgresql:// ${ DB_USER } : ${ DB_PASS } @127.0.0.1:5432/ ${ DB_NAME } ?serverVersion=12.19&charset=utf8\"| "  .env.local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								export  COMPOSER_ALLOW_SUPERUSER = 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  composer install --no-dev -o --no-interaction
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  yarn install
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  yarn build
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  php bin/console cache:clear
							 
						 
					
						
							
								
									
										
										
										
											2025-03-24 14:20:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								php bin/console doctrine:migrations:migrate -n >~/database-migration-output
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								chown -R www-data:www-data /opt/partdb
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ADMIN_PASS = $( grep -oP 'The initial password for the "admin" user is: \K\w+'  ~/database-migration-output) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-24 14:20:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  echo  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo  "Part-DB Admin User: admin" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo  " Part-DB Admin Password:  $ADMIN_PASS " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  >>~/partdb.creds
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								echo  " ${ RELEASE } "  >/opt/${ APPLICATION } _version.txt
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								msg_ok "Installed Part-DB" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								msg_info "Creating Service" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cat <<EOF >/etc/apache2/sites-available/partdb.conf
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								<VirtualHost *:80>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ServerName partdb
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    DocumentRoot /opt/partdb/public
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    <Directory /opt/partdb/public>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Options FollowSymLinks
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        AllowOverride All
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Require all granted
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    </Directory>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ErrorLog /var/log/apache2/partdb_error.log
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    CustomLog /var/log/apache2/partdb_access.log combined
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								</VirtualHost>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  a2ensite partdb
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  a2enmod rewrite
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  a2dissite 000-default.conf
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  systemctl reload apache2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								msg_ok "Created Service" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								motd_ssh
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								customize
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								msg_info "Cleaning up" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								rm -rf ~/database-migration-output
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								rm -rf " /opt/v ${ RELEASE } .zip " 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-15 22:39:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$STD  apt -y autoremove
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  apt -y autoclean
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$STD  apt -y clean
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 12:05:30 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								msg_ok "Cleaned"