Refactor: Tianji (#6662)

This commit is contained in:
CanbiZ 2025-08-09 10:03:56 +02:00 committed by GitHub
parent 755da8bdc3
commit d5b0209453
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 39 additions and 45 deletions

View File

@ -29,33 +29,26 @@ function update_script() {
if ! command -v jq &>/dev/null; then if ! command -v jq &>/dev/null; then
$STD apt-get install -y jq $STD apt-get install -y jq
fi fi
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
msg_info "Installing Node.js 22"
$STD apt-get purge -y nodejs
rm -f /etc/apt/sources.list.d/nodesource.list
rm -f /etc/apt/keyrings/nodesource.gpg
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g pnpm@9.7.1
msg_ok "Node.js 22 installed"
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/msgbyte/tianji/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP} Service"
systemctl stop tianji
msg_ok "Stopped ${APP} Service"
msg_info "Updating ${APP} to v${RELEASE}" RELEASE=$(curl -fsSL https://api.github.com/repos/msgbyte/tianji/releases/latest | jq -r '.tag_name' | sed 's/^v//')
cd /opt if [[ "${RELEASE}" != "$(cat ~/.tianji 2>/dev/null)" ]] || [[ ! -f ~/.tianji ]]; then
setup_uv
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/msgbyte/tianji/master/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
msg_info "Stopping Service"
systemctl stop tianji
msg_ok "Stopped Service"
msg_info "Backing up data"
cp /opt/tianji/src/server/.env /opt/.env cp /opt/tianji/src/server/.env /opt/.env
mv /opt/tianji /opt/tianji_bak mv /opt/tianji /opt/tianji_bak
curl -fsSL "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip") msg_ok "Backed up data"
$STD unzip v${RELEASE}.zip
mv tianji-${RELEASE} /opt/tianji fetch_and_deploy_gh_release "tianji" "msgbyte/tianji"
cd tianji
msg_info "Updating ${APP}"
cd /opt/tianji
export NODE_OPTIONS="--max_old_space_size=4096" export NODE_OPTIONS="--max_old_space_size=4096"
$STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile $STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile
$STD pnpm build:static $STD pnpm build:static
@ -66,15 +59,17 @@ function update_script() {
mv /opt/.env /opt/tianji/src/server/.env mv /opt/.env /opt/tianji/src/server/.env
cd src/server cd src/server
$STD pnpm db:migrate:apply $STD pnpm db:migrate:apply
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated ${APP}"
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Updating AppRise"
$STD uv pip install apprise cryptography --system
msg_ok "Updated AppRise"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start tianji systemctl start tianji
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_info "Cleaning up" msg_info "Cleaning up"
rm -R /opt/v${RELEASE}.zip
rm -rf /opt/tianji_bak rm -rf /opt/tianji_bak
rm -rf /opt/tianji/src/client rm -rf /opt/tianji/src/client
rm -rf /opt/tianji/website rm -rf /opt/tianji/website

View File

@ -21,9 +21,7 @@ $STD apt-get install -y \
g++ \ g++ \
build-essential \ build-essential \
git \ git \
make \ ca-certificates
ca-certificates \
jq
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/msgbyte/tianji/master/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/msgbyte/tianji/master/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
@ -39,27 +37,25 @@ $STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" $STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;" $STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;"
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;" $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
echo "" >>~/tianji.creds {
echo -e "Tianji Database User: $DB_USER" >>~/tianji.creds echo ""
echo -e "Tianji Database Password: $DB_PASS" >>~/tianji.creds echo "Database User: $DB_USER"
echo -e "Tianji Database Name: $DB_NAME" >>~/tianji.creds echo "Database Password: $DB_PASS"
echo -e "Tianji Secret: $TIANJI_SECRET" >>~/tianji.creds echo "Database Name: $DB_NAME"
echo "Tianji Secret: $TIANJI_SECRET"
} >>~/tianji.creds
msg_ok "Set up PostgreSQL" msg_ok "Set up PostgreSQL"
msg_info "Installing Tianji (Extreme Patience)" fetch_and_deploy_gh_release "tianji" "msgbyte/tianji"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/msgbyte/tianji/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') msg_info "Setup Tianji"
curl -fsSL "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip" cd /opt/tianji
$STD unzip v${RELEASE}.zip
mv tianji-${RELEASE} /opt/tianji
cd tianji
$STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile $STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile
$STD pnpm build:static $STD pnpm build:static
$STD pnpm install --filter @tianji/server... --config.dedupe-peer-dependents=false $STD pnpm install --filter @tianji/server... --config.dedupe-peer-dependents=false
mkdir -p ./src/server/public mkdir -p ./src/server/public
cp -r ./geo ./src/server/public cp -r ./geo ./src/server/public
$STD pnpm build:server $STD pnpm build:server
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
cat <<EOF >/opt/tianji/src/server/.env cat <<EOF >/opt/tianji/src/server/.env
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME?schema=public" DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME?schema=public"
OPENAI_API_KEY="" OPENAI_API_KEY=""
@ -67,7 +63,11 @@ JWT_SECRET="$TIANJI_SECRET"
EOF EOF
cd /opt/tianji/src/server cd /opt/tianji/src/server
$STD pnpm db:migrate:apply $STD pnpm db:migrate:apply
msg_ok "Installed Tianji" msg_ok "Setup Tianji"
msg_info "Setup AppRise"
$STD uv pip install apprise cryptography --system
msg_ok "Setup AppRise"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/tianji.service cat <<EOF >/etc/systemd/system/tianji.service
@ -93,7 +93,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -R /opt/v${RELEASE}.zip
rm -rf /opt/tianji/src/client rm -rf /opt/tianji/src/client
rm -rf /opt/tianji/website rm -rf /opt/tianji/website
rm -rf /opt/tianji/reporter rm -rf /opt/tianji/reporter