Homepage | Dev Guide | GitHub-Repository | Issue-Tracker
Pydio Cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See the Deployment section below for notes on how to deploy the project on a live system.
The following elements are required to compile and run Pydio Cells on your machine:
- Go language v1.13 or higher (tested with latest 1.13, 1.14 & 1.15), with a correctly configured Go toolchain,
- MySQL database 5.6 or higher (or MariaDB equivalent). The new MySQL 8 authentication method is supported starting at Cells 1.4.1.
Note: We have developed and tested Pydio Cells on macOS, Ubuntu, Debian and CentOS. Windows version might still have unknown glitches and is not yet supported.
Assuming that your system meets the above prerequisites, building the Pydio Cells backend from the source code is quite straightforward:
# Retrieve the code
go get -u github.com/pydio/cells
# From this line on, we assume you are in Pydio Cells' code roots directory
cd $GOPATH/src/github.com/pydio/cells
# Build your binary
make dev
To have the environment running, you must also:
- Create a database in your chosen DB server,
- Run the Pydio Cells installer that will guide you through the necessary steps: you might refer to the official documentation for additional information.
./cells configure
We still currently manage third-party dependencies via the vendor mechanism: shortly said, we pick up and maintain specific versions of the sources for each dependency we use by copying them in the vendor/
subfolder. The binary is built using these codes.
When you clone the github.com/pydio/cells
repository, you then also have an embedded local copy of all the sources for you to investigate. Yet, you should not try to directly modify code that has been vendored.
Please also note that we had to fork a few libraries before integrating them as dependencies, the most important one being minio
. If you need to modify this part of the code, please get in touch with us.
Finally, please take into account that Go versions starting with 1.16 and beyond automatically assume a modules-based configuration, even if there is no go.mod
or go.sum
present in the folder (which will be created from scratch). Therefore, you must force Go to use the non-module-aware compilation strategy, which requires setting the environment variable GO111MODULE
to auto
: that way, if there is no go.mod
on a directory, Go will revert to the old-style, non-module-aware compilation. If in the future modules are implemented, then auto
will activate the module-aware compilation mode whenever it finds a go.mod
on a directory.
Under bash
this is accomplished with:
export GO111MODULE=auto
Set it before you start the compilation process!
You can also force Go to compile without modules, using the following command:
go env -w GO111MODULE=auto
but keep in mind that this will be set globally and thus apply to all your Go compilations, not only Pydio Cells!
To run the tests, simply do
go test -v ./...
Please read the CONTRIBUTING.md document if you wish to add more tests or contribute to the code.
Binaries are currently provided for Linux, macOS and Windows distributions. To deploy them on a live system, please see the Installation Guide instructions.
Pydio Cells uses many open-source Golang libraries. The most important ones are listed below, please see DEPENDENCIES for an exhaustive list of other libs and their licenses.
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us. You can find a comprehensive Developer Guide on our website. Our online docs are open-source as well, feel free to improve them by contributing!
We are also looking for help to translate the Cells interface in various languages. It is really easy to participate: just navigate to our page in the Crowdin translation tool, create an account and get started.
We use Semantic Versioning. For all available versions, see the release list.
See the list of contributors who participated in this project. Pydio Cells is also a continuation of the Pydio project and many contributions were ported from pydio-core to the code that can be found under frontend/front-srv/assets
.
This project is licensed under the AGPLv3 License - see the LICENSE file for more details.