#!/usr/bin/env bash # Copyright (c) 2021-2026 community-scripts ORG # Author: MickLesk (CanbiZ) # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE # Source: https://github.com/lobehub/lobehub source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors setting_up_container network_check update_os msg_info "Installing Dependencies" $STD apt install -y \ build-essential msg_ok "Installed Dependencies" PG_VERSION="17" PG_MODULES="pgvector" setup_postgresql msg_info "Installing pg_search from ParadeDB" ARCH=$(dpkg --print-architecture) CODENAME=$(. /etc/os-release && echo "${VERSION_CODENAME:-bookworm}") PDB_VERSION=$(curl -fsSL "https://api.github.com/repos/paradedb/paradedb/releases/latest" | grep -oP '"tag_name":\s*"\K[^"]+') PDB_VERSION_NUM="${PDB_VERSION#v}" DEB_NAME="postgresql-17-pg-search_${PDB_VERSION_NUM}-1PARADEDB-${CODENAME}_${ARCH}.deb" DEB_URL="https://github.com/paradedb/paradedb/releases/download/${PDB_VERSION}/${DEB_NAME}" curl -fsSL -o "/tmp/${DEB_NAME}" "$DEB_URL" dpkg -i "/tmp/${DEB_NAME}" >/dev/null 2>&1 || $STD apt install -f -y rm -f "/tmp/${DEB_NAME}" msg_ok "Installed pg_search from ParadeDB" PG_DB_NAME="lobehub" PG_DB_USER="lobehub" PG_DB_EXTENSIONS="vector,pg_search" setup_postgresql_db NODE_VERSION="24" setup_nodejs msg_info "Installing pnpm" $STD npm install -g pnpm msg_ok "Installed pnpm" fetch_and_deploy_gh_release "lobehub" "lobehub/lobehub" "tarball" msg_info "Building Application" cd /opt/lobehub export NODE_OPTIONS="--max-old-space-size=8192" export DATABASE_URL="postgres://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}" export DATABASE_DRIVER="node" export KEY_VAULTS_SECRET="$(openssl rand -base64 32)" export AUTH_SECRET="$(openssl rand -base64 32)" export APP_URL="http://localhost:3210" $STD pnpm install $STD pnpm run build:docker unset NODE_OPTIONS msg_ok "Built Application" msg_info "Configuring Application" KEY_VAULTS_SECRET=$(openssl rand -base64 32) AUTH_SECRET=$(openssl rand -base64 32) cat </opt/lobehub/.env DATABASE_URL=postgres://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME} DATABASE_DRIVER=node KEY_VAULTS_SECRET=${KEY_VAULTS_SECRET} AUTH_SECRET=${AUTH_SECRET} APP_URL=http://${LOCAL_IP}:3210 HOSTNAME=0.0.0.0 PORT=3210 NODE_ENV=production EOF msg_ok "Configured Application" msg_info "Setting Up Standalone" cp -r /opt/lobehub/.next/static /opt/lobehub/.next/standalone/.next/static cp -r /opt/lobehub/public /opt/lobehub/.next/standalone/public cp -r /opt/lobehub/scripts/migrateServerDB/* /opt/lobehub/.next/standalone/ cp -r /opt/lobehub/packages/database/migrations /opt/lobehub/.next/standalone/migrations msg_ok "Set Up Standalone" msg_info "Running Database Migrations" cd /opt/lobehub/.next/standalone set -a && source /opt/lobehub/.env && set +a $STD node /opt/lobehub/.next/standalone/docker.cjs msg_ok "Ran Database Migrations" msg_info "Creating Service" cat </etc/systemd/system/lobehub.service [Unit] Description=LobeHub After=network.target postgresql.service Requires=postgresql.service [Service] Type=simple User=root WorkingDirectory=/opt/lobehub/.next/standalone EnvironmentFile=/opt/lobehub/.env ExecStart=/usr/bin/node /opt/lobehub/.next/standalone/server.js Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target EOF systemctl enable -q --now lobehub msg_ok "Created Service" motd_ssh customize cleanup_lxc