Skip to content

Instantly share code, notes, and snippets.

@ccamacho
Created March 16, 2017 10:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ccamacho/7c57842b58ab9e3951a687475a099112 to your computer and use it in GitHub Desktop.
Save ccamacho/7c57842b58ab9e3951a687475a099112 to your computer and use it in GitHub Desktop.
how to install and setup sharelatex on ubuntu 16.04

dependencies

database and stuff

sudo apt-get update
sudo apt-get install -y redis-server
sudo apt-get install -y mongodb

docker

sudo apt-get install -y apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo vi /etc/apt/sources.list.d/docker.list
--> add: deb https://apt.dockerproject.org/repo ubuntu-trusty main (14.04)
--> add: deb https://apt.dockerproject.org/repo ubuntu-xenial main (16.04)
sudo apt-get update
sudo apt-get install -y docker-engine
sudo service docker start
sudo docker run hello-world

sharelatex

get docker internal ip

sudo docker run -d -p 80:80 nginx --name nginx
ip addr show docker0
sudo docker stop nginx

adjust mongodb and redis

sudo vi /etc/mongodb.conf
--> change: bind_ip = 172.17.0.1

sudo vi /etc/redis/redis.conf
--> change: bind 172.17.0.1

sudo service mongodb restart
sudo service redis-server restart

run sharelatex docker container

sudo docker run -d -v ~/sharelatex_data:/var/lib/sharelatex -p 80:80 --name=sharelatex --env SHARELATEX_SITE_URL=$domain --env SHARELATEX_APP_NAME=LaTeX sharelatex/sharelatex

sudo docker exec sharelatex /bin/bash -c "cd /var/www/sharelatex/web; grunt create-admin-user --email joe@example.com"
sudo docker exec sharelatex tlmgr install scheme-full

change environment variables after container has been created

create a file with the name of the environment variable to set, the content is the variable value. Then copy the file to the docker container. For example to set SHARELATEX_SITE_URL (assuming the file is in the current working directory):

sudo docker cp ./SHARELATEX_SITE_URL sharelatex:/etc/container_environment/

crontab for boot scripts

sudo crontab -e --> add: PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
--> add: @reboot /startup.sh >> /startupscript.log 2>&1
--> add: @reboot python /update_dns.py

add file update_dns.py to /update_dns.py
add file startup.py to /startup.sh
sudo chmod +x /startup.sh

#!/bin/bash
sleep 10s
service mongodb start
sleep 10s
service redis-server start
sleep 20s
docker start sharelatex
# -*- coding: utf-8 -*-
import urllib2
import time
time.sleep(10)
urllib2.urlopen("http://dynamicdns.park-your-domain.com/update?host=%s&domain=%s&password=%s" % ("$subdomain", "$domain", "$your_key"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment