diff --git a/birdnet-pi/rootfs/etc/cont-init.d/99-run.sh b/birdnet-pi/rootfs/etc/cont-init.d/99-run.sh index e3fc13402ae..174ff66d4c7 100755 --- a/birdnet-pi/rootfs/etc/cont-init.d/99-run.sh +++ b/birdnet-pi/rootfs/etc/cont-init.d/99-run.sh @@ -6,67 +6,58 @@ set -e # SET SYSTEM # ############## -echo " " bashio::log.info "Setting password for the user pi" -echo "pi:$(bashio::config "pi_password")" | sudo chpasswd -echo "... done" +echo "pi:$(bashio::config "pi_password")" | chpasswd +bashio::log.info "Password set successfully for user pi." -echo " " -bashio::log.info "Starting system services" +bashio::log.info "Setting timezone :" -# Set TZ +# Use timezone defined in add-on options if available if bashio::config.has_value 'TZ'; then - TIMEZONE=$(bashio::config 'TZ') - echo "... setting timezone to $TIMEZONE" - ln -snf /usr/share/zoneinfo/"$TIMEZONE" /etc/localtime - echo "$TIMEZONE" >/etc/timezone -fi || (bashio::log.fatal "Error : $TIMEZONE not found. Here is a list of valid timezones : https://manpages.ubuntu.com/manpages/focal/man3/DateTime::TimeZone::Catalog.3pm.html") - -# Correcting systemctl -echo "... correcting systemctl" -mv /helpers/systemctl3.py /bin/systemctl -chmod a+x /bin/systemctl - -# Correcting systemctl -echo "... correcting datetimectl" -mv /helpers/timedatectl /usr/bin/timedatectl -chmod a+x /usr/bin/timedatectl - -# Correct language labels -export "$(grep "^DATABASE_LANG" /config/birdnet.conf)" -# Saving default of en -cp "$HOME"/BirdNET-Pi/model/labels.txt "$HOME"/BirdNET-Pi/model/labels.bak -# Adapt to new language -echo "... adapting labels according to birdnet.conf file to $DATABASE_LANG" -/."$HOME"/BirdNET-Pi/scripts/install_language_label_nm.sh -l "$DATABASE_LANG" + TZ_VALUE="$(bashio::config 'TZ')" + if timedatectl set-timezone "$TZ_VALUE"; then + echo "... timezone set to $TZ_VALUE as defined in add-on options (BirdNET config ignored)." + else + bashio::log.warning "Couldn't set timezone to $TZ_VALUE. Refer to the list of valid timezones: https://manpages.ubuntu.com/manpages/focal/man3/DateTime::TimeZone::Catalog.3pm.html" + timedatectl set-ntp true &>/dev/null + fi +# Use BirdNET-defined timezone if no add-on option is provided +elif [ -f /data/timezone ]; then + BIRDN_CONFIG_TZ="$(cat /data/timezone)" + timedatectl set-ntp false &>/dev/null + if timedatectl set-timezone "$BIRDN_CONFIG_TZ"; then + echo "... set to $BIRDN_CONFIG_TZ as defined in BirdNET config." + else + bashio::log.warning "Couldn't set timezone to $BIRDN_CONFIG_TZ. Reverting to automatic timezone." + timedatectl set-ntp true &>/dev/null + fi +# Fallback to automatic timezone if no manual settings are found +else + if timedatectl set-ntp true &>/dev/null; then + bashio::log.info "... automatic timezone enabled." + else + bashio::log.fatal "Couldn't set automatic timezone! Please set a manual one from the options." + fi +fi -echo "... starting cron" -systemctl start cron +bashio::log.info "Starting system services" -# Starting dbus -echo "... starting dbus" -service dbus start +bashio::log.info "Starting cron service" +systemctl start cron >/dev/null -# Starting journald -# echo "... starting journald" -# systemctl start systemd-journald +bashio::log.info "Starting dbus service" +service dbus start >/dev/null -# Starting services -echo "" bashio::log.info "Starting BirdNET-Pi services" -chmod +x "$HOME"/BirdNET-Pi/scripts/restart_services.sh -"$HOME"/BirdNET-Pi/scripts/restart_services.sh +chmod +x "$HOME/BirdNET-Pi/scripts/restart_services.sh" >/dev/null +"$HOME/BirdNET-Pi/scripts/restart_services.sh" >/dev/null +# Start livestream services if enabled in configuration if bashio::config.true LIVESTREAM_BOOT_ENABLED; then - echo "... starting livestream" - sudo systemctl enable icecast2 - sudo systemctl start icecast2.service - sudo systemctl enable --now livestream.service + echo "... starting livestream services" + systemctl enable icecast2 >/dev/null + systemctl start icecast2.service >/dev/null + systemctl enable --now livestream.service >/dev/null fi -# Correct the phpsysinfo for the correct gotty service -gottyservice="$(pgrep -l "gotty" | awk '{print $NF}' | head -n 1)" -echo "... using $gottyservice in phpsysinfo" -sed -i "s/,gotty,/,${gottyservice:-gotty},/g" "$HOME"/BirdNET-Pi/templates/phpsysinfo.ini - -echo " " +bashio::log.info "Setup complete."