#!/bin/bash set -e # Create data directories mkdir -p "${DATA_DIR}" "${CONFIG_DIR}" # Default command if none provided DEFAULT_CMD="freenet" CMD=${@:-$DEFAULT_CMD} # Check if we're root if [ "$(id -u)" = "0" ]; then # If RUN_AS is set, run as that user if [ -n "${RUN_AS}" ]; then USER_ID=$(echo "${RUN_AS}" | cut -d: -f1) GROUP_ID=$(echo "${RUN_AS}" | cut -d: -f2) echo "Running as ${RUN_AS}" echo "User ID: ${USER_ID}" echo "Group ID: ${GROUP_ID}" # Create user if it doesn't exist if ! getent group "${GROUP_ID}" >/dev/null; then groupadd -g "${GROUP_ID}" freenetuser fi if ! id "${USER_ID}" >/dev/null 2>&1; then useradd -l -u "${USER_ID}" -g "${GROUP_ID}" freenetuser -d /home/freenetuser fi # Fix permissions chown -R "${USER_ID}:${GROUP_ID}" /data export HOME="/home/freenetuser" echo "Executing command: ${CMD}" exec gosu "${USER_ID}:${GROUP_ID}" ${CMD} else # Run as root if no RUN_AS specified echo "Executing as root: ${CMD}" exec ${CMD} fi else # Already non-root echo "Executing as $(id -u): ${CMD}" exec ${CMD} fi