Compare commits

..

6 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
36acad3b25 Update CHANGELOG.md (#9321)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-21 00:13:22 +00:00
community-scripts-pr-app[bot]
00060740d9 Update versions.json (#9320)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-21 01:12:53 +01:00
community-scripts-pr-app[bot]
4a5f7ab855 Update CHANGELOG.md (#9313)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-20 17:29:48 +00:00
Chris
dd8bb6f42b Immich v2.3.1: OpenVINO tuning, OCR fixes, Maintenance mode, workflows/plugin framework (#9310)
* Add env var for OpenVINO floating point precision setting

* v2.3.1 - Maintenance mode, workflow/plugin framework
2025-11-20 18:08:25 +01:00
CanbiZ
9879cb4b69 Remove package-lock.json copy in install script
Removed the copy of package-lock.json from the installation script.
2025-11-20 16:13:25 +01:00
CanbiZ
264a29980c documenso: test turbo prune 2025-11-20 16:04:24 +01:00
6 changed files with 184 additions and 96 deletions

View File

@@ -10,6 +10,8 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-11-21
## 2025-11-20
### 🚀 Updated Scripts
@@ -20,6 +22,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### ✨ New Features
- Immich v2.3.1: OpenVINO tuning, OCR fixes, Maintenance mode, workflows/plugin framework [@vhsdream](https://github.com/vhsdream) ([#9310](https://github.com/community-scripts/ProxmoxVE/pull/9310))
- kasm: add: update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9253](https://github.com/community-scripts/ProxmoxVE/pull/9253))
- tools/pve: expand PVE support to 9.09.1 (post-install & netdata) [@MickLesk](https://github.com/MickLesk) ([#9298](https://github.com/community-scripts/ProxmoxVE/pull/9298))

View File

@@ -61,6 +61,15 @@ EOF
msg_ok "Installed libmimalloc3"
fi
if [[ ! -f /etc/apt/sources.list.d/mise.list ]]; then
msg_info "Installing Mise"
curl -fSs https://mise.jdx.dev/gpg-key.pub | tee /etc/apt/keyrings/mise-archive-keyring.pub 1>/dev/null
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.pub arch=amd64] https://mise.jdx.dev/deb stable main" | tee /etc/apt/sources.list.d/mise.list
$STD apt update
$STD apt install -y mise
msg_ok "Installed Mise"
fi
STAGING_DIR=/opt/staging
BASE_DIR=${STAGING_DIR}/base-images
SOURCE_DIR=${STAGING_DIR}/image-source
@@ -93,7 +102,7 @@ EOF
msg_ok "Image-processing libraries up to date"
fi
RELEASE="2.2.3"
RELEASE="2.3.1"
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
msg_info "Stopping Services"
systemctl stop immich-web
@@ -121,6 +130,7 @@ EOF
UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)"
SRC_DIR="${INSTALL_DIR}/source"
APP_DIR="${INSTALL_DIR}/app"
PLUGIN_DIR="${APP_DIR}/corePlugin"
ML_DIR="${APP_DIR}/machine-learning"
GEO_DIR="${INSTALL_DIR}/geodata"
@@ -145,9 +155,7 @@ EOF
rm -rf "${APP_DIR:?}"/*
)
rm -rf "$SRC_DIR"
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
msg_info "Updating ${APP} web and microservices"
cd "$SRC_DIR"/server
@@ -180,7 +188,18 @@ EOF
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
cd "$APP_DIR"
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
msg_ok "Updated ${APP} web and microservices"
# plugins
cd "$SRC_DIR"
$STD mise trust --ignore ./mise.toml
$STD mise trust ./plugins/mise.toml
cd plugins
$STD mise install
$STD mise run build
mkdir -p "$PLUGIN_DIR"
cp -r ./dist "$PLUGIN_DIR"/dist
cp ./manifest.json "$PLUGIN_DIR"
msg_ok "Updated ${APP} server, web, cli and plugins"
cd "$SRC_DIR"/machine-learning
mkdir -p "$ML_DIR" && chown -R immich:immich "$ML_DIR"

View File

@@ -1,4 +1,59 @@
[
{
"name": "TasmoAdmin/TasmoAdmin",
"version": "v4.3.2",
"date": "2025-10-18T12:11:00Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.32.2",
"date": "2025-11-20T22:25:40Z"
},
{
"name": "project-zot/zot",
"version": "v2.1.11",
"date": "2025-11-20T20:14:44Z"
},
{
"name": "readeck/readeck",
"version": "0.21.0",
"date": "2025-11-20T18:35:59Z"
},
{
"name": "saltstack/salt",
"version": "v3007.9",
"date": "2025-11-20T17:58:32Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.30.12",
"date": "2025-11-20T16:13:19Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-v1.26.0.arm-native-docker-build-1",
"date": "2025-11-20T15:38:39Z"
},
{
"name": "duplicati/duplicati",
"version": "v2.2.0.101-2.2.0.101_canary_2025-11-20",
"date": "2025-11-20T14:50:45Z"
},
{
"name": "NodeBB/NodeBB",
"version": "v4.6.3",
"date": "2025-11-20T14:13:22Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.120.4",
"date": "2025-11-19T12:57:55Z"
},
{
"name": "SigNoz/signoz",
"version": "v0.102.1",
"date": "2025-11-20T12:20:18Z"
},
{
"name": "kimai/kimai",
"version": "2.44.0",
@@ -104,11 +159,6 @@
"version": "0.51.3",
"date": "2025-11-19T15:45:28Z"
},
{
"name": "NodeBB/NodeBB",
"version": "v4.6.2",
"date": "2025-11-19T15:31:59Z"
},
{
"name": "BookStackApp/BookStack",
"version": "v25.11.2",
@@ -139,11 +189,6 @@
"version": "v0.13.0",
"date": "2025-11-19T14:16:07Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.120.4",
"date": "2025-11-19T12:57:55Z"
},
{
"name": "AdguardTeam/AdGuardHome",
"version": "v0.107.69",
@@ -159,11 +204,6 @@
"version": "v7.5.0",
"date": "2025-11-19T08:36:29Z"
},
{
"name": "SigNoz/signoz",
"version": "v0.102.0",
"date": "2025-11-19T06:53:59Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
@@ -274,11 +314,6 @@
"version": "v1.4.5",
"date": "2025-11-17T15:20:35Z"
},
{
"name": "meilisearch/meilisearch",
"version": "latest",
"date": "2025-11-17T09:29:20Z"
},
{
"name": "rabbitmq/rabbitmq-server",
"version": "v4.2.1",
@@ -324,11 +359,6 @@
"version": "3.3.8",
"date": "2025-11-16T17:04:37Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.30.11",
"date": "2025-11-16T16:21:04Z"
},
{
"name": "AlexxIT/go2rtc",
"version": "v1.9.12",
@@ -434,11 +464,6 @@
"version": "v0.86.1",
"date": "2025-11-14T05:05:44Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.31.0",
"date": "2025-11-14T00:18:50Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.7",
@@ -564,11 +589,6 @@
"version": "v1.0.0-beta19",
"date": "2025-11-09T17:26:30Z"
},
{
"name": "duplicati/duplicati",
"version": "v2.2.0.1_stable_2025-11-09",
"date": "2025-11-09T17:21:54Z"
},
{
"name": "Cleanuparr/Cleanuparr",
"version": "v2.4.5",
@@ -939,21 +959,6 @@
"version": "v4.5.0",
"date": "2025-10-18T22:00:50Z"
},
{
"name": "project-zot/zot",
"version": "v2.1.10",
"date": "2025-10-18T18:46:36Z"
},
{
"name": "TasmoAdmin/TasmoAdmin",
"version": "v4.3.2",
"date": "2025-10-18T12:11:00Z"
},
{
"name": "readeck/readeck",
"version": "0.20.4",
"date": "2025-10-18T10:00:42Z"
},
{
"name": "diced/zipline",
"version": "v4.3.2",
@@ -1104,11 +1109,6 @@
"version": "v0.17.0",
"date": "2025-09-19T22:23:28Z"
},
{
"name": "saltstack/salt",
"version": "v3007.8",
"date": "2025-09-18T18:19:04Z"
},
{
"name": "docmost/docmost",
"version": "v0.23.2",

View File

@@ -71,7 +71,11 @@ export TURBO_CACHE=1
export NEXT_TELEMETRY_DISABLED=1
export CYPRESS_INSTALL_BINARY=0
export NODE_OPTIONS="--max-old-space-size=4096"
$STD turbo prune --scope=@documenso/remix --docker
cd out
cp -r json/* .
$STD npm ci
cp -r full/* .
$STD turbo run build --filter=@documenso/remix
$STD npm run prisma:migrate-deploy
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"

View File

@@ -84,6 +84,13 @@ if [[ "$CTTYPE" == "0" && -d /dev/dri ]]; then
fi
msg_ok "Dependencies Installed"
msg_info "Installing Mise"
curl -fSs https://mise.jdx.dev/gpg-key.pub | tee /etc/apt/keyrings/mise-archive-keyring.pub 1>/dev/null
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.pub arch=amd64] https://mise.jdx.dev/deb stable main" | tee /etc/apt/sources.list.d/mise.list
$STD apt update
$STD apt install -y mise
msg_ok "Installed Mise"
read -r -p "${TAB3}Install OpenVINO dependencies for Intel HW-accelerated machine-learning? y/N " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing OpenVINO dependencies"
@@ -277,6 +284,7 @@ INSTALL_DIR="/opt/${APPLICATION}"
UPLOAD_DIR="${INSTALL_DIR}/upload"
SRC_DIR="${INSTALL_DIR}/source"
APP_DIR="${INSTALL_DIR}/app"
PLUGIN_DIR="${APP_DIR}/corePlugin"
ML_DIR="${APP_DIR}/machine-learning"
GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR"
@@ -314,7 +322,18 @@ cp LICENSE "$APP_DIR"
$STD pnpm --filter @immich/sdk --filter @immich/cli --frozen-lockfile install
$STD pnpm --filter @immich/sdk --filter @immich/cli build
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
msg_ok "Installed Immich Server and Web Components"
# plugins
cd "$SRC_DIR"
$STD mise trust --ignore ./mise.toml
$STD mise trust ./plugins/mise.toml
cd plugins
$STD mise install
$STD mise run build
mkdir -p "$PLUGIN_DIR"
cp -r ./dist "$PLUGIN_DIR"/dist
cp ./manifest.json "$PLUGIN_DIR"
msg_ok "Installed Immich Server, Web and Plugin Components"
cd "$SRC_DIR"/machine-learning
$STD useradd -U -s /usr/sbin/nologin -r -M -d "$INSTALL_DIR" immich
@@ -378,6 +397,10 @@ DB_VECTOR_EXTENSION=vectorchord
REDIS_HOSTNAME=127.0.0.1
IMMICH_MACHINE_LEARNING_URL=http://127.0.0.1:3003
MACHINE_LEARNING_CACHE_FOLDER=${INSTALL_DIR}/cache
## - For OpenVINO only - uncomment below to increase
## - inference speed while reducing accuracy
## - Default is FP32
# MACHINE_LEARNING_OPENVINO_PRECISION=FP16
IMMICH_MEDIA_LOCATION=${UPLOAD_DIR}
EOF

View File

@@ -25,14 +25,27 @@ msg_ok "Installed Dependencies"
PYTHON_VERSION="3.12" setup_uv
POSTGRES_VERSION="16" setup_postgresql
NODE_MODULE="yarn" NODE_VERSION="24" setup_nodejs
fetch_and_deploy_gh_release "mealie" "mealie-recipes/mealie" "tarball" "latest" "/opt/mealie"
PG_DB_NAME="mealie_db" PG_DB_USER="mealie_user" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
NODE_MODULE="yarn" NODE_VERSION="20" setup_nodejs
msg_info "Installing Python Dependencies with uv"
cd /opt/mealie
$STD uv sync --frozen --extra pgsql
msg_ok "Installed Python Dependencies"
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"
msg_info "Building Frontend"
export NUXT_TELEMETRY_DISABLED=1
@@ -41,35 +54,33 @@ $STD yarn install --prefer-offline --frozen-lockfile --non-interactive --product
$STD yarn generate
msg_ok "Built Frontend"
msg_info "Copying Built Frontend"
mkdir -p /opt/mealie/mealie/frontend
cp -r /opt/mealie/frontend/dist/* /opt/mealie/mealie/frontend/
msg_info "Copying Built Frontend into Backend Package"
cp -r /opt/mealie/frontend/dist /opt/mealie/mealie/frontend
msg_ok "Copied Frontend"
msg_info "Downloading NLTK Data"
mkdir -p /nltk_data/
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 uv run python -m nltk.downloader -d /nltk_data averaged_perceptron_tagger_eng
msg_ok "Downloaded NLTK Data"
$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 "Writing Environment File"
SECRET=$(openssl rand -hex 32)
mkdir -p /run/secrets
cat <<EOF >/opt/mealie/mealie.env
MEALIE_HOME=/opt/mealie
NLTK_DATA=/nltk_data
SECRET=${SECRET}
HOST=0.0.0.0
PORT=9000
DB_ENGINE=postgres
POSTGRES_SERVER=localhost
POSTGRES_PORT=5432
POSTGRES_USER=${PG_DB_USER}
POSTGRES_PASSWORD=${PG_DB_PASS}
POSTGRES_DB=${PG_DB_NAME}
POSTGRES_USER=${DB_USER}
POSTGRES_PASSWORD=${DB_PASS}
POSTGRES_DB=${DB_NAME}
NLTK_DATA=/nltk_data
PRODUCTION=true
HOST=0.0.0.0
PORT=9000
STATIC_FILES=/opt/mealie/frontend/dist
EOF
msg_ok "Wrote Environment File"
@@ -79,32 +90,60 @@ cat <<'EOF' >/opt/mealie/start.sh
set -a
source /opt/mealie/mealie.env
set +a
exec uv run mealie
exec /opt/mealie/.venv/bin/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 <<'EOF' >/etc/systemd/system/mealie.service
cat <<EOF >/etc/systemd/system/mealie.service
[Unit]
Description=Mealie Recipe Manager
Description=Mealie Backend Server
After=network.target postgresql.service
Wants=postgresql.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/mealie
ExecStart=/opt/mealie/start.sh
Restart=on-failure
RestartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now mealie
msg_ok "Created and Started Service"
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"