Skip to content

frappe/drive

Repository files navigation

Frappe Drive Logo

Frappe Drive

100% open source file storage, sharing, and collaboration

Frappe Drive

Website | Community | Documentation | Forum

Frappe Drive

Frappe Drive is a secure and open-source cloud storage platform with a modern user interface that makes storing, collaborating, and sharing files effortless. Create and manage documents, spreadsheets, and multimedia across teams to accelerate project completion.

Motivation

The idea of building a drive-like application has been floating around in Frappe since atleast 2015. While Frappe Framework has rather robust file handling itself, the need arose for building a standalone solution. As we dug deeper, what began as a simple file-sharing platform evolved into a comprehensive collaboration tool.

Key Features

Core — the file manager

  • Large file uploads using multi-part uploads
  • Folder uploads to maintain your structure in Drive
  • Preview files directly in your browser, supported file previews
  • Stream videos directly from the server
  • Search for all your files and files shared shared with you
  • View activity logs of a file to glance at the changes in permissions and file metadata
  • Share files and folders with users, groups, everyone on the site or publish publicly
  • Add guest users who have limited and controlled access to your site
  • Pool storage of all users together or assign a quota of storage to each user

Writer — the document editor

  • Collaborate with other users or guests in real time
  • Annotate, resolve and reply to other users to give suggestions
  • Manually version your documents to always be able to go back to an older version
  • Automatic versioning to make sure you never lose data
  • Import docx documents into the editor
More screenshots

Image Preview

File Sharing Dialog

Editor

Editor with real time editing

Under the Hood

  • Frappe Framework: A full-stack web application framework written in Python and Javascript. The framework provides a robust foundation for building web applications, including a database abstraction layer, user authentication, and a REST API.

  • Frappe UI: A Vue-based UI library, to provide a modern user interface. The Frappe UI library provides a variety of components that can be used to build single-page applications on top of the Frappe Framework.

  • TipTap: Tiptap is a wrapper over ProseMirror that provides some friendlier APIs and defaults.

  • ProseMirror: ProseMirror is a flexible, extensible toolkit for building rich-text editors with precise control over document structure and behavior.

  • YJS: The Content Free Replicated Data type (CRDT) at the core of the real time collaboration in both the document and annotation system.

Production setup

Managed Hosting

You can try Frappe Cloud, a simple, user-friendly and sophisticated open-source platform to host Frappe applications.

It takes care of installation, setup, upgrades, monitoring, maintenance and support of your Frappe deployments. It is a fully featured developer platform with an ability to manage and control multiple Frappe deployments.

Self hosting

Follow these steps to set up Frappe Drive in production:

Step 1: Download the easy install script

wget https://frappe.io/easy-install.py

Step 2: Run the deployment command

python3 ./easy-install.py deploy \
    --project=drive_prod_setup \
    [email protected] \
    --image=ghcr.io/frappe/drive \
    --version=stable \
    --app=drive \
    --sitename subdomain.domain.tld

Replace the following parameters with your values:

  • [email protected]: Your email address
  • subdomain.domain.tld: Your domain name where Drive will be hosted

The script will set up a production-ready instance of Frappe Drive with all the necessary configurations.

Installation

To set up the repository locally, follow the steps mentioned below:

Development Setup

Docker

The quickest way to set up Frappe Drive and take it for a test drive.

Frappe framework is multi-tenant and supports multiple apps by default. This docker compose is just a standalone version with Frappe Drive pre-installed. Just put it behind your desired reverse-proxy if needed, and you're good to go.

If you wish to use multiple Frappe apps or need multi-tenancy. I suggest moving over to our production ready self-hosted workflow, or join us on Frappe Cloud to get first party support and hassle-free hosting.

Step 1: Setup folder and download the required files

mkdir frappe-drive
cd frappe-drive

Step 2: Download the required files

Docker Compose File:

wget -O docker-compose.yml https://raw.githubusercontent.com/frappe/drive/main/docker/docker-compose.yml

Frappe Drive Bench Setup Script

wget -O init.sh https://raw.githubusercontent.com/frappe/drive/main/docker/init.sh

Step 3: Run the container and daemonize it

docker compose up -d

Bare Metal

Install bench and set up a frappe-bench directory by following the installation steps.

Step 1: Install Bench.

Step 2: Provided bench is all set up you can proceed to install Frappe Drive

bench get-app drive --branch main

Step 3: Install some Drive specific system packages

Ubuntu/Debian (apt based distros)

sudo apt install ffmpeg libmagic

MacOs

brew install libmagic ffmpeg

Step 4: Install drive once it's downloaded

bench install-app drive

Step 5: Start bench if it's not already running

bench start

Frappe Drive should be accessible at localhost:8000 or sitename:8000

Contribute

There are many ways you can contribute even if you don't code:

  1. You can start by giving a star to this repository!
  2. If you find any issues, even if it is a typo, you can raise an issue to inform us.

Warning

If you're self hosting Frappe Drive. Do not use the app as the only way to store your files. Always have backup strategy for your files.

Otherwise, consider our managed hosting on Frappe Cloud. It's the same exact code as from the main branch here, but with better support tooling and automated backups.

Learn and connect