1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/wekan_ynh.git synced 2024-09-03 20:36:09 +02:00
wekan_ynh/scripts/install
2017-02-11 13:42:28 +00:00

121 lines
3.9 KiB
Bash
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Exit on command errors and treat unset variables as an error
set -eu
# Arguments from manifest
app=$YNH_APP_INSTANCE_NAME
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
admin=$YNH_APP_ARG_ADMIN
is_public=$YNH_APP_ARG_IS_PUBLIC
language=$YNH_APP_ARG_LANGUAGE
src_path="/var/www/wekan"
systemd_conf="$PWD/../conf/systemd.conf"
nginx_conf="$PWD/../conf/nginx.conf"
# Source YunoHost helpers
source /usr/share/yunohost/helpers
# Save app settings
ynh_app_setting_set "$app" admin "$admin"
ynh_app_setting_set "$app" is_public "$is_public"
ynh_app_setting_set "$app" language "$language"
# Check domain/path availability
sudo yunohost app checkurl "${domain}${path_url}" -a "$app" \
|| ynh_die "Path not available: ${domain}${path_url}"
# Install nvm
export NVM_DIR="/opt/nvm"
sudo curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo NVM_DIR=$NVM_DIR bash
# Install latest nodejs
sudo su -c ". $NVM_DIR/nvm.sh && nvm install 0.10 && nvm use 0.10"
# Install npm
sudo apt-get update
sudo apt-get -y install npm
# Add some swap :/
if [ $(free | tail -n 1 | awk '{print $2}') -lt 1000000 ];
then
if [[ -z $(mount | grep /tmp | grep tmpfs) ]];
then
tmp_swap_file=/tmp/wekan_swapfile
else
# It is NOT possible to setup a swap file on a tmpfs filesystem
tmp_swap_file=/var/cache/wekan_swapfile
fi
sudo dd if=/dev/zero of=$tmp_swap_file bs=1M count=1024
sudo chmod 600 $tmp_swap_file
sudo mkswap $tmp_swap_file
sudo swapon $tmp_swap_file
fi
# Install meteor
METEOR_INSTALL_DIR="/opt/meteor"
METEOR_BIN="/usr/local/bin/meteor"
NODE_BIN=`sudo su -c ". $NVM_DIR/nvm.sh && nvm use 0.10 >/dev/null && which node"`
sudo su admin -c ". $NVM_DIR/nvm.sh && nvm use 0.10 && curl https://install.meteor.com/ | sh"
# Install wekan
sudo mkdir -p $src_path
cd $src_path
sudo git clone https://github.com/wekan/wekan.git .
sudo chown -R admin /var/www/wekan/
sudo su -c ". $NVM_DIR/nvm.sh && nvm use 0.10 && npm install"
sudo rm -rf .build
sudo su admin -c ". $NVM_DIR/nvm.sh && nvm use 0.10 && $METEOR_BIN build .build --directory"
cd .build/bundle/programs/server
sudo su -c ". $NVM_DIR/nvm.sh && nvm use 0.10 && npm install"
# Disable swapfile
if [[ -v "$(echo $tmp_swap_file)" ]];
then
sudo swapoff $tmp_swap_file
sudo rm -f $tmp_swap_file
fi
# Install mongodb
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org=3.2.11 mongodb-org-server=3.2.11 mongodb-org-shell=3.2.11 mongodb-org-mongos=3.2.11 mongodb-org-tools=3.2.11
sudo systemctl start mongod
sudo systemctl enable mongod
# Install systemd conf
sed -i "s@WEKAN_INSTALL_PATH@/var/www/wekan/.build/bundle@g" $systemd_conf
sed -i "s@WEKAN_NODEJS_PATH@$NODE_BIN@g" $systemd_conf
sed -i "s@WEKAN_DOMAIN@$domain@g" $systemd_conf
sed -i "s@WEKAN_PATH@$path_url@g" $systemd_conf
sed -i "s@WEKAN_DB_NAME@wekan@g" $systemd_conf
sed -i "s@WEKAN_PORT@8081@g" $systemd_conf
sudo cp $systemd_conf /etc/systemd/system/wekan@.service
# Modify Nginx configuration file and copy it to Nginx conf directory
sed -i "s@YNH_WWW_PATH@$path_url@g" $nginx_conf
sed -i "s@YNH_WWW_ALIAS@$src_path/@g" $nginx_conf
sudo cp $nginx_conf /etc/nginx/conf.d/$domain.d/$app.conf
# If app is public, add url to SSOWat conf as skipped_uris
if [[ $is_public -eq 1 ]]; then
# unprotected_uris allows SSO credentials to be passed anyway.
ynh_app_setting_set "$app" unprotected_uris "/"
fi
# Reload services
sudo service nginx reload
# Start service
sudo systemctl daemon-reload
sudo systemctl start wekan@admin
sudo systemctl enable wekan@admin