Overleaf

Version 1.1 by chrisby on 2023/09/03 22:43

docker-compose.yml

version: "3.3"

volumes:
 traefik:
 overleaf-web:
 overleaf-mongo:
 overleaf-redis:

services:
 traefik:
   image: "traefik:latest"
   container_name: "traefik"
   restart: unless-stopped
   command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
     # - "--certificatesresolvers.myresolver.acme.email=<email>"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
     # Uncomment for test mode. This allows detailed logging and creation of a fake certificate.
     # - "--log.level=DEBUG"
     # - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
   ports:
      - "443:443"
   volumes:
      - "traefik:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

 sharelatex:
   restart: unless-stopped
   image: sharelatex/sharelatex:3.5.5
   container_name: sharelatex
   depends_on:
     mongo:
       condition: service_healthy
     redis:
       condition: service_started
   stop_grace_period: 60s
   volumes:
      - overleaf-web:/var/lib/sharelatex
   environment:
     SHARELATEX_APP_NAME: Overleaf Community Edition
     SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex
     SHARELATEX_REDIS_HOST: redis
     REDIS_HOST: redis
     ENABLED_LINKED_FILE_TYPES: 'project_file,project_output_file'
     ENABLE_CONVERSIONS: 'true'
     EMAIL_CONFIRMATION_DISABLED: 'true'
     SHARELATEX_SITE_URL: https://<subdomain>
   labels:
      - "traefik.enable=true"
      - "traefik.http.routers.overleaf.rule=Host(`<subdomain>`)"
      - "traefik.http.routers.overleaf.entrypoints=websecure"
      - "traefik.http.routers.overleaf.tls.certresolver=myresolver"

 mongo:
   restart: unless-stopped
   image: mongo:4.4.20
   container_name: mongo
   volumes:
      - overleaf-mongo:/data/db
   healthcheck:
     test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet
     interval: 10s
     timeout: 10s
     retries: 5

 redis:
   restart: unless-stopped
   image: redis:5.0.14
   container_name: redis
   volumes:
      - overleaf-redis:/data
  • Execute docker-compose up -d
  • Now create an account via docker-compose exec sharelatex /bin/bash -c "grunt user:create-admin --email=<email>". Go to the link from the output of the command to complete the creation of the admin user by setting the password.