From 297bf1c96af6e07395b77e3498fe0115c5229828 Mon Sep 17 00:00:00 2001 From: borjarobert <54457920+borjarobert@users.noreply.github.com> Date: Sat, 7 May 2022 16:59:18 +0200 Subject: [PATCH] Add Mayan EDMS (#656) * Create mayan-edms.yml First working draft of Mayan EDMS as a One-Click-App * Added Mayan EDMS logo png * Updates instructions and description * Format change * format changes * format * after prettier * Added missing validRegex and better descriptions $$cap_redis_pass can't be blank * Remove command from postgres and update instructions --- public/v4/apps/mayan-edms.yml | 144 +++++++++++++++++++++++++++++++++ public/v4/logos/mayan-edms.png | Bin 0 -> 13653 bytes 2 files changed, 144 insertions(+) create mode 100644 public/v4/apps/mayan-edms.yml create mode 100644 public/v4/logos/mayan-edms.png diff --git a/public/v4/apps/mayan-edms.yml b/public/v4/apps/mayan-edms.yml new file mode 100644 index 0000000..6457ea0 --- /dev/null +++ b/public/v4/apps/mayan-edms.yml @@ -0,0 +1,144 @@ +captainVersion: 4 +services: + # Mayan EDMS + $$cap_appname: + depends_on: + - $$cap_appname-db + - $$cap_appname-redis + image: mayanedms/mayanedms:$$cap_app_version + restart: always + environment: + MAYAN_CELERY_BROKER_URL: 'redis://:$$cap_redis_pass@srv-captain--$$cap_appname-redis:6379/0' + MAYAN_CELERY_RESULT_BACKEND: 'redis://:$$cap_redis_pass@srv-captain--$$cap_appname-redis:6379/1' + MAYAN_DATABASES: "{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'$$cap_dbname','PASSWORD':'$$cap_dbpass','USER':'$$cap_dbuser','HOST':'srv-captain--$$cap_appname-db'}}" + MAYAN_LOCK_MANAGER_BACKEND: 'mayan.apps.lock_manager.backends.redis_lock.RedisLock' + MAYAN_LOCK_MANAGER_BACKEND_ARGUMENTS: "{'redis_url':'redis://:$$cap_redis_pass@srv-captain--$$cap_appname-redis:6379/2'}" + MAYAN_SEARCH_BACKEND: 'mayan.apps.dynamic_search.backends.whoosh.WhooshSearchBackend' + MAYAN_APT_INSTALLS: '$$cap_ocr_langs' + MAYAN_DOCKER_WAIT: srv-captain--$$cap_appname-db:5432 srv-captain--$$cap_appname-redis:6379 + MAYAN_DOCUMENTS_LANGUAGE: $$cap_default_document_lang + MAYAN_TIME_ZONE: $$cap_timezone + MAYAN_AUTOADMIN_EMAIL: $$cap_email + MAYAN_AUTOADMIN_PASSWORD: $$cap_password + MAYAN_AUTOADMIN_USERNAME: $$cap_username + MAYAN_COMMON_PROJECT_TITLE: $$cap_project_title + volumes: + - $$cap_appname-data:/var/lib/mayan + caproverExtra: + containerHttpPort: '8000' + + # Redis + $$cap_appname-redis: + volumes: + - $$cap_appname-redis-data:/data + restart: always + caproverExtra: + dockerfileLines: + - FROM redis:$$cap_redis_version + - CMD exec redis-server --appendonly 'no' --databases '3' --maxmemory 100mb --maxclients '500' --maxmemory-policy allkeys-lru --save '' --requirepass $$cap_redis_pass + notExposeAsWebApp: 'true' + + #PostgreSQL + $$cap_appname-db: + image: postgres:$$cap_postgres_version + volumes: + - $$cap_appname-db-data:/var/lib/postgresql/data + restart: always + environment: + POSTGRES_DB: $$cap_dbname + POSTGRES_USER: $$cap_dbuser + POSTGRES_PASSWORD: $$cap_dbpass + caproverExtra: + notExposeAsWebApp: 'true' + +caproverOneClickApp: + variables: + - id: $$cap_app_version + label: Mayan EDMS version + defaultValue: 's4.2' + description: Check out their docker page for the valid tags https://hub.docker.com/r/mayanedms/mayanedms/tags + + - id: $$cap_postgres_version + label: PostgreSQL version + defaultValue: '12.9-alpine' + description: Check out their Docker page for the valid tags https://hub.docker.com/r/library/postgres/tags/ + validRegex: /^([^\s^\/])+$/ + + - id: $$cap_redis_version + label: Redis version + defaultValue: '6.2.1-alpine' + description: Check out their Docker page for the valid tags https://hub.docker.com/_/redis?tab=tags + validRegex: /^([^\s^\/])+$/ + + - id: $$cap_redis_pass + label: Redis password + defaultValue: mayanredispassword + validRegex: /^([^\s^\/])+$/ + + - id: $$cap_dbname + label: Database Name + defaultValue: 'mayan' + validRegex: /^([^\s^\/])+$/ + + - id: $$cap_dbuser + label: Database User + defaultValue: 'mayandbuser' + validRegex: /^([^\s^\/])+$/ + + - id: $$cap_dbpass + label: Database Password + defaultValue: $$cap_gen_random_hex(64) + validRegex: /^([^\s^\/])+$/ + + - id: $$cap_default_document_lang + label: Default document language + defaultValue: eng + description: Use the ISO 639-3 code (https://en.wikipedia.org/wiki/ISO_639). Will default to *eng* if left blank. + + - id: $$cap_language_code + label: Default language for the installation + defaultValue: en-us + description: Mayan EDMS UI will default to this language if the user's locale is not found. Will default to *en-us* if left blank + + - id: $$cap_ocr_langs + label: Extra packages + defaultValue: 'tesseract-ocr-spa' + description: Use to add extra languagues for OCR (English is installed by default). Insert as many packages as you need, separated by a space, as *tesseract-ocr-CODE*. Language codes in https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html + + - id: $$cap_timezone + label: Time Zone + defaultValue: UTC + description: Leave blank if you'd rather change it in System => Setup => Settings + + - id: $$cap_username + label: Admin username + defaultValue: admin + description: Username for your first login + + - id: $$cap_email + label: Admin email + defaultValue: example@example.com + + - id: $$cap_pass + label: Admin password + defaultValue: $$cap_gen_random_hex(16) + validRegex: /^([^\s^\/])+$/ + description: It will be prompted to you at startup and can be changed, but copy it just in case. + + - id: $$cap_project_title + label: Project Title (Site's name) + defaultValue: 'Mayan EDMS' + description: Title and header of your site + + instructions: + start: >- + Mayan EDMS is an open source web-based Document Management System (More info at https://www.mayan-edms.com/) + Most settings can be set inside the app, but environment variables will override them. + Minimum requirements 2GB RAM and 2vCPUs. Recommended 4GB RAM and 4vCPUs + end: >- + Done! + Your service is available at http://$$cap_appname.$$cap_root_domain + displayName: 'Mayan EDMS' + isOfficial: false + description: Mayan EDMS is an open source web-based Document Management System with many advanced features. + documentation: https://www.mayan-edms.com/ diff --git a/public/v4/logos/mayan-edms.png b/public/v4/logos/mayan-edms.png new file mode 100644 index 0000000000000000000000000000000000000000..097a68bc7a71b095ea8d0fa87baee39c7414ac5d GIT binary patch literal 13653 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 literal 0 HcmV?d00001