mirror of https://github.com/tteck/Proxmox
parent
0a35b1a5bb
commit
4ff1518dea
2 changed files with 216 additions and 0 deletions
@ -0,0 +1,74 @@ |
||||
#!/usr/bin/env bash |
||||
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func) |
||||
# Copyright (c) 2021-2024 tteck |
||||
# Author: Javed Hussain (javedh-dev) |
||||
# License: MIT |
||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE |
||||
|
||||
function header_info { |
||||
clear |
||||
cat <<"EOF" |
||||
____ __ __ __ |
||||
/ __ )____ ____ / /_______/ /_____ ______/ /__ |
||||
/ __ / __ \/ __ \/ //_/ ___/ __/ __ `/ ___/ //_/ |
||||
/ /_/ / /_/ / /_/ / ,< (__ ) /_/ /_/ / /__/ ,< |
||||
/_____/\____/\____/_/|_/____/\__/\__,_/\___/_/|_| |
||||
|
||||
EOF |
||||
} |
||||
header_info |
||||
echo -e "Loading..." |
||||
APP="Bookstack" |
||||
var_disk="4" |
||||
var_cpu="1" |
||||
var_ram="1024" |
||||
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 |
||||
if [[ ! -d /opt/bookstack/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi |
||||
cd /opt/bookstack |
||||
git pull origin release |
||||
composer install --no-dev |
||||
php artisan migrate |
||||
php artisan cache:clear |
||||
php artisan config:clear |
||||
php artisan view:clear |
||||
exit |
||||
} |
||||
|
||||
start |
||||
build_container |
||||
description |
||||
|
||||
msg_ok "Completed Successfully!\n" |
||||
echo -e "${APP} Setup should be reachable by going to the following URL. |
||||
${BL}http://${IP}${CL} \n" |
@ -0,0 +1,142 @@ |
||||
#!/usr/bin/env bash |
||||
|
||||
# Copyright (c) 2021-2024 tteck |
||||
# Author: tteck (tteckster) |
||||
# License: MIT |
||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE |
||||
|
||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" |
||||
color |
||||
verb_ip6 |
||||
catch_errors |
||||
setting_up_container |
||||
network_check |
||||
update_os |
||||
|
||||
CURRENT_IP=$(ip addr | grep 'state UP' -A4 | grep 'inet ' | awk '{print $2}' | cut -f1 -d'/') |
||||
|
||||
msg_info "Installing Dependencies" |
||||
$STD apt install -y git |
||||
$STD apt install -y php |
||||
$STD apt install -y php-xml |
||||
$STD apt install -y php-mbstring |
||||
$STD apt install -y php-pdo |
||||
$STD apt install -y php-mysql |
||||
$STD apt install -y php-gd |
||||
$STD apt install -y php-dom |
||||
$STD apt install -y php-curl |
||||
$STD apt install -y php-fpm |
||||
$STD apt install -y mariadb-server |
||||
$STD apt install -y apache2 |
||||
$STD apt install -y libapache2-mod-php |
||||
$STD apt install -y unzip |
||||
msg_ok "Installed Dependencies" |
||||
|
||||
msg_info "Installing composer" |
||||
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')" |
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" |
||||
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" |
||||
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ] |
||||
then |
||||
>&2 echo 'ERROR: Invalid composer installer checksum' |
||||
rm composer-setup.php |
||||
exit 1 |
||||
fi |
||||
php composer-setup.php --quiet |
||||
rm composer-setup.php |
||||
mv composer.phar /usr/local/bin/composer |
||||
msg_ok "Installed composer" |
||||
|
||||
msg_info "Setting up Database MariaDB" |
||||
# Setup Mariadb |
||||
mysql -e "DROP USER IF EXISTS ''@'localhost'" |
||||
mysql -e "DROP USER IF EXISTS ''@'$(hostname)'" |
||||
mysql -e "DROP DATABASE IF EXISTS test" |
||||
mysql -e "FLUSH PRIVILEGES" |
||||
|
||||
DB_PASS="$(openssl rand -hex 12)" |
||||
|
||||
# Create Database and users |
||||
mysql -u root --execute="CREATE DATABASE bookstack;" |
||||
mysql -u root --execute="CREATE USER 'bookstack'@'localhost' IDENTIFIED BY '${DB_PASS}';" |
||||
mysql -u root --execute="GRANT ALL ON bookstack.* TO 'bookstack'@'localhost';FLUSH PRIVILEGES;" |
||||
msg_ok "Set up Database" |
||||
|
||||
msg_info "Setting up bookstack" |
||||
BOOKSTACK_DIR="/opt/bookstack" |
||||
$STD git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch ${BOOKSTACK_DIR} |
||||
cd ${BOOKSTACK_DIR} |
||||
export COMPOSER_ALLOW_SUPERUSER=1 |
||||
$STD composer install --no-dev |
||||
cp .env.example .env |
||||
sed -i.bak "s@APP_URL=.*\$@APP_URL=http://$CURRENT_IP@" .env |
||||
sed -i.bak 's/DB_DATABASE=.*$/DB_DATABASE=bookstack/' .env |
||||
sed -i.bak 's/DB_USERNAME=.*$/DB_USERNAME=bookstack/' .env |
||||
sed -i.bak "s/DB_PASSWORD=.*\$/DB_PASSWORD=$DB_PASS/" .env |
||||
php artisan key:generate --no-interaction --force |
||||
chown -R root:www-data ${BOOKSTACK_DIR} |
||||
chmod -R 755 ${BOOKSTACK_DIR} |
||||
chmod -R 775 ${BOOKSTACK_DIR}/storage ${BOOKSTACK_DIR}/bootstrap/cache ${BOOKSTACK_DIR}/public/uploads |
||||
chmod 640 ${BOOKSTACK_DIR}/.env |
||||
$STD git config core.fileMode false |
||||
php artisan migrate --no-interaction --force |
||||
msg_ok "Set up bookstack" |
||||
|
||||
|
||||
msg_info "Setting up apache2" |
||||
$STD a2enmod rewrite proxy_fcgi setenvif |
||||
$STD a2enconf php8.2-fpm |
||||
# Set-up the required BookStack apache config |
||||
cat >/etc/apache2/sites-available/bookstack.conf <<EOL |
||||
<VirtualHost *:80> |
||||
ServerName ${CURRENT_IP} |
||||
|
||||
ServerAdmin webmaster@localhost |
||||
DocumentRoot ${BOOKSTACK_DIR}/public/ |
||||
|
||||
<Directory ${BOOKSTACK_DIR}/public/> |
||||
Options -Indexes +FollowSymLinks |
||||
AllowOverride None |
||||
Require all granted |
||||
<IfModule mod_rewrite.c> |
||||
<IfModule mod_negotiation.c> |
||||
Options -MultiViews -Indexes |
||||
</IfModule> |
||||
|
||||
RewriteEngine On |
||||
|
||||
# Handle Authorization Header |
||||
RewriteCond %{HTTP:Authorization} . |
||||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] |
||||
|
||||
# Redirect Trailing Slashes If Not A Folder... |
||||
RewriteCond %{REQUEST_FILENAME} !-d |
||||
RewriteCond %{REQUEST_URI} (.+)/$ |
||||
RewriteRule ^ %1 [L,R=301] |
||||
|
||||
# Handle Front Controller... |
||||
RewriteCond %{REQUEST_FILENAME} !-d |
||||
RewriteCond %{REQUEST_FILENAME} !-f |
||||
RewriteRule ^ index.php [L] |
||||
</IfModule> |
||||
</Directory> |
||||
|
||||
ErrorLog \${APACHE_LOG_DIR}/error.log |
||||
CustomLog \${APACHE_LOG_DIR}/access.log combined |
||||
|
||||
</VirtualHost> |
||||
EOL |
||||
$STD a2dissite 000-default.conf |
||||
$STD a2ensite bookstack.conf |
||||
$STD systemctl reload apache2 |
||||
$STD systemctl start php8.2-fpm.service |
||||
msg_ok "Set up apache2" |
||||
|
||||
|
||||
motd_ssh |
||||
customize |
||||
|
||||
msg_info "Cleaning up" |
||||
$STD apt-get -y autoremove |
||||
$STD apt-get -y autoclean |
||||
msg_ok "Cleaned" |
Loading…
Reference in new issue