*New 11.3 series Release:
2019-10-05: XigmaNAS 11.3.0.4.6928 - released, 11.2 series are soon unsupported!

*New 12.0 series Release:
2019-10-05: XigmaNAS 12.0.0.4.6928 - released!

*New 11.2 series Release:
2019-09-23: XigmaNAS 11.2.0.4.6881 - released!

We really need "Your" help on XigmaNAS https://translations.launchpad.net/xigmanas translations. Please help today!

Producing and hosting XigmaNAS costs money. Please consider donating for our project so that we can continue to offer you the best.
We need your support! eg: PAYPAL

[TUTO] Installation Pydio

Moderators: mtiburs, velivole18, ernie

Locked
laster13
PowerUser
PowerUser
Posts: 996
Joined: 01 Jun 2013 19:15
Location: France-Marseille
Status: Offline

[TUTO] Installation Pydio

#1

Post by laster13 » 12 Apr 2015 19:00

Bonjour,

Pydio est l'accronyme de "Put Your Data In Orbit". Il s'agit d'un GED écrit en PHP et javascript, successeur d'Ajaxplorer. Original, simple à prendre en mains et assez complet, il se distingue de la concurrence par un design moderne et se présente comme une alternative crédible à des solutions telles que Dropbox. C'est également une solution mature qui pourrait séduire de nombreuses entreprises ou des particuliers et elle est portée par une entreprise française.

Cette application permet de faire beaucoup de choses en peu de clics et peu de saisie. On peut très facilement créer une arborescence de dossiers, transférer plusieurs fichiers d'un coup par un simple glisser-déplacer depuis son navigateur de fichiers, on peut partager des documents soit publiquement avec plus ou moins de restrictions soit aux autres utilisateurs via le système de dépôt et surveiller l'activité de consultation et de modification sur ces partages.

On peut noter également qu'il y a un grand nombre de greffons à découvrir et à tester qui étendent beaucoup le périmètre de l'application et qu'il est possible de définir des quotas par utilisateur.

Enfin on notera que cette application apporte un supplément très moderne en se dotant d'applications mobiles permettant d'utiliser la plateforme depuis sa tablette ou son téléphone. Il est possible en effet de naviguer dans ses fichiers, d'écouter la musique ou les vidéos qui sont sur le serveur, de visualiser des photos, mais également de stocker celles prises avec l'appareil mobile. Bref, une superbe alternative à owncloud

https://pydio.com/fr/tour et la demo en ligne Demo en ligne

Ce tuto est un simple plagia de celui proposé sur le site à la différence près que je l'ai testée et qu'il fonctionne. Par conséquent j'irai assez vite sur les différentes phases d'installations qui sont suffisamment détaillées sur le site du concepteur... certe en langue de Shakespeare :roll:
Petite nouveauté plutot sympa, on va installer Nginx avec le https au lieu apache ou lighttpd.

https://pyd.io/freebsd-nginx-php-fpm/

Testé dans les conditions suivantes: ASRock E350M1/USB3 x64-embedded sur AMD E-350 Processor, 8GO DDR3, 2 x 2To - ZFS entrelacés, Nas4free Embedded (10.1.0.2 - Prescience (revision 1731)

Si vous avez besoin d'aide, merci de poster sur le [Topic unique] Pydio !!

C'est parti et tout d'abord on va créer une jail en suivant le tuto sur TheBrig
[TUTO] TheBrig-Comment créer une Jail

On rentre ensuite dans la jail

Code: Select all

jexec 1 csh

Code: Select all

portsnap fetch extract
On va mettre à jour pkg qui van ous servir à installer les packages à partir des ports

Code: Select all

cd /usr/ports/ports-mgmt/pkg && make reinstall clean
Installation nginx, PHP, and MySQL:

1) Nginx:

Code: Select all

cd /usr/ports/www/nginx && make config-recursive
make install clean
Une boite de dialogue s'affiche et nous invite à sélectionner les modules que l'on souhaite installer, valider celles ci
HTTP_DAV, HTTP_GZIP_STATIC, HTTP_PERL, HTTP_SSL, HTTP_DAV_EXT
Pour les fututres boites de dialogue qui s'afficheront, vous accepterez par defaut en tapant sur la touche entrée.

2) PHP:

Code: Select all

cd /usr/ports/lang/php5 && make install clean
Sélectionnez le module FPM

Code: Select all

cd /usr/ports/lang/php5-extensions && make install
sélectionnez les modules suivants
CURL, GD, IMAP, MBSTRING, MCRYPT, MySQL, MySQLi, OPENSSL, PDO_MySQL, ZIP, ZLIB
3) MySQL:

Code: Select all

cd /usr/ports/databases/mysql55-server/ && make install clean
Configuration de l'Auto-start:
On va mainteant configurer nginx, PHP-FPM, and MySQL pour le démarrage au boot du système

Code: Select all

ee /etc/rc.conf
On y ajoute les lignes suivantes

Code: Select all

nginx_enable="YES"
php_fpm_enable="YES"
mysql_enable="YES"
Configuration de MySQL:
Pour configurer Mysql on va créer le fichier de configuration my.cnf

Code: Select all

ee /usr/local/etc/my.cnf
Et on y ajoute les lignes suivantes
# The MySQL server configuration
[mysqld]
socket = /tmp/mysql.sock

# Don't listen on a TCP/IP port at all.
skip-networking
skip-name-resolve

#Expire binary logs after one day:
expire_logs_days = 1
On démarre ensuite mysql et on définit le mot de passe de l'utilisateur root

Code: Select all

service mysql-server start
mysql_secure_installation
Création de MySQL Database:

Code: Select all

mysql -u root -p
CREATE DATABASE pydiodb;
CREATE USER "pydio"@"localhost" IDENTIFIED BY "ChangeThisPassword";
GRANT ALL PRIVILEGES ON pydiodb.* TO "pydio"@"localhost";
FLUSH PRIVILEGES;
quit
On va maintenant créer les certificats ssl

Code: Select all

cd /usr/local/etc/nginx
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out ssl-bundle.crt
cp server.key server.key.orig
openssl rsa -in server.key.orig -out server.key
Configuration PHP:

Code: Select all

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
ee /usr/local/etc/php.ini
Repérer les lignes ci dessous
output_buffering = 4096
;session.save_path = "/tmp"
upload_max_filesize = 2M
post_max_size = 8M
date.timezone = America/Los_Angeles
Et modifiez les comme indiqué ci dessous
output_buffering = OFF
session.save_path = "/tmp"
upload_max_filesize = 5120M
post_max_size = 5120M
date.timezone = America/New_York
Modifiez le timezone en vous aidant de ce lien
http://php.net/manual/en/timezones.php

Configuration de PHP-FPM:

Code: Select all

ee /usr/local/etc/php-fpm.conf
Remplacer le contenu par
[global]
pid = run/php-fpm.pid

[PYDIO]
listen = /var/run/phph-fpm.socket
listen.owner = www
listen.group = www
listen.mode = 0666

listen.backlog = -1
listen.allowed_clients = 127.0.0.1

user = www
group = www

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Code: Select all

ee /usr/local/etc/nginx/fastcgi_params
Remplacer le contenu par:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
On demarre le service

Code: Select all

service php-fpm start
Configuration de Nginx:

Code: Select all

ee /usr/local/etc/nginx/nginx.conf
Remplacer le contenu par :
user www;
### Change the number of workers to the same number of cores your server has
worker_processes 4;

pid /var/run/nginx.pid;

events {
worker_connections 512;
}

http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

# GENERAL
ignore_invalid_headers on;
sendfile on;
server_name_in_redirect off;
server_tokens off;

#SSL
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;
ssl_prefer_server_ciphers on;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

# TCP
tcp_nodelay off;
tcp_nopush on;

# Timeouts
client_body_timeout 65;
client_header_timeout 65;
keepalive_timeout 65 65;
send_timeout 65;

# Compression
gzip on;
gzip_buffers 256 8k;
gzip_comp_level 9;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/css text/javascript text/mathml text/plain text/xml application/x-javascript application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

# Redirects HTTP to HTTPS
server {
listen 80;
### Change the following two lines to match your website name
server_name example.com http://www.example.com;
return 301 https://example.com$request_uri;

# Prevent Clickjacking
add_header X-Frame-Options "SAMEORIGIN";
}

# PYDIO (ssl/tls)
server {
listen 443 ssl;
### Change the following line to match your website name
server_name example.com http://www.example.com;
root /usr/local/www/pydio;
index index.php;
### If you changed the maximum upload size in PHP.ini, also change it below
client_max_body_size 5120M;

# Prevent Clickjacking
add_header X-Frame-Options "SAMEORIGIN";

# SSL Settings
### If you are using different names for your SSL certificate and key, change them below:
ssl_certificate /usr/local/etc/nginx/ssl-bundle.crt;
ssl_certificate_key /usr/local/etc/nginx/server.key;
add_header Strict-Transport-Security "max-age=16070400; includeSubdomains";

# Set the custom error pages
error_page 404 = /data/public/404.html;
error_page 403 = /data/public/404.html;

# Logs
error_log /var/log/pydio.nginx.error.log;
### Uncomment the line below if you don't want nginx logging access to the server.
#access_log off;

# Remove direct access to the following folders & files
location ~* ^/(?:\.|conf|data/(?:files|personal|logs|plugins|tmp|cache)|plugins/editor.zoho/agent/files) {
deny all;
}

location ~* /data/public/.*.(ser|htaccess)$ {
deny all;
}

# Stops the annoying error messages in the logs
location ~* ^/(favicon.ico|robots.txt) {
log_not_found off;
}

# WebDAV Rewrites
location /shares {
if (!-f $request_filename) {
rewrite ^/shares /dav.php last;
break;
}

if (!-d $request_filename) {
rewrite ^/shares /dav.php last;
break;
}
}

# Enables PHP
location ~ \.php$ {
fastcgi_pass unix:/var/run/phph-fpm.socket;
try_files $uri =404;
fastcgi_param HTTPS on;
include fastcgi_params;
}

# Enables Caching
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 7d;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
}
}
Important : Aux emplacements marqués de ### vous devrez adapter les paramètres avec les votres notamment au niveau de l'adresse du serveur ou vous pourrez par exemple mettre votre IP avec https
### Change the following two lines to match your website name
server_name example.com http://www.example.com;
On télécharge ensuite Pydio

Code: Select all

fetch http://sourceforge.net/projects/ajaxplorer/files/pydio/stable-channel/6.0.6/pydio-core-6.0.6.tar.gz
tar -xzvf pydio-*
mv pydio-core-6.0.6 /usr/local/www/pydio
chown -R www:www /usr/local/www/pydio
chmod -R 770 /usr/local/www/pydio
On va modifier quelques paramètres dans le fichier de configuration de Pydio

Code: Select all

ee /usr/local/www/pydio/conf/bootstrap_conf.php
Modifier
//define("AJXP_LOCALE", "en_EN.UTF-8");
Par
define("AJXP_LOCALE", "en_US.UTF-8");
Et enfin on relance nginx

Code: Select all

service nginx start
Accéder à Pydio et Configuration
Dans le navigateur vous tapez https://ip_jail
Vous allez maintenant être invité dans l'espace de configuration de pydio. Allez dans “Admin access” puis “Configurations storage”
Changez le mot de passe par celui que vous aviez choisi plus pour mysql
Storage Type: Database
Enable Notifications: Yes
Database: MySQL
Host: localhost
Database: pydiodb
User: pydio
Password: The password you chose earlier
Ensuite vous cliquez sur “Try connecting to the database”, cela va vérifier la connection de Pydio avec Mysql. Si c'est bon vous cliquez sur “Install Pydio Now!”

Pydio est maintenant installé et opérationnel

Enjoy it ;)

Locked

Return to “Tuto”