apply root friendly vars

This commit is contained in:
shocknet-justin 2025-08-31 00:00:47 -04:00
parent 3cfb6dfe37
commit 31e5775f5c
4 changed files with 68 additions and 60 deletions

View file

@ -4,8 +4,8 @@ get_log_info() {
USER_HOME=$HOME USER_HOME=$HOME
USER_NAME=$(whoami) USER_NAME=$(whoami)
LOG_DIR="$USER_HOME/lightning_pub/logs" LOG_DIR="$INSTALL_DIR/logs"
DATA_DIR="$USER_HOME/lightning_pub/" DATA_DIR="$INSTALL_DIR/"
START_TIME=$(date +%s) START_TIME=$(date +%s)
MAX_WAIT_TIME=360 # Maximum wait time in seconds (6 minutes) MAX_WAIT_TIME=360 # Maximum wait time in seconds (6 minutes)
WAIT_INTERVAL=5 # Time to wait between checks in seconds WAIT_INTERVAL=5 # Time to wait between checks in seconds

View file

@ -17,7 +17,7 @@ BRANCH="master"
cleanup() { cleanup() {
log "Cleaning up temporary files..." log "Cleaning up temporary files..."
rm -rf "$HOME/lightning_pub_tmp" 2>/dev/null || true rm -rf "$TMP_DIR" 2>/dev/null || true
} }
trap cleanup EXIT trap cleanup EXIT
@ -56,15 +56,30 @@ BASE_URL="https://raw.githubusercontent.com/${REPO}/${BRANCH}"
REPO_URL="https://github.com/${REPO}/tarball/${BRANCH}" REPO_URL="https://github.com/${REPO}/tarball/${BRANCH}"
SCRIPTS_URL="${BASE_URL}/scripts/" SCRIPTS_URL="${BASE_URL}/scripts/"
# Create user-space temp directory TMP_DIR=$(mktemp -d)
mkdir -p "$HOME/lightning_pub_tmp"
for module in "${modules[@]}"; do for module in "${modules[@]}"; do
wget -q "${SCRIPTS_URL}${module}.sh" -O "$HOME/lightning_pub_tmp/${module}.sh" || log_error "Failed to download ${module}.sh" 1 wget -q "${SCRIPTS_URL}${module}.sh" -O "${TMP_DIR}/${module}.sh" || log_error "Failed to download ${module}.sh" 1
source "$HOME/lightning_pub_tmp/${module}.sh" || log_error "Failed to source ${module}.sh" 1 source "${TMP_DIR}/${module}.sh" || log_error "Failed to source ${module}.sh" 1
done done
detect_os_arch detect_os_arch
# Define installation paths based on user
if [ "$(id -u)" -eq 0 ]; then
IS_ROOT=true
# For root, install under /opt for system-wide access
export INSTALL_DIR="/opt/lightning_pub"
export UNIT_DIR="/etc/systemd/system"
export SYSTEMCTL_CMD="systemctl"
log "Running as root: App will be installed in $INSTALL_DIR"
else
IS_ROOT=false
export INSTALL_DIR="$HOME/lightning_pub"
export UNIT_DIR="$HOME/.config/systemd/user"
export SYSTEMCTL_CMD="systemctl --user"
fi
check_deps check_deps
log "Detected OS: $OS" log "Detected OS: $OS"
log "Detected ARCH: $ARCH" log "Detected ARCH: $ARCH"

View file

@ -14,6 +14,8 @@ install_lightning_pub() {
return 1 return 1
fi fi
local EXTRACT_DIR=$(mktemp -d)
USER_HOME=$HOME USER_HOME=$HOME
USER_NAME=$(whoami) USER_NAME=$(whoami)
@ -22,15 +24,15 @@ install_lightning_pub() {
return 1 return 1
} }
mkdir -p $USER_HOME/lightning_pub_temp tar -xzf $USER_HOME/lightning_pub.tar.gz -C "$EXTRACT_DIR" --strip-components=1 > /dev/null 2>&1 || {
tar -xzf $USER_HOME/lightning_pub.tar.gz -C $USER_HOME/lightning_pub_temp --strip-components=1 > /dev/null 2>&1 || {
log "${PRIMARY_COLOR}Failed to extract Lightning.Pub.${RESET_COLOR}" log "${PRIMARY_COLOR}Failed to extract Lightning.Pub.${RESET_COLOR}"
rm -rf "$EXTRACT_DIR"
return 1 return 1
} }
rm $USER_HOME/lightning_pub.tar.gz rm $USER_HOME/lightning_pub.tar.gz
# Decide flow based on whether a valid previous installation exists. # Decide flow based on whether a valid previous installation exists.
if [ -f "$USER_HOME/lightning_pub/.installed_commit" ] || [ -f "$USER_HOME/lightning_pub/db.sqlite" ]; then if [ -f "$INSTALL_DIR/.installed_commit" ] || [ -f "$INSTALL_DIR/db.sqlite" ]; then
# --- UPGRADE PATH --- # --- UPGRADE PATH ---
log "Existing installation found. Checking for updates..." log "Existing installation found. Checking for updates..."
@ -44,10 +46,10 @@ install_lightning_pub() {
log_error "Could not retrieve latest version from GitHub. Upgrade check failed. Aborting." 1 log_error "Could not retrieve latest version from GitHub. Upgrade check failed. Aborting." 1
fi fi
CURRENT_COMMIT=$(cat "$USER_HOME/lightning_pub/.installed_commit" 2>/dev/null | head -c 40) CURRENT_COMMIT=$(cat "$INSTALL_DIR/.installed_commit" 2>/dev/null | head -c 40)
if [ "$CURRENT_COMMIT" = "$LATEST_COMMIT" ]; then if [ "$CURRENT_COMMIT" = "$LATEST_COMMIT" ]; then
log "${SECONDARY_COLOR}Lightning.Pub${RESET_COLOR} is already at the latest commit. No update needed." log "${SECONDARY_COLOR}Lightning.Pub${RESET_COLOR} is already at the latest commit. No update needed."
rm -rf $USER_HOME/lightning_pub_temp rm -rf "$EXTRACT_DIR"
return 2 return 2
fi fi
@ -56,67 +58,71 @@ install_lightning_pub() {
# Stop the service if running to avoid rug-pull during backup and file replacement # Stop the service if running to avoid rug-pull during backup and file replacement
was_running=false was_running=false
if systemctl --user is-active --quiet lightning_pub 2>/dev/null; then if [ "$SYSTEMCTL_CMD" = "systemctl --user" ] && systemctl --user is-active --quiet lightning_pub 2>/dev/null; then
log "Stopping Lightning.Pub service before upgrade..." log "Stopping Lightning.Pub service before upgrade..."
systemctl --user stop lightning_pub systemctl --user stop lightning_pub
was_running=true was_running=true
elif [ "$SYSTEMCTL_CMD" = "systemctl" ] && systemctl is-active --quiet lightning_pub 2>/dev/null; then
log "Stopping Lightning.Pub service before upgrade..."
systemctl stop lightning_pub
was_running=true
fi fi
log "Backing up user data before upgrade..." log "Backing up user data before upgrade..."
BACKUP_DIR=$(mktemp -d) BACKUP_DIR=$(mktemp -d)
mv "$USER_HOME/lightning_pub" "$BACKUP_DIR" mv "$INSTALL_DIR" "$BACKUP_DIR"
log "Replacing application files..." log "Replacing application files..."
mv "$USER_HOME/lightning_pub_temp" "$USER_HOME/lightning_pub" mv "$EXTRACT_DIR" "$INSTALL_DIR"
log "Restoring user data..." log "Restoring user data..."
cp "$BACKUP_DIR"/*.sqlite "$USER_HOME/lightning_pub/" 2>/dev/null || true cp "$BACKUP_DIR"/*.sqlite "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/.env "$USER_HOME/lightning_pub/" 2>/dev/null || true cp "$BACKUP_DIR"/.env "$INSTALL_DIR/" 2>/dev/null || true
cp -r "$BACKUP_DIR"/logs "$USER_HOME/lightning_pub/" 2>/dev/null || true cp -r "$BACKUP_DIR"/logs "$INSTALL_DIR/" 2>/dev/null || true
cp -r "$BACKUP_DIR"/metric_cache "$USER_HOME/lightning_pub/" 2>/dev/null || true cp -r "$BACKUP_DIR"/metric_cache "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/.jwt_secret "$USER_HOME/lightning_pub/" 2>/dev/null || true cp "$BACKUP_DIR"/.jwt_secret "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/.wallet_secret "$USER_HOME/lightning_pub/" 2>/dev/null || true cp "$BACKUP_DIR"/.wallet_secret "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/.installed_commit "$USER_HOME/lightning_pub/" 2>/dev/null || true cp "$BACKUP_DIR"/.installed_commit "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/admin.npub "$USER_HOME/lightning_pub/" 2>/dev/null || true cp "$BACKUP_DIR"/admin.npub "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/app.nprofile "$USER_HOME/lightning_pub/" 2>/dev/null || true cp "$BACKUP_DIR"/app.nprofile "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/admin.connect "$USER_HOME/lightning_pub/" 2>/dev/null || true cp "$BACKUP_DIR"/admin.connect "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/admin.enroll "$USER_HOME/lightning_pub/" 2>/dev/null || true cp "$BACKUP_DIR"/admin.enroll "$INSTALL_DIR/" 2>/dev/null || true
# Ensure correct ownership post-restore (fixes potential mismatches) # Ensure correct ownership post-restore (fixes potential mismatches)
chown -R "$USER_NAME:$USER_NAME" "$USER_HOME/lightning_pub/" 2>/dev/null || true chown -R "$USER_NAME:$USER_NAME" "$INSTALL_DIR/" 2>/dev/null || true
# Secure DB files (as before) # Secure DB files (as before)
chmod 600 "$USER_HOME/lightning_pub/db.sqlite" 2>/dev/null || true chmod 600 "$INSTALL_DIR/db.sqlite" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/metrics.sqlite" 2>/dev/null || true chmod 600 "$INSTALL_DIR/metrics.sqlite" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/.jwt_secret" 2>/dev/null || true chmod 600 "$INSTALL_DIR/.jwt_secret" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/.wallet_secret" 2>/dev/null || true chmod 600 "$INSTALL_DIR/.wallet_secret" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/admin.connect" 2>/dev/null || true chmod 600 "$INSTALL_DIR/admin.connect" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/admin.enroll" 2>/dev/null || true chmod 600 "$INSTALL_DIR/admin.enroll" 2>/dev/null || true
# Ensure log/metric dirs are writable (dirs need execute for traversal) # Ensure log/metric dirs are writable (dirs need execute for traversal)
chmod 755 "$USER_HOME/lightning_pub/logs" 2>/dev/null || true chmod 755 "$INSTALL_DIR/logs" 2>/dev/null || true
chmod 755 "$USER_HOME/lightning_pub/logs/"*/ 2>/dev/null || true # Subdirs like apps/ chmod 755 "$INSTALL_DIR/logs/"*/ 2>/dev/null || true # Subdirs like apps/
chmod 755 "$USER_HOME/lightning_pub/metric_cache" 2>/dev/null || true chmod 755 "$INSTALL_DIR/metric_cache" 2>/dev/null || true
elif [ -d "$USER_HOME/lightning_pub" ]; then elif [ -d "$INSTALL_DIR" ]; then
# --- CONFLICT/UNSAFE PATH --- # --- CONFLICT/UNSAFE PATH ---
# This handles the case where the directory exists but is not a valid install (e.g., a git clone). # This handles the case where the directory exists but is not a valid install (e.g., a git clone).
log_error "Directory '~/lightning_pub' already exists but does not appear to be a valid installation. For your safety, please manually back up and remove this directory, then run the installer again." 1 log_error "Directory '$INSTALL_DIR' already exists but does not appear to be a valid installation. For your safety, please manually back up and remove this directory, then run the installer again." 1
else else
# --- FRESH INSTALL PATH --- # --- FRESH INSTALL PATH ---
# This path is only taken if the ~/lightning_pub directory does not exist. # This path is only taken if the ~/lightning_pub directory does not exist.
log "${PRIMARY_COLOR}Installing${RESET_COLOR} ${SECONDARY_COLOR}Lightning.Pub${RESET_COLOR}..." log "${PRIMARY_COLOR}Installing${RESET_COLOR} ${SECONDARY_COLOR}Lightning.Pub${RESET_COLOR}..."
upgrade_status=0 upgrade_status=0
mv "$USER_HOME/lightning_pub_temp" "$USER_HOME/lightning_pub" mkdir -p "$(dirname "$INSTALL_DIR")"
mv "$EXTRACT_DIR" "$INSTALL_DIR"
fi fi
rm -rf $USER_HOME/lightning_pub_temp
# Load nvm and npm # Load nvm and npm
export NVM_DIR="${NVM_DIR}" export NVM_DIR="${NVM_DIR}"
[ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh" [ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh"
cd $USER_HOME/lightning_pub cd "$INSTALL_DIR"
log "${PRIMARY_COLOR}Installing${RESET_COLOR} npm dependencies..." log "${PRIMARY_COLOR}Installing${RESET_COLOR} npm dependencies..."
@ -128,16 +134,16 @@ install_lightning_pub() {
tail -n 20 npm_install.log | while IFS= read -r line; do tail -n 20 npm_install.log | while IFS= read -r line; do
log " $line" log " $line"
done done
log "${PRIMARY_COLOR}Full log available in $USER_HOME/lightning_pub/npm_install.log${RESET_COLOR}" log "${PRIMARY_COLOR}Full log available in $INSTALL_DIR/npm_install.log${RESET_COLOR}"
log "Restoring previous installation due to upgrade failure..." log "Restoring previous installation due to upgrade failure..."
rm -rf "$USER_HOME/lightning_pub" rm -rf "$INSTALL_DIR"
mv "$BACKUP_DIR" "$USER_HOME/lightning_pub" # Restore directly mv "$BACKUP_DIR" "$INSTALL_DIR"
log "Backup remnant at $BACKUP_DIR for manual review but may auto-clean on reboot." log "Backup remnant at $BACKUP_DIR for manual review but may auto-clean on reboot."
if [ "$was_running" = true ]; then if [ "$was_running" = true ]; then
log "Restarting Lightning.Pub service after restore." log "Restarting Lightning.Pub service after restore."
systemctl --user start lightning_pub $SYSTEMCTL_CMD start lightning_pub
fi fi
return 1 return 1
@ -147,9 +153,9 @@ install_lightning_pub() {
# Note: LATEST_COMMIT will be empty on a fresh install, which is fine. # Note: LATEST_COMMIT will be empty on a fresh install, which is fine.
# The file will be created, and the next run will be an upgrade. # The file will be created, and the next run will be an upgrade.
if [ -n "$LATEST_COMMIT" ]; then if [ -n "$LATEST_COMMIT" ]; then
echo "$LATEST_COMMIT" > "$USER_HOME/lightning_pub/.installed_commit" echo "$LATEST_COMMIT" > "$INSTALL_DIR/.installed_commit"
else else
touch "$USER_HOME/lightning_pub/.installed_commit" touch "$INSTALL_DIR/.installed_commit"
fi fi
rm -rf "$BACKUP_DIR" rm -rf "$BACKUP_DIR"

View file

@ -7,19 +7,6 @@ start_services() {
USER_HOME=$HOME USER_HOME=$HOME
USER_NAME=$(whoami) USER_NAME=$(whoami)
# Detect if running as root and set mode
if [ "$(id -u)" -eq 0 ]; then
IS_ROOT=true
INSTALL_DIR="/opt/lightning_pub" # System-wide dir for root installs
UNIT_DIR="/etc/systemd/system"
SYSTEMCTL_CMD="systemctl"
log "Running as root: Installing system-wide to $INSTALL_DIR."
else
IS_ROOT=false
INSTALL_DIR="$USER_HOME/lightning_pub"
UNIT_DIR="$USER_HOME/.config/systemd/user"
SYSTEMCTL_CMD="systemctl --user"
fi
# Ensure NVM_DIR is set # Ensure NVM_DIR is set
if [ -z "$NVM_DIR" ]; then if [ -z "$NVM_DIR" ]; then