seafile_ynh/scripts/install

172 lines
6.1 KiB
Text
Raw Normal View History

#!/bin/bash
2017-07-21 14:56:41 +02:00
# Source YunoHost helpers
source /usr/share/yunohost/helpers
# Stop script if errors
ynh_abort_if_errors
2017-01-05 23:24:32 +01:00
# Import common cmd
source ./_common.sh
# Retrieve arguments
2017-01-05 23:24:32 +01:00
domain=$YNH_APP_ARG_DOMAIN
2017-07-21 14:56:41 +02:00
path=$(ynh_normalize_url_path $YNH_APP_ARG_PATH)
2017-01-05 23:24:32 +01:00
server_name=$YNH_APP_ARG_SERVER_NAME
admin=$YNH_APP_ARG_ADMIN
admin_password=$YNH_APP_ARG_ADMIN_PASSWORD
is_public=$YNH_APP_ARG_PUBLIC_SITE
seafile_data=/home/yunohost.app/seafile-data
final_path=/opt/yunohost/$app
seafile_user=seafile
# Create special path with / at the end
set_path_2
# Check domain/path availability
2017-07-21 14:56:41 +02:00
test $(ynh_webpath_available $domain $path) == 'True' || ynh_die "$domain$path is not available, please use an other domain or path."
ynh_webpath_register $app $domain $path
# Check Final Path availability
test ! -e "$final_path" || ynh_die "This path already contains a folder"
# Find available ports
seahub_port=$(ynh_find_port 8000)
fileserver_port=$(ynh_find_port 8082)
webdav_port=$(ynh_find_port 8080)
# store config in yunohost
ynh_app_setting_set $app server_name $server_name
ynh_app_setting_set $app final_path $final_path
ynh_app_setting_set $app seafile_user $seafile_user
ynh_app_setting_set $app admin $admin
ynh_app_setting_set $app seahub_port $seahub_port
ynh_app_setting_set $app fileserver_port $fileserver_port
ynh_app_setting_set $app webdav_port $webdav_port
ynh_app_setting_set $app is_public $is_public
ynh_app_setting_set $app installed_version $seafile_version
# Download new version from sources
get_source $architecture $seafile_version
# Retrieve admin email
2017-07-21 14:56:41 +02:00
admin_email=$(yunohost user info $admin | grep mail: | sed "s/mail: //g")
# Check dependencies
2017-07-21 14:56:41 +02:00
install_dependance
# Copy files to the right place
2017-07-21 14:56:41 +02:00
test -e $final_path && rm -rf "$final_path"
test -e $seafile_data && rm -rf "$seafile_data"
mkdir -p $final_path
mkdir -p $final_path/installed
mkdir -p $final_path/logs
mkdir -p $final_path/seafile-data
extract_source
# init databases
dbuser=seafile
db_pwd=$(ynh_string_random 15)
ynh_app_setting_set "$app" mysqlpwd "$db_pwd"
ynh_mysql_create_db ccnetdb "$dbuser" "$db_pwd"
ynh_mysql_create_db seafiledb "$dbuser" "$db_pwd"
ynh_mysql_create_db seahubdb "$dbuser" "$db_pwd"
# Run install script
2017-07-21 14:56:41 +02:00
chmod +x ../conf/install.exp
chmod +x $final_path/seafile-server-$seafile_version/setup-seafile-mysql.sh
../conf/install.exp $final_path/seafile-server-$seafile_version $server_name $domain $seafile_data $fileserver_port $db_pwd
# Update seafile config
2017-07-21 14:56:41 +02:00
ynh_replace_string http:// https:// $final_path/conf/ccnet.conf
ynh_replace_string :8000 $path $final_path/conf/ccnet.conf
echo 'FILE_SERVER_ROOT = "https://'$domain'/seafhttp"' | tee -a $final_path/conf/seahub_settings.py
echo 'SITE_ROOT = "'$path2'"' | tee -a $final_path/conf/seahub_settings.py
echo 'SERVE_STATIC = False' | tee -a $final_path/conf/seahub_settings.py
echo 'MEDIA_URL = "'$path2'media/"' | tee -a $final_path/conf/seahub_settings.py
echo 'COMPRESS_URL = MEDIA_URL' | tee -a $final_path/conf/seahub_settings.py
echo "STATIC_URL = MEDIA_URL + 'assets/'" | tee -a $final_path/conf/seahub_settings.py
echo "LOGIN_URL = '"$path2"accounts/login/'" | tee -a $final_path/conf/seahub_settings.py
echo "ALLOWED_HOSTS = ['"$domain"']" | tee -a $final_path/conf/seahub_settings.py
# Email configuration
2017-07-21 14:56:41 +02:00
echo 'EMAIL_USE_TLS = False' | tee -a $final_path/conf/seahub_settings.py
echo 'EMAIL_HOST = "localhost"' | tee -a $final_path/conf/seahub_settings.py
echo 'EMAIL_HOST_USER = "seafile@'$domain'"' | tee -a $final_path/conf/seahub_settings.py
echo 'EMAIL_HOST_PASSWORD = ""' | tee -a $final_path/conf/seahub_settings.py
echo 'EMAIL_PORT = "25"' | tee -a $final_path/conf/seahub_settings.py
echo 'DEFAULT_FROM_EMAIL = "seafile@'$domain'"' | tee -a $final_path/conf/seahub_settings.py
echo 'SERVER_EMAIL = "seafile@'$domain'"' | tee -a $final_path/conf/seahub_settings.py
# LDAP configuration
2017-07-21 14:56:41 +02:00
echo '[LDAP]' | tee -a $final_path/conf/ccnet.conf
echo 'HOST = ldap://localhost:389' | tee -a $final_path/conf/ccnet.conf
echo 'BASE = ou=users,dc=yunohost,dc=org' | tee -a $final_path/conf/ccnet.conf
echo 'LOGIN_ATTR = mail' | tee -a $final_path/conf/ccnet.conf
2017-08-09 15:34:10 +02:00
# Enable manually wiki
echo 'ENABLE_WIKI = True' | tee -a $final_path/conf/seahub_settings.py
2017-07-21 14:56:41 +02:00
# Fix local warning
ynh_replace_string en_US.UTF-8 $LANG $final_path/seafile-server-$seafile_version/seahub.sh
# Add webdav
2017-07-21 14:56:41 +02:00
cp ../conf/seafdav.conf $final_path/conf/seafdav.conf
ynh_replace_string WEBDAV_PORT $webdav_port $final_path/conf/seafdav.conf
# Add Seafile Server to startup
cp ../conf/seafile-server /etc/init.d
ynh_replace_string SEAHUB_PORT $seahub_port /etc/init.d/seafile-server
ynh_replace_string SEAFILE_DIR $final_path /etc/init.d/seafile-server
2017-09-30 18:14:22 +02:00
ynh_replace_string SEAFILE_USER $seafile_user /etc/init.d/seafile-server
2017-07-21 14:56:41 +02:00
chmod +x /etc/init.d/seafile-server
2017-08-09 15:34:10 +02:00
systemctl daemon-reload
2017-07-21 14:56:41 +02:00
update-rc.d seafile-server defaults
# Config nginx
config_nginx
# Copy first launch script
2017-07-21 14:56:41 +02:00
cp ../conf/first_launch.exp $final_path
chmod +x $final_path/first_launch.exp
# Set permissions to seafile directory
2017-07-21 14:56:41 +02:00
chown -R $seafile_user:$seafile_user $final_path
chown -R $seafile_user:$seafile_user $seafile_data
# Start seafile, seahub and populate admin account
2017-07-21 14:56:41 +02:00
su - $seafile_user -s /bin/bash -c "$final_path/seafile-server-$seafile_version/seafile.sh start"
su - $seafile_user -s /bin/bash -c "$final_path/first_launch.exp $final_path/seafile-server-$seafile_version $admin_email $admin_password"
# Add sso config to unprotect domain.tld/seafhttp + domain.tld/seafdav do in /etc/ssowat/conf.json.persistent
2017-07-21 14:56:41 +02:00
cp ../conf/add_sso_conf.py $final_path
cp ../conf/remove_sso_conf.py $final_path
python $final_path/add_sso_conf.py
# unprotect media
ynh_app_setting_set seafile unprotected_uris "/media"
if [ "$is_public" = "0" ]
then
ynh_app_setting_delete seafile unprotected_uris
else
2017-07-21 14:56:41 +02:00
ynh_app_setting_set seafile unprotected_uris "/"
fi
# Add logrotate
ynh_use_logrotate $final_path/logs
# register yunohost service
2017-07-21 14:56:41 +02:00
yunohost service add seafile-server
# Restart seafile
2017-07-21 14:56:41 +02:00
su - $seafile_user -s /bin/bash -c "$final_path/seafile-server-latest/seahub.sh stop"
systemctl stop seafile-server.service
2017-08-09 15:34:10 +02:00
sleep 2
# We kill all process lunched by the script
pkill -f seafile-controller || true
pkill -f seaf-server || true
systemctl start seafile-server.service