From ade7cadf9b245ab9458629da0b15fbb2320daed9 Mon Sep 17 00:00:00 2001 From: Johann Grobe <123082619+johanngrobe@users.noreply.github.com> Date: Fri, 14 Aug 2026 22:09:54 +0200 Subject: [PATCH] Wanderer: Refactor of Services / Installation / Paths (#16487) --- ct/wanderer.sh | 51 +++++++++++++++++++++++++++---------- install/wanderer-install.sh | 36 ++++++++++---------------- 2 files changed, 50 insertions(+), 37 deletions(-) diff --git a/ct/wanderer.sh b/ct/wanderer.sh index 672d740a8..184e73e11 100644 --- a/ct/wanderer.sh +++ b/ct/wanderer.sh @@ -25,7 +25,7 @@ function update_script() { check_container_storage check_container_resources - if [[ ! -d /opt/wanderer/source ]]; then + if [[ ! -d /opt/wanderer/source && ! -d /opt/wanderer/db ]]; then msg_error "No wanderer Installation Found!" exit fi @@ -35,11 +35,15 @@ function update_script() { systemctl stop wanderer-web rm -rf /opt/wanderer/source/search + mkdir -p /opt/wanderer_data + [[ -d /opt/wanderer/data/meili_data ]] && cp -r /opt/wanderer/data/meili_data /opt/wanderer_data/ + mkdir -p /opt/wanderer_data/meili_data + rm -rf /opt/wanderer/data/meili_data 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" +db_path = "/opt/wanderer_data/meili_data" dump_dir = "/var/lib/meilisearch/dumps" snapshot_dir = "/var/lib/meilisearch/snapshots" no_analytics = true @@ -72,11 +76,30 @@ EOF setup_meilisearch - if [[ -f /opt/wanderer/start.sh ]]; then + if [[ -f /opt/wanderer/start.sh || -d /opt/wanderer/source ]]; then msg_info "Migrating wanderer services" systemctl stop wanderer-web rm -f /opt/wanderer/start.sh - rm -rf /opt/wanderer/source/search + + mkdir -p /opt/wanderer_data + [[ -d /opt/wanderer/data/pb_data ]] && cp -r /opt/wanderer/data/pb_data /opt/wanderer_data/ + [[ -d /opt/wanderer/data/plugins ]] && cp -r /opt/wanderer/data/plugins /opt/wanderer_data/ + mkdir -p /opt/wanderer_data/{pb_data,plugins} + rm -rf /opt/wanderer/data + + [[ -d /opt/wanderer/source ]] && cp -r /opt/wanderer/source/. /opt/wanderer/ + rm -rf /opt/wanderer/source + + if [[ -d /opt/wanderer/db/data ]]; then + [[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins + fi + + sed -i \ + -e "s|^PB_DB_LOCATION=.*|PB_DB_LOCATION=/opt/wanderer_data/pb_data|" \ + -e "s|^MEILI_DB_PATH=.*|MEILI_DB_PATH=/opt/wanderer_data/meili_data|" \ + /opt/wanderer/.env + sed -i "s|^db_path =.*|db_path = \"/opt/wanderer_data/meili_data\"|" /etc/meilisearch.toml + rm -f /usr/local/bin/wanderer-pb cat </etc/systemd/system/wanderer-pocketbase.service [Unit] @@ -89,9 +112,9 @@ StartLimitBurst=5 [Service] Type=simple -WorkingDirectory=/opt/wanderer/source/db +WorkingDirectory=/opt/wanderer/db EnvironmentFile=/opt/wanderer/.env -ExecStart=/opt/wanderer/source/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION} +ExecStart=/opt/wanderer/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION} Restart=always RestartSec=1 @@ -109,7 +132,7 @@ StartLimitBurst=5 [Service] Type=simple -WorkingDirectory=/opt/wanderer/source/web +WorkingDirectory=/opt/wanderer/web EnvironmentFile=/opt/wanderer/.env ExecStart=/usr/bin/node build Restart=always @@ -129,22 +152,22 @@ EOF systemctl stop wanderer-web msg_ok "Stopped service" - create_backup /opt/wanderer/source - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source" + create_backup /opt/wanderer/.env + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" restore_backup msg_info "Updating wanderer" - cd /opt/wanderer/source/db + cd /opt/wanderer/db $STD go mod tidy $STD go build - cd /opt/wanderer/source/web + cd /opt/wanderer/web $STD npm ci $STD npm run build - mkdir -p /opt/wanderer/data/plugins /opt/wanderer/source/db/data - [[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins + mkdir -p /opt/wanderer_data/plugins /opt/wanderer/db/data + [[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins msg_info "Installing wanderer plugins" for plugin in hammerhead komoot strava; do - fetch_and_deploy_gh_release "wanderer-plugin-${plugin}" "open-wanderer/wanderer" "prebuild" "${CHECK_UPDATE_RELEASE:-latest}" "/opt/wanderer/data/plugins" "wanderer-plugin-${plugin}.tar.gz" || msg_warn "Failed to install wanderer plugin: ${plugin}" + fetch_and_deploy_gh_release "wanderer-plugin-${plugin}" "open-wanderer/wanderer" "prebuild" "${CHECK_UPDATE_RELEASE:-latest}" "/opt/wanderer_data/plugins" "wanderer-plugin-${plugin}.tar.gz" || msg_warn "Failed to install wanderer plugin: ${plugin}" done msg_ok "Installed wanderer plugins" msg_ok "Updated wanderer" diff --git a/install/wanderer-install.sh b/install/wanderer-install.sh index 7a64e1ebb..46652dde1 100644 --- a/install/wanderer-install.sh +++ b/install/wanderer-install.sh @@ -15,24 +15,24 @@ update_os setup_go NODE_VERSION="22" setup_nodejs -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 -[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins +mkdir -p /opt/{wanderer,wanderer_data/pb_data,wanderer_data/meili_data,wanderer_data/plugins} +MEILISEARCH_DB_PATH="/opt/wanderer_data/meili_data" setup_meilisearch +fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" +mkdir -p /opt/wanderer/db/data +[[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins msg_info "Installing wanderer (patience)" -cd /opt/wanderer/source/db +cd /opt/wanderer/db $STD go mod tidy $STD go build -cd /opt/wanderer/source/web +cd /opt/wanderer/web $STD npm ci $STD npm run build msg_ok "Installed wanderer" msg_info "Installing wanderer plugins" for plugin in hammerhead komoot strava; do - fetch_and_deploy_gh_release "wanderer-plugin-${plugin}" "open-wanderer/wanderer" "prebuild" "latest" "/opt/wanderer/data/plugins" "wanderer-plugin-${plugin}.tar.gz" || msg_warn "Failed to install wanderer plugin: ${plugin}" + fetch_and_deploy_gh_release "wanderer-plugin-${plugin}" "open-wanderer/wanderer" "prebuild" "latest" "/opt/wanderer_data/plugins" "wanderer-plugin-${plugin}.tar.gz" || msg_warn "Failed to install wanderer plugin: ${plugin}" done msg_ok "Installed wanderer plugins" @@ -48,20 +48,10 @@ PB_URL=${LOCAL_IP}:8090 PUBLIC_POCKETBASE_URL=http://${LOCAL_IP}:8090 PUBLIC_VALHALLA_URL=https://valhalla1.openstreetmap.de POCKETBASE_ENCRYPTION_KEY=${POCKETBASE_KEY} -PB_DB_LOCATION=/opt/wanderer/data/pb_data -MEILI_DB_PATH=/opt/wanderer/data/meili_data +PB_DB_LOCATION=/opt/wanderer_data/pb_data +MEILI_DB_PATH=/opt/wanderer_data/meili_data EOF -cat <<'EOF' >/usr/local/bin/wanderer-pb -#!/usr/bin/env bash -set -a -source /opt/wanderer/.env -set +a -cd /opt/wanderer/source/db -exec ./pocketbase "$@" --dir="$PB_DB_LOCATION" -EOF -chmod +x /usr/local/bin/wanderer-pb - cat </etc/systemd/system/wanderer-pocketbase.service [Unit] Description=wanderer PocketBase @@ -73,9 +63,9 @@ StartLimitBurst=5 [Service] Type=simple -WorkingDirectory=/opt/wanderer/source/db +WorkingDirectory=/opt/wanderer/db EnvironmentFile=/opt/wanderer/.env -ExecStart=/opt/wanderer/source/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION} +ExecStart=/opt/wanderer/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION} Restart=always RestartSec=1 @@ -93,7 +83,7 @@ StartLimitBurst=5 [Service] Type=simple -WorkingDirectory=/opt/wanderer/source/web +WorkingDirectory=/opt/wanderer/web EnvironmentFile=/opt/wanderer/.env ExecStart=/usr/bin/node build Restart=always