[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
This commit is contained in:
Johann Grobe
2026-08-13 10:00:20 +02:00
committed by GitHub
parent 0456f7642c
commit f1386ecbae
2 changed files with 127 additions and 43 deletions
+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
}
+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