Commit 4f24a228 authored by James Allen's avatar James Allen
Browse files
parents 09624e37 c8395540
Loading
Loading
Loading
Loading
+29 −20
Original line number Diff line number Diff line
FROM phusion/baseimage:0.9.16

ENV baseDir .

# Install Node.js and Grunt
RUN curl -sL https://deb.nodesource.com/setup | sudo bash -
RUN apt-get install -y build-essential nodejs
@@ -14,16 +16,23 @@ RUN adduser --system --group --home /var/www/sharelatex --no-create-home sharela

# Install ShareLaTeX
RUN apt-get install -y git python
RUN git clone -b release https://github.com/sharelatex/sharelatex.git /var/www/sharelatex
RUN cd /var/www/sharelatex && git pull origin release
RUN git clone https://github.com/sharelatex/sharelatex.git /var/www/sharelatex

# zlib1g-dev is needed to compile the synctex binaries in the CLSI during `grunt install`.
RUN apt-get install -y zlib1g-dev


ADD ${baseDir}/services.js /var/www/sharelatex/config/services.js
ADD ${baseDir}/package.json /var/www/package.json
ADD ${baseDir}/git-revision.js /var/www/git-revision.js
RUN cd /var/www && npm install

RUN cd /var/www/sharelatex; \
	npm install; \
	grunt install;

RUN cd /var/www && node git-revision > revisions.txt
	
# Minify js assets
RUN cd /var/www/sharelatex/web; \
	grunt compile:minify;
@@ -32,11 +41,11 @@ RUN cd /var/www/sharelatex/web; \
run apt-get update
RUN apt-get install -y nginx;
RUN rm /etc/nginx/sites-enabled/default
ADD nginx/nginx.conf /etc/nginx/nginx.conf
ADD nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf
ADD ${baseDir}/nginx/nginx.conf /etc/nginx/nginx.conf
ADD ${baseDir}/nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf

RUN mkdir /etc/service/nginx
ADD runit/nginx.sh /etc/service/nginx/run
ADD ${baseDir}/runit/nginx.sh /etc/service/nginx/run

# Set up ShareLaTeX services to run automatically on boot
RUN mkdir /etc/service/chat-sharelatex; \
@@ -50,16 +59,16 @@ RUN mkdir /etc/service/chat-sharelatex; \
	mkdir /etc/service/track-changes-sharelatex; \
	mkdir /etc/service/web-sharelatex; 

ADD runit/chat-sharelatex.sh             /etc/service/chat-sharelatex/run
ADD runit/clsi-sharelatex.sh             /etc/service/clsi-sharelatex/run
ADD runit/docstore-sharelatex.sh         /etc/service/docstore-sharelatex/run
ADD runit/document-updater-sharelatex.sh /etc/service/document-updater-sharelatex/run
ADD runit/filestore-sharelatex.sh        /etc/service/filestore-sharelatex/run
ADD runit/real-time-sharelatex.sh        /etc/service/real-time-sharelatex/run
ADD runit/spelling-sharelatex.sh         /etc/service/spelling-sharelatex/run
ADD runit/tags-sharelatex.sh             /etc/service/tags-sharelatex/run
ADD runit/track-changes-sharelatex.sh    /etc/service/track-changes-sharelatex/run
ADD runit/web-sharelatex.sh              /etc/service/web-sharelatex/run
ADD ${baseDir}/runit/chat-sharelatex.sh             /etc/service/chat-sharelatex/run
ADD ${baseDir}/runit/clsi-sharelatex.sh             /etc/service/clsi-sharelatex/run
ADD ${baseDir}/runit/docstore-sharelatex.sh         /etc/service/docstore-sharelatex/run
ADD ${baseDir}/runit/document-updater-sharelatex.sh /etc/service/document-updater-sharelatex/run
ADD ${baseDir}/runit/filestore-sharelatex.sh        /etc/service/filestore-sharelatex/run
ADD ${baseDir}/runit/real-time-sharelatex.sh        /etc/service/real-time-sharelatex/run
ADD ${baseDir}/runit/spelling-sharelatex.sh         /etc/service/spelling-sharelatex/run
ADD ${baseDir}/runit/tags-sharelatex.sh             /etc/service/tags-sharelatex/run
ADD ${baseDir}/runit/track-changes-sharelatex.sh    /etc/service/track-changes-sharelatex/run
ADD ${baseDir}/runit/web-sharelatex.sh              /etc/service/web-sharelatex/run

# Install TexLive
RUN apt-get install -y wget
@@ -86,14 +95,14 @@ RUN apt-get install -y unzip
RUN apt-get install -y imagemagick optipng

# phusion/baseimage init script
ADD 00_regen_sharelatex_secrets.sh  /etc/my_init.d/00_regen_sharelatex_secrets.sh
ADD 00_make_sharelatex_data_dirs.sh /etc/my_init.d/00_make_sharelatex_data_dirs.sh
ADD 00_set_docker_host_ipaddress.sh /etc/my_init.d/00_set_docker_host_ipaddress.sh
ADD 99_migrate.sh /etc/my_init.d/99_migrate.sh
ADD ${baseDir}/00_regen_sharelatex_secrets.sh  /etc/my_init.d/00_regen_sharelatex_secrets.sh
ADD ${baseDir}/00_make_sharelatex_data_dirs.sh /etc/my_init.d/00_make_sharelatex_data_dirs.sh
ADD ${baseDir}/00_set_docker_host_ipaddress.sh /etc/my_init.d/00_set_docker_host_ipaddress.sh
ADD ${baseDir}/99_migrate.sh /etc/my_init.d/99_migrate.sh

# Install ShareLaTeX settings file
RUN mkdir /etc/sharelatex
ADD settings.coffee /etc/sharelatex/settings.coffee
ADD ${baseDir}/settings.coffee /etc/sharelatex/settings.coffee
ENV SHARELATEX_CONFIG /etc/sharelatex/settings.coffee

EXPOSE 80

Gruntfile.coffee

0 → 100644
+38 −0
Original line number Diff line number Diff line
services = require('./services')

module.exports = (grunt) ->
        
        tag = grunt.option("tag") or 'latest'
        repos = []
        for service in services
                url = service.repo.split('/')
                owner = url[3]
                repo = url[4].replace('.git','')
                repos.push "/repos/#{owner}/#{repo}/git/refs/heads/#{service.version}"
        
        grunt.initConfig
                docker_io:
                        default_options:
                                options:
                                        dockerFileLocation: '.'
                                        buildName: 'sharelatex'
                                        tag: grunt.option('tag') or 'latest'
                                        push: grunt.option('push') or false
                                        force: true

                github:
                        combinedRevisions:
                                options:
                                        #oAuth:
                                        #        access_token: ''
                                        concat: true
                                src: repos
                                dest: 'version/' + tag + '.json'

        grunt.loadNpmTasks 'grunt-docker-io'
        grunt.loadNpmTasks 'grunt-github-api'

        grunt.registerTask 'build', ['docker_io', 'github']
        grunt.registerTask 'gitrev', ['github']

        grunt.registerTask 'default', ['build']
+8 −3
Original line number Diff line number Diff line
ShareLaTeX Docker Image
ShareLaTeX Community Docker Image
=======================

**Please read this entire file before installing ShareLaTeX via Docker. It's only
@@ -34,9 +34,12 @@ If you want to permanently remove ShareLaTeX from your docker containers:
docker rm sharelatex
```

### Operating systems
We recommend a debian based operating system such as Ubuntu for ShareLaTeX, this is what the software has been developed using and most people use when running ShareLaTeX.

### Mongo and Redis

ShareLaTeX depends on [MongoDB](http://www.mongodb.org/) (must be 2.4 or later), and
ShareLaTeX depends on [MongoDB](http://www.mongodb.org/) (must be 2.4 or later, 3.x is recommended), and
[Redis](http://redis.io/) (must be version 2.6.12 or later).
These should be running on the host system.

@@ -142,7 +145,7 @@ the package name.

### Configuration Options

You can pass configuration options to ShareLaTeX as environment variables:
You can pass the core configuration options to ShareLaTeX as environment variables:

```
$ docker run -d \
@@ -167,6 +170,8 @@ configured correctly!
* `SHARELATEX_SECURE_COOKIE`: Set this to something non-zero to use a secure cookie.
  Only use this if your ShareLaTeX instance is running behind a reverse proxy with SSL configured.

Other settings such as email setup need to be edited in the docker container at /etc/sharelatex/settings.coffee. We realise this is not an ideal solution and are working on a more streamlined settings file approach.

### Creating and Managing users

Uun the following command to create your first user and make them an admin:

git-revision.js

0 → 100644
+22 −0
Original line number Diff line number Diff line
var simple = require('simple-git');
var services = require('./sharelatex/config/services');
const fs = require('fs');

function print_latest(repoDir) {
  git = simple(repoDir);
  opt = [];
  opt['max-count'] = 1;
  git.log(opt, function(err, log) {
      if (!err) {
        console.log(repoDir + ',' + log.latest.hash);
      }
  })
}

for (id in services) {
  service = services[id];
  dirPath = __dirname + '/sharelatex/'+service.name;
  if (fs.existsSync(dirPath)) {
    print_latest(dirPath);
  }
}
+2 −2
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ server {
	set $static_path /var/www/sharelatex/web/public;

	location / {
		proxy_pass http://localhost:3000;
		proxy_pass http://127.0.0.1:3000;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
@@ -17,7 +17,7 @@ server {
	}
	
	location /socket.io {
		proxy_pass http://localhost:3026;
		proxy_pass http://127.0.0.1:3026;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
Loading