Compare commits

..

6 Commits

Author SHA1 Message Date
github-actions[bot] daeffbab79 Update CHANGELOG.md 2026-08-13 08:00:35 +00:00
Johann Grobe f1386ecbae [wanderer] refactor (#16448)
* refactor wanderer script

* fix script error

* refactor meilisearch bind

* delete .meilisearch versioning

* delete meilisearch on migration

* delete /usr/bin/meilisearch

* meilisearch migration fix

* simplify meilisearch check

* fix migration check

* next try

* fix meilisearch migration

* try fixing meilisearch error

* meilisearch binary missing

* edit setup_meilisearch

* delete old update script for meiliesearch

* refactor script

* fix services

* start wanderer-web after migration
2026-08-13 10:00:20 +02:00
community-scripts-pr-app[bot] 0456f7642c Update CHANGELOG.md (#16458)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-13 07:54:06 +00:00
Crazy-Duck 68fe5d6b8b feat: Update koillection-install.sh to support API usage (#16425)
* feat: Update koillection-install.sh to support API usage

Current config is missing the generation of the SSH keys necessary to create JWT tokens, as well as the Apache config necessary to allow through Authorization headers.

See:
- https://github.com/benjaminjonard/koillection/wiki/manual-installation
- https://symfony.com/bundles/LexikJWTAuthenticationBundle/current/index.html?utm_source=chatgpt.com#important-note-for-apache-users

* fix: missing backslash

* feat: ensure subsequent executions don't replace keys
2026-08-13 09:53:37 +02:00
community-scripts-pr-app[bot] a222d32a31 Update CHANGELOG.md (#16457)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-13 06:59:00 +00:00
push-app-to-main[bot] cc47798d1f SuggestArr (#16449)
* Add suggestarr (ct)

* fix: source line

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2026-08-13 08:58:35 +02:00
7 changed files with 295 additions and 43 deletions
+16
View File
@@ -521,6 +521,22 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-08-13
### 🆕 New Scripts
- SuggestArr ([#16449](https://github.com/community-scripts/ProxmoxVE/pull/16449))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- [wanderer] refactor [@johanngrobe](https://github.com/johanngrobe) ([#16448](https://github.com/community-scripts/ProxmoxVE/pull/16448))
- #### ✨ New Features
- feat: Update koillection-install.sh to support API usage [@Crazy-Duck](https://github.com/Crazy-Duck) ([#16425](https://github.com/community-scripts/ProxmoxVE/pull/16425))
## 2026-08-12
### 🆕 New Scripts
+6
View File
@@ -0,0 +1,6 @@
_____ __ ___
/ ___/__ ______ _____ ____ _____/ /_/ | __________
\__ \/ / / / __ `/ __ `/ _ \/ ___/ __/ /| | / ___/ ___/
___/ / /_/ / /_/ / /_/ / __(__ ) /_/ ___ |/ / / /
/____/\__,_/\__, /\__, /\___/____/\__/_/ |_/_/ /_/
/____//____/
+70
View File
@@ -0,0 +1,70 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# 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/giuseppe99barchetta/SuggestArr
APP="SuggestArr"
var_tags="${var_tags:-arr;media}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/suggestarr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "suggestarr" "giuseppe99barchetta/SuggestArr"; then
msg_info "Stopping Service"
systemctl stop suggestarr
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "suggestarr" "giuseppe99barchetta/SuggestArr" "tarball"
msg_info "Building Frontend"
cd /opt/suggestarr/client
$STD npm install
$STD npm run build
mkdir -p /opt/suggestarr/static
cp -r /opt/suggestarr/client/dist/* /opt/suggestarr/static/
cp -r /opt/suggestarr/client/node_modules/swagger-ui-dist /opt/suggestarr/static/swagger-ui
msg_ok "Built Frontend"
msg_info "Updating Python Environment"
cd /opt/suggestarr
$STD uv venv --python 3.12 /opt/suggestarr/.venv
$STD uv pip install --python /opt/suggestarr/.venv -r /opt/suggestarr/api_service/requirements.txt
msg_ok "Updated Python Environment"
msg_info "Starting Service"
systemctl start suggestarr
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:5000${CL}"
+96 -15
View File
@@ -25,17 +25,111 @@ function update_script() {
check_container_storage
check_container_resources
if [[ ! -f /opt/wanderer/start.sh ]]; then
if [[ ! -d /opt/wanderer/source ]]; then
msg_error "No wanderer Installation Found!"
exit
fi
if [[ ! -f /etc/systemd/system/meilisearch.service ]]; then
msg_info "Migrating MeiliSearch"
systemctl stop wanderer-web
rm -rf /opt/wanderer/source/search
MEILI_MASTER_KEY_VAL=$(grep -oP '^MEILI_MASTER_KEY=\K.*' /opt/wanderer/.env)
cat <<EOF >/etc/meilisearch.toml
env = "production"
master_key = "$MEILI_MASTER_KEY_VAL"
db_path = "/opt/wanderer/data/meili_data"
dump_dir = "/var/lib/meilisearch/dumps"
snapshot_dir = "/var/lib/meilisearch/snapshots"
no_analytics = true
http_addr = "127.0.0.1:7700"
EOF
mkdir -p /var/lib/meilisearch/dumps /var/lib/meilisearch/snapshots
cat <<EOF >/etc/systemd/system/meilisearch.service
[Unit]
Description=Meilisearch
After=network.target
[Service]
ExecStart=/usr/bin/meilisearch --config-file-path /etc/meilisearch.toml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable -q --now meilisearch
sed -i \
-e "s|^MEILI_HTTP_ADDR=.*|MEILI_HTTP_ADDR=127.0.0.1:7700|" \
-e "s|^MEILI_URL=.*|MEILI_URL=http://127.0.0.1:7700|" \
/opt/wanderer/.env
msg_ok "Migrated Meilisearch"
fi
setup_meilisearch
if [[ -f /opt/wanderer/start.sh ]]; then
msg_info "Migrating wanderer services"
systemctl stop wanderer-web
rm -f /opt/wanderer/start.sh
rm -rf /opt/wanderer/source/search
cat <<EOF >/etc/systemd/system/wanderer-pocketbase.service
[Unit]
Description=wanderer PocketBase
Wants=network.target
After=network.target
PartOf=wanderer-web.service
StartLimitIntervalSec=10
StartLimitBurst=5
[Service]
Type=simple
WorkingDirectory=/opt/wanderer/source/db
EnvironmentFile=/opt/wanderer/.env
ExecStart=/opt/wanderer/source/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION}
Restart=always
RestartSec=1
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/wanderer-web.service
[Unit]
Description=wanderer
Wants=network.target meilisearch.service wanderer-pocketbase.service
After=network.target meilisearch.service wanderer-pocketbase.service
StartLimitIntervalSec=10
StartLimitBurst=5
[Service]
Type=simple
WorkingDirectory=/opt/wanderer/source/web
EnvironmentFile=/opt/wanderer/.env
ExecStart=/usr/bin/node build
Restart=always
RestartSec=1
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable -q wanderer-pocketbase
systemctl start wanderer-web
msg_ok "Migrated wanderer services"
fi
if check_for_gh_release "wanderer" "open-wanderer/wanderer"; then
msg_info "Stopping service"
systemctl stop wanderer-web
msg_ok "Stopped service"
create_backup /opt/wanderer/source/search
create_backup /opt/wanderer/source
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source"
restore_backup
@@ -60,19 +154,6 @@ function update_script() {
msg_ok "Started service"
msg_ok "Update Successful"
fi
if check_for_gh_release "meilisearch" "meilisearch/meilisearch"; then
msg_info "Stopping service"
systemctl stop wanderer-web
msg_ok "Stopped service"
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary" "latest" "/opt/wanderer/source/search"
grep -q -- '--upgrade-db' /opt/wanderer/start.sh || sed -i 's|meilisearch --master-key|meilisearch --upgrade-db --master-key|' /opt/wanderer/start.sh
msg_info "Starting service"
systemctl start wanderer-web
msg_ok "Started service"
msg_ok "Update Successful"
fi
exit
}
+2
View File
@@ -38,6 +38,7 @@ export APP_RUNTIME='Symfony\Component\Runtime\SymfonyRuntime'
$STD composer install --no-dev -o --no-interaction --classmap-authoritative
$STD php bin/console doctrine:migrations:migrate --no-interaction
$STD php bin/console app:translations:dump
$STD php bin/console lexik:jwt:generate-keypair --skip-if-exists
cd assets/
$STD yarn install
$STD yarn build
@@ -51,6 +52,7 @@ cat <<EOF >/etc/apache2/sites-available/koillection.conf
ServerName koillection
DocumentRoot /opt/koillection/public
SetEnv APP_RUNTIME "Symfony\\Component\\Runtime\\SymfonyRuntime"
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=\$1
<Directory /opt/koillection/public>
Options Indexes FollowSymLinks
AllowOverride All
+74
View File
@@ -0,0 +1,74 @@
#!/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/giuseppe99barchetta/SuggestArr
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 build-essential
msg_ok "Installed Dependencies"
UV_PYTHON="3.12" setup_uv
NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "suggestarr" "giuseppe99barchetta/SuggestArr" "tarball"
msg_info "Building Frontend"
cd /opt/suggestarr/client
$STD npm install
$STD npm run build
mkdir -p /opt/suggestarr/static
cp -r /opt/suggestarr/client/dist/* /opt/suggestarr/static/
cp -r /opt/suggestarr/client/node_modules/swagger-ui-dist /opt/suggestarr/static/swagger-ui
msg_ok "Built Frontend"
msg_info "Setting up Python Environment"
cd /opt/suggestarr
$STD uv venv --python 3.12 /opt/suggestarr/.venv
$STD uv pip install --python /opt/suggestarr/.venv -r /opt/suggestarr/api_service/requirements.txt
msg_ok "Set up Python Environment"
msg_info "Configuring SuggestArr"
mkdir -p /opt/suggestarr_data
cat <<EOF >/opt/suggestarr.env
SUGGESTARR_PORT=5000
LOG_LEVEL=info
CONFIG_DIR=/opt/suggestarr_data
EOF
chmod 600 /opt/suggestarr.env
msg_ok "Configured SuggestArr"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/suggestarr.service
[Unit]
Description=SuggestArr
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/suggestarr
EnvironmentFile=/opt/suggestarr.env
ExecStart=/opt/suggestarr/.venv/bin/uvicorn api_service.app:asgi_app --host 0.0.0.0 --port 5000 --log-level info
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now suggestarr
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
+31 -28
View File
@@ -15,15 +15,10 @@ update_os
setup_go
NODE_VERSION="22" setup_nodejs
if [[ "$(arch_resolve)" == "arm64" ]]; then
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "singlefile" "latest" "/usr/local/bin" "meilisearch-linux-aarch64"
else
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary" "latest" "/opt/wanderer/source/search"
fi
mkdir -p /opt/wanderer/{source,data/pb_data,data/meili_data,data/plugins}
MEILISEARCH_DB_PATH="/opt/wanderer/data/meili_data" setup_meilisearch
fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source"
mkdir -p /opt/wanderer/source/db/data
mkdir -p /opt/wanderer/source/search
[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins
msg_info "Installing wanderer (patience)"
@@ -42,14 +37,13 @@ done
msg_ok "Installed wanderer plugins"
msg_info "Creating Service"
MEILI_KEY=$(openssl rand -hex 32)
POCKETBASE_KEY=$(openssl rand -hex 16)
cat <<EOF >/opt/wanderer/.env
ORIGIN=http://${LOCAL_IP}:3000
MEILI_HTTP_ADDR=${LOCAL_IP}:7700
MEILI_URL=http://${LOCAL_IP}:7700
MEILI_MASTER_KEY=${MEILI_KEY}
MEILI_HTTP_ADDR=127.0.0.1:7700
MEILI_URL=http://127.0.0.1:7700
MEILI_MASTER_KEY=${MEILISEARCH_MASTER_KEY}
PB_URL=${LOCAL_IP}:8090
PUBLIC_POCKETBASE_URL=http://${LOCAL_IP}:8090
PUBLIC_VALHALLA_URL=https://valhalla1.openstreetmap.de
@@ -58,20 +52,6 @@ PB_DB_LOCATION=/opt/wanderer/data/pb_data
MEILI_DB_PATH=/opt/wanderer/data/meili_data
EOF
cat <<EOF >/opt/wanderer/start.sh
#!/usr/bin/env bash
trap "kill 0" EXIT
cd /opt/wanderer/source/search && meilisearch --upgrade-db --master-key \$MEILI_MASTER_KEY &
sleep 1
cd /opt/wanderer/source/db && ./pocketbase serve --http=\$PB_URL --dir=\$PB_DB_LOCATION &
cd /opt/wanderer/source/web && node build &
wait -n
EOF
chmod +x /opt/wanderer/start.sh
cat <<'EOF' >/usr/local/bin/wanderer-pb
#!/usr/bin/env bash
set -a
@@ -82,17 +62,40 @@ exec ./pocketbase "$@" --dir="$PB_DB_LOCATION"
EOF
chmod +x /usr/local/bin/wanderer-pb
cat <<EOF >/etc/systemd/system/wanderer-web.service
cat <<EOF >/etc/systemd/system/wanderer-pocketbase.service
[Unit]
Description=wanderer
Description=wanderer PocketBase
Wants=network.target
After=network.target
PartOf=wanderer-web.service
StartLimitIntervalSec=10
StartLimitBurst=5
[Service]
Type=simple
WorkingDirectory=/opt/wanderer/source/db
EnvironmentFile=/opt/wanderer/.env
ExecStart=/usr/bin/bash /opt/wanderer/start.sh
ExecStart=/opt/wanderer/source/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION}
Restart=always
RestartSec=1
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/wanderer-web.service
[Unit]
Description=wanderer
Wants=network.target meilisearch.service wanderer-pocketbase.service
After=network.target meilisearch.service wanderer-pocketbase.service
StartLimitIntervalSec=10
StartLimitBurst=5
[Service]
Type=simple
WorkingDirectory=/opt/wanderer/source/web
EnvironmentFile=/opt/wanderer/.env
ExecStart=/usr/bin/node build
Restart=always
RestartSec=1
@@ -100,7 +103,7 @@ RestartSec=1
WantedBy=multi-user.target
EOF
sleep 1
systemctl enable -q --now wanderer-web
systemctl enable -q --now wanderer-pocketbase wanderer-web
msg_ok "Created Service"
motd_ssh