Pydio 6 Enterprise + Nginx + letsencrypt

  1. Install nginx mainline
    a. http://nginx.org/en/linux_packages.html
  2. Sign up for Pydio 6 Enterprise: https://pydio.com/en/get-pydio
  3. Add Pydio 6 enterprise repositories: https://pydio.com/en/node/1045
  4. Install one more item (or 2 if using sqlite)
    apt-get install php5-ioncube-loader

    apt-get install php5-sqlite

  5. Follow instructions for setting up Pydio 6 with Nginx: https://pydio.com/en/docs/kb/system/installing-debiannginx
  6. Make some changes to the provided config file:
server {  
        server_name www.example.com;
        listen 80;
        rewrite ^ https://$server_name$request_uri? permanent;
}
server {  
        server_name www.example.com;
        root /var/www/localhost/htdocs/pydio6;
        index index.php;
        listen 443 ssl; //add http2 for better results
        keepalive_requests    10;
        keepalive_timeout     60 60;
        access_log /var/log/nginx/access_pydio6_log;
        error_log /var/log/nginx/error_pydio6_log;

        client_max_body_size 15M; //Change this to your max file size
        client_body_buffer_size 128k;

        rewrite ^/dashboard|^/settings|^/welcome|^/ws- /index.php last;
        if ( !-e $request_filename ) {
                # WebDAV Rewrites
                rewrite ^/shares /dav.php last;
                # Sync client
                rewrite ^/api /rest.php last;
                # External users 
                rewrite ^/user ./index.php?get_action=user_access_point last;
                # Public shares
                rewrite ^/data/public/([a-zA-Z0-9_-]+)\.php$ /data/public/share.php?hash=$1?;
        }
        rewrite ^/data/public/([a-zA-Z0-9_-]+)--([a-z]+)$ /data/public/share.php?hash=$1&lang=$2?;
        rewrite ^/data/public/([a-zA-Z0-9_-]+)$ /data/public/share.php?hash=$1?;

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

        # Only allow these request methods and do not accept DELETE, SEARCH and other methods
        if ( $request_method !~ ^(GET|HEAD|POST|PROPFIND|OPTIONS)$ ) {
                return 444;
        }

        location ~* ^/(?:\.|conf|data/(?:files|personal|logs|plugins|tmp|cache)|plugins/editor.zoho/agent/files) {
                deny all;
        }
        # Enables PHP
        location ~ \.php$ {
                # for ^/(index|plugins) request_uri should be changed
                set $request_url $request_uri;
                if ( $uri ~ ^/(index|plugins) ) {
                        set $request_url /;
                }
                include fastcgi.conf; //THIS NEEDS TO MATCH YOUR NGINX CONFIG
                fastcgi_param  REQUEST_URI $request_url;
                try_files $uri =404;
                fastcgi_pass unix:/tmp/php5-fpm.sock; //Check /etc/php5/fpm/pool.d/www.conf for the right socket
        }

       # Enables Caching
        location ~* \.(ico|css|js)$ {
                 expires 7d;
                add_header Pragma public;
                add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        }
}

` 7. Set up letsencrypt for SSL Encryption: https://aaronparecki.com/articles/2015/12/07/1/letsencrypt
8. Access your Pydio and follow the instructions
9. Not actually a fan of Pydio. Used it for a day. It's way too slow even with a MySQL database. Don't even try it with sqlite. Next stop, www.seafile.com!