
Some checks failed
Bump build.func Revision / bump-revision (push) Has been cancelled
Replaces all occurrences of the 'init_error_traps' function with 'catch_errors' across container and install scripts for consistency in error handling. Also adjusts indentation and formatting in some scripts for improved readability.
117 lines
3.6 KiB
Bash
117 lines
3.6 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright (c) 2021-2025 community-scripts ORG
|
|
# Author: bvdberg01
|
|
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
|
|
# Source: https://github.com/sassanix/Warracker/
|
|
|
|
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 \
|
|
apt-transport-https \
|
|
ca-certificates nginx
|
|
msg_ok "Installed Dependencies"
|
|
|
|
PYTHON_VERSION="3.11" setup_uv
|
|
PG_VERSION="17" setup_postgresql
|
|
|
|
msg_info "Installing Postgresql"
|
|
DB_NAME="warranty_db"
|
|
DB_USER="warranty_user"
|
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
|
DB_ADMIN_USER="warracker_admin"
|
|
DB_ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
|
systemctl start postgresql
|
|
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
|
|
$STD sudo -u postgres psql -c "CREATE USER $DB_ADMIN_USER WITH PASSWORD '$DB_ADMIN_PASS' SUPERUSER;"
|
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_ADMIN_USER;"
|
|
$STD sudo -u postgres psql -d "$DB_NAME" -c "GRANT USAGE ON SCHEMA public TO $DB_USER;"
|
|
$STD sudo -u postgres psql -d "$DB_NAME" -c "GRANT CREATE ON SCHEMA public TO $DB_USER;"
|
|
$STD sudo -u postgres psql -d "$DB_NAME" -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO $DB_USER;"
|
|
{
|
|
echo "Application Credentials"
|
|
echo "DB_NAME: $DB_NAME"
|
|
echo "DB_USER: $DB_USER"
|
|
echo "DB_PASS: $DB_PASS"
|
|
echo "DB_ADMIN_USER: $DB_ADMIN_USER"
|
|
echo "DB_ADMIN_PASS: $DB_ADMIN_PASS"
|
|
} >>~/warracker.creds
|
|
msg_ok "Installed PostgreSQL"
|
|
|
|
fetch_and_deploy_gh_release "warracker" "sassanix/Warracker" "tarball" "latest" "/opt/warracker"
|
|
|
|
msg_info "Installing Warracker"
|
|
cd /opt/warracker/backend
|
|
$STD uv venv .venv
|
|
$STD source .venv/bin/activate
|
|
$STD uv pip install -r requirements.txt
|
|
mv /opt/warracker/env.example /opt/warracker/.env
|
|
sed -i \
|
|
-e "s/your_secure_database_password/$DB_PASS/" \
|
|
-e "s/your_secure_admin_password/$DB_ADMIN_PASS/" \
|
|
-e "s|^# DB_PORT=5432$|DB_HOST=127.0.0.1|" \
|
|
/opt/warracker/.env
|
|
|
|
mv /opt/warracker/nginx.conf /etc/nginx/sites-available/warracker.conf
|
|
sed -i \
|
|
-e "s|alias /var/www/html/locales/;|alias /opt/warracker/locales/;|" \
|
|
-e "s|/var/www/html|/opt/warracker/frontend|g" \
|
|
-e "s/client_max_body_size __NGINX_MAX_BODY_SIZE_CONFIG_VALUE__/client_max_body_size 32M/" \
|
|
/etc/nginx/sites-available/warracker.conf
|
|
ln -s /etc/nginx/sites-available/warracker.conf /etc/nginx/sites-enabled/warracker.conf
|
|
rm /etc/nginx/sites-enabled/default
|
|
systemctl restart nginx
|
|
|
|
mkdir -p /data/uploads
|
|
|
|
msg_ok "Installed Warracker"
|
|
|
|
msg_info "Creating Services"
|
|
cat <<EOF >/etc/systemd/system/warrackermigration.service
|
|
[Unit]
|
|
Description=Warracker Migration Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
WorkingDirectory=/opt/warracker/backend/migrations
|
|
EnvironmentFile=/opt/warracker/.env
|
|
ExecStart=/opt/warracker/backend/.venv/bin/python apply_migrations.py
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
cat <<EOF >/etc/systemd/system/warracker.service
|
|
[Unit]
|
|
Description=Warracker Service
|
|
After=network.target warrackermigration.service
|
|
Requires=warrackermigration.service
|
|
|
|
[Service]
|
|
WorkingDirectory=/opt/warracker
|
|
EnvironmentFile=/opt/warracker/.env
|
|
ExecStart=/opt/warracker/backend/.venv/bin/gunicorn --config /opt/warracker/backend/gunicorn_config.py backend:create_app() --bind 127.0.0.1:5000
|
|
Restart=always
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
systemctl enable -q --now warracker
|
|
msg_ok "Created Services"
|
|
|
|
motd_ssh
|
|
customize
|
|
|
|
msg_info "Cleaning up"
|
|
$STD apt-get -y autoremove
|
|
$STD apt-get -y autoclean
|
|
msg_ok "Cleaned"
|