mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-10-05 18:41:02 +02:00
7f57d0998c
* Scripts: close every msg_info block with msg_ok Past-tense msg_info calls that should have been msg_ok, notices that opened a block before a prompt, and blocks without a closing msg_ok. These already left a stale spinner; with core's block stack they would resume it after every later msg_ok. * Generate passwords with random_password openssl rand -base64 | tr -dc | head -c returned fewer characters than asked for, and the unfiltered | cut variants put / and + into passwords that end up in DSNs and sed expressions. Secrets an app decodes as base64 are unchanged. Requires community-scripts/core#61. * Keep data directories through CLEAN_INSTALL instead of copying them create_backup copied uploads, storage and similar directories twice per update and needed their size again in free space. CLEAN_INSTALL_KEEP moves them aside instead. Only directories the upstream release does not ship, in scripts that restored right after the fetch. Requires community-scripts/core#61. * Drop the 300s uv timeout overrides setup_uv exports UV_HTTP_TIMEOUT=600 now; the scripts' 300 only lowered it. Requires community-scripts/core#61.
98 lines
2.3 KiB
Bash
98 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright (c) 2021-2026 community-scripts ORG
|
|
# Author: MickLesk (CanbiZ)
|
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
# Source: https://github.com/babybuddy/babybuddy
|
|
|
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
color
|
|
verb_ip6
|
|
catch_errors
|
|
setting_up_container
|
|
network_check
|
|
update_os
|
|
|
|
msg_info "Installing Dependencies"
|
|
$STD apt install -y \
|
|
uwsgi \
|
|
uwsgi-plugin-python3 \
|
|
libopenjp2-7-dev \
|
|
libpq-dev \
|
|
nginx \
|
|
python3
|
|
msg_ok "Installed Dependencies"
|
|
|
|
setup_uv
|
|
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy" "tarball"
|
|
|
|
msg_info "Installing Babybuddy"
|
|
mkdir -p /opt/data
|
|
cd /opt/babybuddy
|
|
$STD uv venv --clear .venv
|
|
$STD source .venv/bin/activate
|
|
$STD uv pip install -r requirements.txt
|
|
cp babybuddy/settings/production.example.py babybuddy/settings/production.py
|
|
SECRET_KEY=$(random_password 32)
|
|
ALLOWED_HOSTS=$(hostname -I | tr ' ' ',' | sed 's/,$//')",127.0.0.1,localhost"
|
|
sed -i \
|
|
-e "s/^SECRET_KEY = \"\"/SECRET_KEY = \"$SECRET_KEY\"/" \
|
|
-e "s/^ALLOWED_HOSTS = \[\"\"\]/ALLOWED_HOSTS = \[$(echo \"$ALLOWED_HOSTS\" | sed 's/,/\",\"/g')\]/" \
|
|
babybuddy/settings/production.py
|
|
|
|
export DJANGO_SETTINGS_MODULE=babybuddy.settings.production
|
|
$STD python manage.py migrate
|
|
chown -R www-data:www-data /opt/data
|
|
chmod 640 /opt/data/db.sqlite3
|
|
chmod 750 /opt/data
|
|
msg_ok "Installed Babybuddy"
|
|
|
|
msg_info "Configuring uWSGI"
|
|
cat <<EOF >/etc/uwsgi/apps-available/babybuddy.ini
|
|
[uwsgi]
|
|
plugins = python3
|
|
project = babybuddy
|
|
base_dir = /opt/babybuddy
|
|
chdir = %(base_dir)
|
|
virtualenv = %(base_dir)/.venv
|
|
module = %(project).wsgi:application
|
|
env = DJANGO_SETTINGS_MODULE=%(project).settings.production
|
|
master = True
|
|
vacuum = True
|
|
socket = /var/run/uwsgi/app/babybuddy/socket
|
|
chmod-socket = 660
|
|
uid = www-data
|
|
gid = www-data
|
|
EOF
|
|
ln -sf /etc/uwsgi/apps-available/babybuddy.ini /etc/uwsgi/apps-enabled/babybuddy.ini
|
|
service uwsgi restart
|
|
msg_ok "Configured uWSGI"
|
|
|
|
msg_info "Configuring NGINX"
|
|
cat <<EOF >/etc/nginx/sites-available/babybuddy
|
|
upstream babybuddy {
|
|
server unix:///var/run/uwsgi/app/babybuddy/socket;
|
|
}
|
|
|
|
server {
|
|
listen 80;
|
|
server_name _;
|
|
|
|
location / {
|
|
uwsgi_pass babybuddy;
|
|
include uwsgi_params;
|
|
}
|
|
|
|
location /media {
|
|
alias /opt/data/media;
|
|
}
|
|
}
|
|
EOF
|
|
|
|
nginx_enable_site babybuddy
|
|
msg_ok "Configured NGINX"
|
|
|
|
motd_ssh
|
|
customize
|
|
cleanup_lxc
|