Using Pydio In An ISPConfig 3 Multiserver Installation

This howto shows you, how you can use pydio (formerly Ajaxplorer) in a multi-server installation of ISPConfig 3.



You have to set up ISPConfig 3 on your servers. Best way to do this is to follow our "perfect server" tutorials.



You have to decide on which server you want pydio to reside. This will be the server where your customers access the pydio interface.
We will install the pydio software in a newly created web.
In this howto we use a two-server-setup where the first (master) server is with ip and the second (slave) server is with ip
We will install pydio into a subdirectory /webftp of our domain which lies on the slave server.
Please replace these data by the ones from your servers.


Create the website

You can skip this if you have already created a website or if you want to install pydio in a sub directory of an existing site.

Create the website by logging in to ISPConfig as client or admin and go to the "Sites" tab.

Click on the "Add new website" button and enter your domain in the "Domain" field. Then click "Save".


Install pydio

Log in to your server via ssh and change to the website path.

ssh root@
cd /var/www/

Now download the latest version of pydio from or directly from sourceforge. At the time of writing this, version 5.2.1 is the most current.
Do not use the distribution packages! Only use the tar.gz or zip!

Download and extract the package. Then rename the extracted directory.
Don't forget to alter the owner of all the files to match the owner of the website. In our case these are user web2 and group client1.

wget -O pydio.tar.gz
tar xzf pydio.tar.gz
mv pydio-core-5.2.1 webftp
rm pydio.tar.gz
chown -R web2:client1 webftp

Open the file webftp/conf/bootstrap_conf.php and uncomment this line:

define("AJXP_LOCALE", "en_EN.UTF-8");

You might have to alter the value to match your local system, e. g. change it to en_US.UTF-8 or de_DE.UTF-8.

You should now be able to access the pydio installation at

If you get some warnings there, check the text and correct them where needed. Then click on "click here to continue to Pydio".

On the welcome page click on "Start wizard!".

Fill out the fields like this:

Admin access
Admin Login: <choose one yourself>
Admin Display Name: <choose one yourself>
Admin Password: <choose one yourself>

Global options
Fill the fields according to your needs.

Configuration storage
Storage Type: No Database (Quick start)

Add some users
Do not enter anything here.

Then click on the "Install pydio now" button.

After a few seconds you should be redirected to the login screen. Log in with the admin user and password you entered in the previous step.

On first login you will get a choice of what workspace to use. Select "My Files" and check the "Use this workspace as default" box. Then click "Enter".

Share this page:

19 Comment(s)

Add comment


From: Paulux at: 2014-02-25 14:31:08

After many try.

User don't login 

Error message is : 

Cannot find user, please try again. Make sure your Caps Lock is not engaged!


From: at: 2014-03-01 17:16:45

same for me :(

From: at: 2014-03-03 16:28:37

the same :/

From: Anonymous at: 2014-03-18 10:28:54

the same :(

From: mjota at: 2014-03-13 14:40:54

Same here, users can't login.

From: at: 2014-03-07 17:16:00

I have added a note to the tutorial:

Replace the setting for REPOSITORY_ID in the bootstap file (was ISPConfigFTP) by the LOWERCASE string, that you set as name when you created your workspace (e. g. webftp).

If this does not work, have a look in the file data/plugins/conf.serial/aliases.ser and use the md5 string from there as REPOSITORY_ID.

Don't forget to clear the cache again afterwards.

From: Anonymous at: 2014-03-12 12:40:49

Not working!

 I dont find this file: data/plugins/conf.serial/aliases.ser !!!

From: at: 2014-03-17 13:05:47

Then you might not have used serial config storage. Maybe you used sql storage during setup.

From: Anonymous at: 2014-03-22 07:19:00

If I used MySQL during setup, what i need to change in your code to make it work? and where I can get the md5 as you mensioned?

From: at: 2014-03-27 15:38:27

To be honest, the easiest thing would be to simply re-install. I don't know where the md5 hash is located in MySQL installations. When following the howto, the md5 hash is in the aliases.ser file as mentioned on page 3.

From: at: 2014-03-21 15:29:43

At first I had the error "Cannot find user, please try again. Make sure your Caps Lock is not engaged!" when trying to log in with one of my FTP user accounts created via ISPConfig 3. After some troubleshooting with Croydon, he narrowed it down to the REPOSITORY_ID value in "bootstrap.json". At least for my setup I needed not the repository name, but the md5 hash created for it in the file "data/plugins/conf.serial/aliases.ser". I cleared cache as further directed, and login was successful! I tried logging in with different users successfully, uploaded an image successfully, and edited and saved a text file successfully, all from within Pydio.

Thanks for the tutorial! I encourage others to contact the author as I did; please let him help you before leaving negative comments!

From: mmitchell at: 2014-04-23 18:16:44

In my testing it appears that get_ispc_host always returns "localhost". I believe the issue is that the following line:

$client = new SoapClient(null, array('location' => $soap_location, 'uri' => $soap_uri));

The variable $client appears to contain no data. I am able to log into all accounts that are on the local host just not ones on a remote system.

 Is it possible I don't have some need package?




From: at: 2014-04-28 11:22:52

You need to have soap enabled in php. Maybe this isn't the case on your server.

Localhost is just a fallback if fetching the host fails to prevent pydio from displaying strange errors.

From: Anonymous at: 2014-05-20 04:10:18

hello there,

i have an error after success login :

Loading Error : Invalid XML Document (see console)

From: at: 2014-06-16 07:29:16

As you can see above, I had the same error upon login.
The Solution is, to my shame, to follow the howto more precisely.

Unfotunately the instructions for editing bootstrap_repositories.php are a bit unclear.
You have to remove everything betwen
defined('AJXP_EXEC') or die( 'Access not allowed');

But MOST IMPORTANTLY do not delete anything after! Then you will be put directly in your WebFTP folder whithout any error!
On my first try I simply copy pasted the content of the box, leading to a white Page, no login, nothing.
When I tried again I completely forgot to edit the file, leading to the described XML Error

From: Moddie at: 2014-06-13 06:32:23

I am getting that same error "Loading Error: Invalid XML Document (see console)"

Everything else seems to be working just fine, might be because it is not automatically loading
any workspace (I have to manually select from the dropdown).

also just FYI
can be
that should work for everyone
The Following files would seem to have something to do with throwing/printing the Error,
perhaps one could work backwards from that?

root@pxe-test:~# grep -r -i "loading error" /usr/share/pydio/
/usr/share/pydio/conf/RELEASE_NOTE:class.remote_fsAccessDriver.php: Fix some option loading error while using the function Ajxp_PLUGIN::init(repository, options) manifest.xml: Disabling the remote_fs driver by default class.JumploaderProcessor.php: - Cross session resume implementation (doesn't work with smb) - partitioning now works with FTP - upload validation process now working for FTP and FS (details)
/usr/share/pydio/plugins/gui.ajax/res/js/ajaxplorer/class.RemoteNodeProvider.js:				if(ajaxplorer) ajaxplorer.displayMessage('ERROR', 'Loading error :'+e.message);
/usr/share/pydio/plugins/gui.ajax/res/js/ajaxplorer/class.RemoteNodeProvider.js:				else alert('Loading error :'+ e.message);
/usr/share/pydio/plugins/gui.ajax/res/js/ajaxplorer/class.RemoteNodeProvider.js:   				if(ajaxplorer) ajaxplorer.displayMessage('ERROR', 'Loading error :'+e.message);
/usr/share/pydio/plugins/gui.ajax/res/js/ajaxplorer/class.RemoteNodeProvider.js:   				else alert('Loading error :'+ e.message);

root@pxe-test:~# grep -r -i "invalid xml" /usr/share/pydio/
/usr/share/pydio/core/classes/sabredav/lib/Sabre/DAV/XMLUtil.php:            throw new Exception\BadRequest('The request body had an invalid XML body. (message: ' . $error->message . ', errorcode: ' . $error->code . ', line: ' . $error->line . ')');
/usr/share/pydio/plugins/gui.backbone/jquery-1.8.2.js:			jQuery.error( "Invalid XML: " + data );
/usr/share/pydio/plugins/gui.ajax/res/js/ajaxplorer/class.RemoteNodeProvider.js:		    throw new Error('Invalid XML Document (see console)');

From: Chris at: 2014-10-23 08:14:14

Hi and thanks for this great tutorial.

This one works just fine, except for the Download cart.

If I select a folder, right click on it and choose "to selection cart" the files within this folder are successfully added to the cart tab on the left. 

Now after I try to download this cart within the zip file there are only files with no extension you cannot open. They are completly corrupted. A single file download just works fine. 

 Any ideas whats causing this?

From: loadingjkr at: 2014-12-31 15:37:14

data/plugins/conf.serial/aliases.ser. This folder does not exist

Cannot find user, please try again. Make sure your Caps Lock is not engaged!


This is the tenth time I return it to install, I'm in Open Vz


can someone help us?

From: Alvin Charles at: 2015-04-16 21:44:14

Awesome tutorial, thanks. Minor typo, plugins/auth.ftp/manifest.xml should be plugins/authfront.webftp/manifest.xml in my version of pydio.