#!/usr/bin/env bash set -e # Exit the script if any statement returns a non-true return value # ---------------------------------------------------------------------------- # # Function Definitions # # ---------------------------------------------------------------------------- # execute_script() { local script_path=$1 local script_msg=$2 if [[ -f ${script_path} ]]; then echo "${script_msg}" bash ${script_path} fi } setup_ssh() { if [[ $PUBLIC_KEY ]]; then echo "Setting up SSH..." mkdir -p ~/.ssh echo -e "${PUBLIC_KEY}\n" >> ~/.ssh/authorized_keys chmod 700 -R ~/.ssh if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -q -N '' fi if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -q -N '' fi if [ ! -f /etc/ssh/ssh_host_ecdsa_key ]; then ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -q -N '' fi if [ ! -f /etc/ssh/ssh_host_ed25519_key ]; then ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -q -N '' fi service ssh start echo "SSH host keys:" cat /etc/ssh/*.pub fi } export_env_vars() { echo "Exporting environment variables..." printenv | grep -E '^RUNPOD_|^PATH=|^_=' | awk -F = '{ print "export " $1 "=\"" $2 "\"" }' >> /etc/rp_environment echo 'source /etc/rp_environment' >> ~/.bashrc } start_jupyter() { if [[ $JUPYTER_PASSWORD ]]; then echo "Starting Jupyter Lab..." mkdir -p /workspace && \ cd / && \ nohup jupyter lab --allow-root \ --no-browser \ --port=8888 \ --ip=* \ --FileContentsManager.delete_to_trash=False \ --ContentsManager.allow_hidden=True \ --ServerApp.terminado_settings='{"shell_command":["/bin/bash"]}' \ --ServerApp.token=${JUPYTER_PASSWORD} \ --ServerApp.allow_origin=* \ --ServerApp.preferred_dir=/workspace &> /workspace/logs/jupyter.log & echo "Jupyter Lab started" fi } configure_filezilla() { if [[ ! -z "${RUNPOD_PUBLIC_IP}" ]]; then echo "Configuring FileZilla for SFTP access..." # The configuration steps remain unchanged # ... else echo "RUNPOD_PUBLIC_IP is not set. Skipping FileZilla configuration." fi } # ---------------------------------------------------------------------------- # # Main Program # # ---------------------------------------------------------------------------- # echo "Container Started, configuration in progress..." execute_script "/pre_start.sh" "Running pre-start script..." setup_ssh configure_filezilla start_jupyter export_env_vars execute_script "/post_start.sh" "Running post-start script..." echo "Container is READY!" sleep infinity