Go to file
yflory 3e802c2443 Fix overflowing content in profile 2017-07-05 10:14:43 +02:00
customize.dist Fix icon colors in the new menu (/pad app) 2017-07-04 15:57:34 +02:00
docs move documentation into docs folder 2017-05-31 10:10:33 +02:00
storage remove unused variables 2017-05-04 16:16:09 +02:00
www Fix overflowing content in profile 2017-07-05 10:14:43 +02:00
.bowerrc Added cryptsheet to cryptpad suite! 2015-01-29 17:55:18 +01:00
.dockerignore adding docker and docker-compose 2016-12-29 22:02:03 +01:00
.env adding docker and docker-compose 2016-12-29 22:02:03 +01:00
.flowconfig little flowey 2017-04-25 16:04:17 +02:00
.gitignore ignore blobstage 2017-06-01 18:16:37 +02:00
.jshintignore make register and login user clientside templates 2017-06-22 10:04:46 +02:00
.jshintrc remove unused variables 2017-05-04 16:16:09 +02:00
.travis.yml drop edge and IE from the test matrix 2017-06-01 10:56:11 +02:00
Dockerfile Cleanup Dockerfile, thanks to @kpcyrd 2017-04-09 11:38:37 +02:00
LICENSE #2 added license 2014-12-05 11:01:43 +01:00
TestSelenium.js disable failing tests 2017-06-01 10:40:41 +02:00
and_so_it_begins.png and so it begins 2014-10-31 16:42:58 +01:00
bower.json merge to master 2017-07-04 14:19:08 +02:00
config.example.js enable logging of rpc calls 2017-06-30 11:19:12 +02:00
container-start.sh little flowey 2017-04-25 16:04:17 +02:00
cryptofist.png now fix the logo again 2014-11-06 13:04:39 +01:00
docker-compose.yml adding docker and docker-compose 2016-12-29 22:02:03 +01:00
import add import script so admins can migrate lvl to files 2016-09-15 12:15:27 +02:00
package.json new version 2017-07-04 14:11:56 +02:00
pinneddata.js Merge branch 'soon' into staging 2017-05-31 15:01:09 +02:00
readme.md note which node version we use 2017-06-30 16:12:03 +02:00
rpc.js remove noisy log calls 2017-07-03 16:43:49 +02:00
server.js cache blobs for a year unless you're in dev mode 2017-06-19 11:29:13 +02:00

readme.md

XWiki labs logo

Unity is Strength - Collaboration is Key

and_so_it_begins.png

CryptPad is the zero knowledge realtime collaborative editor. Encryption carried out in your web browser protects the data from the server, the cloud and the NSA. This project uses the CKEditor Visual Editor and the ChainPad realtime engine. The secret key is stored in the URL fragment identifier which is never sent to the server but is available to javascript so by sharing the URL, you give authorization to others who want to participate.

Installation

Cryptpad depends on the Nodejs runtime. We recommend installing it via NVM to ensure that you are running an up to date version.

Once you have a recent runtime (we use v6.6.0):

git clone <this repo>
cd cryptpad
npm install
npm install -g bower ## if necessary
bower install

## copy config.example.js to config.js
cp config.example.js config.js

node ./server.js

Configuration

CryptPad should work with an unmodified configuration file, though there are many things which you may want to customize. Attributes in the config should have comments indicating how they are used.

$EDITOR config.js

If you are deploying CryptPad in a production environment, we recommend that you take the time to understand and correctly customize your server's Content Security Policy headers. Modern browsers use these headers to allow or deny actions from malicious clients which could compromise the confidentiality of your user's data.

These settings can be found in your configuration file in the contentSecurity and padContentSecurity sections.

Maintenance

Before upgrading your CryptPad instance to the latest version, we recommend that you check what has changed since your last update. You can do so by checking which version you have (see package.json), and comparing it against newer release notes.

To get access to the most recent codebase:

cd /your/cryptpad/instance/location;
git pull

To update dependencies:

# clientside dependencies
bower update;

# serverside dependencies
npm update;

Deleting all data and resetting Cryptpad

To reset your instance of Cryptpad and remove all the data that is being stored:

WARNING: This will reset your Cryptpad instance and remove all data

# change into your cryptpad directory
cd /your/cryptpad/instance/location;

# delete the datastore
rm -rf ./datastore

If you are using the mongodb adaptor, drop the relevant collection.

If you are using the leveldb adaptor, delete the datastore directory you have configured.

Testing

To test CryptPad, go to http://your.server:3000/assert/

You can use WebDriver to run this test automatically by running TestSelenium.js but you will need chromedriver installed. If you use Mac, you can brew install chromedriver.

Developing CryptPad

CryptPad is built with a lot of small javascript libraries. To make js files load faster, we apply an aggressive caching policy.

If you want to add new features to CryptPad, you'll want to turn off caching. You can do so by launching your server in dev mode, like so:

DEV=1 node server.js

Security

CryptPad is private, not anonymous. Privacy protects your data, anonymity protects you. As such, it is possible for a collaborator on the pad to include some silly/ugly/nasty things in a CryptPad such as an image which reveals your IP address when your browser automatically loads it or a script which plays Rick Astleys's greatest hits. It is possible for anyone who does not have the key to be able to change anything in the pad or add anything, even the server, however the clients will notice this because the content hashes in ChainPad will fail to validate.

The server does have a certain power, it can send you evil javascript which does the wrong thing (leaks the key or the data back to the server or to someone else). This is however an active attack which makes it detectable. The NSA really hates doing these because they might get caught and laughed at and humiliated in front of the whole world (again). If you're making the NSA mad enough for them to use an active attack against you, Great Success Highfive, now take the battery out of your computer before it spawns Agent Smith.

Still there are other low-lives in the world so using CryptPad over HTTPS is probably a good idea.

Setup using Docker

See Cryptpad-Docker

Translations

We'd like to make it easy for more people to use encryption in their routine activities. As such, we've tried to make language-specific parts of CryptPad translatable. If you're able to translate CryptPad's interface, and would like to help, please contact us!

You can also see our translation guide.

Contacting Us

You can reach members of the CryptPad development team on twitter, via our github issue tracker, on the freenode irc network, or by email.

Contributing

We love Open Source and we love contribution. It is our intent to keep this project available under the AGPL license forever but in order to finance more development on this and other FOSS projects, we also wish to sell other licenses to this software. Before making a pull request, please read and sign the Commons Management Agreement.

If you have any questions or comments, or if you're interested in contributing to Cryptpad, come say hi on IRC, #cryptpad on Freenode.

License

This software is and will always be available under the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. If you wish to use this technology in a proprietary product, please contact sales@xwiki.com