Skip to content

Instantly share code, notes, and snippets.

@OscarXvita
Last active December 19, 2017 10:16
Show Gist options
  • Select an option

  • Save OscarXvita/faa3a43fbf9f213b125bfcf717b86b04 to your computer and use it in GitHub Desktop.

Select an option

Save OscarXvita/faa3a43fbf9f213b125bfcf717b86b04 to your computer and use it in GitHub Desktop.
how to install and setup sharelatex on ubuntu 16.04 (for my personal documentation, used on a gcloud vm)

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

Tuesday, December 19, 2017 4:57 PM

sudo docker run -d -v ~/sharelatex_data:/var/lib/sharelatex -p 80:80 -p 443:443 --name=sharelatex \
--env SHARELATEX_SITE_URL=XXXXXXXXXXXXXXXXXXXXXXXX \
--env SHARELATEX_APP_NAME=LaTeX  \
--env SHARELATEX_NAV_TITLE="SHARELATEX" \
--env SHARELATEX_ADMIN_EMAIL="XXXXXXXXXXXXXXXXXXX" \
--env SHARELATEX_EMAIL_FROM_ADDRESS="XXXXXXXXXXXXXXXXXX" \
--env SHARELATEX_EMAIL_REPLY_TO="XXXXXXXXXXXXXXXXXXXX" \
--env SHARELATEX_EMAIL_SMTP_HOST=smtp.sendgrid.net \
--env SHARELATEX_EMAIL_SMTP_PORT=587 \
--env SHARELATEX_EMAIL_SMTP_SECURE=false \
--env SHARELATEX_EMAIL_SMTP_USER="apikey" \
--env SHARELATEX_EMAIL_SMTP_PASS="XXXXXXXXXXXXXXX" \
--env SHARELATEX_CUSTOM_EMAIL_FOOTER="<div>Something you want to say. </div>" \
sharelatex/sharelatex

SETUP ADMIN USERS

'sudo docker exec sharelatex /bin/bash -c "cd /var/www/sharelatex; grunt user:create-admin --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