Future-proof content collaboration platform

Homepage | Dev Guide | GitHub-Repository | Issue-Tracker

License Badge GoDoc Build Status Go Report Card

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.

Getting Started

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.

Prerequisites

The following elements are required to compile and run pydio 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 developped and tested Pydio Cells on MacOS, Ubuntu, Debian and CentOS. Windows version might still have unknown glitches and is not yet supported.

Installing

Assuming that your system meets the above prerequisites, building the Pydio Cells backend from the source code is quite straight forward:

# 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

Note on the third party libraries

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 have been vendored.

Please also note that we had to fork a few libraries before integrating them as dependencies, most important being minio. If you need to modify this part of the code, please get in touch with us.

Running the tests

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.

Deployment

Binaries are currently provided for Linux, MacOSX and Windows distributions. To deploy them on a live system, please see the Installation Guide instructions.

Built With

Pydio Cells uses many open source golang libraries. Most important ones are listed below, please see DEPENDENCIES for an exhaustive list of other libs and their licenses.

  • Micro - Micro-service framework
  • Minio - Objects server implementing s3 protocol

Contributing

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.

Versioning

We use Semantic Versioning. For all available versions, see the release list.

Authors

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.

License

This project is licensed under the AGPLv3 License - see the LICENSE file for more details.

Owner
Pydio
Open source file sharing platform. Contributors welcome, pydio/cells is the main server project.
Pydio
Comments
  • Switching Pydio Cells v3 branch to v2 branch, files do not appear anymore

    Switching Pydio Cells v3 branch to v2 branch, files do not appear anymore

    I've just updated my Pydio Cells to the latest version and now all my files are gone. All the files are still located on the drive however i'm unable to identify what is what since they are all encrypted into random strings

    Please help i dont have a backup D: pydio1 pydio2

  • cells-cal data sync fails

    cells-cal data sync fails

    When I try to run: "./cells-ctl data sync" I get the following error:

    Resync Failed: {"id":"go.micro.client","code":500,"detail":"none available","status":"Internal Server Error"} [Time taken : 102.336273ms]

    I get the error with or without specifying a source. Would you have an idea?

    Versions:

    Distributor ID: Ubuntu Description: Ubuntu 18.04.1 LTS Release: 18.04 Codename: bionic

    Cells: 1.2.3

  • Request - ARM Build

    Request - ARM Build

    Hi all, can we please get an ARM based build for v3.0 please? It was told a few months ago we would get one when the next major version was released but I don't see one anywhere.

    Thanks!

  • Warning, could not find static directory for web resoures idm/auth/web - Only API and GRPC accesses will be available

    Warning, could not find static directory for web resoures idm/auth/web - Only API and GRPC accesses will be available

    Hi,

    Latest Cells Home edition. Ubuntu Bionic up-to-date, MariaDB etc.

    Have had little luck getting cells to run under the "pydio" user - I followed your guide to the letter, and I am a longtime web developer (superuser) so I know what I am doing... Have you tested your guide on Ubuntu Bionic? Or at all?

    I encountered a whole host of problems. Tried starting over just running it as root and not bothering with SSL. I finally get cells to bind to port 80 - but when visiting the frontend I just get a "File not found" message, from Caddy I presume.

    The cells startup log reveals:

    2018-08-16T20:07:09.341Z INFO Warning, could not find static directory for web resoures idm/auth/web - Only API and GRPC accesses will be available

    Is this beta software?

  • Unable to build with go 1.11

    Unable to build with go 1.11

    Here is the output of make dev using go 1.11.1:

    go build\
     -ldflags "-X github.com/pydio/cells/common.version=0.2.0\
     -X github.com/pydio/cells/common.BuildStamp=2018-01-01T00:00:00\
     -X github.com/pydio/cells/common.BuildRevision=dev"\
     -o cells\
     main.go
    # command-line-arguments
    github.com/pydio/cells/vendor/golang.org/x/crypto/blake2b.supportsAVX2: relocation target runtime.support_avx2 not defined
    github.com/pydio/cells/vendor/golang.org/x/crypto/blake2b.supportsAVX: relocation target runtime.support_avx not defined
    make: *** [Makefile:49: dev] Error 2
    

    It works perfectly with go 1.10.3.

    Maybe this issue could help: https://github.com/golang/go/issues/25098.

  • IE Compatibility Mode Windows Binary

    IE Compatibility Mode Windows Binary

    Hello, I have downloaded and installed the latest Windows Binary for the Pydio Cells. It works perfectly fine in Google Chrome. The company I am installing it in has IE defaulted to IE 7 for legacy pages. I know I need to add <meta http-equiv="X-UA-Compatible" content="IE=edge"> to the web files … but for the life of me I can’t find them the location on the computer. it is not in the appdata folder unless I am overlooking it. Can someone please help me out? The company wants to see it running in IE before they look into getting enterprise.

  • Mailer: Sender control feature, Default sender display name, fix

    Mailer: Sender control feature, Default sender display name, fix

    This PR will:

    • add a sender control feature to mailer to allow the admin to control how the from/envelope sender is used
    • add default sender display name
    • fix sender display name over written by login name

    The two additional features add configuration options on the mailer configuration page.

    The sender control feature adds 3 options:

    • User address (default and current behaviour)
    • User address with sender header (add Sender header using the default FROM address/name, use the default FROM address for envelope MAIL [automatically done by gomail])
    • Default address (use the default FROM address/name for From and MAIL)

    This changes have been manually tested using the SMTP engine.

  • [BUG] Add LocalName parameter on SMTP mailer

    [BUG] Add LocalName parameter on SMTP mailer

    When selecting SMTP server, Cells can't send a mail, because Cells send localhost in EHLO command, some mail servers reject non-FQDN helo server name. Please add Dialer.LocalName in pydio.json and use it.

  • Time-consuming uploads break

    Time-consuming uploads break

    Hello, Pydio-Team I've been uploading a very large file - about 30 GBs. Pydio automatically splits them into smaller chunks and uploads them one by one.

    First I found myself unable to upload the file because the session kept closing while idling on my pydio-website.

    For that reason I tried to keep browsing through folders in order to keep the session alive. When doing so the upload keeps starting fron scratch again after some time.

  • Pydio Cells is not compatible with modern Reverse Proxys

    Pydio Cells is not compatible with modern Reverse Proxys

    I've played around a while, but it seems like pydio is not able to be accessible behind traefik reverse proxy and ssl offloading.

    Opening URL http://cloud.berndklaus.at:8080 in your browser. Please copy/paste it if the browser is not on the same machine.
    2018-09-11T22:02:11.204Z        INFO    [INFO] cloud.berndklaus.at - No such site at :8080 (Remote: 10.0.0.115, Referer: )
    

    I've used all possible combinations of the CELLS_BIND and CELLS_EXTERNAL Env Vars. Nothing did work. Traefik is basicly offloading ssl, it also redirects http to https. All other services work pretty well.

    Finally this solution worked so that i can connect through the proxy

          image: pydio/cells:latest
          restart: always
          volumes: ["static:/root/.config/pydio/cells/static/pydio", "data:/root/.config/pydio/cells/data"]
          environment:
            - CELLS_BIND=cloud.berndklaus.at:8080
            #- CELLS_EXTERNAL=cloud.berndklaus.at:8080
            - CELLS_NO_SSL=1
          networks:
            proxy:
              aliases:
                - cells
            default:
          deploy:
            replicas: 1
            labels:
              - "traefik.port=8080"
              - "traefik.docker.network=proxy"
              - "traefik.frontend.rule=Host:cloud.berndklaus.at"
              - "traefik.backend=cells"
              - "traefik.frontend.entryPoints=http,https"
    

    But then the install failes:

    2018-09-11T21:54:55.354Z ERROR pydio.grpc.gateway.proxy Could not run {"error": "cannot create storage without CA URL"}

    Setup is contiuing but i just receive "Bad Gateway" after.. The Documentation is not really saying alot about this...

  • Joplin sync upload error WebDAV (Hidden files/folders)

    Joplin sync upload error WebDAV (Hidden files/folders)

    Hi,

    For now many days, I tried Cells to replace my Seafile instance. But I have a problem with Joplin synchronization (WebDAV) as you can see on my screenshot, I have DAV ERROR when Joplin try to make a PUT request. image Have you ever see this issue ?

    Thanks for your help !

  • symlink doesn't work

    symlink doesn't work

    I upgraded from version 3.0.9 to version 4.0.4 (docker) Datasource pointing to a folder where there was a symlink to another folder stopped seeing files in this symlink, in the console writes pydio.grpc.data.sync.motto Empty Patch : nothing to do

    Docker mount read-only /archive/ext/moto <-> /mnt/user/bzteam/archive/

    /archive/ext # ls -la
    total 0
    drwxr-xr-x    1 1000     users            8 Nov 26 22:27 .
    drwxr-xr-x    1 root     root             6 Nov 26 22:28 ..
    drwxrwxrwx    1 1000     users           42 Jun 21 17:39 moto
    
    /data/common # ls -la
    total 0
    drwxrwxrwx    1 1000     users           66 Nov 26 22:36 .
    drwxr-xr-x    1 root     root            12 Nov 26 22:27 ..
    drwxr-xr-x    1 root     root           135 Nov 26 15:23 .minio.sys
    drwxrwxrwx    1 1000     users           62 Nov 24 16:34 files
    drwxr-xr-x    1 1000     users           45 Nov 26 22:49 motoa
    
    /data/common/motoa # ls -la
    total 4
    drwxr-xr-x    1 1000     users           45 Nov 26 22:49 .
    drwxrwxrwx    1 1000     users           66 Nov 26 22:36 ..
    -rw-r--r--    1 root     root            36 Nov 26 22:37 .pydio
    lrwxrwxrwx    1 1000     users           17 Nov 26 22:49 motol -> /archive/ext/moto
    
       "pydio.grpc.data.sync.motto": {
          "Name": "motto",
          "StorageConfiguration": {
            "folder": "/data/common/motoa",
            "nativeEtags": "true",
            "normalize": "false"
          },
          "ObjectsServiceName": "local3",
          "ObjectsBucket": "motoa",
          "ApiKey": "*****",
          "ApiSecret": "******"
        },
    
        "pydio.grpc.data.index.motto": {
          "dsn": "default",
          "tables": {
            "commits": "data_motto_commits",
            "nodes": "data_motto_nodes",
            "tree": "data_motto_tree"
          }
        },
    
  • Collabora Online (libre office) plugin wrong works with different domain

    Collabora Online (libre office) plugin wrong works with different domain

    In Collabora Online Plugin settings we can add different domain for document server, but front end component https://github.com/pydio/cells/blob/main/frontend/front-srv/assets/editor.libreoffice/res/js/editor.js do not use this params for url generation, instead it use https://github.com/pydio/cells/blob/5fba29c51e4e8f562e39e0ac765431f83a5aae9e/frontend/front-srv/assets/editor.libreoffice/res/js/editor.js#L53

    that's mean in result we get url without domain, which (by default) linked with current domain:

    <iframe style="..." src="/browser/dist/cool.html?host=wss://cloud.examle.com&amp;WOPISrc=https%3A%2F%2Fcloud.examle.com%2Fwopi%2Ffiles%2F2c...88b&amp;access_token=WOB...usteL8&amp;permission=edit"></iframe> 
    

    This is wrong if we use document server on different domain. I think it should something like this:

    const iframeUrl = `${configs.get("LIBREOFFICE_SSL") ? "https" : "http"}://${configs.get("LIBREOFFICE_HOST")}:${configs.get("LIBREOFFICE_PORT")}${configs.get("LIBREOFFICE_CODE_VERSION") === "v21" ? "/browser/dist/cool.html" : "/loleaflet/dist/loleaflet.html"}`;
    

    For fast fixing this problem, if you use Nginx, add redirection to right domain, while bug not fixed:

        location /browser/dist/cool.html {
            return 301 $scheme://document.server.domain.here.com$request_uri;
        }
    

    I think #379 the same.

    Actual for Pydio Cells version 3 and 4.

  • Cells-sync 0.9.2 doesn't trigger multipart uploads proprerly with a Cells v4 server and fails at 5GB using an S3 backend

    Cells-sync 0.9.2 doesn't trigger multipart uploads proprerly with a Cells v4 server and fails at 5GB using an S3 backend

    I'm running into troubles using big files with an S3-compatible storage backend, namely Wasabi. My uploads get discarded with the following error message if they weight more than 5GB:

    [ERROR] Cannot PutObject Your proposed upload size ‘11180389380’ exceeds the maximum allowed object size ‘5368709120’ for single PUT operation.
    

    Reading the Wasabi doc, 5GB seems to be the threshold where their S3 API is expecting multipart uploads rather than single PUT operations: https://wasabi-support.zendesk.com/hc/en-us/articles/115001684511-What-are-the-minimum-and-maximum-object-sizes-that-can-be-stored-in-Wasabi- (they actually recommend multipart starting at 100MB file sizes).

    I'm currently using Pydio Cells 4.0.0-rc5, in a Kubernetes setup described more in-depth here: https://forum.pydio.com/t/broken-setup-in-kubernetes-500-502-ws-xhr-errors/4691

  • "Overwrite existing files" UI is unclear and breaks if modal is closed.

    image

    What would happen when we rename folders THEN conflicting files? I assume renaming the folder would mean there are no conflicts. So if there was a folder name conflict and we change it are we going to go from Folder/Text.txt to Folder(1)/Text(1).txt ?

    Options 2 and 3 make sense.

    I think there is an opportunity here for another option: Ignore/Skip existing files.

    Also currently there is no way to know what file/folder you are answering for in your upload queue.

    Lastly if you click outside of the dialog/modal, the upload is left in a pending state with no way to bring back the dialog. Clicking start on the queue will overwrite the files.

  • Rewrite Host header for proxied connections to Collabora

    Rewrite Host header for proxied connections to Collabora

    My understanding of how Pydio works with Collabora is that the user browser will make a request to pydio.mydomain.com/loleaflet/dist/loleaflet.html which will be proxied by Pydio to the actual Collabora service collabora.mydomain.com. However my load balancer / reverse proxy shows that proxied request still uses pydio.mydomain.com in Host header, which is problematic for virtual host based proxies.

    Please rewrite the Host header to the actual Collabora host name configured.

📕 twtxt is a Self-Hosted, Twitter™-like Decentralised microBlogging platform. No ads, no tracking, your content, your data!
📕 twtxt is a Self-Hosted, Twitter™-like Decentralised microBlogging platform. No ads, no tracking, your content, your data!

twtxt ?? twtxt is a Self-Hosted, Twitter™-like Decentralised micro-Blogging platform. No ads, no tracking, your content, your data! Technically twtxt

Jul 26, 2021
Proof-of-concept SLSA provenance generator for GitHub Actions

SLSA GitHub Actions Demo A proof-of-concept SLSA provenance generator for GitHub Actions. Background SLSA is a framework intended to codify and promot

Nov 4, 2022
CNCF Jaeger, a Distributed Tracing Platform

Jaeger - a Distributed Tracing System Jaeger, inspired by Dapper and OpenZipkin, is a distributed tracing platform created by Uber Technologies and do

Jan 2, 2023
Micro is a platform for cloud native development
Micro is a platform for cloud native development

Micro Overview Micro addresses the key requirements for building services in the cloud. It leverages the microservices architecture pattern and provid

Dec 29, 2022
Cloud-native and easy-to-use application management platform | 云原生且易用的应用管理平台
Cloud-native and easy-to-use application management platform | 云原生且易用的应用管理平台

Website • Documentation What is NEW! August 24, 2020 ,Rainbond 5.2 Stable version is officially released View Release Rainbond Introduction Cloud nati

Dec 29, 2022
goTempM is a full stack Golang microservices sample application built on top of the Micro platform.
goTempM is a full stack Golang microservices sample application built on top of the Micro platform.

goTempM is a full stack Golang microservices sample application built on top of the Micro platform.

Sep 24, 2022
Erda is an open-source platform created by Terminus to ensure the development of microservice applications.
Erda is an open-source platform created by Terminus to ensure the development of microservice applications.

Erda is an open-source platform created by Terminus to ensure the development of microservice applications.

Jan 5, 2023
A Micro-UTP, plug-able sanity checker for any on-prem JFrog platform instance

hello-frog About this plugin This plugin is a template and a functioning example for a basic JFrog CLI plugin. This README shows the expected structur

Dec 7, 2021
Istio - An open platform to connect, manage, and secure microservices

Istio An open platform to connect, manage, and secure microservices. For in-dept

Jan 5, 2022
An open platform to connect, manage, and secure microservices.

Istio An open platform to connect, manage, and secure microservices. For in-depth information about how to use Istio, visit istio.io To ask questions

Feb 6, 2022
A simple video hosting platform that enables people to share and view clips.

Project Clips Project Clips is a simple video hosting platform that enables people to share and view clips. Getting Started Using Docker Note: Make su

Sep 26, 2022
Placeholder for the future project (lets-go-chat)Placeholder for the future project (lets-go-chat)

Placeholder for the future project (lets-go-chat)Placeholder for the future project (lets-go-chat)

Jan 10, 2022
Mattermost is an open source platform for secure collaboration across the entire software development lifecycle.
Mattermost is an open source platform for secure collaboration across the entire software development lifecycle.

Mattermost is an open source platform for secure collaboration across the entire software development lifecycle. This repo is the primary source for c

Jan 2, 2023
A GitHub CLI extension that displays collaboration-related information about a GitHub repository.
A GitHub CLI extension that displays collaboration-related information about a GitHub repository.

collab-scanner GitHub CLI extension A GitHub CLI extension that displays collaboration-related information on a repository. Install gh extension insta

Dec 30, 2022
Svenska-yle-rss-content-fixer - Attach content to Svenska Yle RSS feeds

svenska-yle-rss-content-fixer This little tool attaches article content to the S

Oct 4, 2022
Aboriginal Generics: the future is here!
Aboriginal Generics: the future is here!

Aboriginal Generics: the future is here! Inspired by this gem of an idea (click the image to go to the original comment): Installation go get github.c

Oct 3, 2022
🌳 📂 The utility displays a tree of directories and files(symlinks in future).

dirTree The utility displays a tree of directories and files. usage: dirTree [-f] How it works with directory, where I wrote this project for example

Aug 12, 2021
Hashing algorithms simplified (supports Argon2, Bcrypt, Scrypt, PBKDF2, Chacha20poly1305 and more in the future)

PHC Crypto Inspired by Upash, also implementing PHC string format Usage Currently there are two options of using this package: Import all Import speci

Nov 27, 2022
Create production ready microservices mono repo pattern wired with Neo4j. Microservices for other languages and front end repos to be added as well in future.
Create production ready microservices mono repo pattern wired with Neo4j. Microservices for other languages and front end repos to be added as well in future.

Create Microservices MonoRepo in GO/Python Create a new production-ready project with backend (Golang), (Python) by running one CLI command. Focus on

Oct 26, 2022
Welcome to the future of programming languages: OK?
Welcome to the future of programming languages: OK?

OK? Try it out on the playground OK?'s mascot: Quentyn Questionmark. Programming Is Simple Again OK? is a modern, dynamically typed programming langua

Jan 1, 2023