Просмотр исходного кода

Commit antes de abandonarlo en favor de k8s-overleaf

Celestino Rey 6 дней назад
Родитель
Сommit
c6fba56f21

+ 41 - 0
Yamls/Makefile

@@ -0,0 +1,41 @@
+all: mongo redis varios sharelatex
+
+mongo:
+	kubectl create -f mongo-claim0-persistentvolumeclaim.yaml
+	kubectl create -f mongo-claim1-persistentvolumeclaim.yaml
+	kubectl create -f mongo-deployment.yaml
+	kubectl create -f mongo-service.yaml
+
+redis:
+	kubectl create -f redis-claim0-persistentvolumeclaim.yaml
+	kubectl create -f redis-deployment.yaml
+	kubectl create -f redis-service.yaml
+
+varios:
+	kubectl create -f reg-secret.yaml
+
+sharelatex:
+	kubectl create -f sharelatex-claim0-persistentvolumeclaim.yaml
+	kubectl create -f sharelatex-deployment.yaml
+	kubectl create -f sharelatex-service.yaml
+
+actualiza:
+	kubectl delete -f sharelatex-deployment.yaml
+	kubectl create -f sharelatex-deployment.yaml
+
+clean:
+	kubectl delete -f sharelatex-deployment.yaml
+	kubectl delete -f sharelatex-service.yaml
+	kubectl delete -f sharelatex-claim0-persistentvolumeclaim.yaml
+
+clean-mongo:
+	kubectl delete -f mongo-deployment.yaml
+	kubectl delete -f mongo-service.yaml
+	kubectl delete -f mongo-claim0-persistentvolumeclaim.yaml
+	kubectl delete -f mongo-claim1-persistentvolumeclaim.yaml
+
+
+clean-redis:
+	kubectl delete -f redis-deployment.yaml
+	kubectl delete -f redis-service.yaml
+	kubectl delete -f redis-claim0-persistentvolumeclaim.yaml

+ 14 - 0
Yamls/mongo-service.yaml

@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: Service
+metadata:
+  labels:
+    io.kompose.service: sharelatex
+  name: mongo
+  namespace: sharelatex
+spec:
+  ports:
+    - name: "27017"
+      port: 27017
+      targetPort: 27017
+  selector:
+    io.kompose.service: sharelatex

+ 14 - 0
Yamls/redis-service.yaml

@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: Service
+metadata:
+  labels:
+    io.kompose.service: sharelatex
+  name: redis
+  namespace: sharelatex
+spec:
+  ports:
+    - name: "6379"
+      port: 6379
+      targetPort: 6379
+  selector:
+    io.kompose.service: sharelatex

+ 3 - 2
Yamls/sharelatex-deployment.yaml

@@ -44,14 +44,15 @@ spec:
             - name: OVERLEAF_INVITE_TOKEN_SECRET
               value: "PPjzQiz5SHyxq8SKIFOx2rXp6OoP/DFmx/QghJsqAPI="
             - name: SANDBOXED_COMPILES
-              value: "true"
+              value: "false"
             - name: SANDBOXED_COMPILES_HOST_DIR_COMPILES
               value: /home/user/sharelatex_data/data/compiles
             - name: SANDBOXED_COMPILES_HOST_DIR_OUTPUT
               value: /home/user/sharelatex_data/data/output
             - name: SANDBOXED_COMPILES_SIBLING_CONTAINERS
-              value: "true"
+              value: "false"
           image: harbor.reymota.es/overleaf/sharelatex:main
+          imagePullPolicy: Always
           name: sharelatex
           ports:
             - containerPort: 80

+ 3 - 0
Yamls2/bin/shared/mongodb-init-replica-set.js

@@ -0,0 +1,3 @@
+/* eslint-disable no-undef */
+
+rs.initiate({ _id: 'overleaf', members: [{ _id: 0, host: 'mongo:27017' }] })

+ 152 - 0
Yamls2/docker-compose.yml

@@ -0,0 +1,152 @@
+services:
+  sharelatex:
+    restart: always
+    # Server Pro users:
+    # image: quay.io/sharelatex/sharelatex-pro
+    image: sharelatex/sharelatex
+    container_name: sharelatex
+    depends_on:
+      mongo:
+        condition: service_healthy
+      redis:
+        condition: service_started
+    ports:
+      - 80:80
+    stop_grace_period: 60s
+    volumes:
+      - ./sharelatex_data:/var/lib/overleaf
+      ########################################################################
+      ####  Server Pro: Uncomment the following line to mount the docker  ####
+      ####             socket, required for Sibling Containers to work    ####
+      ########################################################################
+      # - /var/run/docker.sock:/var/run/docker.sock
+    environment:
+      OVERLEAF_APP_NAME: Overleaf Community Edition
+
+      OVERLEAF_MONGO_URL: mongodb://mongo/sharelatex
+
+      # Same property, unfortunately with different names in
+      # different locations
+      OVERLEAF_REDIS_HOST: redis
+      REDIS_HOST: redis
+
+      # IMPORTANT: Required for invite token generation
+      # OVERLEAF_INVITE_TOKEN_SECRET: generate with `openssl rand -base64 32`
+
+      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"
+
+      ## Set for SSL via nginx-proxy
+      #VIRTUAL_HOST: 103.112.212.22
+
+      # OVERLEAF_SITE_URL: http://overleaf.example.com
+      # OVERLEAF_NAV_TITLE: Overleaf Community Edition
+      # OVERLEAF_HEADER_IMAGE_URL: http://example.com/mylogo.png
+      # OVERLEAF_ADMIN_EMAIL: support@it.com
+
+      # OVERLEAF_LEFT_FOOTER: '[{"text": "Another page I want to link to can be found <a href=\"here\">here</a>"} ]'
+      # OVERLEAF_RIGHT_FOOTER: '[{"text": "Hello I am on the Right"} ]'
+
+      # OVERLEAF_EMAIL_FROM_ADDRESS: "hello@example.com"
+
+      # OVERLEAF_EMAIL_AWS_SES_ACCESS_KEY_ID:
+      # OVERLEAF_EMAIL_AWS_SES_SECRET_KEY:
+
+      # OVERLEAF_EMAIL_SMTP_HOST: smtp.example.com
+      # OVERLEAF_EMAIL_SMTP_PORT: 587
+      # OVERLEAF_EMAIL_SMTP_SECURE: false
+      # OVERLEAF_EMAIL_SMTP_USER:
+      # OVERLEAF_EMAIL_SMTP_PASS:
+      # OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH: true
+      # OVERLEAF_EMAIL_SMTP_IGNORE_TLS: false
+      # OVERLEAF_EMAIL_SMTP_NAME: '127.0.0.1'
+      # OVERLEAF_EMAIL_SMTP_LOGGER: true
+      # OVERLEAF_CUSTOM_EMAIL_FOOTER: "This system is run by department x"
+
+      # ENABLE_CRON_RESOURCE_DELETION: true
+
+      ################
+      ## Server Pro ##
+      ################
+
+      ## The Community Edition is intended for use in environments where all users are trusted and is not appropriate for
+      ## scenarios where isolation of users is required. Sandboxed Compiles are not available in the Community Edition,
+      ## so the following environment variables must be commented out to avoid compile issues.
+      ##
+      ## Sandboxed Compiles: https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/server-pro-only-configuration/sandboxed-compiles
+      SANDBOXED_COMPILES: "true"
+      ### Bind-mount source for /var/lib/overleaf/data/compiles inside the container.
+      SANDBOXED_COMPILES_HOST_DIR_COMPILES: "/home/user/sharelatex_data/data/compiles"
+      ### Bind-mount source for /var/lib/overleaf/data/output inside the container.
+      SANDBOXED_COMPILES_HOST_DIR_OUTPUT: "/home/user/sharelatex_data/data/output"
+      ### Backwards compatibility (before Server Pro 5.5)
+      DOCKER_RUNNER: "true"
+      SANDBOXED_COMPILES_SIBLING_CONTAINERS: "true"
+
+      ## Works with test LDAP server shown at bottom of docker compose
+      # OVERLEAF_LDAP_URL: 'ldap://ldap:389'
+      # OVERLEAF_LDAP_SEARCH_BASE: 'ou=people,dc=planetexpress,dc=com'
+      # OVERLEAF_LDAP_SEARCH_FILTER: '(uid={{username}})'
+      # OVERLEAF_LDAP_BIND_DN: 'cn=admin,dc=planetexpress,dc=com'
+      # OVERLEAF_LDAP_BIND_CREDENTIALS: 'GoodNewsEveryone'
+      # OVERLEAF_LDAP_EMAIL_ATT: 'mail'
+      # OVERLEAF_LDAP_NAME_ATT: 'cn'
+      # OVERLEAF_LDAP_LAST_NAME_ATT: 'sn'
+      # OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN: 'true'
+
+      # OVERLEAF_TEMPLATES_USER_ID: "578773160210479700917ee5"
+      # OVERLEAF_NEW_PROJECT_TEMPLATE_LINKS: '[ {"name":"All Templates","url":"/templates/all"}]'
+
+      # OVERLEAF_PROXY_LEARN: "true"
+
+  mongo:
+    restart: always
+    image: mongo:8.0
+    container_name: mongo
+    command: "--replSet overleaf"
+    volumes:
+      - ./mongo_data:/data/db
+      - ./bin/shared/mongodb-init-replica-set.js:/docker-entrypoint-initdb.d/mongodb-init-replica-set.js
+    environment:
+      MONGO_INITDB_DATABASE: sharelatex
+    extra_hosts:
+      # Required when using the automatic database setup for initializing the replica set.
+      # This override is not needed when running the setup after starting up mongo.
+      - mongo:127.0.0.1
+    healthcheck:
+      test: echo 'db.stats().ok' | mongosh localhost:27017/test --quiet
+      interval: 10s
+      timeout: 10s
+      retries: 5
+
+  redis:
+    restart: always
+    image: redis:6.2
+    container_name: redis
+    volumes:
+      - ./redis_data:/data
+
+  # ldap:
+  #    restart: always
+  #    image: rroemhild/test-openldap
+  #    container_name: ldap
+
+  # See https://github.com/jwilder/nginx-proxy for documentation on how to configure the nginx-proxy container,
+  # and https://github.com/overleaf/overleaf/wiki/HTTPS-reverse-proxy-using-Nginx for an example of some recommended
+  # settings. We recommend using a properly managed nginx instance outside of the Overleaf Server Pro setup,
+  # but the example here can be used if you'd prefer to run everything with docker-compose
+
+  # nginx-proxy:
+  #     image: jwilder/nginx-proxy
+  #     container_name: nginx-proxy
+  #     ports:
+  #       - "80:80"
+  #       - "443:443"
+  #     volumes:
+  #       - /var/run/docker.sock:/tmp/docker.sock:ro
+  #       - /home/overleaf/tmp:/etc/nginx/certs

+ 12 - 0
Yamls2/mongo-claim0-persistentvolumeclaim.yaml

@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  labels:
+    io.kompose.service: mongo-claim0
+  name: mongo-claim0
+spec:
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi

+ 12 - 0
Yamls2/mongo-claim1-persistentvolumeclaim.yaml

@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  labels:
+    io.kompose.service: mongo-claim1
+  name: mongo-claim1
+spec:
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi

+ 13 - 0
Yamls2/mongo-cm1-configmap.yaml

@@ -0,0 +1,13 @@
+apiVersion: v1
+data:
+  mongodb-init-replica-set.js: |
+    /* eslint-disable no-undef */
+
+    rs.initiate({ _id: 'overleaf', members: [{ _id: 0, host: 'mongo:27017' }] })
+kind: ConfigMap
+metadata:
+  annotations:
+    use-subpath: "true"
+  labels:
+    io.kompose.service: mongo
+  name: mongo-cm1

+ 57 - 0
Yamls2/mongo-deployment.yaml

@@ -0,0 +1,57 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  annotations:
+    kompose.cmd: kompose convert
+    kompose.version: 1.34.0 (cbf2835db)
+  labels:
+    io.kompose.service: mongo
+  name: mongo
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      io.kompose.service: mongo
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      annotations:
+        kompose.cmd: kompose convert
+        kompose.version: 1.34.0 (cbf2835db)
+      labels:
+        io.kompose.service: mongo
+    spec:
+      containers:
+        - args:
+            - --replSet
+            - overleaf
+          env:
+            - name: MONGO_INITDB_DATABASE
+              value: sharelatex
+          image: mongo:8.0
+          livenessProbe:
+            exec:
+              command:
+                - echo 'db.stats().ok' | mongosh localhost:27017/test --quiet
+            failureThreshold: 5
+            periodSeconds: 10
+            timeoutSeconds: 10
+          name: mongo
+          volumeMounts:
+            - mountPath: /data/db
+              name: mongo-claim0
+            - mountPath: /docker-entrypoint-initdb.d/mongodb-init-replica-set.js
+              name: mongo-cm1
+              subPath: mongodb-init-replica-set.js
+      restartPolicy: Always
+      volumes:
+        - name: mongo-claim0
+          persistentVolumeClaim:
+            claimName: mongo-claim0
+        - configMap:
+            items:
+              - key: mongodb-init-replica-set.js
+                path: mongodb-init-replica-set.js
+            name: mongo-cm1
+          name: mongo-cm1

+ 12 - 0
Yamls2/redis-claim0-persistentvolumeclaim.yaml

@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  labels:
+    io.kompose.service: redis-claim0
+  name: redis-claim0
+spec:
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi

+ 35 - 0
Yamls2/redis-deployment.yaml

@@ -0,0 +1,35 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  annotations:
+    kompose.cmd: kompose convert
+    kompose.version: 1.34.0 (cbf2835db)
+  labels:
+    io.kompose.service: redis
+  name: redis
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      io.kompose.service: redis
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      annotations:
+        kompose.cmd: kompose convert
+        kompose.version: 1.34.0 (cbf2835db)
+      labels:
+        io.kompose.service: redis
+    spec:
+      containers:
+        - image: redis:6.2
+          name: redis
+          volumeMounts:
+            - mountPath: /data
+              name: redis-claim0
+      restartPolicy: Always
+      volumes:
+        - name: redis-claim0
+          persistentVolumeClaim:
+            claimName: redis-claim0

+ 12 - 0
Yamls2/sharelatex-claim0-persistentvolumeclaim.yaml

@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  labels:
+    io.kompose.service: sharelatex-claim0
+  name: sharelatex-claim0
+spec:
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi

+ 64 - 0
Yamls2/sharelatex-deployment.yaml

@@ -0,0 +1,64 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  annotations:
+    kompose.cmd: kompose convert
+    kompose.version: 1.34.0 (cbf2835db)
+  labels:
+    io.kompose.service: sharelatex
+  name: sharelatex
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      io.kompose.service: sharelatex
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      annotations:
+        kompose.cmd: kompose convert
+        kompose.version: 1.34.0 (cbf2835db)
+      labels:
+        io.kompose.service: sharelatex
+    spec:
+      containers:
+        - env:
+            - name: DOCKER_RUNNER
+              value: "true"
+            - name: EMAIL_CONFIRMATION_DISABLED
+              value: "true"
+            - name: ENABLED_LINKED_FILE_TYPES
+              value: project_file,project_output_file
+            - name: ENABLE_CONVERSIONS
+              value: "true"
+            - name: OVERLEAF_APP_NAME
+              value: Overleaf Community Edition
+            - name: OVERLEAF_MONGO_URL
+              value: mongodb://mongo/sharelatex
+            - name: OVERLEAF_REDIS_HOST
+              value: redis
+            - name: REDIS_HOST
+              value: redis
+            - name: SANDBOXED_COMPILES
+              value: "true"
+            - name: SANDBOXED_COMPILES_HOST_DIR_COMPILES
+              value: /home/user/sharelatex_data/data/compiles
+            - name: SANDBOXED_COMPILES_HOST_DIR_OUTPUT
+              value: /home/user/sharelatex_data/data/output
+            - name: SANDBOXED_COMPILES_SIBLING_CONTAINERS
+              value: "true"
+          image: sharelatex/sharelatex
+          name: sharelatex
+          ports:
+            - containerPort: 80
+              protocol: TCP
+          volumeMounts:
+            - mountPath: /var/lib/overleaf
+              name: sharelatex-claim0
+      restartPolicy: Always
+      terminationGracePeriodSeconds: 60
+      volumes:
+        - name: sharelatex-claim0
+          persistentVolumeClaim:
+            claimName: sharelatex-claim0

+ 16 - 0
Yamls2/sharelatex-service.yaml

@@ -0,0 +1,16 @@
+apiVersion: v1
+kind: Service
+metadata:
+  annotations:
+    kompose.cmd: kompose convert
+    kompose.version: 1.34.0 (cbf2835db)
+  labels:
+    io.kompose.service: sharelatex
+  name: sharelatex
+spec:
+  ports:
+    - name: "80"
+      port: 80
+      targetPort: 80
+  selector:
+    io.kompose.service: sharelatex

+ 2 - 0
server-ce/Dockerfile

@@ -66,6 +66,8 @@ RUN chmod 600 /etc/cron.d/crontab-deletion
 COPY server-ce/init_scripts/ /etc/my_init.d/
 COPY server-ce/init_preshutdown_scripts/ /etc/my_init.pre_shutdown.d/
 
+RUN rm /etc/my_init.d/000_check_for_old_env_vars_5.sh 
+
 # Copy app settings files
 # -----------------------
 COPY server-ce/config/settings.js /etc/overleaf/settings.js

+ 3 - 1
server-ce/Makefile

@@ -54,9 +54,11 @@ build-community:
 	  --tag $(OVERLEAF_BRANCH) \
 	  $(MONOREPO_ROOT)
 
-push:
+push-base:
 	docker push $(OVERLEAF_BASE_TAG)
 	docker push $(OVERLEAF_BASE_BRANCH)
+
+push-community:
 	docker push $(OVERLEAF_TAG)
 	docker push $(OVERLEAF_BRANCH)
 

+ 2 - 1
server-ce/init_scripts/000_check_for_old_env_vars_5.sh

@@ -2,7 +2,8 @@
 
 set -e
 
-OLD_ITEMS=$(env | cut -d '=' -f1 | grep SHARELATEX | sed 's/^/      - /')
+#OLD_ITEMS=$(env | cut -d '=' -f1 | grep SHARELATEX | sed 's/^/      - /')
+OLD_ITEMS=$(env | cut -d '=' -f1 | grep REYMOTA | sed 's/^/      - /')
 
 if [[ "$OLD_ITEMS" == "" ]]; then
   exit 0

+ 3 - 0
server-ce/init_scripts/100_make_overleaf_data_dirs.sh

@@ -5,6 +5,9 @@ mkdir -p /var/lib/overleaf/data
 chown www-data:www-data /var/lib/overleaf
 chown www-data:www-data /var/lib/overleaf/data
 
+mkdir -p /var/lib/overleaf/data/user_files
+chown www-data:www-data /var/lib/overleaf/data/user_files
+
 mkdir -p /var/lib/overleaf/data/compiles
 chown www-data:www-data /var/lib/overleaf/data/compiles