#!/usr/bin/with-contenv bashio # ============================================================================== # Prepare OctoPrint # s6-overlay docs: https://github.com/just-containers/s6-overlay # ============================================================================== { # Check if OctoPrint is installed. octoprint -b /data/config/octoprint --version } || { # Otherwise install it. { # Check if Python is available (at `/data/python/octoprint` according to PATH) python --version } || { # Otherwise create Python virtual environment. python3 -m venv /data/python/octoprint # Install wheel to speed up future installs. pip install wheel } pip install octoprint==$OCTOPRINT_VERSION } # Copy OctoPrint config to persistent storage, if missing. if [ ! -f /data/config/octoprint/config.yaml ]; then if [ -f /root/config/octoprint/config.yaml ]; then mkdir -p /data/config/octoprint cp /root/config/octoprint/config.yaml /data/config/octoprint/config.yaml bashio::log.notice "Default OctoPrint config copied" else bashio::log.warning "Default OctoPrint config not found" fi fi # TODO: Check if user already exists before setting password. { # Make sure Ingress user for OctoPrint exists. bashio::log.notice "Ensure Ingress user (homeassistant) exist." # new_password=$(date +%s | sha256sum | base64 | head -c 32 ; echo) new_password=homeassistant octoprint --basedir /data/config/octoprint user add homeassistant --password "$new_password" --group users --group admins # 2> /dev/null } || { # catch bashio::log.warning "Failed to ensure Ingress user exists, may not be able to launch." }