#!/bin/bash # Exit on command errors and treat unset variables as an error set -eu # Retrieve arguments app=$YNH_APP_INSTANCE_NAME domain=$YNH_APP_ARG_DOMAIN path="/" port=$YNH_APP_ARG_PORT sync_node=$YNH_APP_ARG_SYNC_NODE sync_port=$YNH_APP_ARG_SYNC_PORT salt=$YNH_APP_ARG_SALT password=$YNH_APP_ARG_PASSWORD admin=$YNH_APP_ARG_ADMIN is_cesium_public=$YNH_APP_ARG_IS_CESIUM_PUBLIC # Source app helpers and functions source /usr/share/yunohost/helpers source functions.sh # Check domain/path availability sudo yunohost app checkurl "${domain}${path}" -a "$app" \ || ynh_die "Path not available: ${domain}${path}" # Check port availability sudo yunohost app checkport $port if [[ ! $? -eq 0 ]]; then exit 1 fi # Check node availability if curl --output /dev/null --silent --head --fail "$sync_node:$sync_port/node/summary"; then echo "Node $sync_node:$sync_port is available" else ynh_die "Node $sync_node:$sync_port is not available" 2 fi # Check the admin exists in YunoHost users ynh_user_exists $admin # Get CPU architecture and check it arch=$(uname -m) if [ $arch == "x86_64" ]; then arch="x64" fi if [[ $arch != "x64" && $arch != "armv7l" ]]; then ynh_die "$arch is not supported." 2 fi # Store config on YunoHost instance ynh_app_setting_set $app port $port ynh_app_setting_set $app arch $arch ynh_app_setting_set "$app" admin "$admin" ynh_app_setting_set "$app" is_cesium_public "$is_cesium_public" # Open port on firewall sudo yunohost firewall allow TCP $port > /dev/null 2>&1 INSTALL_DUNITER_DEBIAN_PACKAGE # Configure Duniter node sudo $app config --ipv4 127.0.0.1 --port $port --remoteh $domain --remotep 443 --noupnp --salt $salt --passwd $password # Reset Duniter node's existing data (blockchain, not conf) sudo $app reset data > /dev/null # Synchronize Duniter node echo "Synchronizing with $sync_node:$sync_port. It may take a while." sudo $app sync $sync_node $sync_port --nointeractive > /dev/null # Launch Duniter node sudo $app webstart # Add Duniter service to the YunoHost monitoring sudo yunohost service add $app --log /home/admin/.config/$app/"$app"_default/"$app".log CONFIG_SSOWAT_FOR_RESTRICTED_ACCESS CONFIG_NGINX_FOR_WEB_ADMIN