mirror of
https://github.com/YunoHost-Apps/peertube_ynh.git
synced 2024-09-03 19:56:29 +02:00
189 lines
5.8 KiB
Text
189 lines
5.8 KiB
Text
|
#!/bin/bash
|
||
|
|
||
|
#=================================================
|
||
|
# GENERIC START
|
||
|
#=================================================
|
||
|
# IMPORT GENERIC HELPERS
|
||
|
#=================================================
|
||
|
|
||
|
source _common.sh
|
||
|
source psql.sh
|
||
|
source /usr/share/yunohost/helpers
|
||
|
|
||
|
#=================================================
|
||
|
# MANAGE SCRIPT FAILURE
|
||
|
#=================================================
|
||
|
|
||
|
# Exit if an error occurs during the execution of the script
|
||
|
ynh_abort_if_errors
|
||
|
|
||
|
#=================================================
|
||
|
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
||
|
#=================================================
|
||
|
|
||
|
domain=$YNH_APP_ARG_DOMAIN
|
||
|
admin_email=$YNH_APP_ARG_EMAIL
|
||
|
is_public=$YNH_APP_ARG_IS_PUBLIC
|
||
|
|
||
|
# 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
|
||
|
|
||
|
#=================================================
|
||
|
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||
|
#=================================================
|
||
|
|
||
|
final_path=/var/www/$app
|
||
|
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
||
|
|
||
|
|
||
|
|
||
|
#=================================================
|
||
|
# STORE SETTINGS FROM MANIFEST
|
||
|
#=================================================
|
||
|
|
||
|
ynh_app_setting_set $app domain $domain
|
||
|
ynh_app_setting_set $app admin_email $admin_email
|
||
|
ynh_app_setting_set $app is_public $is_public
|
||
|
|
||
|
#=================================================
|
||
|
# STANDARD MODIFICATIONS
|
||
|
#=================================================
|
||
|
# FIND AND OPEN A PORT
|
||
|
#=================================================
|
||
|
|
||
|
# Find a free port
|
||
|
port=$(ynh_find_port 9000)
|
||
|
# Open this port
|
||
|
yunohost firewall allow --no-upnp TCP $port 2>&1
|
||
|
ynh_app_setting_set $app port $port
|
||
|
|
||
|
#=================================================
|
||
|
# INSTALL DEPENDENCIES
|
||
|
#=================================================
|
||
|
|
||
|
ynh_install_app_dependencies postgresql-9.4 yarn
|
||
|
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
|
||
|
sudo apt-get install -y nodejs
|
||
|
|
||
|
|
||
|
# Create postgresql database
|
||
|
db_name=$(ynh_sanitize_dbid "$app")
|
||
|
db_pwd=$(ynh_string_random 30)
|
||
|
ynh_app_setting_set $app psql_db $db_name
|
||
|
ynh_app_setting_set $app psqlpwd $db_pwd
|
||
|
ynh_psql_test_if_first_run
|
||
|
ynh_psql_create_db "$db_name" "$app" "$db_pwd"
|
||
|
systemctl reload postgresql
|
||
|
|
||
|
#=================================================
|
||
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||
|
#=================================================
|
||
|
|
||
|
ynh_app_setting_set $app final_path $final_path
|
||
|
# Download, check integrity, uncompress and patch the source from app.src
|
||
|
ynh_setup_source "$final_path"
|
||
|
cp -f ../conf/yarn.lock $final_path/client/yarn.lock
|
||
|
cd $final_path && yarn install
|
||
|
cd $final_path && npm run build
|
||
|
cp ../conf/production.yaml $final_path/config/.
|
||
|
|
||
|
|
||
|
#=================================================
|
||
|
# NGINX CONFIGURATION
|
||
|
#=================================================
|
||
|
|
||
|
# Create a dedicated nginx config
|
||
|
ynh_add_nginx_config
|
||
|
|
||
|
#=================================================
|
||
|
# CREATE DEDICATED USER
|
||
|
#=================================================
|
||
|
|
||
|
# Create a system user
|
||
|
ynh_system_user_create $app
|
||
|
|
||
|
|
||
|
#=================================================
|
||
|
# SPECIFIC SETUP
|
||
|
#=================================================
|
||
|
# ...
|
||
|
#=================================================
|
||
|
|
||
|
#=================================================
|
||
|
# SETUP APPLICATION WITH CURL
|
||
|
#=================================================
|
||
|
|
||
|
# Set right permissions for curl install
|
||
|
chown -R $app:$app $final_path
|
||
|
|
||
|
|
||
|
# Reload Nginx
|
||
|
systemctl reload nginx
|
||
|
|
||
|
|
||
|
#=================================================
|
||
|
# MODIFY A CONFIG FILE
|
||
|
#=================================================
|
||
|
|
||
|
ynh_replace_string "__domain__" "$domain" "$final_path/config/production.yaml"
|
||
|
ynh_replace_string "__db_name__" "$db_name" "$final_path/config/production.yaml"
|
||
|
ynh_replace_string "__db_pwd__" "$db_pwd" "$final_path/config/production.yaml"
|
||
|
ynh_replace_string "__email__" "$admin_email" "$final_path/config/production.yaml"
|
||
|
|
||
|
|
||
|
#=================================================
|
||
|
# STORE THE CHECKSUM OF THE CONFIG FILE
|
||
|
#=================================================
|
||
|
|
||
|
# Calculate and store the config file checksum into the app settings
|
||
|
ynh_store_file_checksum "$final_path/CONFIG_FILE"
|
||
|
|
||
|
#=================================================
|
||
|
# GENERIC FINALIZATION
|
||
|
#=================================================
|
||
|
#=================================================
|
||
|
# SETUP LOGROTATE
|
||
|
#=================================================
|
||
|
|
||
|
# Use logrotate to manage application logfile(s)
|
||
|
ynh_use_logrotate /var/log/$app/peertube.log
|
||
|
ynh_use_logrotate /var/log/$app/error_peertube.log
|
||
|
|
||
|
|
||
|
#=================================================
|
||
|
# 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 ]
|
||
|
then
|
||
|
# unprotected_uris allows SSO credentials to be passed anyway.
|
||
|
ynh_app_setting_set $app unprotected_uris "/"
|
||
|
fi
|
||
|
|
||
|
#=================================================
|
||
|
# SETUP SYSTEMD
|
||
|
#=================================================
|
||
|
|
||
|
# Create a dedicated systemd config
|
||
|
ynh_systemd_config
|
||
|
|
||
|
#=================================================
|
||
|
# RELOAD NGINX
|
||
|
#=================================================
|
||
|
|
||
|
systemctl reload nginx
|