#!/bin/bash source _common.sh source /usr/share/yunohost/helpers # manage script failure ynh_clean_setup () { ynh_clean_check_starting } ynh_abort_if_errors # retrieve arguments app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app="$app" --key=domain) port=$(ynh_app_setting_get --app="$app" --key=port) # Cleaning legacy permissions ynh_script_progression --message="Cleaning legacy permissions..." is_public=$(ynh_app_setting_get --app="$app" --key=is_public) if [ -n "$is_public" ]; then ynh_app_setting_delete --app="$app" --key=is_public ynh_app_setting_delete --app="$app" --key=unprotected_uris fi # definie useful vars final_path="/opt/yunohost/$app" data_path="/home/$app/.$app" # use prior backup and restore on error only if backup feature exists on installed instance ynh_script_progression --message="Creating backup in case of failure..." if [ -f "/etc/yunohost/apps/$app/scripts/backup" ] ; then ynh_backup_before_upgrade # Backup the current version of the app ynh_clean_setup () { ynh_restore_upgradebackup ynh_clean_check_starting } fi # grant sudo permissions to the user to manage his own systemd service ynh_script_progression --message="Creating dedicated user, rights and folders..." myynh_create_dir "/etc/sudoers.d" cp "../conf/sudoers" "/etc/sudoers.d/$app" # build (if needed) & install Pyhton myynh_install_dependencies --python="$PY_REQUIRED_VERSION" # stop systemd service ynh_script_progression --message="Stoping service..." ynh_systemd_action --service_name="$app@$app" --action=stop # installation in a virtual environment ynh_script_progression --message="Installing Home Assistant in a virtual environment..." myynh_install_homeassistant # update script in bin ynh_script_progression --message="Updating YunoHost script used by homeassitant..." cp -r "../conf/homeassistant_conf_files/bin/." "$data_path/bin/" chown -R $app: "$data_path/bin" chmod -R +x "$data_path/bin/" # setup up systemd service ynh_script_progression --message="Adding the dedicated service..." ynh_add_systemd_config --service="$app@$app" ## add service in admin panel yunohost service add "$app@$app" --log "$data_path/home-assistant.log" --description "Home Assistant server" --needs_exposed_ports $port # start systemd service ynh_script_progression --message="Starting the Home Assistant server..." ynh_systemd_action --service_name="$app@$app" --action=start --line_match="Home Assistant initialized" --log_path="systemd" --timeout=3600 # remove --verbose from service ynh_replace_string --match_string=" --verbose" --replace_string="" --target_file="/etc/systemd/system/$app@$app.service" ynh_store_file_checksum --file="/etc/systemd/system/$app@$app.service" systemctl daemon-reload ynh_systemd_action --service_name="$app@$app" --action=restart # enable logrotate ynh_use_logrotate --logfile="$data_path/home-assistant.log" --nonappend # create a dedicated nginx config ynh_script_progression --message="Configuring nginx web server..." ynh_add_nginx_config # reload nginx ynh_systemd_action --service_name=nginx --action=reload ynh_script_progression --message="Installation of $app completed" --last