socktop-webterm/docker/init-config.sh

145 lines
5.7 KiB
Bash
Raw Normal View History

2025-11-30 10:33:43 +00:00
#!/bin/bash
set -e
# Init script to copy configuration files to the correct locations
# This handles the discrepancy between where K8s mounts configs
# and where the socktop package expects them (HOME directory)
echo "==================================="
echo "Initializing socktop webterm config"
echo "==================================="
# Determine the actual HOME directory for the socktop user
SOCKTOP_HOME=$(eval echo ~socktop)
echo "Socktop HOME: ${SOCKTOP_HOME}"
2025-11-30 11:49:09 +00:00
echo "Current user: $(whoami) (UID: $(id -u))"
2025-11-30 10:33:43 +00:00
# Check if we're running as root
if [ "$(id -u)" -eq 0 ]; then
2025-11-30 11:49:09 +00:00
echo "Running as root, will create directories and set permissions"
# Ensure socktop user's home directory exists and has correct ownership
if [ ! -d "${SOCKTOP_HOME}" ]; then
echo "Creating ${SOCKTOP_HOME}..."
mkdir -p "${SOCKTOP_HOME}"
chown socktop:socktop "${SOCKTOP_HOME}"
fi
# Ensure the directory is writable by socktop user
chown socktop:socktop "${SOCKTOP_HOME}"
# Create necessary directories as root, then fix ownership
echo "Creating config directories..."
mkdir -p "${SOCKTOP_HOME}/.config/socktop/certs"
mkdir -p "${SOCKTOP_HOME}/.config/alacritty"
2025-11-30 11:49:09 +00:00
chown -R socktop:socktop "${SOCKTOP_HOME}/.config"
echo " ✓ Created directories with correct ownership"
else
2025-11-30 11:49:09 +00:00
echo "Running as non-root user ($(id -u)), creating directories"
# Try to create directories - will work if HOME is writable
2025-11-30 11:49:09 +00:00
mkdir -p "${SOCKTOP_HOME}/.config/socktop/certs" 2>/dev/null || {
echo " ⚠ Could not create directories - checking if they already exist..."
if [ -d "${SOCKTOP_HOME}/.config/socktop/certs" ]; then
echo " ✓ Directories already exist"
else
echo " ✗ Failed to create directories and they don't exist"
exit 1
fi
}
mkdir -p "${SOCKTOP_HOME}/.config/alacritty" 2>/dev/null || true
fi
2025-11-30 10:33:43 +00:00
# Copy files from mounted locations to actual HOME if they exist
echo "Copying configuration files..."
# Copy profiles.json
if [ -f "/home/socktop/.config/socktop/profiles.json" ]; then
2025-11-30 11:49:09 +00:00
if [ "$(id -u)" -eq 0 ]; then
# Copy as root, then fix ownership
cp -f /home/socktop/.config/socktop/profiles.json "${SOCKTOP_HOME}/.config/socktop/profiles.json"
chown socktop:socktop "${SOCKTOP_HOME}/.config/socktop/profiles.json"
chmod 644 "${SOCKTOP_HOME}/.config/socktop/profiles.json"
else
cp -f /home/socktop/.config/socktop/profiles.json "${SOCKTOP_HOME}/.config/socktop/profiles.json"
fi
2025-11-30 10:33:43 +00:00
echo " ✓ Copied profiles.json"
else
echo " ⚠ profiles.json not found at mount point"
fi
# Copy alacritty.toml
if [ -f "/home/socktop/.config/alacritty/alacritty.toml" ]; then
2025-11-30 11:49:09 +00:00
if [ "$(id -u)" -eq 0 ]; then
cp -f /home/socktop/.config/alacritty/alacritty.toml "${SOCKTOP_HOME}/.config/alacritty/alacritty.toml"
chown socktop:socktop "${SOCKTOP_HOME}/.config/alacritty/alacritty.toml"
chmod 644 "${SOCKTOP_HOME}/.config/alacritty/alacritty.toml"
else
cp -f /home/socktop/.config/alacritty/alacritty.toml "${SOCKTOP_HOME}/.config/alacritty/alacritty.toml"
fi
2025-11-30 10:33:43 +00:00
echo " ✓ Copied alacritty.toml"
else
echo " ⚠ alacritty.toml not found at mount point"
fi
# Copy catppuccin-frappe.toml
if [ -f "/home/socktop/.config/alacritty/catppuccin-frappe.toml" ]; then
2025-11-30 11:49:09 +00:00
if [ "$(id -u)" -eq 0 ]; then
cp -f /home/socktop/.config/alacritty/catppuccin-frappe.toml "${SOCKTOP_HOME}/.config/alacritty/catppuccin-frappe.toml"
chown socktop:socktop "${SOCKTOP_HOME}/.config/alacritty/catppuccin-frappe.toml"
chmod 644 "${SOCKTOP_HOME}/.config/alacritty/catppuccin-frappe.toml"
else
cp -f /home/socktop/.config/alacritty/catppuccin-frappe.toml "${SOCKTOP_HOME}/.config/alacritty/catppuccin-frappe.toml"
fi
2025-11-30 10:33:43 +00:00
echo " ✓ Copied catppuccin-frappe.toml"
else
echo " ⚠ catppuccin-frappe.toml not found at mount point"
fi
# Copy certificates if they exist
if [ -d "/home/socktop/.config/socktop/certs" ]; then
2025-11-30 11:49:09 +00:00
echo "Copying certificates..."
2025-11-30 10:33:43 +00:00
for cert in /home/socktop/.config/socktop/certs/*.pem; do
if [ -f "$cert" ]; then
2025-11-30 11:49:09 +00:00
if [ "$(id -u)" -eq 0 ]; then
cp -f "$cert" "${SOCKTOP_HOME}/.config/socktop/certs/"
chown socktop:socktop "${SOCKTOP_HOME}/.config/socktop/certs/$(basename "$cert")"
chmod 644 "${SOCKTOP_HOME}/.config/socktop/certs/$(basename "$cert")"
else
cp -f "$cert" "${SOCKTOP_HOME}/.config/socktop/certs/"
fi
2025-11-30 10:33:43 +00:00
echo " ✓ Copied $(basename "$cert")"
fi
done
else
echo " No certificates directory found (optional)"
fi
# Fix paths in profiles.json if it exists
if [ -f "${SOCKTOP_HOME}/.config/socktop/profiles.json" ]; then
echo "Rewriting paths in profiles.json..."
# Replace /home/socktop with actual HOME directory and ensure certs/ subdirectory
sed -i "s|/home/socktop/.config/socktop/rpi-|${SOCKTOP_HOME}/.config/socktop/certs/rpi-|g" "${SOCKTOP_HOME}/.config/socktop/profiles.json"
2025-11-30 11:49:09 +00:00
if [ "$(id -u)" -eq 0 ]; then
chown socktop:socktop "${SOCKTOP_HOME}/.config/socktop/profiles.json"
fi
2025-11-30 10:33:43 +00:00
echo " ✓ Updated certificate paths"
fi
2025-11-30 11:49:09 +00:00
# Verify final permissions
echo "Verifying permissions..."
ls -la "${SOCKTOP_HOME}/.config/" 2>&1 || echo " ⚠ Could not list config directory"
2025-11-30 10:33:43 +00:00
echo "==================================="
echo "Configuration initialization complete"
echo "==================================="
2025-11-30 11:49:09 +00:00
# Switch to socktop user only if running as root
if [ "$(id -u)" -eq 0 ]; then
2025-11-30 11:49:09 +00:00
echo "Switching to socktop user and executing: $@"
exec runuser -u socktop -- "$@"
else
echo "Already running as non-root user ($(whoami)), continuing..."
exec "$@"
fi