From 8928fe1b3d72447639e711f2692d44f152817b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fra=C3=9F?= Date: Wed, 4 Dec 2024 06:52:08 +0100 Subject: [PATCH] =?UTF-8?q?[task-230]=20Entw=C3=BCrfe=20f=C3=BCr=20Mealie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- roles/mealie/defaults/main.json | 3 + roles/mealie/files/prepare.sh | 12 ++++ roles/mealie/files/setup.sh | 61 +++++++++++++++++++ roles/mealie/files/start-backend.sh | 29 +++++++++ roles/mealie/files/start-frontend.sh | 12 ++++ roles/mealie/info.md | 8 +++ roles/mealie/vardef.json | 6 ++ .../postgresql-for-mealie/defaults/main.json | 5 ++ roles/postgresql-for-mealie/tasks/main.json | 49 +++++++++++++++ 9 files changed, 185 insertions(+) create mode 100644 roles/mealie/defaults/main.json create mode 100644 roles/mealie/files/prepare.sh create mode 100644 roles/mealie/files/setup.sh create mode 100644 roles/mealie/files/start-backend.sh create mode 100644 roles/mealie/files/start-frontend.sh create mode 100644 roles/mealie/info.md create mode 100644 roles/mealie/vardef.json create mode 100644 roles/postgresql-for-mealie/defaults/main.json create mode 100644 roles/postgresql-for-mealie/tasks/main.json diff --git a/roles/mealie/defaults/main.json b/roles/mealie/defaults/main.json new file mode 100644 index 0000000..3a0558a --- /dev/null +++ b/roles/mealie/defaults/main.json @@ -0,0 +1,3 @@ +{ + "var_mealie_port": 9000 +} diff --git a/roles/mealie/files/prepare.sh b/roles/mealie/files/prepare.sh new file mode 100644 index 0000000..7052d9c --- /dev/null +++ b/roles/mealie/files/prepare.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh + +## vars + +packages="" +packages="${packages} libldap2-dev" +packages="${packages} libsasl2-dev" + + +## exec + +apt install ${packages} diff --git a/roles/mealie/files/setup.sh b/roles/mealie/files/setup.sh new file mode 100644 index 0000000..f53a9d3 --- /dev/null +++ b/roles/mealie/files/setup.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +## consts + +source_directory="/home/projekte/fremde/mealie" +target_directory="/tmp/mealie" +python_modules="" +python_modules="${python_modules} uvicorn" +python_modules="${python_modules} fastapi" +python_modules="${python_modules} itsdangerous" +python_modules="${python_modules} python-dotenv" +python_modules="${python_modules} python-dateutil" +python_modules="${python_modules} pydantic_settings" +python_modules="${python_modules} sqlalchemy" +python_modules="${python_modules} pyjwt" +python_modules="${python_modules} text_unidecode" +python_modules="${python_modules} python-slugify" +python_modules="${python_modules} pyhumps" +python_modules="${python_modules} isodate" +python_modules="${python_modules} apprise" +python_modules="${python_modules} recipe_scrapers" +python_modules="${python_modules} bcrypt" +python_modules="${python_modules} python-ldap" +python_modules="${python_modules} authlib" +python_modules="${python_modules} alembic" +python_modules="${python_modules} python-multipart" +python_modules="${python_modules} openai" +python_modules="${python_modules} pillow" +python_modules="${python_modules} pillow-heif" +python_modules="${python_modules} jinja2" +python_modules="${python_modules} html2text" +python_modules="${python_modules} orjson" +python_modules="${python_modules} rapidfuzz" + + +### exec + +### create venv +python3 -m venv ${target_directory} + +### copy files +cp -r ${source_directory}/alembic ${target_directory}/alembic +cp -r ${source_directory}/alembic.ini ${target_directory}/alembic.ini +cp -r ${source_directory}/mealie ${target_directory}/mealie + +### enter venv +cd ${target_directory} +source bin/activate + +### install dependencies +pip3 install ${python_modules} +# poetry install -E pgsql --only main + +### init +$PYTHONPATH:${target_directory} python3 ${target_directory}/mealie/scripts/install_model.py + +### frontend +cp -r ${source_directory}/frontend ${target_directory}/frontend +npm install +npm install webpack@4.47.0 +mkdir ${target_directory}/frontend/dist diff --git a/roles/mealie/files/start-backend.sh b/roles/mealie/files/start-backend.sh new file mode 100644 index 0000000..99ba142 --- /dev/null +++ b/roles/mealie/files/start-backend.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +## consts + +target_directory="/tmp/mealie" + + +## exec + +### enter venv +cd ${target_directory} +source bin/activate + +### set environment variables +export PYTHONPATH=$PYTHONPATH:${target_directory} +export DATA_DIR=${target_directory} +export DATA_DIR=${target_directory} +# BASE_URL +# SMTP_HOST +# SMTP_FROM_EMAIL +# DEFAULT_EMAIL +# DEFAULT_GROUP +# DEFAULT_HOUSEHOLD +export LDAP_AUTH_ENABLED="false" +export OIDC_AUTH_ENABLED="false" +export PRODUCTION="true" + +### run +python3 mealie/main.py diff --git a/roles/mealie/files/start-frontend.sh b/roles/mealie/files/start-frontend.sh new file mode 100644 index 0000000..0f908a0 --- /dev/null +++ b/roles/mealie/files/start-frontend.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +## consts + +target_directory="/tmp/mealie" + + +## exec + +cd ${target_directory}/frontend +npm run generate +npm run start diff --git a/roles/mealie/info.md b/roles/mealie/info.md new file mode 100644 index 0000000..fd42aa0 --- /dev/null +++ b/roles/mealie/info.md @@ -0,0 +1,8 @@ +## Beschreibung + +Zum Aufsetzen der Rezepte-Sammlung [Mealie](https://mealie.io/) + + +## Verweise + +- [Documentation | Backend Configuration](https://docs.mealie.io/documentation/getting-started/installation/backend-config/) diff --git a/roles/mealie/vardef.json b/roles/mealie/vardef.json new file mode 100644 index 0000000..c839a07 --- /dev/null +++ b/roles/mealie/vardef.json @@ -0,0 +1,6 @@ +{ + "port": { + "type": "integer", + "mandatory": false + } +} diff --git a/roles/postgresql-for-mealie/defaults/main.json b/roles/postgresql-for-mealie/defaults/main.json new file mode 100644 index 0000000..a7bd1f8 --- /dev/null +++ b/roles/postgresql-for-mealie/defaults/main.json @@ -0,0 +1,5 @@ +{ + "var_postgresql_for_mealie_username": "mealie_user", + "var_postgresql_for_mealie_password": "REPLACE_ME", + "var_postgresql_for_mealie_schema": "mealie" +} diff --git a/roles/postgresql-for-mealie/tasks/main.json b/roles/postgresql-for-mealie/tasks/main.json new file mode 100644 index 0000000..ac7f2d9 --- /dev/null +++ b/roles/postgresql-for-mealie/tasks/main.json @@ -0,0 +1,49 @@ +[ + { + "name": "packages", + "become": true, + "ansible.builtin.apt": { + "update_cache": true, + "pkg": [ + "acl", + "python3-psycopg2" + ] + } + }, + { + "name": "user", + "become": true, + "become_user": "postgres", + "community.postgresql.postgresql_user": { + "state": "present", + "name": "{{var_postgresql_for_mealie_username}}", + "password": "{{var_postgresql_for_mealie_password}}" + }, + "environment": { + "PGOPTIONS": "-c password_encryption=scram-sha-256" + } + }, + { + "name": "schema", + "become": true, + "become_user": "postgres", + "community.postgresql.postgresql_db": { + "state": "present", + "name": "{{var_postgresql_for_mealie_schema}}", + "owner": "{{var_postgresql_for_mealie_username}}" + } + }, + { + "name": "rights", + "become": true, + "become_user": "postgres", + "community.postgresql.postgresql_privs": { + "state": "present", + "db": "{{var_postgresql_for_mealie_schema}}", + "objs": "ALL_IN_SCHEMA", + "roles": "{{var_postgresql_for_mealie_username}}", + "privs": "ALL", + "grant_option": true + } + } +]