diff --git a/ct/mediamanager.sh b/ct/mediamanager.sh index 4ad52968..be6e41f9 100644 --- a/ct/mediamanager.sh +++ b/ct/mediamanager.sh @@ -29,14 +29,32 @@ function update_script() { fi RELEASE=$(curl -fsSL https://api.github.com/repos/maxdorninger/MediaManager/releases/latest | yq '.tag_name' | sed 's/^v//') - if [[ "${RELEASE}" != "$(cat ~/.mediamanager 2>/dev/null)" ]] || [[ ! -f ~/.tududi ]]; then + if [[ "${RELEASE}" != "$(cat ~/.mediamanager 2>/dev/null)" ]] || [[ ! -f ~/.mediamanager ]]; then msg_info "Stopping Service" systemctl stop mediamanager msg_ok "Stopped Service" msg_info "Updating ${APP}" - fetch_and_deploy_gh_release "MediaManager" "maxdorninger/MediaManager" "latest" "tarball" "/opt/mediamanager" + fetch_and_deploy_gh_release "MediaManager" "maxdorninger/MediaManager" "tarball" "latest" "/opt/mediamanager" + MM_DIR="/opt/mm" + export CONFIG_DIR="${MM_DIR}/config" + export FRONTEND_FILES_DIR="${MM_DIR}/web/build" + export BASE_PATH="" + export PUBLIC_VERSION="" + export PUBLIC_API_URL="${BASE_PATH}/api/v1" + export BASE_PATH="${BASE_PATH}/web" + cd /opt/mediamanager/web + $STD npm ci + $STD npm run build + rm -rf "$FRONTEND_FILES_DIR"/build + cp -r build "$FRONTEND_FILES_DIR" + export BASE_PATH="" + export VIRTUAL_ENV="/opt/${MM_DIR}/venv" + cd /opt/mediamanager + rm -rf "$MM_DIR"/{media_manager,alembic*} + cp -r {media_manager,alembic*} "$MM_DIR" + $STD /usr/local/bin/uv sync --locked --active msg_ok "Updated $APP" msg_info "Starting Service" diff --git a/install/mediamanager-install.sh b/install/mediamanager-install.sh index 7428569a..80cb3743 100644 --- a/install/mediamanager-install.sh +++ b/install/mediamanager-install.sh @@ -38,8 +38,10 @@ msg_ok "Set up PostgreSQL" fetch_and_deploy_gh_release "MediaManager" "maxdorninger/MediaManager" "tarball" "latest" "/opt/mediamanager" msg_info "Configuring MediaManager" -export CONFIG_DIR="/opt/mm_data/" -export FRONTEND_FILES_DIR="/opt/mm_data/web/build" +MM_DIR="/opt/mm" +MEDIA_DIR="${MM_DIR}/media" +export CONFIG_DIR="${MM_DIR}/config" +export FRONTEND_FILES_DIR="${MM_DIR}/web/build" export BASE_PATH="" export PUBLIC_VERSION="" export PUBLIC_API_URL="${BASE_PATH}/api/v1" @@ -47,14 +49,13 @@ export BASE_PATH="${BASE_PATH}/web" cd /opt/mediamanager/web $STD npm ci $STD npm run build -mkdir -p "$CONFIG_DIR"/web +mkdir -p {"$MM_DIR"/web,"$MEDIA_DIR","$CONFIG_DIR"} cp -r build "$FRONTEND_FILES_DIR" export BASE_PATH="" -export VIRTUAL_ENV="/opt/mm_data/venv" +export VIRTUAL_ENV="${MM_DIR}/venv" cd /opt/mediamanager -cp -r media_manager "$CONFIG_DIR" -cp -r alembic* "$CONFIG_DIR" +cp -r {media_manager,alembic*} "$MM_DIR" $STD /usr/local/bin/uv venv "$VIRTUAL_ENV" $STD /usr/local/bin/uv sync --locked --active msg_ok "Configured MediaManager" @@ -67,12 +68,8 @@ fi msg_info "Creating config and start script" LOCAL_IP="$(hostname -I | awk '{print $1}')" SECRET="$(openssl rand -hex 32)" -config_file="config.example.toml" -if [[ ! -f /opt/mediamanager/"$config_file" ]]; then - config_file="config.toml" -fi sed -e "s/localhost:8/$LOCAL_IP:8/g" \ - -e "s|/data/|$CONFIG_DIR|g" \ + -e "s|/data/|$MEDIA_DIR|g" \ -e 's/"db"/"localhost"/' \ -e "s/user = \"MediaManager\"/user = \"$DB_USER\"/" \ -e "s/password = \"MediaManager\"/password = \"$DB_PASS\"/" \ @@ -80,23 +77,23 @@ sed -e "s/localhost:8/$LOCAL_IP:8/g" \ -e "/^token_secret/s/=.*/= \"$SECRET\"/" \ -e "s/admin@example.com/$EMAIL/" \ -e '/^admin_emails/s/, .*/]/' \ - /opt/mediamanager/"$config_file" >/opt/mm_data/config.toml + /opt/mediamanager/config.example.toml >/opt/"$CONFIG_DIR"/config.toml -mkdir -p "$CONFIG_DIR"/{images,tv,movies,torrents} +mkdir -p "$MEDIA_DIR"/{images,tv,movies,torrents} -cat </opt/mm_data/start.sh +cat </opt/"$MM_DIR"/start.sh #!/usr/bin/env bash export CONFIG_DIR="$CONFIG_DIR" export FRONTEND_FILES_DIR="$FRONTEND_FILES_DIR" export BASE_PATH="" -cd /opt/mm_data +cd /opt/"$MM_DIR" source ./venv/bin/activate /usr/local/bin/uv run alembic upgrade head /usr/local/bin/uv run fastapi run ./media_manager/main.py --port 8000 EOF -chmod +x /opt/mm_data/start.sh +chmod +x /opt/"$MM_DIR"/start.sh msg_ok "Created config and start script" msg_info "Creating service" @@ -107,7 +104,7 @@ After=network.target [Service] Type=simple -WorkingDirectory=/opt/mm_data +WorkingDirectory=/opt/"$MM_DIR" ExecStart=/usr/bin/bash start.sh [Install]