Spaces:
Paused
Paused
| set -eu | |
| if [ -f /.env ]; then | |
| export $(grep -v '^#' /.env | xargs) | |
| fi | |
| # Write SSH keys from env vars into /root/.ssh with correct permissions. | |
| # Handles both real newlines and literal \n sequences in SSH_PRIVATE_KEY. | |
| HOME_DIR="${HOME:-/root}" | |
| SSH_DIR="$HOME_DIR/.ssh" | |
| mkdir -p "$SSH_DIR" | |
| chmod 700 "$SSH_DIR" | |
| echo "created folder $SSH_DIR" | |
| # Public key (optional) | |
| if [ -n "${SSH_PUBLIC_KEY:-}" ]; then | |
| printf "%s\n" "$SSH_PUBLIC_KEY" > "$SSH_DIR/id_rsa.pub" | |
| echo "Created id_rsa.pub" | |
| chmod 644 "$SSH_DIR/id_rsa.pub" | |
| fi | |
| # Private key (optional) | |
| if [ -n "${SSH_PRIVATE_KEY:-}" ]; then | |
| # If the key contains literal \n sequences, convert them to newlines. | |
| if printf "%s" "$SSH_PRIVATE_KEY" | grep -q '\\n'; then | |
| printf "%s" "$SSH_PRIVATE_KEY" | sed 's/\\n/\n/g' > "$SSH_DIR/id_rsa" | |
| echo "created id_rsa" | |
| else | |
| printf "%s" "$SSH_PRIVATE_KEY" > "$SSH_DIR/id_rsa" | |
| fi | |
| chmod 600 "$SSH_DIR/id_rsa" | |
| fi | |
| # Prime known_hosts to avoid host key prompts for common git hosts | |
| if command -v ssh-keyscan >/dev/null 2>&1; then | |
| for host in github.com gitlab.com; do | |
| ssh-keyscan -H "$host" 2>/dev/null >> "$SSH_DIR/known_hosts" || true | |
| done | |
| # Optionally pre-seed remote backup host if provided via REMOTE_HOST (user@host) | |
| if [ -n "${REMOTE_HOST:-}" ]; then | |
| remote_host_domain="$(printf "%s" "$REMOTE_HOST" | awk -F'@' '{print $NF}')" | |
| if [ -n "$remote_host_domain" ]; then | |
| ssh-keyscan -H "$remote_host_domain" 2>/dev/null >> "$SSH_DIR/known_hosts" || true | |
| fi | |
| fi | |
| chmod 644 "$SSH_DIR/known_hosts" || true | |
| fi | |
| #rm /app/scripts/*.sh | |
| #rm ~/.ssh/id_rsa | |
| #rm ~/.ssh/id_rsa.pub | |
| exec "$@" | |