diff --git a/ct/mealie.sh b/ct/mealie.sh index 161f3e1a1..d39c99a52 100644 --- a/ct/mealie.sh +++ b/ct/mealie.sh @@ -7,8 +7,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV APP="Mealie" var_tags="${var_tags:-recipes}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" +var_cpu="${var_cpu:-5}" +var_ram="${var_ram:-4096}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" @@ -51,21 +51,22 @@ function update_script() { cp -r /opt/mealie/frontend/dist /opt/mealie/mealie/frontend msg_ok "Frontend rebuilt" - msg_info "Rebuilding Backend Environment" + msg_info "Updating Python dependencies" cd /opt/mealie - $STD /opt/mealie/.venv/bin/poetry self add "poetry-plugin-export>=1.9" - MEALIE_VERSION=$(/opt/mealie/.venv/bin/poetry version --short) - $STD /opt/mealie/.venv/bin/poetry build --output dist - $STD /opt/mealie/.venv/bin/poetry export --only=main --extras=pgsql --output=dist/requirements.txt - echo "mealie[pgsql]==$MEALIE_VERSION \\" >>dist/requirements.txt - /opt/mealie/.venv/bin/poetry run pip hash dist/mealie-$MEALIE_VERSION*.whl | tail -n1 | tr -d '\n' >>dist/requirements.txt - echo " \\" >>dist/requirements.txt - /opt/mealie/.venv/bin/poetry run pip hash dist/mealie-$MEALIE_VERSION*.tar.gz | tail -n1 >>dist/requirements.txt - msg_ok "Backend prepared" + $STD uv sync --frozen + msg_ok "Python dependencies updated" - msg_info "Finalize Installation" - $STD /opt/mealie/.venv/bin/uv pip install --require-hashes -r /opt/mealie/dist/requirements.txt --find-links dist - msg_ok "Mealie installed" + msg_info "Recreating Start Script" + cat <<'EOF' >/opt/mealie/start.sh +#!/bin/bash +set -a +source /opt/mealie/mealie.env +set +a +cd /opt/mealie +exec uv run mealie +EOF + chmod +x /opt/mealie/start.sh + msg_ok "Start Script recreated" msg_info "Restoring Configuration" mv -f /opt/mealie/mealie.env.bak /opt/mealie/mealie.env @@ -76,7 +77,7 @@ function update_script() { msg_info "Starting Service" systemctl start mealie msg_ok "Started Service" - msg_ok "Update Successful" + msg_ok "Updated successfully" fi exit } diff --git a/install/mealie-install.sh b/install/mealie-install.sh index a52c890a4..52a479ceb 100644 --- a/install/mealie-install.sh +++ b/install/mealie-install.sh @@ -29,23 +29,12 @@ NODE_MODULE="yarn" NODE_VERSION="20" setup_nodejs fetch_and_deploy_gh_release "mealie" "mealie-recipes/mealie" "tarball" "latest" "/opt/mealie" -msg_info "Setup Database" -DB_NAME=mealie_db -DB_USER=mealie__user -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 ENCODING 'UTF8' TEMPLATE template0;" -$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';" -$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';" -$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'" -$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;" -{ - echo "Mealie-Credentials" - echo "Mealie Database User: $DB_USER" - echo "Mealie Database Password: $DB_PASS" - echo "Mealie Database Name: $DB_NAME" -} >>~/mealie.creds -msg_ok "Set up Database" +PG_DB_NAME="mealie_db" PG_DB_USER="mealie_user" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db + +msg_info "Setting up uv environment" +cd /opt/mealie +$STD uv sync --frozen +msg_ok "Set up uv environment" msg_info "Building Frontend" export NUXT_TELEMETRY_DISABLED=1 @@ -58,15 +47,10 @@ msg_info "Copying Built Frontend into Backend Package" cp -r /opt/mealie/frontend/dist /opt/mealie/mealie/frontend msg_ok "Copied Frontend" -msg_info "Preparing Backend (Poetry)" -$STD uv venv /opt/mealie/.venv -$STD /opt/mealie/.venv/bin/python -m ensurepip --upgrade -$STD /opt/mealie/.venv/bin/python -m pip install --upgrade pip -$STD /opt/mealie/.venv/bin/pip install uv -cd /opt/mealie -$STD /opt/mealie/.venv/bin/uv pip install poetry==2.0.1 -$STD /opt/mealie/.venv/bin/poetry self add "poetry-plugin-export>=1.9" -msg_ok "Prepared Poetry" +msg_info "Downloading NLTK Data" +mkdir -p /nltk_data/ +$STD python -m nltk.downloader -d /nltk_data averaged_perceptron_tagger_eng +msg_ok "Downloaded NLTK Data" msg_info "Writing Environment File" cat </opt/mealie/mealie.env @@ -75,9 +59,9 @@ PORT=9000 DB_ENGINE=postgres POSTGRES_SERVER=localhost POSTGRES_PORT=5432 -POSTGRES_USER=${DB_USER} -POSTGRES_PASSWORD=${DB_PASS} -POSTGRES_DB=${DB_NAME} +POSTGRES_USER=${PG_DB_USER} +POSTGRES_PASSWORD=${PG_DB_PASS} +POSTGRES_DB=${PG_DB_NAME} NLTK_DATA=/nltk_data PRODUCTION=true STATIC_FILES=/opt/mealie/frontend/dist @@ -90,37 +74,12 @@ cat <<'EOF' >/opt/mealie/start.sh set -a source /opt/mealie/mealie.env set +a -exec /opt/mealie/.venv/bin/mealie +cd /opt/mealie +exec uv run mealie EOF chmod +x /opt/mealie/start.sh msg_ok "Created Start Script" -msg_info "Building Mealie Backend Wheel" -cd /opt/mealie -$STD /opt/mealie/.venv/bin/poetry build --output dist -MEALIE_VERSION=$(/opt/mealie/.venv/bin/poetry version --short) -$STD /opt/mealie/.venv/bin/poetry export --only=main --extras=pgsql --output=dist/requirements.txt -echo "mealie[pgsql]==$MEALIE_VERSION \\" >>dist/requirements.txt -/opt/mealie/.venv/bin/poetry run pip hash dist/mealie-$MEALIE_VERSION*.whl | tail -n1 | tr -d '\n' >>dist/requirements.txt -echo " \\" >>dist/requirements.txt -/opt/mealie/.venv/bin/poetry run pip hash dist/mealie-$MEALIE_VERSION*.tar.gz | tail -n1 >>dist/requirements.txt -msg_ok "Built Wheel + Requirements" - -msg_info "Installing Mealie via uv" -cd /opt/mealie -$STD /opt/mealie/.venv/bin/uv pip install --require-hashes -r /opt/mealie/dist/requirements.txt --find-links dist -msg_ok "Installed Mealie" - -msg_info "Downloading NLTK Data" -mkdir -p /nltk_data/ -$STD /opt/mealie/.venv/bin/python -m nltk.downloader -d /nltk_data averaged_perceptron_tagger_eng -msg_ok "Downloaded NLTK Data" - -msg_info "Set Symbolic Links for Mealie" -ln -sf /opt/mealie/.venv/bin/mealie /usr/local/bin/mealie -ln -sf /opt/mealie/.venv/bin/poetry /usr/local/bin/poetry -msg_ok "Set Symbolic Links" - msg_info "Creating Systemd Service" cat </etc/systemd/system/mealie.service [Unit] @@ -141,9 +100,4 @@ msg_ok "Created Service" motd_ssh customize - -msg_info "Cleaning up" -$STD apt -y autoremove -$STD apt -y autoclean -$STD apt -y clean -msg_ok "Cleaned" +cleanup_lxc