Archiv für den Monat: März 2020

Overleaf installieren

Ich finde overleaf extrem cool, wollte aber für vergleichsweise sensible Daten nicht die öffentlich angebotene Instanz nutzen, sondern diese lieber lokal einsetzen. Da overleaf seinen Quellcode frei verfügbar gestellt hat, ist das ziemlich einfach umzusetzen.

Ich habe mir hierfür eine einfache „install.sh“ erstellt, welche die notwendigen Schritte ausführt. Die Datei sollte man als nicht-priviligierter Nutzer ausführen. Falls Docker (in einer Nicht-Community-Edition) bereits installiert ist, aber nicht läuft würde dieses Skript das Docker automatisch durch die Community Edition ersetzen, also bitte ggf. den Teil aus dem Skript herausnehmen.

#!/bin/bash
EMAILADRESS="" # Set this FIRST!
if [ -z ${EMAILADRESS} ]
then
  echo "Please set a value for EMAILADRESS first. That user will be made admin."
  exit 1
fi
. /etc/lsb-release
if (systemctl -q is-active docker)
then
  echo "Docker is already running, will NOT install."
else
  echo "### Initial apt update"
  sudo apt update
  echo "### Installing prerequisites"
  sudo apt -y install apt-transport-https ca-certificates curl software-properties-common
  echo "### Adding docker GPG key"
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  echo "### Adding Repository"
  sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu ${DISTRIB_CODENAME} stable"
  echo "### apt update for docker"
  sudo apt update
  echo "### Choosing docker-ce"
  sudo apt-cache policy docker-ce
  echo "### Installing docker-ce"
  sudo apt -y install docker-ce
  echo "### Checking im docker is running"
  if (systemctl -q is-active docker)
  then
    echo "### Docker is running"
  else
    echo "Docker is NOT running."
    exit 1
  fi
  echo "### Adding docker group"
  sudo groupadd docker
  newgrp docker
  sudo usermod -aG docker ${USER} ## Privilege user
fi
echo "### Installing docker-compose"
sudo apt -y install docker-compose
echo "### Pulling sharelatex-docker-image"
docker pull sharelatex/sharelatex
echo "### Pulling docker-compose.yml"
wget -nc https://raw.githubusercontent.com/overleaf/overleaf/master/docker-compose.yml
echo "### Modifying docker-compose.yml"
sed -i 's#- 80:80#- 2080:80#' docker-compose.yml # Only once, for the first "ports:"-directive
echo "### Running docker-compose"
docker-compose up -d sharelatex
docker exec sharelatex /bin/bash -c "cd /var/www/sharelatex; grunt user:create-admin --email=${EMAILADRESS}"
docker exec sharelatex wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
docker exec sharelatex tar xvfz install-tl-unx.tar.gz
echo "#######################################################################"
echo "Execute 'cd install-tl-[0-9]*; ./install-tl'"
echo "Please choose 'y' to import settings, then choose 'I' for installation."
echo "Leave afterwards with 'exit'"
echo "#######################################################################"
docker exec -i -t sharelatex /bin/bash
docker exec sharelatex wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh -O /usr/local/texlive/2020/update-tlmgr-latest.sh
docker exec sharelatex chmod u+x /usr/local/texlive/2020/update-tlmgr-latest.sh
docker exec sharelatex /usr/local/texlive/2020/update-tlmgr-latest.sh -- --upgrade
docker exec sharelatex tlmgr update --self
docker exec sharelatex tlmgr install scheme-full
docker exec sharelatex luaotfload-tool -fu

Anschließend sollte auf dem aktuellen Host auf Port 2080 die Overleaf-Instanz erreichbar sein.

Die Installation von „scheme-full“ dauert eine ganze Weile, weil alles einzeln angestoßen wird. Bitte nicht ungeduldig werden, 1-2 Stunden je nach Rechnergeschwindigkeit sind hier völlig normal.

Falls merkwürdige Fehler auftauchen (z.B. dass die Silbentrennung von ngerman bzw. german nicht geladen werden kann), dann kann das an einer veralteten TeXLive-Installation im Docker-Container liegen. Bei mir war im vorgefertigen Docker noch TeXLive 2019 installiert, welches man manuell auf 2020 updaten kann (seit dem 07.04. muss dies ausgeführt werden, daher habe ich es in das Skript oben integriert, leider muss man durch das interaktiv „install-tl“-Skript die Fragen selbst beantworten):

docker exec -i -t sharelatex /bin/bash
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar xvfz install-tl-unx.tar.gz
cd install-tl-*
./install-tl

Die Fragen der Installation sollte man einfach so übernehmen, das „neue“ TeXLive wird dann in die Verzeichnisse des 2019er-TeXLive installiert. Im Idealfall kann man also direkt nach dem Starten von install-tlmit einem I die Installation ausführen. Das Upgrade dauert auch wieder lange, da wieder ca. 4000 Pakete installiert werden.