2014-02-12 06:24:13 -05:00
ShareLaTeX
==========
2014-02-21 05:18:33 -05:00
[ShareLaTeX ](https://www.sharelatex.com ) is now open source! ShareLaTeX is an online real-time collaborative LaTeX editor, and you can now run your own local version where you can host, edit, collaborate in real-time, and compile your LaTeX documents. We’ re still 100% focused on running the hosted version at http://www.sharelatex.com, but we want to be more flexible in how you can use ShareLaTeX, and give something back to our wonderful community.
**[Read more on our blog](https://www.sharelatex.com/blog/2014/02/21/sharelatex-is-now-open-source.html#.UwcnsEJ_ugc)**
Installation
------------
2014-02-08 14:40:56 -05:00
2014-02-21 14:29:52 -05:00
ShareLaTeX uses a service oriented architecture (SOA) where we have lots of small
2014-02-13 08:07:03 -05:00
APIs that talk to each other over HTTP and Redis pub-sub channels. This repository
pulls together all of the different services and allows you to set up and run
them quickly.
2014-02-08 14:40:56 -05:00
2014-02-28 13:36:27 -05:00
### Manually
2014-02-08 14:40:56 -05:00
First, check out a local copy of this repository:
2014-02-25 08:30:31 -05:00
```bash
git clone https://github.com/sharelatex/sharelatex.git
cd sharelatex
```
2014-02-08 14:40:56 -05:00
2014-02-13 08:07:03 -05:00
Next install all the node modules and ShareLaTeX services:
2014-02-08 14:40:56 -05:00
2014-02-25 08:30:31 -05:00
```bash
npm install
grunt install
```
2014-02-08 14:40:56 -05:00
2014-02-23 06:55:06 -05:00
This will create a config file in `config/settings.development.coffee` . You should open
this now and configure your AWS S3 credentials, and other custom settings.
2014-02-22 07:08:03 -05:00
Now check that your system is set up correctly to run ShareLaTeX (checks that you have
the required dependencies installed.) Watch out for any failures.
2014-02-25 08:30:31 -05:00
```bash
grunt check --force
```
2014-02-22 07:08:03 -05:00
2014-02-08 14:40:56 -05:00
When that has finished, run ShareLaTeX with
2014-02-25 08:30:31 -05:00
```bash
grunt run
```
2014-02-08 14:40:56 -05:00
ShareLaTeX should now be running at http://localhost:3000.
2014-02-28 13:36:27 -05:00
### With Vagrant
2014-02-28 13:36:50 -05:00
There is a Vagrant and Ansible backed VM installation script for ShareLaTeX, maintained by [@palkan ](https://github/palkan ), available here: https://github.com/palkan/sharelatex-vagrant-ansible
2014-02-28 13:36:27 -05:00
2014-03-06 05:12:53 -05:00
### With Docker
An [automatic docker-based installer ](https://github.com/tiagoboldt/sharelatex-docker ) is available. It depends on docker and will build a production environment for running ShareLaTeX on any supported platform.
2014-02-08 14:40:56 -05:00
Dependencies
2014-02-12 06:24:13 -05:00
------------
2014-02-19 10:37:47 -05:00
ShareLaTeX should run on OS X and Linux. You need:
2014-02-08 14:40:56 -05:00
2014-02-25 06:27:27 -05:00
* [Node.js ](http://nodejs.org/ ) 0.10 or greater. We recommend that you use [nvm ](https://github.com/creationix/nvm ) to install it.
2014-02-19 10:37:47 -05:00
* The [grunt ](http://gruntjs.com/ ) command line tools (Run `npm install -g grunt-cli` to install them)
2014-02-26 08:05:22 -05:00
* A local instance of [Redis ](http://redis.io/topics/quickstart ) (version 2.6 or later) and [MongoDB ](http://docs.mongodb.org/manual/installation/ ) running on their standard ports.
2014-02-25 10:38:41 -05:00
* [TeXLive ](https://www.tug.org/texlive/ ) 2013 or later with the `latexmk` program installed.
2014-02-08 14:40:56 -05:00
2014-02-13 08:07:03 -05:00
Config
------
2014-03-05 07:51:42 -05:00
ShareLaTeX should run out of the box, but if you want to adjust any settings you can do so by
editing the `config/settings.development.coffee` file. Available options are explained inline.
2014-02-19 08:24:52 -05:00
2014-02-08 14:40:56 -05:00
Other repositories
2014-02-12 06:24:13 -05:00
------------------
2014-02-08 14:40:56 -05:00
ShareLaTeX consists of many separate services, each with their own Node.js process
2014-02-13 08:07:03 -05:00
and source code repository. These are all downloaded and set upwhen you run
`grunt install`
2014-02-08 14:40:56 -05:00
The different services are:
2014-02-24 09:44:35 -05:00
### [web](https://github.com/sharelatex/web-sharelatex) [![Build Status](https://travis-ci.org/sharelatex/web-sharelatex.png?branch=master)](https://travis-ci.org/sharelatex/web-sharelatex)
2014-02-08 14:40:56 -05:00
2014-02-21 09:00:12 -05:00
The front facing web server that serves all the HTML pages, CSS and JavaScript
2014-02-08 14:40:56 -05:00
to the client. Also contains a lot of logic around creating and editing
projects, and account management.
2014-02-24 09:44:35 -05:00
### [document-updater](https://github.com/sharelatex/document-updater-sharelatex) [![Build Status](https://travis-ci.org/sharelatex/document-updater-sharelatex.png?branch=master)](https://travis-ci.org/sharelatex/document-updater-sharelatex)
2014-02-08 14:40:56 -05:00
2014-02-18 11:28:24 -05:00
Processes updates that come in from the editor when users modify documents. Ensures that
2014-02-08 14:40:56 -05:00
the updates are applied in the right order, and that only one operation is modifying
the document at a time. Also caches the documents in redis for very fast but persistent
modifications.
2014-02-24 09:44:35 -05:00
### [CLSI](https://github.com/sharelatex/clsi-sharelatex) [![Build Status](https://travis-ci.org/sharelatex/clsi-sharelatex.png?branch=master)](https://travis-ci.org/sharelatex/clsi-sharelatex)
2014-02-13 08:07:03 -05:00
The Common LaTeX Service Interface (CLSI) which provides an API for compiling LaTeX
documents.
2014-02-24 09:44:35 -05:00
### [filestore](https://github.com/sharelatex/filestore-sharelatex) [![Build Status](https://travis-ci.org/sharelatex/filestore-sharelatex.png?branch=master)](https://travis-ci.org/sharelatex/filestore-sharelatex)
2014-02-18 11:28:24 -05:00
2014-02-21 09:00:12 -05:00
An API for performing CRUD (Create, Read, Update and Delete) operations on binary files
2014-02-18 11:28:24 -05:00
(like images) stored in ShareLaTeX.
2014-03-05 08:39:21 -05:00
### [track-changes](https://github.com/sharelatex/track-changes-sharelatex) [![Build Status](https://travis-ci.org/sharelatex/track-changes-sharelatex.png?branch=master)](https://travis-ci.org/sharelatex/track-changes-sharelatex)
An API for compressing and storing the updates applied to a document, and then rendering a diff of the changes
between any two time points. *Still in development and not hooked into the UI yet* .
2014-02-13 08:07:03 -05:00
Contributing
------------
2014-02-23 16:37:07 -05:00
Please see the [CONTRIBUTING ](https://github.com/sharelatex/sharelatex/blob/master/CONTRIBUTING.md ) file for information on contributing to the development of ShareLaTeX. See [our wiki ](https://github.com/sharelatex/sharelatex/wiki/Developer-Guidelines ) for information on setting up a development environment and how to recompile and run ShareLaTeX after modifications.
2014-02-08 14:40:56 -05:00
2014-02-17 15:01:21 -05:00
Authors
---
2014-02-18 11:28:24 -05:00
- [Henry Oswald ](http://twitter.com/henryoswald )
- [James Allen ](http://twitter.com/thejpallen )
2014-02-20 11:37:34 -05:00
License
----
The code in this repository is released under the GNU AFFERO GENERAL PUBLIC LICENSE, version 3. A copy can be found in the `LICENSE` file.
Copyright (c) ShareLaTeX, 2014.