#!/bin/bash #================================================= # GENERIC START #================================================= # Import common cmd source ./experimental_helper.sh source ./_common.sh # Source YunoHost helpers source /usr/share/yunohost/helpers seafile_version=$(ynh_app_upstream_version) # Create special path with / at the end if [[ $path == '/' ]] then path2=$path else path2=$path"/" fi #================================================= # STANDARD MODIFICATIONS #================================================= ynh_script_progression --message="Creating base directory..." ln -s $data_dir $install_dir/seafile-data # Check dependencies install_dependance # Download new version from sources ynh_script_progression --message="Installing sources files..." --weight=7 ynh_setup_source --dest_dir=$install_dir/seafile-server-$seafile_version # init databases ynh_script_progression --message="Configuring MySQL database..." db_user=seafile ynh_mysql_setup_db --db_user $db_user --db_name ccnetdb ynh_mysql_setup_db --db_user $db_user --db_name seafiledb --db_pwd "$db_pwd" ynh_mysql_setup_db --db_user $db_user --db_name seahubdb --db_pwd "$db_pwd" ynh_script_progression --message="Configuring application..." --weight=3 # Run install script mv_expect_scripts chmod +x $install_dir/seafile-server-$seafile_version/setup-seafile-mysql.sh set_permission sudo -u $seafile_user $expect_scripts_dir/install.exp "$install_dir/seafile-server-$seafile_version" "$server_name" "$domain" "$fileserver_port" "$db_pwd" sleep 3 # Retrive values from auto generated config file seahub_secret_key=$(grep -P 'SECRET_KEY\s*=\s*"[\w-]+"' $install_dir/conf/seahub_settings.py | cut -d'"' -f2) ccnet_id=$(grep -P 'ID\s*=\s*\w+$' $install_dir/conf/ccnet.conf | cut -d= -f2 | grep -o -P '\w+') ynh_app_setting_set --app $app --key seahub_secret_key --value $seahub_secret_key ynh_app_setting_set --app $app --key ccnet_id --value $ccnet_id # Update seafile config files ynh_add_config --template=seahub_settings.py --destination=$install_dir/conf/seahub_settings.py ynh_add_config --template=ccnet.conf --destination=$install_dir/conf/ccnet.conf ynh_add_config --template=gunicorn.conf.py --destination=$install_dir/conf/gunicorn.conf.py ynh_add_config --template=seafdav.conf --destination=$install_dir/conf/seafdav.conf # Configure admin info # It will be used the first start admin_email=$(ynh_user_get_info --username $admin --key 'mail') cp ../conf/create_admin.json $install_dir/conf/admin.txt ynh_replace_string --match_string __ADMIN__ --replace_string $admin_email --target_file $install_dir/conf/admin.txt ynh_replace_special_string --match_string __PASSWORD__ --replace_string $admin_password --target_file $install_dir/conf/admin.txt # Fix local warning ynh_replace_string --match_string en_US.UTF-8 --replace_string ${LANG:-'en_US.UTF-8'} --target_file $install_dir/seafile-server-$seafile_version/seahub.sh # Add Seafile Server to startup ynh_script_progression --message="Configuring a systemd service..." --weight=2 ynh_add_systemd_config --service seafile --template seafile.service ynh_add_systemd_config --service seahub --template seahub.service # Config nginx ynh_script_progression --message="Configuring nginx..." --weight=1 ynh_add_nginx_config 'seahub_port fileserver_port webdav_port' #================================================= # GENERIC FINALIZATION #================================================= # Set all permissions ynh_script_progression --message="Protecting directory..." set_permission # Add logrotate ynh_script_progression --message="Configuring log rotation..." ynh_use_logrotate --logfile $install_dir/logs ln -s $install_dir/logs /var/log/seafile # register yunohost service yunohost service add seafile yunohost service add seahub ynh_script_progression --message="Stoping services..." --weight=3 # Start service ynh_script_progression --message="Starting seafile services..." --weight=3 ynh_systemd_action --service_name seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log sleep 2 ynh_systemd_action --service_name seahub -l "Started Seafile hub." -p "systemd" sleep 2 # Add fail2ban ynh_script_progression --message="Configuring fail2ban..." --weight=10 ynh_add_fail2ban_config --use_template ynh_script_progression --message="Installation of $app completed" --last