mirror of
https://github.com/YunoHost-Apps/pydio_ynh.git
synced 2024-09-03 20:16:05 +02:00
[wip] map home dir
This commit is contained in:
parent
4521dbbd86
commit
b7be77ece7
7 changed files with 228 additions and 18 deletions
5
TODO
5
TODO
|
@ -1,4 +1,5 @@
|
||||||
* user's home dirs, in replacement of "My Files"
|
* user's home dirs, in replacement of "My Files"
|
||||||
* Put common files in /home/yunohost.app
|
|
||||||
* specific php-fpm with output_buffering OFF, higher upload limit, ...
|
|
||||||
* upgrade script
|
* upgrade script
|
||||||
|
* perf improvements
|
||||||
|
* https://pyd.io/administrator/enriching-your-users-experience/tuning-server-performances-apc-powerfs-xsendfile/
|
||||||
|
* https://pyd.io/administrator/enriching-your-users-experience/websocket-server-activation/
|
178
conf/bootstrap_repositories.php
Normal file
178
conf/bootstrap_repositories.php
Normal file
|
@ -0,0 +1,178 @@
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2013 Charles du Jeu - Abstrium SAS <team (at) pyd.io>
|
||||||
|
* This file is part of Pydio.
|
||||||
|
*
|
||||||
|
* Pydio is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Pydio is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with Pydio. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* The latest code can be found at <http://pyd.io/>.
|
||||||
|
*
|
||||||
|
* Description : configuration file
|
||||||
|
* BASIC REPOSITORY CONFIGURATION.
|
||||||
|
* The standard repository will point to the data path (ajaxplorer/data by default), folder "files"
|
||||||
|
* Use the GUI to add new repositories.
|
||||||
|
* + Log in as "admin" and open the "Settings" Repository
|
||||||
|
*/
|
||||||
|
defined('AJXP_EXEC') or die( 'Access not allowed');
|
||||||
|
|
||||||
|
$REPOSITORIES[0] = array(
|
||||||
|
"DISPLAY" => "Default Files",
|
||||||
|
"DISPLAY_ID" => 430,
|
||||||
|
"DESCRIPTION_ID"=> 475,
|
||||||
|
"AJXP_SLUG" => "default",
|
||||||
|
"DRIVER" => "fs",
|
||||||
|
"DRIVER_OPTIONS"=> array(
|
||||||
|
"PATH" => "AJXP_DATA_PATH/common_files",
|
||||||
|
"CREATE" => true,
|
||||||
|
"RECYCLE_BIN" => '.pydio_recycle_bin',
|
||||||
|
"CHMOD_VALUE" => '0600',
|
||||||
|
"DEFAULT_RIGHTS"=> "",
|
||||||
|
"PAGINATION_THRESHOLD" => 500,
|
||||||
|
"PAGINATION_NUMBER" => 200,
|
||||||
|
"META_SOURCES" => array(
|
||||||
|
"metastore.serial"=> array(
|
||||||
|
"METADATA_FILE" => ".ajxp_meta",
|
||||||
|
"METADATA_FILE_LOCATION" => "infolders"
|
||||||
|
),
|
||||||
|
"meta.user" => array(
|
||||||
|
"meta_fields" => "tags",
|
||||||
|
"meta_labels" => "Tags",
|
||||||
|
"meta_visibility" => "hidden"
|
||||||
|
),
|
||||||
|
"meta.filehasher" => array(),
|
||||||
|
"meta.watch" => array(),
|
||||||
|
"meta.syncable" => array(),
|
||||||
|
"meta.exif" => array(
|
||||||
|
"meta_fields" => "COMPUTED_GPS.GPS_Latitude,COMPUTED_GPS.GPS_Longitude",
|
||||||
|
"meta_labels" => "Latitude,Longitude"
|
||||||
|
),
|
||||||
|
"index.lucene" => array(
|
||||||
|
"index_meta_fields" => "tags"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
$REPOSITORIES[1] = array(
|
||||||
|
"DISPLAY" => "My Files",
|
||||||
|
"DISPLAY_ID" => 432,
|
||||||
|
"DESCRIPTION_ID"=> 476,
|
||||||
|
"AJXP_SLUG" => "my-files",
|
||||||
|
"DRIVER" => "fs",
|
||||||
|
"DRIVER_OPTIONS"=> array(
|
||||||
|
"PATH" => "/home/AJXP_USER",
|
||||||
|
"CREATE" => true,
|
||||||
|
"RECYCLE_BIN" => '.pydio_recycle_bin',
|
||||||
|
"CHMOD_VALUE" => '0600',
|
||||||
|
"DEFAULT_RIGHTS"=> "rw",
|
||||||
|
"PAGINATION_THRESHOLD" => 500,
|
||||||
|
"PAGINATION_NUMBER" => 200,
|
||||||
|
"META_SOURCES" => array(
|
||||||
|
"metastore.serial"=> array(
|
||||||
|
"METADATA_FILE" => ".ajxp_meta",
|
||||||
|
"METADATA_FILE_LOCATION" => "infolders"
|
||||||
|
),
|
||||||
|
"meta.user" => array(
|
||||||
|
"meta_fields" => "tags",
|
||||||
|
"meta_labels" => "Tags",
|
||||||
|
"meta_visibility" => "hidden"
|
||||||
|
),
|
||||||
|
"meta.filehasher" => array(),
|
||||||
|
"meta.watch" => array(),
|
||||||
|
"meta.syncable" => array(),
|
||||||
|
"meta.exif" => array(
|
||||||
|
"meta_fields" => "COMPUTED_GPS.GPS_Latitude,COMPUTED_GPS.GPS_Longitude",
|
||||||
|
"meta_labels" => "Latitude,Longitude"
|
||||||
|
),
|
||||||
|
"index.lucene" => array(
|
||||||
|
"index_meta_fields" => "tags",
|
||||||
|
"repository_specific_keywords" => "AJXP_USER",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
// DO NOT REMOVE THIS!
|
||||||
|
// USER DASHBOARD
|
||||||
|
$REPOSITORIES["ajxp_user"] = array(
|
||||||
|
"DISPLAY" => "My Dashboard",
|
||||||
|
"AJXP_SLUG" => "dashboard",
|
||||||
|
"DISPLAY_ID" => "user_dash.title",
|
||||||
|
"DESCRIPTION_ID" => "user_dash.desc",
|
||||||
|
"DRIVER" => "ajxp_user",
|
||||||
|
"DRIVER_OPTIONS" => array(
|
||||||
|
"DEFAULT_RIGHTS" => "rw"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$REPOSITORIES["ajxp_home"] = array(
|
||||||
|
"DISPLAY" => "Welcome",
|
||||||
|
"AJXP_SLUG" => "welcome",
|
||||||
|
"DISPLAY_ID" => "user_home.title",
|
||||||
|
"DESCRIPTION_ID" => "user_home.desc",
|
||||||
|
"DRIVER" => "ajxp_home",
|
||||||
|
"DRIVER_OPTIONS" => array(
|
||||||
|
"DEFAULT_RIGHTS" => "rw"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// ADMIN REPOSITORY
|
||||||
|
$REPOSITORIES["ajxp_conf"] = array(
|
||||||
|
"DISPLAY" => "Settings",
|
||||||
|
"AJXP_SLUG" => "settings",
|
||||||
|
"DISPLAY_ID" => "165",
|
||||||
|
"DESCRIPTION_ID" => "506",
|
||||||
|
"DRIVER" => "ajxp_conf",
|
||||||
|
"DRIVER_OPTIONS" => array()
|
||||||
|
);
|
||||||
|
|
||||||
|
$REPOSITORIES["fs_template"] = array(
|
||||||
|
"DISPLAY" => "Sample Template",
|
||||||
|
"DISPLAY_ID" => 431,
|
||||||
|
"IS_TEMPLATE" => true,
|
||||||
|
"DRIVER" => "fs",
|
||||||
|
"DRIVER_OPTIONS"=> array(
|
||||||
|
"CREATE" => true,
|
||||||
|
"RECYCLE_BIN" => 'recycle_bin',
|
||||||
|
"CHMOD_VALUE" => '0600',
|
||||||
|
"PAGINATION_THRESHOLD" => 500,
|
||||||
|
"PAGINATION_NUMBER" => 200,
|
||||||
|
"PURGE_AFTER" => 0,
|
||||||
|
"CHARSET" => "",
|
||||||
|
"META_SOURCES" => array(
|
||||||
|
"metastore.serial"=> array(
|
||||||
|
"METADATA_FILE" => ".ajxp_meta",
|
||||||
|
"METADATA_FILE_LOCATION" => "infolders"
|
||||||
|
),
|
||||||
|
"meta.user" => array(
|
||||||
|
"meta_fields" => "tags",
|
||||||
|
"meta_labels" => "Tags",
|
||||||
|
"meta_visibility" => "hidden"
|
||||||
|
),
|
||||||
|
"meta.filehasher" => array(),
|
||||||
|
"meta.watch" => array(),
|
||||||
|
"meta.syncable" => array(),
|
||||||
|
"meta.exif" => array(
|
||||||
|
"meta_fields" => "COMPUTED_GPS.GPS_Latitude,COMPUTED_GPS.GPS_Longitude",
|
||||||
|
"meta_labels" => "Latitude,Longitude"
|
||||||
|
),
|
||||||
|
"index.lucene" => array(
|
||||||
|
"index_meta_fields" => "tags"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
);
|
|
@ -1,6 +1,6 @@
|
||||||
; Start a new pool named 'www'.
|
; Start a new pool named 'NAMETOCHANGE'.
|
||||||
; the variable $pool can we used in any directive and will be replaced by the
|
; the variable $pool can we used in any directive and will be replaced by the
|
||||||
; pool name ('www' here)
|
; pool name ('NAMETOCHANGE' here)
|
||||||
[NAMETOCHANGE]
|
[NAMETOCHANGE]
|
||||||
|
|
||||||
; Per pool prefix
|
; Per pool prefix
|
||||||
|
@ -80,7 +80,7 @@ pm = dynamic
|
||||||
; CGI.
|
; CGI.
|
||||||
; Note: Used when pm is set to either 'static' or 'dynamic'
|
; Note: Used when pm is set to either 'static' or 'dynamic'
|
||||||
; Note: This value is mandatory.
|
; Note: This value is mandatory.
|
||||||
pm.max_children = 6
|
pm.max_children = 15
|
||||||
|
|
||||||
; The number of child processes created on startup.
|
; The number of child processes created on startup.
|
||||||
; Note: Used only when pm is set to 'dynamic'
|
; Note: Used only when pm is set to 'dynamic'
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
upload_max_filesize=10G
|
upload_max_filesize=10G
|
||||||
post_max_size=10G
|
post_max_size=10G
|
||||||
output_buffering=Off
|
output_buffering=off
|
4
hooks/post_user_create
Normal file
4
hooks/post_user_create
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
user=$1
|
||||||
|
sudo setfacl -m g:pydio:rwx /home/$user
|
|
@ -18,6 +18,9 @@ if [[ ! $? -eq 0 ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
sudo apt-get install acl -y -qq
|
||||||
|
|
||||||
mkdir ../upstream
|
mkdir ../upstream
|
||||||
version=$(cat version)
|
version=$(cat version)
|
||||||
wget -O ../upstream/pydio-core.tar.gz http://sourceforge.net/projects/ajaxplorer/files/pydio/dev-channel/$version/pydio-core-$version.tar.gz
|
wget -O ../upstream/pydio-core.tar.gz http://sourceforge.net/projects/ajaxplorer/files/pydio/dev-channel/$version/pydio-core-$version.tar.gz
|
||||||
|
@ -34,6 +37,7 @@ sudo mkdir -p $final_path
|
||||||
sudo cp -ar ../upstream/pydio-core-$version/* $final_path
|
sudo cp -ar ../upstream/pydio-core-$version/* $final_path
|
||||||
|
|
||||||
sudo mkdir -p $data_path
|
sudo mkdir -p $data_path
|
||||||
|
sudo mv $final_path/data $data_path
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
|
db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
|
||||||
|
@ -41,19 +45,23 @@ db_user=pydio
|
||||||
sudo yunohost app initdb $db_user -p $db_pwd -s $(readlink -e ../conf/create.mysql)
|
sudo yunohost app initdb $db_user -p $db_pwd -s $(readlink -e ../conf/create.mysql)
|
||||||
sudo yunohost app setting pydio mysqlpwd -v $db_pwd
|
sudo yunohost app setting pydio mysqlpwd -v $db_pwd
|
||||||
|
|
||||||
|
sudo cp ../conf/bootstrap_context.php $final_path/conf
|
||||||
|
sudo cp ../conf/bootstrap_repositories.php $final_path/conf
|
||||||
|
|
||||||
sed -i "s@YNH_MYSQL_PWD@$db_pwd@g" ../conf/bootstrap.json
|
sed -i "s@YNH_MYSQL_PWD@$db_pwd@g" ../conf/bootstrap.json
|
||||||
sed -i "s@YNH_ADMIN@$admin@g" ../conf/bootstrap.json
|
sed -i "s@YNH_ADMIN@$admin@g" ../conf/bootstrap.json
|
||||||
sudo mkdir -p $final_path/data/plugins/boot.conf
|
sudo mkdir -p $data_path/data/plugins/boot.conf
|
||||||
sudo cp ../conf/bootstrap.json $final_path/data/plugins/boot.conf/bootstrap.json
|
sudo cp ../conf/bootstrap.json $data_path/data/plugins/boot.conf/bootstrap.json
|
||||||
sudo yunohost app setting pydio admin -v $admin
|
sudo yunohost app setting pydio admin -v $admin
|
||||||
|
|
||||||
sudo cp ../conf/bootstrap_context.php $final_path/conf
|
sudo touch $data_path/data/cache/admin_counted
|
||||||
|
sudo touch $data_path/data/cache/first_run_passed
|
||||||
|
sudo touch $data_path/data/cache/diag_result.php
|
||||||
|
|
||||||
sudo touch $final_path/data/cache/admin_counted
|
# let's rename the "Common Files" repository mount to common_files
|
||||||
sudo touch $final_path/data/cache/first_run_passed
|
# also, "files" mount is useless now since we map to /home/AJXP_USER directly
|
||||||
sudo touch $final_path/data/cache/diag_result.php
|
sudo mkdir -p $data_path/data/common_files
|
||||||
|
sudo rm -rf $data_path/data/{files,personal}
|
||||||
sudo mv $final_path/data $data_path
|
|
||||||
|
|
||||||
# Fix up permissions
|
# Fix up permissions
|
||||||
sudo chown -R root: $final_path
|
sudo chown -R root: $final_path
|
||||||
|
@ -64,16 +72,26 @@ sudo chown -R pydio:pydio $data_path
|
||||||
sudo find $data_path/data -type f -exec chmod 660 {} \;
|
sudo find $data_path/data -type f -exec chmod 660 {} \;
|
||||||
sudo find $data_path/data -type d -exec chmod 770 {} \;
|
sudo find $data_path/data -type d -exec chmod 770 {} \;
|
||||||
|
|
||||||
|
# Allow pydio to access user's home
|
||||||
|
for i in $(ls /home)
|
||||||
|
do
|
||||||
|
sudo yunohost user list --json | grep -q "\"username\": \"$i\""
|
||||||
|
if [[ $? -eq 0 ]];
|
||||||
|
then
|
||||||
|
sudo setfacl -m g:pydio:rwx /home/$i
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
sed -i "s@NAMETOCHANGE@pydio@g" ../conf/php-fpm.conf
|
sed -i "s@NAMETOCHANGE@pydio@g" ../conf/php-fpm.conf
|
||||||
finalphpconf=/etc/php5/fpm/pool.d/pydio.conf
|
finalphpconf=/etc/php5/fpm/pool.d/pydio.conf
|
||||||
sudo cp ../conf/php-fpm.conf $finalphpconf
|
sudo cp ../conf/php-fpm.conf $finalphpconf
|
||||||
sudo chown root: $finalphpconf
|
sudo chown root: $finalphpconf
|
||||||
sudo chmod 644 $finalphpconf
|
sudo chmod 644 $finalphpconf
|
||||||
|
|
||||||
finalphpini=/etc/php5/fpm/conf.d/20-pydio.ini
|
#finalphpini=/etc/php5/fpm/conf.d/20-pydio.ini
|
||||||
sudo cp ../conf/php-fpm.ini $finalphpini
|
#sudo cp ../conf/php-fpm.ini $finalphpini
|
||||||
sudo chown root: $finalphpini
|
#sudo chown root: $finalphpini
|
||||||
sudo chmod 644 $finalphpini
|
#sudo chmod 644 $finalphpini
|
||||||
|
|
||||||
# Nginx configuration
|
# Nginx configuration
|
||||||
sed -i "s@NAMETOCHANGE@pydio@g" ../conf/nginx.conf
|
sed -i "s@NAMETOCHANGE@pydio@g" ../conf/nginx.conf
|
||||||
|
|
|
@ -14,6 +14,15 @@ db_name=pydio
|
||||||
root_pwd=$(sudo cat /etc/yunohost/mysql)
|
root_pwd=$(sudo cat /etc/yunohost/mysql)
|
||||||
mysql -u root -p$root_pwd -e "DROP DATABASE $db_name ; DROP USER $db_user@localhost ;"
|
mysql -u root -p$root_pwd -e "DROP DATABASE $db_name ; DROP USER $db_user@localhost ;"
|
||||||
|
|
||||||
|
for i in $(ls /home)
|
||||||
|
do
|
||||||
|
sudo yunohost user list --json | grep -q "\"username\": \"$i\""
|
||||||
|
if [[ $? -eq 0 ]];
|
||||||
|
then
|
||||||
|
sudo setfacl -x g:pydio:rwx /home/$i
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
sudo userdel pydio > /dev/null 2>&1
|
sudo userdel pydio > /dev/null 2>&1
|
||||||
|
|
||||||
sudo service nginx reload
|
sudo service nginx reload
|
||||||
|
|
Loading…
Add table
Reference in a new issue