From 49d04d56cd536055d21dd26eda0e2d4655edb1d6 Mon Sep 17 00:00:00 2001 From: Moul Date: Sat, 26 Dec 2015 00:33:56 +0400 Subject: [PATCH] Clone from https://moul.re/repo/moul/ucoin_ynh/ --- README.md | 27 +++++++++++++++++++ conf/nginx.conf | 6 +++++ manifest.json | 28 +++++++++++++------ scripts/install | 71 ++++++++++++++++++++++++++++++++----------------- scripts/remove | 13 +++++++-- scripts/upgrade | 14 +++++----- 6 files changed, 118 insertions(+), 41 deletions(-) create mode 100644 conf/nginx.conf diff --git a/README.md b/README.md index d4a34c5..a6282f4 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,30 @@ * [uCoin project](http://ucoin.io) * [YunoHost project](https://yunohost.org/#/) * Should works on Debian Jessie 64 bits, 32 bits and ARM + + +## Package state +The package is **not working**. +Currently, it: + +* Install dependencies: node, npm +* Install uCoin, but it fail cause to this [bug](https://github.com/ucoin-io/ucoin/issues/212). +* Synchronize with node +* Configure the node +* Daemonized the node and launch it + +* Remove and uprade scripts should works + +Extra features: + +* Proxy_pass to access to request though the path instead through the port cause it failed. +* uCoin logs are displayed on the YunoHost admin interface + +## Install + +```bash +sudo yunohost app install https://moul.re/repo/moul/ucoin_ynh/ +``` + +## License +This package and the uCoin software are under GNU GPL v.3. diff --git a/conf/nginx.conf b/conf/nginx.conf new file mode 100644 index 0000000..7a48e4a --- /dev/null +++ b/conf/nginx.conf @@ -0,0 +1,6 @@ +location YNH_EXAMPLE_PATH/ { + rewrite ^YNH_EXAMPLE_PATH$ YNH_EXAMPLE_PATH/ permanent; + proxy_pass http://YNH_EXEMPLE_DOMAIN:YNH_EXAMPLE_PORT/; + proxy_set_header Host $host; + proxy_buffering off; +} diff --git a/manifest.json b/manifest.json index caa46e3..7d1da1c 100644 --- a/manifest.json +++ b/manifest.json @@ -2,27 +2,39 @@ "name": "uCoin", "id": "ucoin", "description": { - "en": "uCoin node which permits participate chainblocks writing. Monetary system with universal dividende, libre money, Relative Money Theory", - "fr": "Nœud uCoin qui permet de participer l'écriture de blocs. Système monétaire à Dividende universel, monnaie libre, Thérorie Relative de la Monnaie" + "en": "uCoin node which permits participate to chainblocks writing. Monetary system with universal dividend, libre money, relative theory of money. This package permit join an existing money.", + "fr": "Nœud uCoin qui permet de participer à l’écriture de blocs. Système monétaire à dividende universel, monnaie libre, thérorie relative de la monnaie. Ce paquet permet de rejoindre une monnaie déjà existante." }, "url": "http://ucoin.io/", - "licence": "free", + "license": "free", "maintainer": { "name": "Moul", "email": "moul@moul.re", "url": "https://moul.re/" }, "multi_instance": "true", + "services": [ + "nginx" + ], "arguments": { "install" : [ { "name": "domain", "ask": { - "en": "Domain name on which install uCoin node", - "fr": "Nom de domaine sur lequel installer le nœud uCoin" + "en": "Domain name", + "fr": "Nom de domaine" }, "example": "example.com" }, + { + "name": "path", + "ask": { + "en": "Path on which install the proxy", + "fr": "Chemin sur lequel ajouter le proxy" + }, + "example": "/ucoin", + "default": "/ucoin" + }, { "name": "port", "ask": { @@ -35,8 +47,8 @@ { "name": "sync_node", "ask": { - "en": "Node which synchronise with", - "fr": "Nœud avec lequel faire la synchronisation" + "en": "Node's address to synchronise with", + "fr": "Adresse du nœud avec lequel se synchroniser" }, "example": "metab.ucoin.io", "default": "metab.ucoin.io" @@ -58,7 +70,7 @@ } }, { - "name": "psswd", + "name": "password", "type": "password", "ask": { "en": "Password of your account", diff --git a/scripts/install b/scripts/install index 0b63063..12498c7 100755 --- a/scripts/install +++ b/scripts/install @@ -3,29 +3,22 @@ #set -e # Retrieve arguments +app=ucoin domain=$1 -port=$2 -sync_node=$3 -sync_port=$4 -salt=$5 -psswd=$6 +path=$2 +port=$3 +sync_node=$4 +sync_port=$5 +salt=$6 +password=$7 #cpu=$(($7/100)) #cpu=`expr $7 / 100` -path=/home/yunohost.app/ucoin -ucoin="node --harmony $path/bin/ucoind" +data_path=/home/yunohost.app/ucoin +ucoin="node --harmony $data_path/bin/ucoind" -# Install dependencies: nodejs 0.12.x, npm -#sudo apt -y -qq install npm node nodejs-legacy -sudo apt -y -qq install curl g++ make -sudo curl --silent --location https://deb.nodesource.com/setup_0.12 | sudo bash - -sudo apt -y -qq install nodejs - -# Install uCoin node and pm2 daemon manager -cd /home/yunohost.app/ -sudo git clone https://github.com/ucoin-io/ucoin -cd $path -sudo npm install -sudo npm install -g pm2 +# Check domain/path availability +sudo yunohost app checkurl $domain$path -a $app \ + || (echo "Path not available: $domain$path" && exit 1) # Check port availability sudo yunohost app checkport $port @@ -36,13 +29,43 @@ fi # Open port on firewall sudo yunohost firewall allow TCP $port > /dev/null 2>&1 -# Configure and sync uCoin node +# Store config on YunoHost instance +sudo yunohost app setting $app port -v $port +sudo yunohost app setting $app data_path -v $data_path + +# Install dependencies: nodejs 0.12.x, npm +#sudo apt -y -qq install npm node nodejs-legacy +sudo apt -y -qq install curl g++ make +sudo curl --silent --location https://deb.nodesource.com/setup_0.12 | sudo bash - +sudo apt -y -qq install nodejs + +# Install uCoin node and pm2 daemon manager +cd /home/yunohost.app/ +sudo git clone https://github.com/ucoin-io/ucoin +cd $data_path +sudo npm install +sudo npm install -g pm2 + +# Configure uCoin node $ucoin init --autoconf -$ucoin config --remoteh $domain --port $port --remotep $port --salt $salt --passwd $psswd # --cpu $cpu -$ucoin sync $sync_node $sync_port # --nocautious +$ucoin config --remoteh $domain --port $port --remotep $port --salt $salt --passwd $password # --cpu $cpu + +# Synchronize uCoin node +echo "Synchronizing with $sync_node:$sync_port" +$ucoin sync $sync_node $sync_port --nointeractive > /dev/null 2>&1 # Launch uCoin node with pm2 daemon -pm2 start $path/bin/ucoind --name ucoin --interpreter=node --node-args="--harmony" --log /var/log/ucoin.log -- start +sudo pm2 start $data_path/bin/ucoind --name ucoin --interpreter=node --node-args="--harmony" --log /var/log/$app.log -- start # Add uCoin service to the YunoHost monitoring -sudo yunohost service add ucoin --log /var/log/ucoin.log +sudo yunohost service add $app --log /var/log/$app.log + +# SSOwat Configuration +sudo yunohost app setting $app skipped_uris -v "/" + +# Add proxy_pass +sudo sed -i "s@YNH_EXAMPLE_PATH@$path@" ../conf/nginx.conf +sudo sed -i "s@YNH_EXAMPLE_PORT@$port@" ../conf/nginx.conf +sudo sed -i "s@YNH_EXEMPLE_DOMAIN@$domain@" ../conf/nginx.conf +sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf +sudo service nginx reload diff --git a/scripts/remove b/scripts/remove index 40a57cc..958ccc5 100755 --- a/scripts/remove +++ b/scripts/remove @@ -2,15 +2,24 @@ #set -e +app=ucoin +domain=$(sudo yunohost app setting $app domain) +port=$(sudo yunohost app setting $app port) + # Remove uCoin node daemon -pm2 delete ucoin +sudo pm2 delete ucoin # Remove uCoin node -sudo npm remove ucoin +#sudo npm remove ucoin +sudo rm -rf /home/yunohost.app/ucoin # Remove uCoin service to YunoHost monitoring sudo yunohost service remove ucoin +# Remove proxy_pass +sudo rm -f /etc/nginx/conf.d/$domain.d/$app.conf +sudo service nginx reload + # I can't remove thoses packages which could be used by other apps #sudo npm remove pm2 #sudo apt -y -qq remove nodejs npm diff --git a/scripts/upgrade b/scripts/upgrade index a114a52..6a9ba59 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -2,13 +2,13 @@ #set -e -# Stop uCoin daemon -pm2 stop ucoin +app=ucoin +data_path=$(sudo yunohost app setting $app data_path) -# Upgrade ucoin package -cd /home/yunohost.app/ucoin +# Upgrade uCoin package +cd $data_path git pull -sudo npm install -g . +sudo npm install -# Restart uCoin daemon -pm2 restart ucoin +# Update uCoin daemon +sudo pm2 update ucoin