|
|
@@ -1,32 +1,105 @@
|
|
|
ShareLaTeX Docker Image
|
|
|
=======================
|
|
|
|
|
|
-*THIS IS A WORK IN PROGRESS AND THESE INSTRUCTIONS DO NOT WORK YET!*
|
|
|
+**Please read this entire file before installing ShareLaTeX via Docker. It's only
|
|
|
+short but contains some important information.**
|
|
|
|
|
|
The recommended way to install and run ShareLaTeX Community Edition is via Docker:
|
|
|
|
|
|
```
|
|
|
-$ docker run -d -v /sharelatex-data:/var/lib/sharelatex --net=host --name=sharelatex sharelatex/sharelatex
|
|
|
+$ docker run -d -v sharelatex:/var/lib/sharelatex --name=sharelatex sharelatex/sharelatex
|
|
|
```
|
|
|
|
|
|
This will download the ShareLaTeX image and start it running in the background.
|
|
|
|
|
|
-**Which port does it listen on?**.
|
|
|
+To stop ShareLaTeX:
|
|
|
+
|
|
|
+```
|
|
|
+docker stop sharelatex
|
|
|
+```
|
|
|
+
|
|
|
+and to start it again:
|
|
|
+
|
|
|
+```
|
|
|
+docker start sharelatex
|
|
|
+```
|
|
|
+
|
|
|
+If you want to permanently remove ShareLaTeX from your docker containers:
|
|
|
+
|
|
|
+```
|
|
|
+docker rm sharelatex
|
|
|
+```
|
|
|
+
|
|
|
+### Storing Data
|
|
|
+
|
|
|
+The `-v sharelatex:/var/lib/sharelatex` option in the `run` command tells
|
|
|
+Docker to make the host directory `sharelatex` available inside the container for
|
|
|
+ShareLaTeX to store data files in. This means that you can back up and access these
|
|
|
+files manually outside of the ShareLaTeX container. If you would like to store ShareLaTeX data
|
|
|
+in a different location, such as `/home/james/my_data`, just change this parameter:
|
|
|
+
|
|
|
+```
|
|
|
+$ docker run -d \
|
|
|
+ -v /home/james/my_data:/var/lib/sharelatex \
|
|
|
+ --name=sharelatex \
|
|
|
+ sharelatex/sharelatex
|
|
|
+```
|
|
|
+
|
|
|
+Do not change the second part of this parameter (after the :).
|
|
|
+
|
|
|
+This is only where ShareLaTeX stores on-disk data.
|
|
|
+Other data is also stored in Mongo and Redis.
|
|
|
|
|
|
### Mongo and Redis
|
|
|
|
|
|
-The `--net=host` option to docker will allow the ShareLaTeX container to access
|
|
|
-ports on the local system. By default it looks for an instance of
|
|
|
-[MongoDB](http://www.mongodb.org/) (must be version 2.4 or later) running on port 27017, and
|
|
|
-[Redis](http://redis.io/) (must be version 2.6.12 or later) running on port 6379. These are the default ports for
|
|
|
-a standard installation of MongoDB and Redis.
|
|
|
+ShareLaTeX depends on [MongoDB](http://www.mongodb.org/) (must be 2.4 or later), and
|
|
|
+[Redis](http://redis.io/) (must be version 2.6.12 or later).
|
|
|
+These should be running on the host system.
|
|
|
+
|
|
|
+By default the ShareLaTeX Docker container looks for these running on the host
|
|
|
+machine at port 27017 (for Mongo) and port 6379 (for Redis). These are the defaults
|
|
|
+ports for both databases so you shouldn't need to change them.
|
|
|
|
|
|
-### Persisting and backing up data
|
|
|
+If you want to point ShareLaTeX at a database in a different location, you can
|
|
|
+configure the container with environment variables. See the **Configuration Options**
|
|
|
+section below.
|
|
|
|
|
|
-The `-v /sharelatex-data:/var/lib/sharelatex` option in the `run` command tells Docker to mount the local
|
|
|
-directory `/sharelatex-data` in the container at `/var/lib/sharelatex`. This is
|
|
|
-where ShareLaTeX will store user uploaded files, and allows you to make external backups
|
|
|
-of these files, as well as persist them between updates to the ShareLaTeX image.
|
|
|
+*Note that `localhost` in the container refers only to the container, so if you
|
|
|
+want to access services on the host machine then you should use `dockerhost`.* For example:
|
|
|
+
|
|
|
+```
|
|
|
+$ docker run -d \
|
|
|
+ -v sharelatex:/var/lib/sharelatex \
|
|
|
+ --name=sharelatex \
|
|
|
+ --env SHARELATEX_MONGO_URL=mongodb://dockerhost/sharelatex \
|
|
|
+ sharelatex/sharelatex
|
|
|
+```
|
|
|
+
|
|
|
+### Backups
|
|
|
+
|
|
|
+To backup the ShareLaTeX data, you need to backup the directory you have attached
|
|
|
+to the container, as above. You also need to backup the Mongo and Redis databases.
|
|
|
+
|
|
|
+### Running on a different port
|
|
|
+
|
|
|
+The container listens on port 80 by default so you should be able to access
|
|
|
+ShareLaTeX at http://localhost/. If you would like to run ShareLaTeX on a different
|
|
|
+port (perhaps you have another service running on port 80, or want to put a proxy
|
|
|
+in front of ShareLaTeX), then you can forward port 80 from the Docker container
|
|
|
+to any other port with the `-p <PORT>:80` option. For example, to have ShareLaTeX
|
|
|
+listen on port 5000:
|
|
|
+
|
|
|
+```
|
|
|
+$ docker run -d \
|
|
|
+ -v sharelatex:/var/lib/sharelatex \
|
|
|
+ --name=sharelatex \
|
|
|
+ -p 5000:80 \
|
|
|
+ --env SHARELATEX_SITE_URL=http://localhost:5000 \
|
|
|
+ sharelatex/sharelatex
|
|
|
+```
|
|
|
+
|
|
|
+(Note that you also have to update the `SHARELATEX_SITE_URL` parameter so that
|
|
|
+it knows where it is publicly available.)
|
|
|
|
|
|
### LaTeX environment
|
|
|
|
|
|
@@ -38,7 +111,7 @@ $ docker exec sharelatex tlmgr install scheme-full
|
|
|
```
|
|
|
|
|
|
Or you can install packages manually as you need by replacing `scheme-full` by
|
|
|
-the package name
|
|
|
+the package name.
|
|
|
|
|
|
### Configuration Options
|
|
|
|
|
|
@@ -63,8 +136,21 @@ configured correctly!
|
|
|
* `SHARELATEX_REDIS_PORT`: The port of the Redis instance to use
|
|
|
* `SHARELATEX_REDIS_PASS`: The password to use when connecting to Redis (if applicable)
|
|
|
* `SHARELATEX_SECURE_COOKIE`: Set this to something non-zero to use a secure cookie.
|
|
|
- This requires that your ShareLaTeX instance is running behind SSL.
|
|
|
+ Only use this if your ShareLaTeX instance is running behind a reverse proxy with SSL configured.
|
|
|
|
|
|
### Upgrading from older versions
|
|
|
|
|
|
-*TODO: Just stop container, remove 'sharelatex' tag, and run with the new version.*
|
|
|
+*Please make sure to back up all Mongo, Redis and on-disk data before upgrading.*
|
|
|
+
|
|
|
+Stop and remove the currently running ShareLaTeX container:
|
|
|
+
|
|
|
+```
|
|
|
+$ docker stop sharelatex
|
|
|
+$ docker rm sharelatex
|
|
|
+```
|
|
|
+
|
|
|
+Start a new container with the updated version of ShareLaTeX (to upgrade to version 1.4.0 for example):
|
|
|
+
|
|
|
+```
|
|
|
+$ docker run -d -v sharelatex:/var/lib/sharelatex --name=sharelatex sharelatex/sharelatex:1.4.0
|
|
|
+```
|