An open-source scalable personal cloud

Storage back-end

StackSync is ready to use different solutions as a storage  back-end. This is possible due to the metadata decoupling from the raw data. At this moment, StackSync only implements one OpenStack Swift due to its features. Next we provide a guideline to get your Swift ready for StackSync.

OpenStack Swift installation

If you are planning to use StackSync in a production environment, see how to install it here.

Otherwise, if you just want to test or develop some new feature, you could use this simple manual to install Swift in a VM.

StackSync API for Swift

To allow mobile and web devices to access StackSync data, it must be installed a Swift module in the Swift proxy.


Install python-magic library:


Download the source code from here.

Install StackSync REST API with:

Alter your proxy-server.conf pipeline to enable apiweb module:



Add to your proxy-server.conf the section for the StackSync WSGI filter::

NOTE: If rpc_server_ip and rpc_server_port are not defined the default values will be and 61234.

Restart the proxy:

Create users

To create a user in Swift and SyncService, you have to use the script (LINK HEREE!).

First, you have to open and modify the script to set the values of:

  • PROXY_IP: Set to the Swift proxy IP.
  • SERVICE_TOKEN: Keystone admin token.

After that, execute the script (LINK HEREEE!) to install the necessary tools and modify the file settings.conf. This file contains the information related to the database that the SyncService uses to store file metadata. Its values are:

  • backend: The database used. In this case postgres
  • ip-db: Database IP
  • postgres-db: Database name.
  • postgres-db-user: Database user.
  • postgres-db-password: User passord.

Once that everything is ready, you just need to execute the script with the parameters:

  • User role.
  • User tenant.
  • User name.
  • User password.
  • User quota (not used yet)

Example: ./ users peter peter secr3t 2048

WARNING: In the current version, tenant and user name must be the same.