From f1386ecbae1a90e6034aac41a0c9e25057d325bf Mon Sep 17 00:00:00 2001 From: Johann Grobe <123082619+johanngrobe@users.noreply.github.com> Date: Thu, 13 Aug 2026 10:00:20 +0200 Subject: [PATCH] [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 --- ct/wanderer.sh | 111 +++++++++++++++++++++++++++++++----- install/wanderer-install.sh | 59 ++++++++++--------- 2 files changed, 127 insertions(+), 43 deletions(-) diff --git a/ct/wanderer.sh b/ct/wanderer.sh index 1d98378ea..672d740a8 100644 --- a/ct/wanderer.sh +++ b/ct/wanderer.sh @@ -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 </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 </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 </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 </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 } diff --git a/install/wanderer-install.sh b/install/wanderer-install.sh index 3aabfd324..7a64e1ebb 100644 --- a/install/wanderer-install.sh +++ b/install/wanderer-install.sh @@ -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 </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 </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 </etc/systemd/system/wanderer-web.service +cat </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 </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