Overleaf

Version 1.4 by chrisby on 2024/03/03 14:53

docker-compose.yml
version: "3.3"

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

services:
  traefik:
    image: "traefik:v2.10.4"
    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
Instructions
  • 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.