From 65672c72b0eb53d31bcf4a57b77064e7a51a8ff9 Mon Sep 17 00:00:00 2001 From: Pim Kunis Date: Wed, 3 May 2023 07:35:18 +0200 Subject: [PATCH] add overleaf stack --- ansible/playbooks/stacks.yml | 1 + ansible/roles/overleaf/docker-stack.yml.j2 | 113 +++++++++++++++++++++ ansible/roles/overleaf/tasks/main.yml | 15 +++ 3 files changed, 129 insertions(+) create mode 100644 ansible/roles/overleaf/docker-stack.yml.j2 create mode 100644 ansible/roles/overleaf/tasks/main.yml diff --git a/ansible/playbooks/stacks.yml b/ansible/playbooks/stacks.yml index 5680819..f0a266f 100644 --- a/ansible/playbooks/stacks.yml +++ b/ansible/playbooks/stacks.yml @@ -10,3 +10,4 @@ - {role: mastodon, tags: mastodon} - {role: freshrss, tags: freshrss} - {role: hedgedoc, tags: hedgedoc} + - {role: overleaf, tags: overleaf} diff --git a/ansible/roles/overleaf/docker-stack.yml.j2 b/ansible/roles/overleaf/docker-stack.yml.j2 new file mode 100644 index 0000000..7a381e5 --- /dev/null +++ b/ansible/roles/overleaf/docker-stack.yml.j2 @@ -0,0 +1,113 @@ +# vi: ft=yaml +version: '3' +networks: + traefik: + external: true + overleaf: + +services: + sharelatex: + image: sharelatex/sharelatex + networks: + - traefik + - overleaf + depends_on: + - overleaf-mongodb + - overleaf-redis + stop_grace_period: 60s + volumes: + - type: bind + source: /mnt/data/overleaf/sharelatex_data + target: /var/lib/sharelatex + deploy: + placement: + constraints: + - "node.labels.overleaf == true" + labels: + - traefik.enable=true + - traefik.http.routers.overleaf.entrypoints=websecure + - traefik.http.routers.overleaf.rule=Host(`latex.pim.kunis.nl`) + - traefik.http.routers.overleaf.tls=true + - traefik.http.routers.overleaf.tls.certresolver=letsencrypt + - treafik.http.routers.overleaf.service=overleaf + - traefik.http.services.overleaf.loadbalancer.server.port=80 + - traefik.docker.network=traefik + environment: + SHARELATEX_APP_NAME: Overleaf Community Edition + + SHARELATEX_MONGO_URL: mongodb://overleaf-mongodb:27017/sharelatex + + # Same property, unfortunately with different names in + # different locations + SHARELATEX_REDIS_HOST: overleaf-redis + REDIS_HOST: overleaf-redis + + ENABLED_LINKED_FILE_TYPES: 'project_file,project_output_file' + + # Enables Thumbnail generation using ImageMagick + ENABLE_CONVERSIONS: 'true' + + # Disables email confirmation requirement + EMAIL_CONFIRMATION_DISABLED: 'true' + + # temporary fix for LuaLaTex compiles + # see https://github.com/overleaf/overleaf/issues/695 + TEXMFVAR: /var/lib/sharelatex/tmp/texmf-var + + ## Set for SSL via nginx-proxy + #VIRTUAL_HOST: 103.112.212.22 + + SHARELATEX_SITE_URL: https://latex.pim.kunis.nl + # SHARELATEX_NAV_TITLE: Our ShareLaTeX Instance + # SHARELATEX_HEADER_IMAGE_URL: http://somewhere.com/mylogo.png + SHARELATEX_ADMIN_EMAIL: pim@kunis.nl + + # SHARELATEX_LEFT_FOOTER: '[{"text": "Powered by ShareLaTeX 2016"},{"text": "Another page I want to link to can be found here"} ]' + # SHARELATEX_RIGHT_FOOTER: '[{"text": "Hello I am on the Right"} ]' + + SHARELATEX_EMAIL_FROM_ADDRESS: "noreply@kunis.nl" + + SHARELATEX_EMAIL_SMTP_HOST: "smtp.tweak.nl" + SHARELATEX_EMAIL_SMTP_PORT: 587 + SHARELATEX_EMAIL_SMTP_USER: "" + SHARELATEX_EMAIL_SMTP_PASS: "" + # SHARELATEX_EMAIL_SMTP_TLS_REJECT_UNAUTH: true + # SHARELATEX_EMAIL_SMTP_IGNORE_TLS: false + # SHARELATEX_EMAIL_SMTP_NAME: '127.0.0.1' + # SHARELATEX_EMAIL_SMTP_LOGGER: true + # SHARELATEX_CUSTOM_EMAIL_FOOTER: "This system is run by department x" + + overleaf-mongodb: + image: mongo:4.4 + networks: + - overleaf + expose: + - 27017 + volumes: + - type: bind + source: /mnt/data/overleaf/mongo_data + target: /data/db + healthcheck: + test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet + interval: 10s + timeout: 10s + retries: 5 + deploy: + placement: + constraints: + - "node.labels.overleaf == true" + + overleaf-redis: + image: redis:5 + networks: + - overleaf + expose: + - 6379 + volumes: + - type: bind + source: /mnt/data/overleaf/redis_data + target: /data + deploy: + placement: + constraints: + - "node.labels.overleaf == true" diff --git a/ansible/roles/overleaf/tasks/main.yml b/ansible/roles/overleaf/tasks/main.yml new file mode 100644 index 0000000..a3a744e --- /dev/null +++ b/ansible/roles/overleaf/tasks/main.yml @@ -0,0 +1,15 @@ +- name: Create working directory + file: + path: /srv/overleaf + state: directory + +- name: Copy Docker stack file + template: + src: "{{ role_path }}/docker-stack.yml.j2" + dest: /srv/overleaf/docker-stack.yml + +- name: Deploy Docker stack + docker_stack: + name: overleaf + compose: + - /srv/overleaf/docker-stack.yml