#!/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=$YNH_APP_ARG_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 version=$(cat ../conf/upstream_version) # Source app helpers source /usr/share/yunohost/helpers # Check domain/path availability sudo yunohost app checkurl "${domain}${path}" -a "$app" \ || ynh_die "Path not available: ${domain}${path}" # Check path is root if [[ $path != '/' ]]; then ynh_die "Web admin can only be installed on root path for now" fi # 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 currently supported." 2 fi # Open port on firewall sudo yunohost firewall allow TCP $port > /dev/null 2>&1 # 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" # Retrieve debian package and install it wget -nc --quiet https://github.com/duniter/duniter/releases/download/$version/duniter-$version-linux-$arch.deb -P /tmp sudo dpkg -i /tmp/duniter-$version-linux-$arch.deb #sudo rm -f /tmp/duniter-$version-linux-$arch.deb # Configure Duniter node sudo $app init --autoconf sudo $app config --remoteh $domain --port $port --remotep $port --salt $salt --passwd $password # Synchronize Duniter node echo "Synchronizing with $sync_node:$sync_port. It may take a while." sudo $app sync $sync_node $sync_port --nointeractive # 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 # Add admin to the allowed users sudo yunohost app addaccess $app -u $admin # Allow only allowed users to access admin panel ynh_app_setting_set "$app" protected_uris "/" # SSOwat Configuration #ynh_app_setting_set "$app" unprotected_uris "/api/" # Configure Nginx nginx_conf="../conf/nginx.conf" #sudo sed -i "s@YNH_EXAMPLE_PATH@$path@g" $nginx_conf sudo sed -i "s@YNH_EXAMPLE_PORT@$port@" $nginx_conf sudo sed -i "s@YNH_EXAMPLE_DOMAIN@$domain@" $nginx_conf sudo cp $nginx_conf /etc/nginx/conf.d/$domain.d/$app.conf sudo nginx -t && sudo service nginx reload