Selfhosting Overleaf

cichy1173@szmer.info to Selfhosted@lemmy.world – 34 points –

Do any of you self-host Overleaf? I know there is a Docker project, but from what I've heard it's not easy to install. The Yunohost version used to work but didn't support file upload, so that makes it bad too.

Have any of you successfully installed Overleaf with e.g. Docker and it works just fine? If so, could any of you share e.g. the Docker Compose file?

23

You are viewing a single comment

There's some tinkering with their docker-compose.yml to make it work. Here's mine you can copy if you want to get it up and running. I don't use nginx or any reverse-proxy btw. All data is saved in their own individual volumes which you can back up:

services:
    sharelatex:
        restart: always
        image: sharelatex/sharelatex
        depends_on:
            mongo:
                condition: service_healthy
            redis:
                condition: service_started
        ports:
            - *DESIRED_PORT*:80
        links:
            - mongo
            - redis
        stop_grace_period: 60s
        volumes:
            - data:/var/lib/sharelatex
            - texlive:/usr/local/texlive

        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'

    mongo:
        command: "--replSet overleaf"
        restart: always
        image: mongo:4.4
        expose:
            - 27017
        volumes:
            - mongo_data:/data/db
        healthcheck:
            test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet
            interval: 10s
            timeout: 10s
            retries: 5

    redis:
        restart: always
        image: redis:6.2
        expose:
            - 6379
        volumes:
            - redis_data:/data

volumes:
  data:
  mongo_data:
  redis_data:
  texlive:

Some of my documents rely on certain packages which didn't come with the Docker image. You will need to run
docker exec sharelatex-sharelatex-1 tlmgr update --self;docker exec sharelatex-sharelatex-1 tlmgr install scheme-full
so that you can render your documents properly if they utilize certain packages.

Optionally—since the full scheme takes about 8 GB and you may not need everything—you can replace scheme-full with a different scheme you can find by running
docker exec sharelatex-sharelatex-1 tlmgr info schemes
The i before any scheme name means that it is already installed.

Update:
Included a texlive volume to save any packages that were installed, so when recreating the containers, they will persist.

Are the packages installed to a persistent volume? Or do they need to be reinstalled after recreating the container?

I checked the volumes that I included in the compose file, and looked for either a texlive, tlmgr or a package folder and didn't find anything. I think it's safe to assume that you would need to reinstall the packages if you recreated the containers.

This is a problem that I didn't consider. I will try to make an update to my compose file that will keep the packages persistent.

Check above for the update!