2015-02-17 03:39:33 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# GENERIC START
|
|
|
|
#=================================================
|
2017-06-09 15:45:50 +02:00
|
|
|
# IMPORT GENERIC HELPERS
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
source _common.sh
|
|
|
|
source /usr/share/yunohost/helpers
|
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# MANAGE SCRIPT FAILURE
|
|
|
|
#=================================================
|
2017-06-09 16:36:14 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Exit if an error occurs during the execution of the script
|
|
|
|
ynh_abort_if_errors
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
|
|
|
#=================================================
|
2017-06-09 14:50:09 +02:00
|
|
|
|
2017-06-09 16:09:19 +02:00
|
|
|
domain=$YNH_APP_ARG_DOMAIN
|
2017-08-06 19:56:16 +02:00
|
|
|
path_url=$YNH_APP_ARG_PATH
|
|
|
|
is_public=$YNH_APP_ARG_IS_PUBLIC
|
2017-08-06 20:21:40 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
|
|
|
|
# This is a multi-instance app, meaning it can be installed several times independently
|
|
|
|
# The id of the app as stated in the manifest is available as $YNH_APP_ID
|
|
|
|
# The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...)
|
|
|
|
# The app instance name is available as $YNH_APP_INSTANCE_NAME
|
|
|
|
# - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample
|
|
|
|
# - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2
|
|
|
|
# - ynhexample__{N} for the subsequent installations, with N=3,4, ...
|
|
|
|
# The app instance name is probably what you are interested the most, since this is
|
|
|
|
# guaranteed to be unique. This is a good unique identifier to define installation path,
|
|
|
|
# db names, ...
|
|
|
|
app=$YNH_APP_INSTANCE_NAME
|
2017-06-09 13:06:41 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
|
|
|
#=================================================
|
2017-06-09 13:06:41 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Normalize the url path syntax
|
|
|
|
path_url=$(ynh_normalize_url_path $path_url)
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Check web path availability
|
|
|
|
ynh_webpath_available $domain $path_url
|
|
|
|
# Register (book) web path
|
|
|
|
ynh_webpath_register $app $domain $path_url
|
2017-06-09 13:06:41 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
final_path=/var/www/$app
|
|
|
|
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# STORE SETTINGS FROM MANIFEST
|
|
|
|
#=================================================
|
2015-03-01 23:06:20 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
ynh_app_setting_set $app domain $domain
|
|
|
|
ynh_app_setting_set $app path $path_url
|
|
|
|
ynh_app_setting_set $app is_public $is_public
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# STANDARD MODIFICATIONS
|
|
|
|
#=================================================
|
|
|
|
# FIND AND OPEN A PORT
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# Find a free port
|
|
|
|
port=$(ynh_find_port 8095)
|
|
|
|
# Open this port
|
|
|
|
yunohost firewall allow --no-upnp TCP $port 2>&1
|
|
|
|
ynh_app_setting_set $app port $port
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# INSTALL DEPENDENCIES
|
|
|
|
#=================================================
|
|
|
|
|
2017-10-05 21:37:08 +02:00
|
|
|
ynh_install_app_dependencies build-essential libssl-dev libcurl4-openssl-dev libxml2-dev libxslt-dev imagemagick ghostscript curl libmagickwand-dev git libmysqlclient-dev redis-server nodejs
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# CREATE A MYSQL DATABASE
|
|
|
|
#=================================================
|
|
|
|
# If your app uses a MySQL database, you can use these lines to bootstrap
|
|
|
|
# a database, an associated user and save the password in app settings
|
2015-03-01 23:06:20 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
db_name=$(ynh_sanitize_dbid $app)
|
|
|
|
ynh_app_setting_set $app db_name $db_name
|
|
|
|
ynh_mysql_setup_db $db_name $db_name
|
2016-06-11 14:43:17 +02:00
|
|
|
|
2017-10-06 10:49:33 +02:00
|
|
|
#=================================================
|
|
|
|
# CREATE DEDICATED USER
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# Create a system user
|
2017-10-06 11:04:47 +02:00
|
|
|
ynh_system_user_create $app
|
|
|
|
|
2017-10-06 10:49:33 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
|
|
|
#=================================================
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
ynh_app_setting_set $app final_path $final_path
|
|
|
|
# Download, check integrity, uncompress and patch the source from app.src
|
2017-10-06 11:08:59 +02:00
|
|
|
su - $app <<MCOMMANDS
|
2017-10-05 21:37:08 +02:00
|
|
|
cd ~
|
|
|
|
git clone -b master https://github.com/diaspora/diaspora.git
|
|
|
|
cd diaspora
|
|
|
|
config/database.yml
|
|
|
|
cp config/diaspora.yml
|
|
|
|
gem install bundler
|
|
|
|
RAILS_ENV=production bin/bundle install --jobs $(nproc) --deployment --without test development --with mysql
|
2017-06-09 17:13:14 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# NGINX CONFIGURATION
|
|
|
|
#=================================================
|
2017-06-09 17:13:14 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Create a dedicated nginx config
|
|
|
|
ynh_add_nginx_config
|
2017-06-09 16:17:52 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# SPECIFIC SETUP
|
|
|
|
#=================================================
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# SETUP SYSTEMD
|
|
|
|
#=================================================
|
2015-03-01 23:06:20 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Create a dedicated systemd config
|
|
|
|
ynh_systemd_config
|
2015-05-30 23:06:45 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# SETUP APPLICATION WITH CURL
|
|
|
|
#=================================================
|
2015-03-01 23:06:20 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Set right permissions for curl install
|
|
|
|
chown -R $app: $final_path
|
|
|
|
|
|
|
|
# Set the app as temporarily public for curl call
|
|
|
|
ynh_app_setting_set $app unprotected_uris "/"
|
|
|
|
# Reload SSOwat config
|
|
|
|
yunohost app ssowatconf
|
2015-05-30 23:06:45 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Reload Nginx
|
|
|
|
systemctl reload nginx
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Installation with curl
|
|
|
|
ynh_local_curl "/INSTALL_PATH" "key1=value1" "key2=value2" "key3=value3"
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# STORE THE CHECKSUM OF THE CONFIG FILE
|
|
|
|
#=================================================
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Calculate and store the config file checksum into the app settings
|
|
|
|
ynh_store_file_checksum "$final_path/CONFIG_FILE"
|
2015-05-31 11:35:04 +02:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# GENERIC FINALIZATION
|
|
|
|
#=================================================
|
|
|
|
# SECURE FILES AND DIRECTORIES
|
|
|
|
#=================================================
|
2015-03-01 23:06:20 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
# Set permissions to app files
|
|
|
|
chown -R root: $final_path
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# SETUP LOGROTATE
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# Use logrotate to manage application logfile(s)
|
|
|
|
ynh_use_logrotate
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# ADVERTISE SERVICE IN ADMIN PANEL
|
|
|
|
#=================================================
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
yunohost service add NAME_INIT.D --log "/var/log/FILE.log"
|
2015-02-17 03:39:33 +01:00
|
|
|
|
2017-08-06 19:56:16 +02:00
|
|
|
#=================================================
|
|
|
|
# SETUP SSOWAT
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
if [ $is_public -eq 0 ]
|
|
|
|
then # Remove the public access
|
|
|
|
ynh_app_setting_delete $app skipped_uris
|
|
|
|
fi
|
|
|
|
# Make app public if necessary
|
|
|
|
if [ $is_public -eq 1 ]
|
2015-02-17 03:39:33 +01:00
|
|
|
then
|
2017-08-06 19:56:16 +02:00
|
|
|
# unprotected_uris allows SSO credentials to be passed anyway.
|
|
|
|
ynh_app_setting_set $app unprotected_uris "/"
|
2015-02-17 03:39:33 +01:00
|
|
|
fi
|
2017-08-06 19:56:16 +02:00
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# RELOAD NGINX
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
systemctl reload nginx
|