Browse Source

:fire: move deployment scripts to wikipali-deployment repo

Jeremy Zheng 2 days ago
parent
commit
352761caa4
100 changed files with 0 additions and 2873 deletions
  1. 0 5
      deploy/.gitignore
  2. 0 94
      deploy/README.md
  3. 0 7
      deploy/ec2.yml
  4. 0 24
      deploy/group_vars/all.yml
  5. 0 4
      deploy/k8s.yml
  6. 0 115
      deploy/mint-deprecated.yml
  7. 0 31
      deploy/mint-v2.2.yml
  8. 0 133
      deploy/mint-v2.3.yml
  9. 0 15
      deploy/mint.yml
  10. 0 4
      deploy/open-search.yml
  11. 0 9
      deploy/ping.yml
  12. 0 7
      deploy/reboot.yml
  13. 0 4
      deploy/redis.yml
  14. 0 16
      deploy/roles/clove-build/tasks/main.yml
  15. 0 1
      deploy/roles/container/files/registries.conf
  16. 0 16
      deploy/roles/container/tasks/main.yml
  17. 0 6
      deploy/roles/container/templates/storage.conf
  18. 0 3
      deploy/roles/docker/files/daemon.json
  19. 0 28
      deploy/roles/docker/tasks/kubernetes.yml
  20. 0 72
      deploy/roles/docker/tasks/main.yml
  21. 0 1
      deploy/roles/docker/templates/docker.list.j2
  22. 0 0
      deploy/roles/mint-build-v2.3/files/.gitignore
  23. 0 136
      deploy/roles/mint-build-v2.3/tasks/main.yml
  24. 0 28
      deploy/roles/mint-dashboard-v4-build/tasks/main.yml
  25. 0 35
      deploy/roles/mint-nginx/tasks/main.yml
  26. 0 9
      deploy/roles/mint-nginx/templates/fpm.conf.j2
  27. 0 57
      deploy/roles/mint-nginx/templates/nginx.conf.j2
  28. 0 11
      deploy/roles/mint-openai-proxy-build/tasks/main.yml
  29. 0 11
      deploy/roles/mint-release-build/tasks/ai-translate.yml
  30. 0 9
      deploy/roles/mint-release-build/tasks/api-v12.yml
  31. 0 12
      deploy/roles/mint-release-build/tasks/api-v8.yml
  32. 0 45
      deploy/roles/mint-release-build/tasks/main.yml
  33. 0 73
      deploy/roles/mint-release-build/templates/build.sh.j2
  34. 0 3
      deploy/roles/mint-release-build/templates/shell.sh.j2
  35. 0 6
      deploy/roles/mint-v2.0/tasks/antd-v4.yml
  36. 0 23
      deploy/roles/mint-v2.0/tasks/lily.yml
  37. 0 67
      deploy/roles/mint-v2.0/tasks/main.yml
  38. 0 17
      deploy/roles/mint-v2.0/tasks/morus.yml
  39. 0 76
      deploy/roles/mint-v2.0/tasks/queue-workers.yml
  40. 0 37
      deploy/roles/mint-v2.0/tasks/tulip.yml
  41. 0 1
      deploy/roles/mint-v2.0/templates/lily/config.toml.j2
  42. 0 15
      deploy/roles/mint-v2.0/templates/lily/services/server.service.j2
  43. 0 15
      deploy/roles/mint-v2.0/templates/lily/services/worker.service.j2
  44. 0 15
      deploy/roles/mint-v2.0/templates/morus.service.j2
  45. 0 15
      deploy/roles/mint-v2.0/templates/queue-worker.service.j2
  46. 0 9
      deploy/roles/mint-v2.0/templates/scheduler.service.j2
  47. 0 13
      deploy/roles/mint-v2.0/templates/tulip/config.php.j2
  48. 0 1
      deploy/roles/mint-v2.0/templates/tulip/db/env.j2
  49. 0 15
      deploy/roles/mint-v2.0/templates/tulip/service.conf.j2
  50. 0 35
      deploy/roles/mint-v2.1/tasks/ai-translate.yml
  51. 0 30
      deploy/roles/mint-v2.1/tasks/clove.yml
  52. 0 35
      deploy/roles/mint-v2.1/tasks/laravel-workers.yml
  53. 0 59
      deploy/roles/mint-v2.1/tasks/laravel.yml
  54. 0 94
      deploy/roles/mint-v2.1/tasks/main.yml
  55. 0 42
      deploy/roles/mint-v2.1/tasks/openai-proxy.yml
  56. 0 30
      deploy/roles/mint-v2.1/tasks/php-fpm.yml
  57. 0 11
      deploy/roles/mint-v2.1/tasks/schedule-run.yml
  58. 0 14
      deploy/roles/mint-v2.1/templates/containers/ai-translate.sh.j2
  59. 0 3
      deploy/roles/mint-v2.1/templates/containers/api-v8.sh.j2
  60. 0 14
      deploy/roles/mint-v2.1/templates/containers/laravel-worker.sh.j2
  61. 0 13
      deploy/roles/mint-v2.1/templates/containers/openai-proxy.sh.j2
  62. 0 5
      deploy/roles/mint-v2.1/templates/containers/php-fpm.sh.j2
  63. 0 10
      deploy/roles/mint-v2.1/templates/containers/schedule-run.timer.j2
  64. 0 37
      deploy/roles/mint-v2.1/templates/containers/vendors.sh.j2
  65. 0 18
      deploy/roles/mint-v2.1/templates/v1/config.js.j2
  66. 0 67
      deploy/roles/mint-v2.1/templates/v1/config.php.j2
  67. 0 16
      deploy/roles/mint-v2.1/templates/v2/ai-translate.toml.j2
  68. 0 97
      deploy/roles/mint-v2.1/templates/v2/env.j2
  69. 0 5
      deploy/roles/mint-v2.1/templates/v2/openai-proxy.json.j2
  70. 0 2
      deploy/roles/mint-v2.1/templates/version.txt.j2
  71. 0 27
      deploy/roles/mint-v2.2/tasks/clove.yml
  72. 0 42
      deploy/roles/mint-v2.2/tasks/laravel.yml
  73. 0 89
      deploy/roles/mint-v2.2/tasks/main.yml
  74. 0 4
      deploy/roles/mint-v2.2/templates/containers/php-fpm.sh.j2
  75. 0 52
      deploy/roles/mint-v2.2/templates/containers/run.sh.j2
  76. 0 10
      deploy/roles/mint-v2.2/templates/containers/schedule-run.timer.j2
  77. 0 6
      deploy/roles/mint-v2.2/templates/containers/shell.sh.j2
  78. 0 18
      deploy/roles/mint-v2.2/templates/v1/config.js.j2
  79. 0 67
      deploy/roles/mint-v2.2/templates/v1/config.php.j2
  80. 0 16
      deploy/roles/mint-v2.2/templates/v2/ai-translate.toml.j2
  81. 0 97
      deploy/roles/mint-v2.2/templates/v2/env.j2
  82. 0 5
      deploy/roles/mint-v2.2/templates/v2/openai-proxy.json.j2
  83. 0 2
      deploy/roles/mint-v2.2/templates/version.txt.j2
  84. 0 46
      deploy/roles/mint-v2.3/files/clean.py
  85. 0 9
      deploy/roles/mint-v2.3/files/php-fpm.sh
  86. 0 29
      deploy/roles/mint-v2.3/tasks/config.yml
  87. 0 13
      deploy/roles/mint-v2.3/tasks/laravel-scheduler.yml
  88. 0 74
      deploy/roles/mint-v2.3/tasks/main.yml
  89. 0 101
      deploy/roles/mint-v2.3/tasks/systemd.yml
  90. 0 15
      deploy/roles/mint-v2.3/templates/ai-translate.service.j2
  91. 0 11
      deploy/roles/mint-v2.3/templates/ai-translate.sh.j2
  92. 0 16
      deploy/roles/mint-v2.3/templates/ai-translate.toml.j2
  93. 0 13
      deploy/roles/mint-v2.3/templates/clean.service.j2
  94. 0 9
      deploy/roles/mint-v2.3/templates/clean.timer.j2
  95. 0 10
      deploy/roles/mint-v2.3/templates/docker.sh.j2
  96. 0 15
      deploy/roles/mint-v2.3/templates/laravel-job.service.j2
  97. 0 14
      deploy/roles/mint-v2.3/templates/laravel-scheduler.service.j2
  98. 0 9
      deploy/roles/mint-v2.3/templates/laravel-scheduler.timer.j2
  99. 0 63
      deploy/roles/mint-v2.3/templates/laravel.sh.j2
  100. 0 5
      deploy/roles/mint-v2.3/templates/open-ai-server.json.j2

+ 0 - 5
deploy/.gitignore

@@ -1,5 +0,0 @@
-/clients/
-/shared/
-/tmp/
-*.log
-*.xz

+ 0 - 94
deploy/README.md

@@ -1,94 +0,0 @@
-# Deployment
-
-## Setup a cluster
-
-```bash
-# create cluster
-mkdir -p clients/CLUSTER/.ssh
-cd clients/CLUSTER/
-# append your cluster hosts
-touch hosts
-# generate ssh key
-ssh-keygen -t ed25519 -f .ssh/id_ed25519
-# upload the ssh public key to target host
-ssh-copy-id -i .ssh/id_ed25519 USER@HOST
-```
-
-## Deploy
-
-```bash
-# test ssh connections
-peony -i clients/CLUSTER ping.yml
-# setup base system
-peony -i clients/CLUSTER ec2.yml
-# setup redis cluster nodes
-peony -i clients/CLUSTER redis.yml -l redis
-# check the version by: git log --abbrev-commit
-peony -i clients/CLUSTER mint.yml --extra-vars "mint_version=xxx"
-```
-
-## System image
-
-- [Raspberry Pi OS Lite](https://www.raspberrypi.com/software/operating-systems/)
-- [Armbian](https://www.armbian.com/download/)
-- [wiringPi for Orange Pi](https://github.com/orangepi-xunlong/WiringOP)
-
-## Import Database Data
-
-### on deploy a new server
-
-```bash
-php ../../public/app/install/db_insert_templet_cli.php 1 217
-php ../../public/app/install/db_update_toc_cli.php 1 217 pali
-php ../../public/app/install/db_update_toc_cli.php 1 217 zh-hans
-php ../../public/app/install/db_update_toc_cli.php 1 217 zh-hant
-php ../../public/app/install/db_insert_palitext_cli.php 1 217
-php ../../public/app/install/db_update_palitext_cli.php 1 217
-php ../../public/app/install/db_insert_bookword_from_csv_cli.php 1 217
-php ../../public/app/install/db_insert_word_from_csv_cli.php 1 217
-php ../../public/app/install/db_insert_wordindex_from_csv_cli.php
-
-php ./migrations/20211202084900_init_pali_serieses.php
-php ./migrations/20211125155600_word_statistics.php
-php ./migrations/20211125155700_pali_sent_org.php
-php ./migrations/20211125165700-pali_sent-upgrade.php
-php ./migrations/20211126220400-pali_sent_index-upgrade.php
-php ./migrations/20211127214800_sent_sim.php
-php ./migrations/20211127214900-sent_sim_index.php
-
-php ../../public/app/fts/sql.php
-
-php ../../public/app/admin/word_index_weight_refresh.php 1 217
-```
-
-### on update
-
-```bash
-# public/pali_title目录下文件*_pali.csv改变时触发
-php ../../public/app/install/db_update_palitext_cli.php 1 217
-
-# public/pali_title目录下文件其他改变时触发
-php ../../public/app/install/db_update_toc_cli.php 1 217 pali
-php ../../public/app/install/db_update_toc_cli.php 1 217 zh-hans
-php ../../public/app/install/db_update_toc_cli.php 1 217 zh-hant
-
-# public/dependence/pali_sentence/data 目录下文件其他改变时触发
-# TODO 导入pali_sent使用上述目录csv文件。目前用的是sqlite db文件
-php ./migrations/20211125165700-pali_sent-upgrade.php
-php ./migrations/20211126220400-pali_sent_index-upgrade.php
-
-```
-
-## Crontab
-
-### Daily
-
-1. upgrade_pali_toc.php
-
-```bash
-/public/app/upgrade/upgrade_pali_toc.php
-```
-
-## Documents
-
-- [Configure a container to start automatically as a systemd service](https://www.redhat.com/en/blog/container-systemd-persist-reboot)

+ 0 - 7
deploy/ec2.yml

@@ -1,7 +0,0 @@
-- name: Testing ssh connections
-  hosts: all,!localhost
-  roles:
-    - os
-    - ubuntu
-    - container
-    - random-passwords

+ 0 - 24
deploy/group_vars/all.yml

@@ -1,24 +0,0 @@
-ansible_python_interpreter: /usr/bin/python3
-ansible_ssh_private_key_file: "{{ inventory_dir }}/.ssh/id_ed25519"
-
-app_deploy_target: "/srv/{{ app_domain }}/{{ mint_version }}"
-app_debug: false
-
-app_api_v8_php_base_path: "/api"
-app_api_v12_php_base_path: "/api-v2026"
-app_dashboard_v4_base_path: "/pcd"
-app_dashboard_v6_base_path: "/pcd-v2026"
-
-app_dashboard_token_key: "token.20260116"
-app_php_memory_limit: "128M"
-app_consumer_loop_limit_ai_translate: 16
-app_deploy_keeps: 7
-
-app_php_fpm81_port: 9810
-app_php_fpm84_port: 9840
-
-app_php81_image: "wikipali/mint:php-8.1-20251225"
-app_php84_image: "wikipali/mint:php-8.4-20260108"
-app_python_image: "wikipali/mint:php-8.4-20260108"
-app_nodejs_image: "wikipali/mint:php-8.4-20260108"
-app_pull_images: false

+ 0 - 4
deploy/k8s.yml

@@ -1,4 +0,0 @@
-- name: Setup docker
-  hosts: all,!localhost
-  roles:
-    - docker

+ 0 - 115
deploy/mint-deprecated.yml

@@ -1,115 +0,0 @@
-- name: Build frontend v4
-  hosts: 127.0.0.1
-  roles:
-    - mint-dashboard-v4-build
-    - openai-proxy-build
-
-- name: Setup mint repo
-  hosts:
-    - web
-    - fpm
-    - task
-    - fort
-    - ai_translate
-    - openai_proxy
-  roles:
-    - mint-v2.1
-
-- name: Setup postgresql pali t-search
-  hosts:
-    - db
-  tasks:
-    - name: Upload pali.stop
-      become: true
-      ansible.builtin.copy:
-        dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
-        src: "{{ playbook_dir }}/tsearch_data/pali.stop"
-        owner: root
-        group: root
-        mode: "0444"
-    - name: Upload pali.syn
-      become: true
-      ansible.builtin.copy:
-        dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
-        src: "{{ playbook_dir }}/tsearch_data/pali.syn"
-        owner: root
-        group: root
-        mode: "0444"
-    - name: Restart postgresql server
-      become: true
-      ansible.builtin.systemd:
-        state: restarted
-        name: postgresql
-
-- name: Start mint background workers
-  hosts:
-    - task
-  tasks:
-    - name: Start worker service
-      ansible.builtin.systemd_service:
-        name: "{{ app_container_prefix }}-{{ app_domain }}-worker-mq-{{ item }}"
-        enabled: true
-        state: restarted
-        daemon_reload: true
-        scope: user
-      loop:
-        - discussion
-        - pr
-        - progress
-        - wbw.analyses
-        - export.pali.chapter
-        - export.article
-
-- name: Start mint php-fpm
-  hosts:
-    - fpm
-  tasks:
-    - name: Start fpm service
-      ansible.builtin.systemd_service:
-        name: "{{ app_container_prefix }}-{{ app_domain }}-fpm-{{ app_php_fpm_port }}"
-        enabled: true
-        state: restarted
-        daemon_reload: true
-        scope: user
-
-- name: Start mint ai-translate worker
-  hosts:
-    - fort
-    - ai_translate
-  tasks:
-    - name: Enable ai-translate service
-      ansible.builtin.systemd_service:
-        name: "{{ app_container_prefix }}-{{ app_domain }}-worker-mq-ai.translate"
-        enabled: true
-        state: restarted
-        daemon_reload: true
-        scope: user
-
-- name: Start mint openai-proxy worker
-  hosts:
-    - openai_proxy
-  tasks:
-    - name: Enable openai-proxy service
-      ansible.builtin.systemd_service:
-        name: "{{ app_container_prefix }}-{{ app_domain }}-openai.proxy"
-        enabled: true
-        state: restarted
-        daemon_reload: true
-        scope: user
-
-- name: Setup nginx
-  hosts:
-    - web
-  roles:
-    - mint-nginx
-
-- name: Start single-node worker
-  hosts:
-    - fort
-  tasks:
-    - name: Enable schedule run timer
-      ansible.builtin.systemd_service:
-        name: "{{ app_domain }}-scheduler.timer"
-        state: restarted
-        enabled: true
-        scope: user

+ 0 - 31
deploy/mint-v2.2.yml

@@ -1,31 +0,0 @@
-- name: Setup local build folder
-  hosts: localhost
-  tasks:
-    - name: Git checkout repo
-      ansible.builtin.git:
-        repo: "https://github.com/iapt-platform/mint.git"
-        dest: "{{ playbook_dir }}/tmp/mint"
-        version: "{{ mint_version }}"
-
-- name: Build on local
-  hosts: localhost
-  roles:
-    - mint-dashboard-v4-build
-    - mint-openai-proxy-build
-    - clove-build
-
-- name: Build mint package on remote
-  hosts: building
-  roles:
-    - mint-release-build
-
-- name: Setup deploy folder
-  hosts: all:!localhost
-  roles:
-    - mint-v2.2
-
-- name: Setup nginx
-  hosts:
-    - web
-  roles:
-    - mint-nginx

+ 0 - 133
deploy/mint-v2.3.yml

@@ -1,133 +0,0 @@
-- name: Prepare the env
-  hosts: localhost
-  tasks:
-    - name: Check if mint.tar.xz file exists
-      ansible.builtin.stat:
-        path: "{{ playbook_dir }}/tmp/{{ app_domain }}-{{ mint_version }}.tar.xz"
-      register: mint_release_file_status
-
-- name: Building release package
-  hosts: localhost
-  roles:
-    - role: mint-build-v2.3
-      when: not mint_release_file_status.stat.exists
-  vars:
-    app_workspace: "{{ ansible_facts['env']['HOME'] }}/build/mint"
-
-- name: Upload and setup release package
-  hosts:    
-    - laravel_web
-    - laravel_task
-    - laravel_scheduler
-    - ai_translate
-    - open_ai_server
-  roles:
-    - role: mint-v2.3
-
-- name: Setup laravel framework
-  hosts:    
-    - laravel_web
-    - laravel_task
-    - laravel_scheduler
-  tasks:
-    - name: Setup api-v8
-      ansible.builtin.command: docker run --rm -it -v /srv:/srv:z {{ app_php81_image }} {{ app_deploy_target }}/scripts/laravel.sh setup      
-    - name: Setup api-v12
-      ansible.builtin.command: docker run --rm -it -v /srv:/srv:z {{ app_php84_image }} {{ app_deploy_target }}/scripts/laravel.sh setup
-
-- name: Start laravel scheduler
-  hosts:    
-    - laravel_scheduler
-  tasks:
-    - name: Enable laravel scheduler timer(v8)
-      become: true
-      ansible.builtin.systemd_service:
-        name: "{{ app_domain }}-laravel-scheduler-v8.timer"
-        state: restarted
-        enabled: true
-    - name: Enable laravel scheduler timer(v12)
-      become: true
-      ansible.builtin.systemd_service:
-        name: "{{ app_domain }}-laravel-scheduler-v12.timer"
-        state: restarted
-        enabled: true
-
-- name: Start laravel job
-  hosts:    
-    - laravel_task
-  tasks:
-    - name: Enable laravel job service
-      become: true
-      ansible.builtin.systemd_service:
-        name: "{{ app_domain }}-laravel-job-{{ item.name }}.service"
-        state: restarted
-        enabled: true
-      with_items:
-        - { name: "mq-discussion"}
-        - { name: "mq-pr"}
-        - { name: "mq-progress"}
-        - { name: "mq-wbw.analyses"}
-        - { name: "mq-export.pali.chapter"}
-        - { name: "mq-export.article"}
-    
-- name: Start ai-translate service
-  hosts:    
-    - ai_translate
-  tasks:
-    - name: Enable ai-translate service
-      become: true
-      ansible.builtin.systemd_service:
-        name: "{{ app_domain }}-ai-translate.service"
-        state: restarted
-        enabled: true
-
-- name: Start open-ai-server
-  hosts:    
-    - open_ai_server
-  tasks:
-    - name: Enable open-ai-server service
-      become: true
-      ansible.builtin.systemd_service:
-        name: "{{ app_domain }}-open-ai-server.service"
-        state: restarted
-        enabled: true
-
-- name: Setup nginx
-  hosts:
-    - nginx
-  tasks:
-    - name: Fix document root
-      become: true
-      ansible.builtin.lineinfile:
-        path: /etc/nginx/sites-enabled/{{ app_domain }}.conf
-        regexp: '^root '
-        line: "root {{ app_deploy_target }}/api-v8/public;"
-    - name: Fix {{ app_dashboard_v4_base_path }}
-      become: true
-      ansible.builtin.lineinfile:
-        path: /etc/nginx/sites-enabled/{{ app_domain }}.conf
-        search_string: 'dashboard-v4'
-        line: "alias {{ app_deploy_target }}/dashboard-v4/;"
-    - name: Fix {{ app_dashboard_v6_base_path }}
-      become: true
-      ansible.builtin.lineinfile:
-        path: /etc/nginx/sites-enabled/{{ app_domain }}.conf
-        search_string: 'dashboard-v6'
-        line: "alias {{ app_deploy_target }}/dashboard-v6/;"
-    - name: Create nginx logs folder
-      become: true
-      ansible.builtin.file:
-        path: "{{ app_deploy_target | dirname }}/logs"
-        state: directory
-        owner: www-data
-        mode: "0755"
-    - name: Test nginx configuration
-      become: true
-      ansible.builtin.command: nginx -t
-    - name: Restart nginx    
-      become: true
-      ansible.builtin.systemd_service:
-        name: nginx
-        state: restarted
-        enabled: true
-      

+ 0 - 15
deploy/mint.yml

@@ -1,15 +0,0 @@
-- name: Prepare the env
-  hosts: localhost
-  tasks:
-    - name: Check if mint.tar.xz file exists
-      ansible.builtin.stat:
-        path: "{{ playbook_dir }}/tmp/{{ app_domain }}-{{ mint_version }}.tar.xz"
-      register: mint_release_file_status
-
-- name: Building release package
-  hosts: building
-  roles:
-    - role: mint-build-v2.3
-      when: not mint_release_file_status.stat.exists
-  vars:
-    app_workspace: "{{ ansible_facts['env']['HOME'] }}/build/mint"

+ 0 - 4
deploy/open-search.yml

@@ -1,4 +0,0 @@
-- name: OpenSearch node
-  hosts: all
-  roles:
-    - open-search

+ 0 - 9
deploy/ping.yml

@@ -1,9 +0,0 @@
-- name: Ping
-  hosts: all
-  tasks:
-    - name: Test ssh connection
-      ansible.builtin.ping:
-
-    - name: Show facts available on the system
-      ansible.builtin.debug:
-        var: ansible_facts

+ 0 - 7
deploy/reboot.yml

@@ -1,7 +0,0 @@
-- name: Reboot
-  hosts: all,!localhost
-  tasks:
-    - name: Reboot system
-      become: true
-      ansible.builtin.reboot:
-        reboot_timeout: 120

+ 0 - 4
deploy/redis.yml

@@ -1,4 +0,0 @@
-- name: Redis cluster node
-  hosts: all
-  roles:
-    - redis

+ 0 - 16
deploy/roles/clove-build/tasks/main.yml

@@ -1,16 +0,0 @@
-- name: Clone clove project
-  ansible.builtin.git:
-    repo: "https://github.com/iapt-platform/clove.git"
-    dest: "{{ playbook_dir }}/tmp/clove"
-
-- name: Create clove.tar.xz
-  ansible.builtin.shell: |
-    set -e
-    tar cf clove.tar -C {{ playbook_dir }}/tmp/clove \
-      dict_text pali_html pali_sentence pali_similarity pali_title pali_word word_statistics
-    xz -z -F xz -C sha256 --best -T +1 clove.tar
-    exit 0
-  args:
-    executable: /usr/bin/bash
-    chdir: "{{ playbook_dir }}/tmp"
-    creates: clove.tar.xz

+ 0 - 1
deploy/roles/container/files/registries.conf

@@ -1 +0,0 @@
-unqualified-search-registries = ["docker.io"]

+ 0 - 16
deploy/roles/container/tasks/main.yml

@@ -1,16 +0,0 @@
-- name: Create containers config folder
-  ansible.builtin.file:
-    path: "{{ ansible_env.HOME }}/.config/containers"
-    state: directory
-
-- name: Copy registries.conf
-  ansible.builtin.copy:
-    src: registries.conf
-    dest: "{{ ansible_env.HOME }}/.config/containers/"
-    mode: "0644"
-
-- name: Copy storage.conf
-  ansible.builtin.template:
-    src: storage.conf
-    dest: "{{ ansible_env.HOME }}/.config/containers/"
-    mode: "0644"

+ 0 - 6
deploy/roles/container/templates/storage.conf

@@ -1,6 +0,0 @@
-[storage]
-driver = "overlay"
-rootless_storage_path = "$HOME/.c"
-
-[storage.options.overlay]
-mount_program = "/usr/bin/fuse-overlayfs"

+ 0 - 3
deploy/roles/docker/files/daemon.json

@@ -1,3 +0,0 @@
-{
-  "data-root": "/srv/.docker"
-}

+ 0 - 28
deploy/roles/docker/tasks/kubernetes.yml

@@ -1,28 +0,0 @@
-# https://minikube.sigs.k8s.io/docs/start/
-- name: Install minikube
-  become: true
-  ansible.builtin.get_url:
-    url: https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
-    dest: /usr/local/bin/minikube
-    mode: "0755"
-  when: ansible_architecture == "x86_64"
-
-- name: Install minikube
-  become: true
-  ansible.builtin.get_url:
-    url: https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-arm64
-    dest: /usr/local/bin/minikube
-    mode: "0755"
-  when: ansible_architecture == "aarch64"
-
-# https://minikube.sigs.k8s.io/docs/handbook/kubectl/
-- name: Install Kubectl
-  become: true
-  ansible.builtin.file:
-    src: /usr/local/bin/minikube
-    dest: /usr/local/bin/kubectl
-    state: link
-
-- name: Setup Kubectl
-  ansible.builtin.shell:
-    cmd: kubectl help

+ 0 - 72
deploy/roles/docker/tasks/main.yml

@@ -1,72 +0,0 @@
-# https://docs.docker.com/engine/install/ubuntu/
-
-- name: Install dependency packages
-  become: true
-  ansible.builtin.apt:
-    pkg:
-      - ca-certificates
-      - curl
-
-- name: Create apt keys folder
-  become: true
-  ansible.builtin.file:
-    path: /etc/apt/keyrings
-    state: directory
-    mode: "0755"
-
-- name: Download docker asc
-  become: true
-  ansible.builtin.get_url:
-    url: https://download.docker.com/linux/ubuntu/gpg
-    dest: /etc/apt/keyrings/docker.asc
-    mode: "0644"
-
-- name: Upload docker.list
-  become: true
-  ansible.builtin.template:
-    src: docker.list.j2
-    dest: /etc/apt/sources.list.d/docker.list
-    mode: "0644"
-
-- name: Update apt cache
-  become: true
-  ansible.builtin.apt:
-    update_cache: true
-    # cache_valid_time: 3600
-
-- name: Install docker packages
-  become: true
-  ansible.builtin.apt:
-    pkg:
-      - docker-ce
-      - docker-ce-cli
-      - containerd.io
-      - docker-buildx-plugin
-      - docker-compose-plugin
-
-- name: Add user to docker group
-  become: true
-  ansible.builtin.user:
-    name: "{{ ansible_user }}"
-    groups:
-      - docker
-    append: true
-
-- name: Change the default Docker storage location
-  become: true
-  ansible.builtin.copy:
-    src: daemon.json
-    dest: /etc/docker/daemon.json
-    mode: "0644"
-
-# https://kubernetes.io/docs/setup/production-environment/container-runtimes/#prerequisite-ipv4-forwarding-optional
-- name: Enable IPv4 packet forwarding
-  become: true
-  ansible.builtin.lineinfile:
-    path: /etc/sysctl.d/101-k8s.conf
-    line: "net.ipv4.ip_forward = 1"
-    create: true
-    mode: "0644"
-
-- name: Setup kubernetes
-  ansible.builtin.import_tasks: kubernetes.yml

+ 0 - 1
deploy/roles/docker/templates/docker.list.j2

@@ -1 +0,0 @@
-deb [signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} stable

+ 0 - 0
deploy/roles/mint-build-v2.3/files/.gitignore


+ 0 - 136
deploy/roles/mint-build-v2.3/tasks/main.yml

@@ -1,136 +0,0 @@
-- name: Create build folder
-  ansible.builtin.file:
-    path: "{{ app_workspace | dirname }}"
-    state: directory
-    # owner: "{{ ansible_user }}"
-    mode: "0755"
-
-- name: Git checkout mint repo
-  ansible.builtin.git:
-    repo: "https://github.com/iapt-platform/mint.git"
-    dest: "{{ app_workspace }}"
-    version: "{{ mint_version }}"
-
-- name: Extract dashboard-v4
-  ansible.builtin.unarchive:
-    src: dashboard-v4-{{ ansible_facts['architecture'] }}-20260116065749.tar.xz
-    dest: "{{ app_workspace }}/dashboard-v4/dashboard"
-    creates: "{{ app_workspace }}/dashboard-v4/dashboard/yarn.lock"
-
-- name: Extract api-v8
-  ansible.builtin.unarchive:
-    src: api-v8-20260117.tar.xz
-    dest: "{{ app_workspace }}/api-v8"
-    creates: "{{ app_workspace }}/api-v8/composer.lock"
-
-- name: Extract dashboard-v6
-  ansible.builtin.unarchive:
-    src: dashboard-v6-{{ ansible_facts['architecture'] }}-20260116064312.tar.xz
-    dest: "{{ app_workspace }}/dashboard-v6"
-    creates: "{{ app_workspace }}/dashboard-v6/package-lock.json"
-
-- name: Extract api-v12
-  ansible.builtin.unarchive:
-    src: api-v12-{{ ansible_facts['architecture'] }}-20260116064312.tar.xz
-    dest: "{{ app_workspace }}/api-v12"
-    creates: "{{ app_workspace }}/api-v12/composer.lock"
-
-- name: Extract open-ai-server
-  ansible.builtin.unarchive:
-    src: open-ai-server-{{ ansible_facts['architecture'] }}-20260116064312.tar.xz
-    dest: "{{ app_workspace }}/open-ai-server"
-    creates: "{{ app_workspace }}/open-ai-server/package-lock.json"
-
-- name: Build dashboard-v4
-  ansible.builtin.shell: |
-    source ~/.nvm/nvm.sh && yarn build
-  args:
-    executable: /bin/bash
-    chdir: "{{ app_workspace }}/dashboard-v4/dashboard"
-    creates: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}/dashboard-v4"
-  environment:
-    BUILD_PATH: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}/dashboard-v4"
-    NODE_OPTIONS: "--max_old_space_size=5120"
-    PUBLIC_URL: "{{ app_dashboard_v4_base_path }}"
-    REACT_APP_DEFAULT_LOCALE: "zh-Hans"
-    REACT_APP_LANGUAGES: "en-US,zh-Hans,zh-Hant"
-    REACT_APP_ENABLE_LOCAL_TOKEN: "true"
-    REACT_APP_TOKEN_KEY: "{{ app_dashboard_token_key }}"
-    REACT_APP_DOCUMENTS_SERVER: "{{ app_documents_server }}"
-    REACT_APP_RPC_SERVER: "{{ app_grpc_web_server }}"
-    REACT_APP_ASSETS_SERVER: "{{ app_assets_server }}"
-    REACT_APP_API_SERVER: "https://{{ app_domain }}"
-    REACT_APP_ICP_CODE: "{{ app_icp_code }}"
-    REACT_APP_MPS_CODE: "{{ app_mps_code }}"
-    REACT_APP_QUESTIONNAIRE_LINK: "{{ app_questionnaire_link }}"
-    REACT_APP_OPENAI_PROXY: "{{ app_openai_proxy_server }}/api/openai"
-
-- name: Build dashboard-v6
-  ansible.builtin.shell: |
-    source ~/.nvm/nvm.sh && npm run build -- --base={{ app_dashboard_v6_base_path }} --outDir {{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}/dashboard-v6
-  args:
-    executable: /bin/bash
-    chdir: "{{ app_workspace }}/dashboard-v6"
-    creates: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}/dashboard-v6"
-  environment:
-    NODE_ENV: production
-    VITE_DEFAULT_LOCALE: "zh-Hans"
-    VITE_LANGUAGES: "en-US,zh-Hans,zh-Hant"
-    VITE_ENABLE_LOCAL_TOKEN: "true"
-    VITE_TOKEN_KEY: "{{ app_dashboard_token_key }}"
-    VITE_DOCUMENTS_SERVER: "{{ app_documents_server }}"
-    VITE_RPC_SERVER: "{{ app_grpc_web_server }}"
-    VITE_ASSETS_SERVER: "{{ app_assets_server }}"
-    VITE_API_SERVER: "https://{{ app_domain }}"
-    VITE_ICP_CODE: "{{ app_icp_code }}"
-    VITE_MPS_CODE: "{{ app_mps_code }}"
-    VITE_QUESTIONNAIRE_LINK: "{{ app_questionnaire_link }}"
-    VITE_OPENAI_PROXY: "{{ app_openai_proxy_server }}/api/openai"
-
-- name: Build open-ai proxy server
-  ansible.builtin.shell: |
-    source ~/.nvm/nvm.sh && npm run build -- --output-path {{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}/open-ai-server
-  args:
-    executable: /bin/bash
-    chdir: "{{ app_workspace }}/open-ai-server"
-    creates: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}/open-ai-server"
-  environment:
-    NODE_ENV: production
-
-- name: Copy api-v8 to release folder
-  ansible.posix.synchronize:
-    src: "{{ app_workspace }}/api-v8"
-    dest: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}"
-    recursive: true
-
-- name: Copy api-v12 to release folder
-  ansible.posix.synchronize:
-    src: "{{ app_workspace }}/api-v12"
-    dest: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}"
-    recursive: true
-
-- name: Copy ai-translate to release folder
-  ansible.posix.synchronize:
-    src: "{{ app_workspace }}/ai-translate"
-    dest: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}"
-    recursive: true
-
-# - name: Archive release.tar.xz
-#   community.general.archive:
-#     path: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}/*"
-#     dest: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}.tar.xz"
-#     format: xz
-#     remove: true
-
-- name: Archive release.tar.xz
-  ansible.builtin.command: tar --remove-files -cJf {{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}.tar.xz -C {{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }} .
-  args:
-    creates: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}.tar.xz"
-  environment:
-    XZ_OPT: "-9"
-
-- name: Download release.tar.xz
-  ansible.builtin.fetch:
-    src: "{{ app_workspace }}/tmp/{{ app_domain }}-{{ mint_version }}.tar.xz"
-    dest: "{{ playbook_dir }}/tmp/"
-    flat: true

+ 0 - 28
deploy/roles/mint-dashboard-v4-build/tasks/main.yml

@@ -1,28 +0,0 @@
-- name: Extract dashboard-v4 node_modules
-  ansible.builtin.unarchive:
-    src: dashboard-20241201115354.tar.xz
-    dest: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard"
-    creates: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/node_modules"
-
-- name: Build dashboard-v4 dist
-  ansible.builtin.shell: yarn build
-  args:
-    chdir: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard"
-    creates: "dist-{{ app_domain }}-{{ mint_version }}"
-  environment:
-    BUILD_PATH: "dist-{{ app_domain }}-{{ mint_version }}"
-    NODE_OPTIONS: "--max_old_space_size=5120"
-    PUBLIC_URL: "{{ app_dashboard_base_path }}"
-    REACT_APP_DEFAULT_LOCALE: "zh-Hans"
-    REACT_APP_LANGUAGES: "en-US,zh-Hans,zh-Hant"
-    REACT_APP_ENABLE_LOCAL_TOKEN: "true"
-    REACT_APP_TOKEN_KEY: "token.20250320"
-    REACT_APP_DOCUMENTS_SERVER: "{{ app_documents_server }}"
-    REACT_APP_RPC_SERVER: "{{ app_grpc_web_server }}"
-    REACT_APP_ASSETS_SERVER: "{{ app_assets_server }}"
-    REACT_APP_API_SERVER: "https://{{ app_domain }}"
-    REACT_APP_ICP_CODE: "{{ app_icp_code }}"
-    REACT_APP_MPS_CODE: "{{ app_mps_code }}"
-    REACT_APP_QUESTIONNAIRE_LINK: "{{ app_questionnaire_link }}"
-    # https://github.com/iapt-platform/mint/blob/5e81587433455cbc4994da49db5b880cf79e3539/dashboard-v4/dashboard/.env.orig#L17
-    REACT_APP_OPENAI_PROXY: "{{ app_openai_proxy_server }}/api/openai"

+ 0 - 35
deploy/roles/mint-nginx/tasks/main.yml

@@ -1,35 +0,0 @@
-- name: Create nginx logs folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_target | dirname }}/logs/nginx"
-    state: directory
-    owner: www-data
-    mode: "0755"
-
-- name: Upload nginx-fpm.sh
-  become: true
-  ansible.builtin.template:
-    src: fpm.conf.j2
-    dest: /etc/nginx/sites-enabled/php-fpm-{{ app_php_fpm_port }}.conf
-    mode: "0644"
-    force: false
-
-- name: Upload nginx.conf
-  become: true
-  ansible.builtin.template:
-    src: nginx.conf.j2
-    dest: /etc/nginx/sites-enabled/{{ app_domain }}.conf
-    mode: "0644"
-    force: false
-
-- name: Set document root
-  become: true
-  ansible.builtin.shell: sed -i '5s#.*#root {{ app_deploy_target }}/api-v8/public;#' /etc/nginx/sites-enabled/{{ app_domain }}.conf
-
-- name: Set dashboard alias
-  become: true
-  ansible.builtin.shell: sed -i '25s#.*#alias {{ app_deploy_target }}/dashboard-v4/dashboard/dist/;#' /etc/nginx/sites-enabled/{{ app_domain }}.conf
-
-- name: Reload nginx.conf
-  become: true
-  ansible.builtin.shell: nginx -s reload

+ 0 - 9
deploy/roles/mint-nginx/templates/fpm.conf.j2

@@ -1,9 +0,0 @@
-upstream php_fpm_{{ app_php_fpm_port }} {
-   # least_conn;
-   
-   {% for host in groups['php_fpm'] %}
-   server {{ host }}:{{ app_php_fpm_port }} weight=10;
-   {% endfor %}
-
-   # server 127.0.0.1:{{ app_php_fpm_port }} backup;
-}

+ 0 - 57
deploy/roles/mint-nginx/templates/nginx.conf.j2

@@ -1,57 +0,0 @@
-# https://laravel.com/docs/12.x/deployment#nginx
-
-server {
-    server_name {{ app_domain }};
-    root /bla-bla-bla;
- 
-    add_header X-Frame-Options "SAMEORIGIN";
-    add_header X-Content-Type-Options "nosniff";
- 
-    index index.php index.html;
- 
-    charset utf-8;
-    gzip_comp_level 9;
-    gzip_min_length 1k;
-    gzip_types text/plain text/css application/xml application/javascript;
-    gzip_vary on;
-    client_max_body_size 512M;
-    
-    access_log {{ app_deploy_target | dirname }}/logs/nginx/access.log;
-    error_log {{ app_deploy_target | dirname }}/logs/nginx/error.log warn;
-    # access_log syslog:server=unix:/dev/log,tag={{ app_domain }},nohostname,severity=info combined;
-    # error_log  syslog:server=unix:/dev/log,tag={{ app_domain }},nohostname,severity=error;
-
-    location {{ app_dashboard_base_path }}/ {
-            alias /bla-bla-bla;
-            try_files $uri $uri/ {{ app_dashboard_base_path }}/index.html;
-
-            location ~* \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$ {
-            access_log off;
-            expires max;
-        }
-    }
- 
-    location / {
-        try_files $uri $uri/ /index.php?$query_string;
-    }
- 
-    location = /favicon.ico { access_log off; log_not_found off; }
-    location = /robots.txt  { access_log off; log_not_found off; }
- 
-    error_page 404 /index.php;
- 
-    location ~ \.php$ {
-        fastcgi_pass php_fpm_{{ app_php_fpm_port }};
-        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
-        # for nginx v1.18
-        # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
-        include fastcgi_params;
-        fastcgi_hide_header X-Powered-By;        
-    }
- 
-    location ~ /\.(?!well-known).* {
-        deny all;
-    }
-    
-}
-

+ 0 - 11
deploy/roles/mint-openai-proxy-build/tasks/main.yml

@@ -1,11 +0,0 @@
-- name: Install openai-proxy nodejs dependencies
-  ansible.builtin.shell: npm install --quiet
-  args:
-    chdir: "{{ playbook_dir }}/tmp/mint/open-ai-server"
-    creates: "node_modules"
-
-- name: Build openai-proxy target dist
-  ansible.builtin.shell: npm run build
-  args:
-    chdir: "{{ playbook_dir }}/tmp/mint/open-ai-server"
-    creates: "dist"

+ 0 - 11
deploy/roles/mint-release-build/tasks/ai-translate.yml

@@ -1,11 +0,0 @@
-- name: Install ai-translate dependencies
-  ansible.builtin.shell: |
-    python3 -m venv $PWD/python3
-    source $PWD/python3/bin/activate
-    python3 -m pip install -e .
-    deactivate
-    
-    exit 0
-  args:
-    executable: /bin/bash
-    chdir: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/ai-translate"

+ 0 - 9
deploy/roles/mint-release-build/tasks/api-v12.yml

@@ -1,9 +0,0 @@
-- name: Install api v12 dependencies
-  ansible.builtin.shell: |
-    npm install
-    php8.4 /usr/local/bin/composer install
-    
-    exit 0
-  args:
-    executable: /bin/bash
-    chdir: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/api-v12"

+ 0 - 12
deploy/roles/mint-release-build/tasks/api-v8.yml

@@ -1,12 +0,0 @@
-- name: Install api v8 dependencies
-  ansible.builtin.shell: |
-    npm install
-    php8.1 /usr/local/bin/composer install
-    cd public
-    npm install
-    php8.1 /usr/local/bin/composer install
-
-    exit 0
-  args:
-    executable: /bin/bash
-    chdir: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/api-v8"

+ 0 - 45
deploy/roles/mint-release-build/tasks/main.yml

@@ -1,45 +0,0 @@
-- name: Create build folder
-  ansible.builtin.file:
-    path: "{{ app_build_target | dirname }}"
-    state: directory
-    mode: "0755"
-
-- name: Download source code
-  ansible.builtin.unarchive:
-    src: https://github.com/iapt-platform/mint/archive/{{ mint_version }}.zip
-    dest: "{{ app_build_target | dirname }}"
-    remote_src: true
-    creates: "{{ app_build_target }}"
-
-- name: Upload dashboard-v4 dist
-  ansible.posix.synchronize:
-    src: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/dist-{{ app_domain }}-{{ mint_version }}/"
-    dest: "{{ app_build_target }}/dashboard-v4/dashboard/dist/"
-
-- name: Upload openai-proxy dist
-  ansible.posix.synchronize:
-    src: "{{ playbook_dir }}/tmp/mint/open-ai-server/dist/"
-    dest: "{{ app_build_target }}/open-ai-server/dist/"
-
-- name: Upload shell.sh
-  ansible.builtin.template:
-    src: shell.sh.j2
-    dest: "{{ app_build_target }}/scripts/shell.sh"
-    mode: "0555"
-
-- name: Upload build.sh
-  ansible.builtin.template:
-    src: build.sh.j2
-    dest: "{{ app_build_target }}/scripts/build.sh"
-    mode: "0555"
-
-- name: Setup mint dependencies and build mint.tar.xz
-  ansible.builtin.shell:
-    cmd: "docker run --rm -it --hostname=mint --network host -v {{ app_build_target }}:{{ app_deploy_target }}:z {{ app_docker_image_name }} /bin/bash -c {{ app_deploy_target }}/scripts/build.sh"
-    creates: "{{ app_build_target }}/tmp/{{ app_domain }}/mint-{{ mint_version }}.tar.xz"
-
-- name: Download mint.tar.xz
-  ansible.posix.synchronize:
-    src: "{{ app_build_target }}/tmp/{{ app_domain }}/mint-{{ mint_version }}.tar.xz"
-    dest: "{{ playbook_dir }}/tmp/{{ app_domain }}-mint-{{ mint_version }}.tar.xz"
-    mode: pull

+ 0 - 73
deploy/roles/mint-release-build/templates/build.sh.j2

@@ -1,73 +0,0 @@
-#!/bin/bash
-
-set -e
-
-source $HOME/.sdkman/bin/sdkman-init.sh
-source $HOME/.nvm/nvm.sh
-
-# cd {{ app_deploy_target }}/dashboard-v4/dashboard/
-# if [ -d dist ]
-# then
-#     rm -f dist
-# fi
-# https://github.com/iapt-platform/mint/blob/5e81587433455cbc4994da49db5b880cf79e3539/dashboard-v4/dashboard/.env.orig#L17
-# NODE_OPTIONS="--max_old_space_size=2048" \
-#     PUBLIC_URL="{{ app_dashboard_base_path }}" \
-#     BUILD_PATH: "dist-{{ app_domain }}-{{ mint_version }}"
-#     REACT_APP_DEFAULT_LOCALE="zh-Hans" \
-#     REACT_APP_LANGUAGES="en-US,zh-Hans,zh-Hant" \
-#     REACT_APP_ENABLE_LOCAL_TOKEN="true" \
-#     REACT_APP_TOKEN_KEY="token.20250320" \
-#     REACT_APP_DOCUMENTS_SERVER="{{ app_documents_server }}" \
-#     REACT_APP_RPC_SERVER="{{ app_grpc_web_server }}" \
-#     REACT_APP_ASSETS_SERVER="{{ app_assets_server }}" \
-#     REACT_APP_API_SERVER="https://{{ app_domain }}" \
-#     REACT_APP_ICP_CODE="{{ app_icp_code }}" \
-#     REACT_APP_MPS_CODE="{{ app_mps_code }}" \
-#     REACT_APP_QUESTIONNAIRE_LINK="{{ app_questionnaire_link }}" \
-#     REACT_APP_OPENAI_PROXY="{{ app_openai_proxy_server }}/api/openai" \
-#     npm run build
-
-cd {{ app_deploy_target }}/api-v8/
-NO_COLOR=true npm install --quiet --omit=dev
-php8.1 /usr/local/bin/composer install --no-ansi --quiet --optimize-autoloader --no-dev
-cd {{ app_deploy_target }}/api-v8/public
-NO_COLOR=true npm install --quiet --omit=dev
-php8.1 /usr/local/bin/composer install --no-ansi --quiet --optimize-autoloader --no-dev
-
-cd {{ app_deploy_target }}/api-v12/
-NO_COLOR=true npm install --quiet --omit=dev
-php8.4 /usr/local/bin/composer install --no-ansi --quiet --optimize-autoloader --no-dev
-
-# cd {{ app_deploy_target }}/open-ai-server/
-# npm install
-# if [ -d dist ]
-# then
-#     rm -f dist
-# fi
-# npm run build
-
-cd {{ app_deploy_target }}/ai-translate/
-if [ -d python3 ]
-then
-    rm -r python3
-fi
-python3.13 -m venv $PWD/python3
-source $PWD/python3/bin/activate
-if [ ! -f get-pip.py ]
-then
-    wget -O get-pip.py https://bootstrap.pypa.io/get-pip.py
-fi
-python get-pip.py
-python -m pip install --quiet -e .
-deactivate
-
-mkdir -p {{ app_deploy_target }}/tmp/{{ app_domain }}
-cd {{ app_deploy_target }}/tmp/{{ app_domain }}/
-tar cf mint-{{ mint_version }}.tar -C {{ app_deploy_target }} \
-    api-v12 api-v8 \
-    dashboard-v4/dashboard/dist open-ai-server/dist \
-    ai-translate/ai_translate ai-translate/pyproject.toml ai-translate/python3
-xz -z -F xz -C sha256 --best -T +1 mint-{{ mint_version }}.tar
-
-exit 0

+ 0 - 3
deploy/roles/mint-release-build/templates/shell.sh.j2

@@ -1,3 +0,0 @@
-#!/bin/sh
-
-docker run --rm -it --hostname=mint --network host -v $HOME/build/mint-{{ mint_version }}:{{ app_deploy_target }}:z {{ app_docker_image_name }}

+ 0 - 6
deploy/roles/mint-v2.0/tasks/antd-v4.yml

@@ -1,6 +0,0 @@
-- name: Upload dashboard
-  ansible.builtin.copy:
-    src: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/dist-{{ mint_version }}"
-    dest: "{{ app_deploy_target }}/dashboard"
-    mode: "0755"
-    creates: "{{ app_deploy_target }}/dashboard"

+ 0 - 23
deploy/roles/mint-v2.0/tasks/lily.yml

@@ -1,23 +0,0 @@
-- name: upload lily config.toml
-  template:
-    src: v2/lily/config.toml.j2
-    dest: "{{ app_deploy_root }}/agile/rpc/lily/config.toml"
-    mode: "0644"
-
-- name: upload lily rpc server service
-  become: true
-  template:
-    src: v2/lily/services/server.service.j2
-    dest: /usr/lib/systemd/system/rpc.lily.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"
-
-- name: upload lily rpc worker service
-  become: true
-  template:
-    src: v2/lily/services/worker.service.j2
-    dest: /usr/lib/systemd/system/worker.lily.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"

+ 0 - 67
deploy/roles/mint-v2.0/tasks/main.yml

@@ -1,67 +0,0 @@
-- name: Install dbmate
-  become: true
-  ansible.builtin.get_url:
-    url: "https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-{{ app_dbmate_arch }}"
-    dest: /usr/local/bin/dbmate
-    mode: "0555"
-    creates: /usr/local/bin/dbmate
-
-- name: Create the deployment folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_target }}"
-    state: directory
-    owner: "{{ ansible_user }}"
-    mode: "0755"
-
-- name: Create the logs folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_target }}/logs"
-    state: directory
-    owner: "www-data"
-    group: "www-data"
-    mode: "0755"
-
-- name: Unarchive repo
-  ansible.builtin.unarchive:
-    src: https://github.com/iapt-platform/mint/archive/{{ mint_version }}.zip
-    dest: "{{ app_deploy_target }}/mint"
-    remote_src: true
-    creates: "{{ app_deploy_target }}/mint"
-
-- name: Setup dashboard
-  ansible.builtin.import_tasks: antd-v4.yml
-- name: Setup systemd services
-  ansible.builtin.import_tasks: systemd.yml
-
-# https://laravel.com/docs/10.x/scheduling#running-the-scheduler
-- name: Upload scheduler service
-  become: true
-  ansible.builtin.template:
-    src: v2/scheduler.service.j2
-    dest: /usr/lib/systemd/system/scheduler.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"
-
-# https://wiki.archlinux.org/title/Systemd/Timers
-- name: Upload scheduler timer
-  become: true
-  ansible.builtin.template:
-    src: v2/scheduler.timer.j2
-    dest: /usr/lib/systemd/system/scheduler.{{ app_domain }}.timer
-    owner: root
-    group: root
-    mode: "0644"
-
-- name: Setup laravel queue workers
-  ansible.builtin.import_tasks: queue-workers.yml
-- name: Setup morus service
-  ansible.builtin.import_tasks: morus.yml
-
-- name: Setup lily service
-  ansible.builtin.import_tasks: lily.yml
-
-- name: Setup tulip service
-  ansible.builtin.import_tasks: tulip.yml

+ 0 - 17
deploy/roles/mint-v2.0/tasks/morus.yml

@@ -1,17 +0,0 @@
-- name: auto-loader optimization for morus
-  ansible.builtin.command:
-    argv:
-      - /usr/bin/composer
-      - install
-      - --optimize-autoloader
-      - --no-dev
-    chdir: "{{ app_deploy_target }}/dashboard-v4/rpc/morus/morus"
-
-- name: Upload morus rpc service
-  become: true
-  ansible.builtin.template:
-    src: v2/morus.service.j2
-    dest: /usr/lib/systemd/system/morus.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"

+ 0 - 76
deploy/roles/mint-v2.0/tasks/queue-workers.yml

@@ -1,76 +0,0 @@
-- name: upload {{ name }} worker service
-  become: true
-  template:
-    src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"
-  vars:
-    name: "discussion"
-
-- name: upload {{ name }} worker service
-  become: true
-  template:
-    src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"
-  vars:
-    name: "pr"
-
-- name: Upload {{ name }} worker service
-  become: true
-  template:
-    src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"
-  vars:
-    name: "progress"
-
-- name: Upload {{ name }} worker service
-  become: true
-  template:
-    src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"
-  vars:
-    name: "wbw.analyses"
-
-- name: upload {{ name }} worker service
-  become: true
-  template:
-    src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"
-  vars:
-    name: "export.pali.chapter"
-
-- name: Upload {{ name }} worker service
-  become: true
-  template:
-    src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"
-  vars:
-    name: "export.article"
-
-- name: Upload {{ name }} worker service
-  become: true
-  template:
-    src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"
-  vars:
-    name: "ai.translate"

+ 0 - 37
deploy/roles/mint-v2.0/tasks/tulip.yml

@@ -1,37 +0,0 @@
-- name: auto-loader optimization for tulip
-  ansible.builtin.command:
-    argv:
-      - /usr/bin/composer
-      - update
-      - --optimize-autoloader
-      - --no-dev
-    chdir: "{{ app_deploy_target }}/dashboard-v4/rpc/tulip/tulip"
-
-- name: upload tulip db/.env
-  template:
-    src: v2/tulip/db/env.j2
-    dest: "{{ app_deploy_target }}/dashboard-v4/rpc/tulip/tulip/db/.env"
-    mode: "0644"
-
-- name: upload tulip config.php
-  template:
-    src: v2/tulip/config.php.j2
-    dest: "{{ app_deploy_target }}/dashboard-v4/rpc/tulip/tulip/config.php"
-    mode: "0644"
-
-- name: Setup tmp folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_root }}/dashboard-v4/rpc/tulip/tulip/tmp"
-    state: directory
-    owner: "www-data"
-    group: "www-data"
-
-- name: Upload tulip rpc service
-  become: true
-  template:
-    src: v2/tulip/service.conf.j2
-    dest: /usr/lib/systemd/system/tulip.{{ app_domain }}.service
-    owner: root
-    group: root
-    mode: "0644"

+ 0 - 1
deploy/roles/mint-v2.0/templates/lily/config.toml.j2

@@ -1 +0,0 @@
-port = {{ app_lily_listen_port }}

+ 0 - 15
deploy/roles/mint-v2.0/templates/lily/services/server.service.j2

@@ -1,15 +0,0 @@
-[Unit]
-Description=Mint lily rpc service for {{ app_domain }}
-After=network.target
-
-[Service]
-Type=simple
-ExecStart=/bin/bash lily.sh -d -c config.toml
-WorkingDirectory={{ app_deploy_target }}/dashboard-v4/rpc/lily
-User=www-data
-Group=www-data
-Restart=always
-RestartSec=30s
-
-[Install]
-WantedBy=multi-user.target

+ 0 - 15
deploy/roles/mint-v2.0/templates/lily/services/worker.service.j2

@@ -1,15 +0,0 @@
-[Unit]
-Description=Mint lily worker service for {{ app_domain }}
-After=network.target
-
-[Service]
-Type=simple
-ExecStart=/bin/bash lily.sh -d -c config.toml --worker {{ queue }}
-WorkingDirectory={{ app_deploy_target }}/dashboard-v4/rpc/lily
-User=www-data
-Group=www-data
-Restart=always
-RestartSec=30s
-
-[Install]
-WantedBy=multi-user.target

+ 0 - 15
deploy/roles/mint-v2.0/templates/morus.service.j2

@@ -1,15 +0,0 @@
-[Unit]
-Description=Mint morus rpc service for {{ app_domain }}
-After=network.target
-
-[Service]
-Type=simple
-ExecStart=/usr/bin/php server.php -p {{ app_morus_listen_port }}
-WorkingDirectory={{ app_deploy_target }}/dashboard-v4/rpc/morus/morus
-User=www-data
-Group=www-data
-Restart=always
-RestartSec=30s
-
-[Install]
-WantedBy=multi-user.target

+ 0 - 15
deploy/roles/mint-v2.0/templates/queue-worker.service.j2

@@ -1,15 +0,0 @@
-[Unit]
-Description=Mint {{ name }} worker for {{ app_domain }}
-After=network.target
-
-[Service]
-Type=simple
-ExecStart=/usr/bin/php artisan mq:{{ name }}
-WorkingDirectory={{ app_deploy_target }}
-User=www-data
-Group=www-data
-Restart=always
-RestartSec=30s
-
-[Install]
-WantedBy=multi-user.target

+ 0 - 9
deploy/roles/mint-v2.0/templates/scheduler.service.j2

@@ -1,9 +0,0 @@
-[Unit]
-Description=Mint scheduler for {{ app_domain }}
-
-[Service]
-Type=simple
-ExecStart=/usr/bin/php artisan schedule:run
-WorkingDirectory={{ app_deploy_target }}
-User=www-data
-Group=www-data

+ 0 - 13
deploy/roles/mint-v2.0/templates/tulip/config.php.j2

@@ -1,13 +0,0 @@
-<?php
-
-define("Config", [
-    'port' => {{ app_tulip_listen_port }},
-    "database" => [
-        "driver" => "pgsql",
-        "host" => "{{ app_tulip_db_host }}",
-        "port" => {{ app_tulip_db_port }},
-        "name" => "{{ app_tulip_db_name }}",
-        "user" => "{{ app_tulip_db_user }}",
-        "password" => "{{ app_tulip_db_password }}",
-    ],
-]);

+ 0 - 1
deploy/roles/mint-v2.0/templates/tulip/db/env.j2

@@ -1 +0,0 @@
-DATABASE_URL="postgres://{{ app_tulip_db_user }}:{{ app_tulip_db_password }}@{{ app_tulip_db_host}}:{{ app_tulip_db_port }}/{{ app_tulip_db_name }}?sslmode=disable"

+ 0 - 15
deploy/roles/mint-v2.0/templates/tulip/service.conf.j2

@@ -1,15 +0,0 @@
-[Unit]
-Description=Mint tulip rpc service for {{ app_domain }}
-After=network.target
-
-[Service]
-Type=simple
-ExecStart=/usr/bin/php server.php
-WorkingDirectory={{ app_deploy_target }}/dashboard-v4/rpc/tulip/tulip
-User=www-data
-Group=www-data
-Restart=always
-RestartSec=30s
-
-[Install]
-WantedBy=multi-user.target

+ 0 - 35
deploy/roles/mint-v2.1/tasks/ai-translate.yml

@@ -1,35 +0,0 @@
-- name: Upload script for ai.translate
-  ansible.builtin.template:
-    src: containers/ai-translate.sh.j2
-    dest: "{{ app_deploy_target }}/ai-translate/start.sh"
-    mode: "0555"
-
-- name: Upload config for ai.translate
-  ansible.builtin.template:
-    src: v2/ai-translate.toml.j2
-    dest: "{{ app_deploy_target }}/ai-translate/config.toml"
-    mode: "0444"
-
-- name: Stop ai.translate
-  containers.podman.podman_container:
-    name: "{{ app_domain }}-worker-mq-ai.translate"
-    state: absent
-
-- name: Create ai.translate container
-  containers.podman.podman_container:
-    name: "{{ app_domain }}-worker-mq-ai.translate"
-    image: "mint-python-3.13"
-    command: "{{ app_deploy_target }}/start.sh"
-    volumes:
-      - "{{ app_deploy_target }}/ai-translate:{{ app_deploy_target }}:z"
-    workdir: "{{ app_deploy_target }}"
-    state: present
-    auto_remove: true
-    generate_systemd:
-      path: "{{ ansible_env.HOME }}/.config/systemd/user"
-      container_prefix: "{{ app_container_prefix }}"
-      new: true
-      names: true
-      restart_policy: always
-      restart_sec: 10
-      stop_timeout: 5

+ 0 - 30
deploy/roles/mint-v2.1/tasks/clove.yml

@@ -1,30 +0,0 @@
-- name: Clone clove source codes
-  ansible.builtin.git:
-    repo: "https://github.com/iapt-platform/clove.git"
-    dest: "{{ app_deploy_target | dirname }}/clove"
-
-# - name: Clean resources for v8
-#   ansible.builtin.file:
-#     path: "{{ app_deploy_target }}/api-v8/storage/resources"
-#     state: absent
-
-- name: Setup clove resources for v8
-  become: true
-  ansible.builtin.file:
-    src: "{{ app_deploy_target | dirname }}/clove"
-    dest: "{{ app_deploy_target }}/api-v8/storage/resources"
-    state: link
-    force: true
-
-# - name: Clean resources for v12
-#   ansible.builtin.file:
-#     path: "{{ app_deploy_target }}/api-v12/storage/resources"
-#     state: absent
-
-- name: Setup clove resources for v12
-  become: true
-  ansible.builtin.file:
-    src: "{{ app_deploy_target | dirname }}/clove"
-    dest: "{{ app_deploy_target }}/api-v12/storage/resources"
-    state: link
-    force: true

+ 0 - 35
deploy/roles/mint-v2.1/tasks/laravel-workers.yml

@@ -1,35 +0,0 @@
-- name: Upload script for worker-{{ zone_name }}-{{ worker_name }}
-  ansible.builtin.template:
-    src: containers/laravel-worker.sh.j2
-    dest: "{{ app_deploy_target }}/scripts/worker-{{ zone_name }}-{{ worker_name }}.sh"
-    mode: "0555"
-
-- name: Stop {{ zone_name }}-{{ worker_name }}
-  containers.podman.podman_container:
-    name: "{{ app_domain }}-worker-{{ zone_name }}-{{ worker_name }}"
-    state: absent
-
-- name: Waiting for write-back
-  ansible.builtin.pause:
-    # minutes: 1
-    seconds: 5
-
-- name: Create {{ zone_name }}-{{ worker_name }}
-  containers.podman.podman_container:
-    name: "{{ app_domain }}-worker-{{ zone_name }}-{{ worker_name }}"
-    image: "{{ app_mint_image_name }}"
-    command: "{{ app_deploy_target }}/scripts/worker-{{ zone_name }}-{{ worker_name }}.sh"
-    volumes:
-      - "{{ app_deploy_target }}:{{ app_deploy_target }}:z"
-      - "/srv/{{ app_domain }}/clove:/srv/{{ app_domain }}/clove:z"
-    workdir: "{{ app_deploy_target }}"
-    state: present
-    auto_remove: true
-    generate_systemd:
-      path: "{{ ansible_env.HOME }}/.config/systemd/user"
-      container_prefix: "{{ app_container_prefix }}"
-      new: true
-      names: true
-      restart_policy: always
-      restart_sec: 10
-      stop_timeout: 5

+ 0 - 59
deploy/roles/mint-v2.1/tasks/laravel.yml

@@ -1,59 +0,0 @@
-- name: Upload .env(v2)
-  ansible.builtin.template:
-    src: v2/env.j2
-    dest: "{{ app_deploy_target }}/api-v8/.env"
-    mode: "0444"
-
-- name: Upload config.php(v1)
-  ansible.builtin.template:
-    src: v1/config.php.j2
-    dest: "{{ app_deploy_target }}/api-v8/public/app/config.php"
-    mode: "0444"
-
-- name: Upload config.js(v1)
-  ansible.builtin.template:
-    src: v1/config.js.j2
-    dest: "{{ app_deploy_target }}/api-v8/public/app/config.js"
-    mode: "0444"
-
-- name: Upload vendors.sh
-  ansible.builtin.template:
-    src: containers/vendors.sh.j2
-    dest: "{{ app_deploy_target }}/scripts/vendors.sh"
-    mode: "0555"
-
-- name: Initialize vendors and configuration
-  containers.podman.podman_container:
-    name: "{{ app_domain }}-initialize"
-    image: "{{ app_mint_image_name }}"
-    command: "{{ app_deploy_target }}/scripts/vendors.sh"
-    volumes:
-      - "{{ app_deploy_target }}:{{ app_deploy_target }}:z"
-    workdir: "{{ app_deploy_target }}"
-    auto_remove: true
-
-- name: Setup background php worker
-  ansible.builtin.include_tasks: laravel-workers.yml
-  vars:
-    zone_name: mq
-  loop:
-    - discussion
-    - pr
-    - progress
-    - wbw.analyses
-    - export.pali.chapter
-    - export.article
-  loop_control:
-    loop_var: worker_name
-
-- name: Setup schedule run
-  ansible.builtin.import_tasks: schedule-run.yml
-
-- name: Setup php-fpm
-  ansible.builtin.import_tasks: php-fpm.yml
-
-- name: Create a current link
-  ansible.builtin.file:
-    src: "{{ app_deploy_target }}"
-    dest: "{{ app_deploy_target | dirname }}/current"
-    state: link

+ 0 - 94
deploy/roles/mint-v2.1/tasks/main.yml

@@ -1,94 +0,0 @@
-- name: Create www folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_target | dirname }}"
-    state: directory
-    owner: "{{ ansible_user }}"
-    mode: "0755"
-
-# ---------------------------------------------------------
-
-- name: Download source code
-  ansible.builtin.unarchive:
-    src: https://github.com/iapt-platform/mint/archive/{{ mint_version }}.zip
-    dest: "{{ app_deploy_target | dirname }}"
-    remote_src: true
-    creates: "{{ app_deploy_target }}"
-
-- name: Setup clove resources
-  ansible.builtin.import_tasks: clove.yml
-
-# ---------------------------------------------------------
-
-# - name: Clone source codes directly
-#   ansible.builtin.git:
-#     repo: "https://github.com/iapt-platform/mint.git"
-#     dest: "{{ app_deploy_target }}"
-#     version: "{{ mint_version }}"
-
-# ---------------------------------------------------------
-
-# - name: Clone source codes to repo
-#   ansible.builtin.git:
-#     repo: "https://github.com/iapt-platform/mint.git"
-#     dest: "{{ app_deploy_target | dirname }}/repo"
-#     update: true
-#     version: "development"
-
-# - name: Clone to from local repo
-#   ansible.builtin.git:
-#     repo: "{{ app_deploy_target | dirname }}/repo"
-#     dest: "{{ app_deploy_target }}"
-#     version: "{{ mint_version }}"
-#     # depth: 1
-#     # single_branch: true
-
-# ---------------------------------------------------------
-
-- name: Upload dashboard-v4 dist
-  ansible.posix.synchronize:
-    src: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/dist-{{ mint_version }}/"
-    dest: "{{ app_deploy_target }}/dashboard-v4/dashboard/dist/"
-
-- name: Upload docker shell script
-  ansible.builtin.template:
-    src: containers/api-v8.sh.j2
-    dest: "{{ app_deploy_target }}/scripts/api-v8.sh"
-    mode: "0555"
-
-- name: Setup laravel
-  ansible.builtin.import_tasks: laravel.yml
-
-- name: Setup ai-translate
-  ansible.builtin.import_tasks: ai-translate.yml
-
-- name: Setup openai-proxy
-  ansible.builtin.import_tasks: openai-proxy.yml
-
-- name: Force systemd to reread configs
-  become: true
-  ansible.builtin.systemd:
-    daemon_reload: true
-
-- name: Force systemd to reread configs(user)
-  ansible.builtin.systemd:
-    daemon_reload: true
-    scope: user
-
-- name: Upload version.txt(api-v8)
-  ansible.builtin.template:
-    src: version.txt.j2
-    dest: "{{ app_deploy_target }}/api-v8/public/version.txt"
-    mode: "0555"
-
-- name: Upload version.txt(api-v12)
-  ansible.builtin.template:
-    src: version.txt.j2
-    dest: "{{ app_deploy_target }}/api-v12/public/version.txt"
-    mode: "0555"
-
-- name: Upload version.txt(dashboard-v4)
-  ansible.builtin.template:
-    src: version.txt.j2
-    dest: "{{ app_deploy_target }}/dashboard-v4/dashboard/dist/version.txt"
-    mode: "0555"

+ 0 - 42
deploy/roles/mint-v2.1/tasks/openai-proxy.yml

@@ -1,42 +0,0 @@
-- name: Upload script for openai-proxy
-  ansible.builtin.template:
-    src: containers/openai-proxy.sh.j2
-    dest: "{{ app_deploy_target }}/open-ai-server/start.sh"
-    mode: "0555"
-
-- name: Upload config for openai-proxy
-  ansible.builtin.template:
-    src: v2/openai-proxy.json.j2
-    dest: "{{ app_deploy_target }}/open-ai-server/config.json"
-    mode: "0444"
-
-- name: Upload openai-proxy dist
-  ansible.posix.synchronize:
-    src: "{{ playbook_dir }}/tmp/mint/open-ai-server/dist/"
-    dest: "{{ app_deploy_target }}/open-ai-server/dist/"
-
-- name: Stop openai-proxy server
-  containers.podman.podman_container:
-    name: "{{ app_domain }}-openai.proxy"
-    state: absent
-
-- name: Create openai-proxy container
-  containers.podman.podman_container:
-    name: "{{ app_domain }}-openai.proxy"
-    image: "mint-nodejs-jod"
-    command: "{{ app_deploy_target }}/start.sh"
-    volumes:
-      - "{{ app_deploy_target }}/open-ai-server:{{ app_deploy_target }}:z"
-    ports:
-      - "0.0.0.0:{{ app_openai_proxy_listen_port }}:8080/tcp"
-    workdir: "{{ app_deploy_target }}"
-    state: present
-    auto_remove: true
-    generate_systemd:
-      path: "{{ ansible_env.HOME }}/.config/systemd/user"
-      container_prefix: "{{ app_container_prefix }}"
-      new: true
-      names: true
-      restart_policy: always
-      restart_sec: 10
-      stop_timeout: 5

+ 0 - 30
deploy/roles/mint-v2.1/tasks/php-fpm.yml

@@ -1,30 +0,0 @@
-- name: Upload php-fpm.sh
-  ansible.builtin.template:
-    src: containers/php-fpm.sh.j2
-    dest: "{{ app_deploy_target }}/scripts/php-fpm.sh"
-    mode: "0555"
-
-- name: Stop php-fpm worker
-  containers.podman.podman_container:
-    name: "{{ app_domain }}-fpm-{{ app_php_fpm_port }}"
-    state: absent
-
-- name: Create php-fpm worker
-  containers.podman.podman_container:
-    name: "{{ app_domain }}-fpm-{{ app_php_fpm_port }}"
-    image: "{{ app_mint_image_name }}"
-    command: "{{ app_deploy_target }}/scripts/php-fpm.sh"
-    ports:
-      - "0.0.0.0:{{ app_php_fpm_port }}:9000/tcp"
-    volumes:
-      - "{{ app_deploy_target }}:{{ app_deploy_target }}:z"
-    workdir: "{{ app_deploy_target }}"
-    auto_remove: true
-    state: present
-    generate_systemd:
-      path: "{{ ansible_env.HOME }}/.config/systemd/user"
-      container_prefix: "{{ app_container_prefix }}"
-      new: true
-      names: true
-      restart_policy: always
-      stop_timeout: 2

+ 0 - 11
deploy/roles/mint-v2.1/tasks/schedule-run.yml

@@ -1,11 +0,0 @@
-- name: Setup laravel schedule run worker service
-  ansible.builtin.include_tasks: laravel-workers.yml
-  vars:
-    zone_name: schedule
-    worker_name: run
-
-- name: Setup laravel schedule run worker timer
-  ansible.builtin.template:
-    src: containers/schedule-run.timer.j2
-    dest: "{{ ansible_env.HOME }}/.config/systemd/user/{{ app_domain }}-scheduler.timer"
-    mode: "0644"

+ 0 - 14
deploy/roles/mint-v2.1/templates/containers/ai-translate.sh.j2

@@ -1,14 +0,0 @@
-#!/bin/bash
-
-set -e
-
-export WORK_DIR="{{ app_deploy_target }}"
-
-source $HOME/python3/bin/activate
-
-cd $WORK_DIR/
-# https://github.com/iapt-platform/mint/blob/df8e1cf7ade16d17add360e7a869540c1ddaf1b9/api-v8/config/mint.php#L129
-python3 -m ai_translate -c config.toml -n ai.translate -q ai_translate_v2
-
-ai_translate_v2
-exit 0

+ 0 - 3
deploy/roles/mint-v2.1/templates/containers/api-v8.sh.j2

@@ -1,3 +0,0 @@
-#!/bin/sh
-
-podman run --rm -it --events-backend=file --hostname=mint --network host -w {{ app_deploy_target }} -v /srv/{{ app_domain }}/clove:/srv/{{ app_domain }}/clove:z -v {{ app_deploy_target }}/api-v8:{{ app_deploy_target }}/api-v8:z {{ app_mint_image_name }} /bin/bash -l

+ 0 - 14
deploy/roles/mint-v2.1/templates/containers/laravel-worker.sh.j2

@@ -1,14 +0,0 @@
-#!/bin/bash
-
-set -e
-
-export WORK_DIR="{{ app_deploy_target }}"
-
-export NVM_DIR="$HOME/.nvm"
-source "$NVM_DIR/nvm.sh"
-
-cd $WORK_DIR/api-v8/
-
-php -d memory_limit={{ app_php_memory_limit }} artisan {{ zone_name }}:{{ worker_name }}
-
-exit 0

+ 0 - 13
deploy/roles/mint-v2.1/templates/containers/openai-proxy.sh.j2

@@ -1,13 +0,0 @@
-#!/bin/bash
-
-set -e
-
-export WORK_DIR="{{ app_deploy_target }}"
-
-export NVM_DIR="$HOME/.nvm"
-source "$NVM_DIR/nvm.sh"
-
-cd $WORK_DIR/
-node dist/main.*.js config.json
-
-exit 0

+ 0 - 5
deploy/roles/mint-v2.1/templates/containers/php-fpm.sh.j2

@@ -1,5 +0,0 @@
-#!/bin/sh
-
-sed -i 's/^listen = .*/listen = 9000/g' /etc/php/{{ app_php_version }}/fpm/pool.d/www.conf
-
-/usr/sbin/php-fpm{{ app_php_version }} --nodaemonize --fpm-config /etc/php/{{ app_php_version }}/fpm/php-fpm.conf

+ 0 - 10
deploy/roles/mint-v2.1/templates/containers/schedule-run.timer.j2

@@ -1,10 +0,0 @@
-[Unit]
-Description=Runs Mint {{ app_domain }} scheduler every minute
-
-[Timer]
-OnBootSec=15minutes
-OnUnitActiveSec=1minute
-Unit={{ app_container_prefix }}-{{ app_domain }}-worker-schedule-run.service
-
-[Install]
-WantedBy=timers.target

+ 0 - 37
deploy/roles/mint-v2.1/templates/containers/vendors.sh.j2

@@ -1,37 +0,0 @@
-#!/bin/bash
-
-set -e
-
-export WORK_DIR="{{ app_deploy_target }}"
-
-export NVM_DIR="$HOME/.nvm"
-source "$NVM_DIR/nvm.sh"
-
-cd $WORK_DIR/api-v8/
-echo "install v2 laravel vendors"
-composer update --optimize-autoloader --no-dev
-echo "install v2 nodejs packages"
-npm install --omit=dev
-
-cd $WORK_DIR/api-v8/public/
-echo "install v1 vendors"
-composer update --optimize-autoloader --no-dev
-echo "install v1 nodejs packages"
-npm install --omit=dev
-
-cd $WORK_DIR/api-v8/
-echo "caching configuration "
-php artisan config:cache
-echo "caching events"
-php artisan event:cache
-echo "caching routes"
-php artisan route:cache
-echo "caching views"
-php artisan view:cache
-
-echo "check file permissions"
-cd $WORK_DIR/api-v8/
-chown -R www-data:www-data bootstrap/cache storage
-
-echo 'done.'
-exit 0

+ 0 - 18
deploy/roles/mint-v2.1/templates/v1/config.js.j2

@@ -1,18 +0,0 @@
-var ICP_CODE = "{{ app_icp_code }}"
-var GRPC_WEB_SERVER = "{{ app_grpc_web_server }}";
-var DOCUMENTS_SERVER = "{{ app_documents_server }}";
-var REACT_APP_QUESTIONNAIRE_LINK = "{{ app_questionnaire_link }}";
-var DASHBOARD_BASE_PATH = "{{ app_dashboard_base_path }}";
-
-/*
-  |---------------
-  |网站资源文件,非用户的图片,音频,视频
-  |---------------
-  |对应/public/tmp/ 目录 开发线可以设置为 http://127.0.0.1:8000/tmp
-  |所有文件存储在 https://drive.google.com/drive/folders/1-4dn4juD-0-lsKndDui2W9nT9wcS_Y33?usp=sharing
-  |开发线可自行下载放到/public/tmp/
-  |或直接引用离您最近的assets server
-  |------------------------
-*/
-
-var ASSETS_SERVER = "{{ app_assets_server }}";

+ 0 - 67
deploy/roles/mint-v2.1/templates/v1/config.php.j2

@@ -1,67 +0,0 @@
-<?php
-
-#域名设置
-define("GRPC_WEB_SERVER","{{ app_grpc_web_server}}");
-define("ASSETS_SERVER","{{ app_assets_server }}");
-define("DOCUMENTS_SERVER","{{ app_documents_server }}");
-define('APP_KEY','{{ app_secret_key }}');
-define('APP_ENV','{{ app_env }}');
-define('CORS_ALLOWED_ORIGINS', '{{ app_cors_allowed_origins }}');
-define('DASHBOARD_BASE_PATH', "{{ app_dashboard_base_path }}");
-
-/*
-电子邮件设置
-PHPMailer
-*/
-define("Email", [
-                                 "Host"=>"{{ app_smtp_host }}",//Set the SMTP server to send through
-                                 "SMTPAuth"=>true,//Enable SMTP authentication
-                                 "Username"=>'{{ app_smtp_user }}',//SMTP username
-                                 "Password"=>'{{ app_smtp_password }}',//SMTP password
-                                 "Port"=>{{ app_smtp_port }},//TCP port to connect to 465; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
-                                 "From"=>"{{ app_smtp_user }}",
-                                 "Sender"=>"webmaster"
-                                 ]);
-
-/*
-数据库设置
-*/
-define("Database",[
-        "type"=>"pgsql",
-        "server"=>"{{ app_postgresql_host }}",
-        "port"=>{{ app_postgresql_port }},
-        "name"=>"{{ app_postgresql_dbname }}",
-        "sslmode" => "disable",
-        "user" => "{{ app_postgresql_user }}",
-        "password" => "{{ app_postgresql_password }}"
-]);
-
-
-/*
-Redis 设置,
-*/
-define("Redis",[        
-        "host" => "{{ app_redis_host }}",
-        "port" => {{ app_redis_port }},
-        "password" => "",
-        "prefix"=>"{{ app_domain }}://v1/"
-]);
-
-
-# 雪花id
-define("SnowFlake",[
-        "DatacenterId"=>{{ app_snowflake_data_center_id }},
-        "WorkerId"=>{{ app_snowflake_worker_id }}
-]);
-
-#目录设置,不能更改
-require_once __DIR__."/config.dir.php";
-
-/*
-数据表
-*/
-#表设置,此行不能更改
-require_once __DIR__."/config.table.php";
-
-
-?>

+ 0 - 16
deploy/roles/mint-v2.1/templates/v2/ai-translate.toml.j2

@@ -1,16 +0,0 @@
-[rabbitmq]
-host = '{{ app_rabbitmq_host }}'
-port = {{ app_rabbitmq_port }}
-user = '{{ app_rabbitmq_user }}'
-password = '{{ app_rabbitmq_password }}'
-virtual-host = '{{ app_rabbitmq_virtual_host }}'
-customer-timeout = 3600
-
-[redis]
-namespace = '{{ app_domain }}://'
-host = '{{ app_redis_host }}'
-port = {{ app_redis_port }}
-
-[app]
-api-url = '{{ app_api_server }}/api'
-openai-proxy-url = '{{ app_openai_proxy_server }}/api/openai'

+ 0 - 97
deploy/roles/mint-v2.1/templates/v2/env.j2

@@ -1,97 +0,0 @@
-BASE_DIR="{{ app_deploy_target }}/.env.global"
-CACHE_DIR="${BASE_DIR}/cache"
-TMP_DIR="${BASE_DIR}/tmp"
-
-APP_NAME="wikipali"
-APP_ENV={{ app_env }}
-APP_KEY={{ app_secret_key }}
-APP_DEBUG={{ app_debug }}
-APP_URL="https://{{ app_domain }}"
-
-LOG_CHANNEL=daily
-LOG_DEPRECATIONS_CHANNEL=null
-LOG_LEVEL=debug
-
-DB_CONNECTION=pgsql
-DB_HOST={{ app_postgresql_host }}
-DB_PORT={{ app_postgresql_port }}
-DB_DATABASE={{ app_postgresql_dbname }}
-DB_USERNAME={{ app_postgresql_user }}
-DB_PASSWORD="{{ app_postgresql_password }}"
-
-BROADCAST_DRIVER=log
-CACHE_DRIVER=redis
-FILESYSTEM_DRIVER=s3
-QUEUE_CONNECTION=sync
-SESSION_DRIVER=cookie
-SESSION_LIFETIME=120
-
-AWS_ACCESS_KEY_ID={{ app_aws_access_key }}
-AWS_SECRET_ACCESS_KEY={{ app_aws_secret_key }}
-AWS_DEFAULT_REGION={{ app_aws_region }}
-AWS_BUCKET=assets
-AWS_URL=
-AWS_ENDPOINT=https://{{ app_aws_endpoint_domain }}
-
-REDIS_HOST={{ app_redis_host }}
-REDIS_PORT={{ app_redis_port }}
-REDIS_PASSWORD=
-REDIS_DB=0
-REDIS_PREFIX="{{ app_domain }}://v20250323/"
-
-REDIS_CACHE_HOST={{ app_redis_cache_host }}
-REDIS_CACHE_PORT={{ app_redis_cache_port }}
-REDIS_CACHE_PASSWORD=
-REDIS_CACHE_DB={{ app_redis_cache_db }}
-REDIS_CACHE_PREFIX="{{ app_domain }}://v20250323/"
-
-
-MAIL_MAILER=smtp
-MAIL_HOST={{ app_smtp_host }}
-MAIL_PORT={{ app_smtp_port }}
-MAIL_USERNAME="{{ app_smtp_user }}"
-MAIL_PASSWORD="{{ app_smtp_password }}"
-MAIL_ENCRYPTION=ssl
-MAIL_FROM_ADDRESS="{{ app_smtp_user }}"
-MAIL_FROM_NAME="wikipali"
-
-PUSHER_APP_ID=
-PUSHER_APP_KEY=
-PUSHER_APP_SECRET=
-PUSHER_APP_CLUSTER=mt1
-
-MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
-MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
-
-DASHBOARD_BASE_PATH="{{ app_dashboard_base_path }}"
-ASSETS_SERVER="{{ app_assets_server }}"
-GRPC_WEB_SERVER="{{ app_grpc_web_server }}"
-DOCUMENTS_SERVER="{{ app_documents_server }}"
-CORS_ALLOWED_ORIGINS="{{ app_cors_allowed_origins }}"
-
-MORUS_GRPC_HOST="{{ app_morus_grpc_host }}"
-MORUS_GRPC_PORT="{{ app_morus_listen_port }}"
-LILY_GRPC_HOST="{{ app_lily_grpc_host }}"
-LILY_GRPC_PORT="{{ app_lily_listen_port }}"
-TULIP_GRPC_HOST="{{ app_tulip_grpc_host }}"
-TULIP_GRPC_PORT="{{ app_tulip_listen_port }}"
-
-SNOWFLAKE_DATA_CENTER_ID={{ app_snowflake_data_center_id }}
-SNOWFLAKE_WORKER_ID={{ app_snowflake_worker_id }}
-
-RABBITMQ_HOST="{{ app_rabbitmq_host }}"
-RABBITMQ_PORT={{ app_rabbitmq_port }}
-RABBITMQ_VIRTUAL_HOST="{{ app_rabbitmq_virtual_host }}"
-RABBITMQ_USER="{{ app_rabbitmq_user }}"
-RABBITMQ_PASSWORD="{{ app_rabbitmq_password }}"
-
-CDN_URLS={{ app_cdn_urls }}
-ATTACHMENTS_TEMPORARY_BUCKET_NAME={{ app_attachments_bucket_name }}-t
-ATTACHMENTS_PERMANTENT_BUCKET_NAME={{ app_attachments_bucket_name }}-p
-
-FTP_HOST="{{ app_ftp_host }}"
-
-APP_ICP_CODE="{{ app_icp_code }}"
-APP_MPS_CODE="{{ app_mps_code }}"
-
-MQ_LOOP_LIMIT_AI_TRANSLATE="{{ app_consumer_loop_limit_ai_translate }}"

+ 0 - 5
deploy/roles/mint-v2.1/templates/v2/openai-proxy.json.j2

@@ -1,5 +0,0 @@
-{ 
-    "port": 8080,
-    "debug": false, 
-    "api-url": "{{ app_api_server }}/api" 
-}

+ 0 - 2
deploy/roles/mint-v2.1/templates/version.txt.j2

@@ -1,2 +0,0 @@
-git version: {{ mint_version }}
-deployed at: {{ ansible_date_time.iso8601 }}

+ 0 - 27
deploy/roles/mint-v2.2/tasks/clove.yml

@@ -1,27 +0,0 @@
-- name: Create clove folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_target | dirname }}/clove"
-    state: directory
-    owner: "{{ ansible_user }}"
-    mode: "0755"
-
-- name: Upload clove data
-  ansible.builtin.unarchive:
-    src: "{{ playbook_dir }}/tmp/clove.tar.xz"
-    dest: "{{ app_deploy_target | dirname }}/clove"
-    creates: "{{ app_deploy_target | dirname }}/clove/dict_text"
-
-- name: Setup clove resources for v8
-  ansible.builtin.file:
-    src: "{{ app_deploy_target | dirname }}/clove"
-    dest: "{{ app_deploy_target }}/api-v8/storage/resources"
-    state: link
-    force: true
-
-- name: Setup clove resources for v12
-  ansible.builtin.file:
-    src: "{{ app_deploy_target | dirname }}/clove"
-    dest: "{{ app_deploy_target }}/api-v12/storage/resources"
-    state: link
-    force: true

+ 0 - 42
deploy/roles/mint-v2.2/tasks/laravel.yml

@@ -1,42 +0,0 @@
-- name: Upload .env(v2)
-  ansible.builtin.template:
-    src: v2/env.j2
-    dest: "{{ app_deploy_target }}/api-v8/.env"
-    mode: "0444"
-
-- name: Upload config.php(v1)
-  ansible.builtin.template:
-    src: v1/config.php.j2
-    dest: "{{ app_deploy_target }}/api-v8/public/app/config.php"
-    mode: "0444"
-
-- name: Upload config.js(v1)
-  ansible.builtin.template:
-    src: v1/config.js.j2
-    dest: "{{ app_deploy_target }}/api-v8/public/app/config.js"
-    mode: "0444"
-
-- name: Create logs folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_target | dirname }}/logs/laravel-v8"
-    state: directory
-    owner: www-data
-    mode: "0755"
-
-- name: Remove logs folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_target }}/api-v8/storage/logs"
-    state: absent
-
-- name: Link logs folder
-  become: true
-  ansible.builtin.file:
-    src: "{{ app_deploy_target | dirname }}/logs/laravel-v8"
-    dest: "{{ app_deploy_target }}/api-v8/storage/logs"
-    state: link
-
-- name: "Setup configuration"
-  ansible.builtin.shell:
-    cmd: "docker run --rm -it --hostname=mint --network host -v /srv/{{ app_domain }}/clove:/srv/{{ app_domain }}/clove:z -v {{ app_deploy_target }}:{{ app_deploy_target }}:z {{ app_docker_image_name }} {{ app_deploy_target }}/scripts/run.sh setup"

+ 0 - 89
deploy/roles/mint-v2.2/tasks/main.yml

@@ -1,89 +0,0 @@
-- name: Create mint folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_target }}"
-    state: directory
-    owner: "{{ ansible_user }}"
-    mode: "0755"
-
-- name: Upload mint data
-  ansible.builtin.unarchive:
-    src: "{{ playbook_dir }}/tmp/{{ app_domain }}-mint-{{ mint_version }}.tar.xz"
-    dest: "{{ app_deploy_target }}"
-    creates: "{{ app_deploy_target }}/api-v12"
-
-- name: Setup clove
-  ansible.builtin.import_tasks: clove.yml
-
-# -----------------------------------------------------------------------------
-
-- name: Create scripts folder
-  ansible.builtin.file:
-    path: "{{ app_deploy_target }}/scripts"
-    state: directory
-    mode: "0755"
-
-- name: Upload setup.sh
-  ansible.builtin.template:
-    src: containers/shell.sh.j2
-    dest: "{{ app_deploy_target }}/scripts/shell.sh"
-    mode: "0555"
-
-- name: Upload run.sh
-  ansible.builtin.template:
-    src: containers/run.sh.j2
-    dest: "{{ app_deploy_target }}/scripts/run.sh"
-    mode: "0555"
-
-- name: Upload php-fpm.sh
-  become: true
-  ansible.builtin.template:
-    src: containers/php-fpm.sh.j2
-    dest: "/srv/php-fpm-{{ app_php_version }}.sh"
-    mode: "0555"
-# -----------------------------------------------------------------------------
-
-- name: Setup laravel
-  ansible.builtin.import_tasks: laravel.yml
-
-# -----------------------------------------------------------------------------
-
-- name: Upload config for ai.translate
-  ansible.builtin.template:
-    src: v2/ai-translate.toml.j2
-    dest: "{{ app_deploy_target }}/ai-translate/config.toml"
-    mode: "0444"
-
-- name: Upload config for openai-proxy
-  ansible.builtin.template:
-    src: v2/openai-proxy.json.j2
-    dest: "{{ app_deploy_target }}/open-ai-server/config.json"
-    mode: "0444"
-
-# -----------------------------------------------------------------------------
-
-- name: Upload version.txt(api-v8)
-  ansible.builtin.template:
-    src: version.txt.j2
-    dest: "{{ app_deploy_target }}/api-v8/public/version.txt"
-    mode: "0555"
-
-- name: Upload version.txt(api-v12)
-  ansible.builtin.template:
-    src: version.txt.j2
-    dest: "{{ app_deploy_target }}/api-v12/public/version.txt"
-    mode: "0555"
-
-- name: Upload version.txt(dashboard-v4)
-  ansible.builtin.template:
-    src: version.txt.j2
-    dest: "{{ app_deploy_target }}/dashboard-v4/dashboard/dist/version.txt"
-    mode: "0555"
-
-# -----------------------------------------------------------------------------
-
-- name: Create a current link
-  ansible.builtin.file:
-    src: "{{ app_deploy_target }}"
-    dest: "{{ app_deploy_target | dirname }}/current"
-    state: link

+ 0 - 4
deploy/roles/mint-v2.2/templates/containers/php-fpm.sh.j2

@@ -1,4 +0,0 @@
-#!/bin/sh
-
-docker run --rm -d --network host -v /srv:/srv:z {{ app_docker_image_name }} {{ app_deploy_target }}/scripts/run.sh php-fpm
-   

+ 0 - 52
deploy/roles/mint-v2.2/templates/containers/run.sh.j2

@@ -1,52 +0,0 @@
-#!/bin/bash
-
-set -e
-
-if [ "$#" -ne 1 ]; then
-    echo "USAGE: $0 COMMAND"
-    exit 1
-fi
-
-export WORK_DIR="{{ app_deploy_target }}"
-
-if [[ "$1" == "mq:discussion" || "$1" == "mq:pr" || "$1" == "mq:progress" || "$1" == "mq:wbw.analyses" || "$1" == "mq:export.pali.chapter" || "$1" == "mq:export.article" || "$1" == "schedule:run" ]]; then
-    cd $WORK_DIR/api-v8/    
-    php -d memory_limit={{ app_php_memory_limit }} artisan $1
-elif [ "$1" = "ai-translate" ]; then
-    cd $WORK_DIR/ai-translate/
-    source $PWD/python3/bin/activate
-    # https://github.com/iapt-platform/mint/blob/df8e1cf7ade16d17add360e7a869540c1ddaf1b9/api-v8/config/mint.php#L129
-    python3 -m ai_translate -c config.toml -n ai.translate -q ai_translate_v2
-elif [ "$1" = "openai-proxy" ]; then
-    cd $WORK_DIR/openai-proxy/
-    source "$HOME/.nvm/nvm.sh"    
-    node dist/main.*.js config.json
-elif [ "$1" = "php-fpm" ]; then
-    cd /var/lib/php/
-    sed -i 's/^listen = .*/listen = {{ app_php_fpm_port }}/g' /etc/php/{{ app_php_version }}/fpm/pool.d/www.conf
-    sed -i 's/^pm.min_spare_servers = .*/pm.min_spare_servers = 4/g' /etc/php/{{ app_php_version }}/fpm/pool.d/www.conf
-    sed -i 's/^pm.max_spare_servers = .*/pm.max_spare_servers = 12/g' /etc/php/{{ app_php_version }}/fpm/pool.d/www.conf
-    sed -i 's/^pm.max_children = .*/pm.max_children = 20/g' /etc/php/{{ app_php_version }}/fpm/pool.d/www.conf
-    sed -i 's/^pm.start_servers = .*/pm.start_servers = 8/g' /etc/php/{{ app_php_version }}/fpm/pool.d/www.conf
-    /usr/sbin/php-fpm{{ app_php_version }} --nodaemonize --fpm-config /etc/php/{{ app_php_version }}/fpm/php-fpm.conf
-elif [ "$1" = "setup" ]; then
-    cd $WORK_DIR/api-v8/
-    echo "caching configuration "
-    php artisan config:cache
-    echo "caching events"
-    php artisan event:cache
-    echo "caching routes"
-    php artisan route:cache
-    echo "caching views"
-    php artisan view:cache
-
-    echo "check file permissions"
-    cd $WORK_DIR/api-v8/
-    chown -R www-data:www-data bootstrap/cache storage
-else
-    echo "unknown command $1"
-    exit 1
-fi
-
-echo 'done.'
-exit 0

+ 0 - 10
deploy/roles/mint-v2.2/templates/containers/schedule-run.timer.j2

@@ -1,10 +0,0 @@
-[Unit]
-Description=Runs Mint {{ app_domain }} scheduler every minute
-
-[Timer]
-OnBootSec=15minutes
-OnUnitActiveSec=1minute
-Unit={{ app_container_prefix }}-{{ app_domain }}-worker-schedule-run.service
-
-[Install]
-WantedBy=timers.target

+ 0 - 6
deploy/roles/mint-v2.2/templates/containers/shell.sh.j2

@@ -1,6 +0,0 @@
-#!/bin/sh
-
-docker run --rm -it --network host \
-    -v /srv/{{ app_deploy_target | dirname }}/clove:/srv/{{ app_deploy_target | dirname }}/clove:z \
-    -v {{ app_deploy_target }}:{{ app_deploy_target }}:z \
-    {{ app_docker_image_name }} 

+ 0 - 18
deploy/roles/mint-v2.2/templates/v1/config.js.j2

@@ -1,18 +0,0 @@
-var ICP_CODE = "{{ app_icp_code }}"
-var GRPC_WEB_SERVER = "{{ app_grpc_web_server }}";
-var DOCUMENTS_SERVER = "{{ app_documents_server }}";
-var REACT_APP_QUESTIONNAIRE_LINK = "{{ app_questionnaire_link }}";
-var DASHBOARD_BASE_PATH = "{{ app_dashboard_base_path }}";
-
-/*
-  |---------------
-  |网站资源文件,非用户的图片,音频,视频
-  |---------------
-  |对应/public/tmp/ 目录 开发线可以设置为 http://127.0.0.1:8000/tmp
-  |所有文件存储在 https://drive.google.com/drive/folders/1-4dn4juD-0-lsKndDui2W9nT9wcS_Y33?usp=sharing
-  |开发线可自行下载放到/public/tmp/
-  |或直接引用离您最近的assets server
-  |------------------------
-*/
-
-var ASSETS_SERVER = "{{ app_assets_server }}";

+ 0 - 67
deploy/roles/mint-v2.2/templates/v1/config.php.j2

@@ -1,67 +0,0 @@
-<?php
-
-#域名设置
-define("GRPC_WEB_SERVER","{{ app_grpc_web_server}}");
-define("ASSETS_SERVER","{{ app_assets_server }}");
-define("DOCUMENTS_SERVER","{{ app_documents_server }}");
-define('APP_KEY','{{ app_secret_key }}');
-define('APP_ENV','{{ app_env }}');
-define('CORS_ALLOWED_ORIGINS', '{{ app_cors_allowed_origins }}');
-define('DASHBOARD_BASE_PATH', "{{ app_dashboard_base_path }}");
-
-/*
-电子邮件设置
-PHPMailer
-*/
-define("Email", [
-                                 "Host"=>"{{ app_smtp_host }}",//Set the SMTP server to send through
-                                 "SMTPAuth"=>true,//Enable SMTP authentication
-                                 "Username"=>'{{ app_smtp_user }}',//SMTP username
-                                 "Password"=>'{{ app_smtp_password }}',//SMTP password
-                                 "Port"=>{{ app_smtp_port }},//TCP port to connect to 465; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
-                                 "From"=>"{{ app_smtp_user }}",
-                                 "Sender"=>"webmaster"
-                                 ]);
-
-/*
-数据库设置
-*/
-define("Database",[
-        "type"=>"pgsql",
-        "server"=>"{{ app_postgresql_host }}",
-        "port"=>{{ app_postgresql_port }},
-        "name"=>"{{ app_postgresql_dbname }}",
-        "sslmode" => "disable",
-        "user" => "{{ app_postgresql_user }}",
-        "password" => "{{ app_postgresql_password }}"
-]);
-
-
-/*
-Redis 设置,
-*/
-define("Redis",[        
-        "host" => "{{ app_redis_host }}",
-        "port" => {{ app_redis_port }},
-        "password" => "",
-        "prefix"=>"{{ app_domain }}://v1/"
-]);
-
-
-# 雪花id
-define("SnowFlake",[
-        "DatacenterId"=>{{ app_snowflake_data_center_id }},
-        "WorkerId"=>{{ app_snowflake_worker_id }}
-]);
-
-#目录设置,不能更改
-require_once __DIR__."/config.dir.php";
-
-/*
-数据表
-*/
-#表设置,此行不能更改
-require_once __DIR__."/config.table.php";
-
-
-?>

+ 0 - 16
deploy/roles/mint-v2.2/templates/v2/ai-translate.toml.j2

@@ -1,16 +0,0 @@
-[rabbitmq]
-host = '{{ app_rabbitmq_host }}'
-port = {{ app_rabbitmq_port }}
-user = '{{ app_rabbitmq_user }}'
-password = '{{ app_rabbitmq_password }}'
-virtual-host = '{{ app_rabbitmq_virtual_host }}'
-customer-timeout = 3600
-
-[redis]
-namespace = '{{ app_domain }}://'
-host = '{{ app_redis_host }}'
-port = {{ app_redis_port }}
-
-[app]
-api-url = '{{ app_api_server }}/api'
-openai-proxy-url = '{{ app_openai_proxy_server }}/api/openai'

+ 0 - 97
deploy/roles/mint-v2.2/templates/v2/env.j2

@@ -1,97 +0,0 @@
-BASE_DIR="{{ app_deploy_target }}/.env.global"
-CACHE_DIR="${BASE_DIR}/cache"
-TMP_DIR="${BASE_DIR}/tmp"
-
-APP_NAME="wikipali"
-APP_ENV={{ app_env }}
-APP_KEY={{ app_secret_key }}
-APP_DEBUG={{ app_debug }}
-APP_URL="https://{{ app_domain }}"
-
-LOG_CHANNEL=daily
-LOG_DEPRECATIONS_CHANNEL=null
-LOG_LEVEL=debug
-
-DB_CONNECTION=pgsql
-DB_HOST={{ app_postgresql_host }}
-DB_PORT={{ app_postgresql_port }}
-DB_DATABASE={{ app_postgresql_dbname }}
-DB_USERNAME={{ app_postgresql_user }}
-DB_PASSWORD="{{ app_postgresql_password }}"
-
-BROADCAST_DRIVER=log
-CACHE_DRIVER=redis
-FILESYSTEM_DRIVER=s3
-QUEUE_CONNECTION=sync
-SESSION_DRIVER=cookie
-SESSION_LIFETIME=120
-
-AWS_ACCESS_KEY_ID={{ app_aws_access_key }}
-AWS_SECRET_ACCESS_KEY={{ app_aws_secret_key }}
-AWS_DEFAULT_REGION={{ app_aws_region }}
-AWS_BUCKET=assets
-AWS_URL=
-AWS_ENDPOINT=https://{{ app_aws_endpoint_domain }}
-
-REDIS_HOST={{ app_redis_host }}
-REDIS_PORT={{ app_redis_port }}
-REDIS_PASSWORD=
-REDIS_DB=0
-REDIS_PREFIX="{{ app_domain }}://v20250323/"
-
-REDIS_CACHE_HOST={{ app_redis_cache_host }}
-REDIS_CACHE_PORT={{ app_redis_cache_port }}
-REDIS_CACHE_PASSWORD=
-REDIS_CACHE_DB={{ app_redis_cache_db }}
-REDIS_CACHE_PREFIX="{{ app_domain }}://v20250323/"
-
-
-MAIL_MAILER=smtp
-MAIL_HOST={{ app_smtp_host }}
-MAIL_PORT={{ app_smtp_port }}
-MAIL_USERNAME="{{ app_smtp_user }}"
-MAIL_PASSWORD="{{ app_smtp_password }}"
-MAIL_ENCRYPTION=ssl
-MAIL_FROM_ADDRESS="{{ app_smtp_user }}"
-MAIL_FROM_NAME="wikipali"
-
-PUSHER_APP_ID=
-PUSHER_APP_KEY=
-PUSHER_APP_SECRET=
-PUSHER_APP_CLUSTER=mt1
-
-MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
-MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
-
-DASHBOARD_BASE_PATH="{{ app_dashboard_base_path }}"
-ASSETS_SERVER="{{ app_assets_server }}"
-GRPC_WEB_SERVER="{{ app_grpc_web_server }}"
-DOCUMENTS_SERVER="{{ app_documents_server }}"
-CORS_ALLOWED_ORIGINS="{{ app_cors_allowed_origins }}"
-
-MORUS_GRPC_HOST="{{ app_morus_grpc_host }}"
-MORUS_GRPC_PORT="{{ app_morus_listen_port }}"
-LILY_GRPC_HOST="{{ app_lily_grpc_host }}"
-LILY_GRPC_PORT="{{ app_lily_listen_port }}"
-TULIP_GRPC_HOST="{{ app_tulip_grpc_host }}"
-TULIP_GRPC_PORT="{{ app_tulip_listen_port }}"
-
-SNOWFLAKE_DATA_CENTER_ID={{ app_snowflake_data_center_id }}
-SNOWFLAKE_WORKER_ID={{ app_snowflake_worker_id }}
-
-RABBITMQ_HOST="{{ app_rabbitmq_host }}"
-RABBITMQ_PORT={{ app_rabbitmq_port }}
-RABBITMQ_VIRTUAL_HOST="{{ app_rabbitmq_virtual_host }}"
-RABBITMQ_USER="{{ app_rabbitmq_user }}"
-RABBITMQ_PASSWORD="{{ app_rabbitmq_password }}"
-
-CDN_URLS={{ app_cdn_urls }}
-ATTACHMENTS_TEMPORARY_BUCKET_NAME={{ app_attachments_bucket_name }}-t
-ATTACHMENTS_PERMANTENT_BUCKET_NAME={{ app_attachments_bucket_name }}-p
-
-FTP_HOST="{{ app_ftp_host }}"
-
-APP_ICP_CODE="{{ app_icp_code }}"
-APP_MPS_CODE="{{ app_mps_code }}"
-
-MQ_LOOP_LIMIT_AI_TRANSLATE="{{ app_consumer_loop_limit_ai_translate }}"

+ 0 - 5
deploy/roles/mint-v2.2/templates/v2/openai-proxy.json.j2

@@ -1,5 +0,0 @@
-{ 
-    "port": 8080,
-    "debug": false, 
-    "api-url": "{{ app_api_server }}/api" 
-}

+ 0 - 2
deploy/roles/mint-v2.2/templates/version.txt.j2

@@ -1,2 +0,0 @@
-git version: {{ mint_version }}
-deployed at: {{ ansible_date_time.iso8601 }}

+ 0 - 46
deploy/roles/mint-v2.3/files/clean.py

@@ -1,46 +0,0 @@
-#!/usr/bin/env python3
-
-import logging
-import argparse
-import os
-import sys
-import shutil
-
-logger = logging.getLogger(__name__)
-
-
-def launch(root, keeps, debug):
-    logger.warning("try to clean %s and keep recent %d items", root, keeps)
-    items = os.listdir(root)
-    logger.debug("found %d files", len(items))
-    if len(items) <= keeps:
-        return
-    items.sort(key=lambda it: os.path.getmtime(
-        os.path.join(root, it)), reverse=True)
-    items = items[keeps:]
-    for it in items:
-        it = os.path.join(root, it)
-        logger.warning("delete %s", it)
-        if not debug:
-            shutil.rmtree(it)
-
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser(
-        prog='mint',
-        description='Clean legacy files',
-        epilog='https://github.com/iapt-platform/mint')
-    parser.add_argument('-k', '--keep', type=int, default=7)
-    parser.add_argument('-d', '--debug', action='store_true')
-    parser.add_argument('-v', '--version', action='version',
-                        version='%(prog)s v2026.1.17')
-    args = parser.parse_args()
-    logging.basicConfig(
-        level=logging.DEBUG if args.debug else logging.INFO, format='%(asctime)s %(levelname).1s %(name)s: %(message)s')
-    logging.debug('run on debug mode')
-    if args.keep < 2:
-        logging.error("keeps must lager than 2")
-        sys.exit(1)
-    root = os.getcwd()
-    launch(root, args.keep, args.debug)
-    logger.info("done.")

+ 0 - 9
deploy/roles/mint-v2.3/files/php-fpm.sh

@@ -1,9 +0,0 @@
-#!/bin/bash
-
-set -e
-
-sed -i 's/^listen = .*/listen = 9000/g' /etc/php/$1/fpm/pool.d/www.conf
-
-/usr/sbin/php-fpm${1} --nodaemonize --fpm-config /etc/php/$1/fpm/php-fpm.conf
-
-exit 0

+ 0 - 29
deploy/roles/mint-v2.3/tasks/config.yml

@@ -1,29 +0,0 @@
-- name: Upload .env(v2)
-  ansible.builtin.template:
-    src: v2/env.j2
-    dest: "{{ app_deploy_target }}/api-v8/.env"
-    mode: "0444"
-
-- name: Upload config.php(v1)
-  ansible.builtin.template:
-    src: v1/config.php.j2
-    dest: "{{ app_deploy_target }}/api-v8/public/app/config.php"
-    mode: "0444"
-
-- name: Upload config.js(v1)
-  ansible.builtin.template:
-    src: v1/config.js.j2
-    dest: "{{ app_deploy_target }}/api-v8/public/app/config.js"
-    mode: "0444"
-
-- name: Upload ai-translate.toml
-  ansible.builtin.template:
-    src: ai-translate.toml.j2
-    dest: "{{ app_deploy_target }}/ai-translate/config.toml"
-    mode: "0444"
-
-- name: Upload open-ai-server.json
-  ansible.builtin.template:
-    src: open-ai-server.json.j2
-    dest: "{{ app_deploy_target }}/open-ai-server/config.json"
-    mode: "0444"

+ 0 - 13
deploy/roles/mint-v2.3/tasks/laravel-scheduler.yml

@@ -1,13 +0,0 @@
-- name: Upload laravel-scheduler.service({{ item.version }})
-  become: true
-  ansible.builtin.template:
-    src: laravel-scheduler.service.j2
-    dest: "/etc/systemd/system/{{ app_domain }}-laravel-scheduler-{{ item.version }}.service"
-    mode: "0444"
-
-- name: Upload laravel-scheduler.timer({{ item.version }})
-  become: true
-  ansible.builtin.template:
-    src: laravel-scheduler.timer.j2
-    dest: "/etc/systemd/system/{{ app_domain }}-laravel-scheduler-{{ item.version }}.timer"
-    mode: "0444"

+ 0 - 74
deploy/roles/mint-v2.3/tasks/main.yml

@@ -1,74 +0,0 @@
-- name: Pull docker image
-  ansible.builtin.command: docker pull {{ item }}
-  with_items:
-    - "{{ app_php81_image }}"
-    - "{{ app_php84_image }}"
-    - "{{ app_python_image }}"
-    - "{{ app_nodejs_image }}"
-  when: app_pull_images
-
-- name: Create /srv/bin folder
-  become: true
-  ansible.builtin.file:
-    path: /srv/bin
-    state: directory
-    owner: "{{ ansible_user }}"
-    mode: "0755"
-
-- name: Upload docker.sh
-  ansible.builtin.template:
-    src: docker.sh.j2
-    dest: "/srv/bin/docker.sh"
-    mode: "0555"
-
-- name: Create /srv/python3 folder
-  become: true
-  ansible.builtin.file:
-    path: /srv/python3
-    state: directory
-    owner: "{{ ansible_user }}"
-    mode: "0755"
-
-- name: Extract python3.tar.xz
-  ansible.builtin.unarchive:
-    src: python3-{{ ansible_facts['architecture'] }}-2026011614.tar.xz
-    dest: /srv
-    creates: /srv/python3/pyvenv.cfg
-
-- name: Create workspace folder
-  become: true
-  ansible.builtin.file:
-    path: "{{ app_deploy_target | dirname }}"
-    state: directory
-    owner: "{{ ansible_user }}"
-    mode: "0755"
-
-- name: Create scripts folder
-  ansible.builtin.file:
-    path: "{{ app_deploy_target }}"
-    state: directory
-    mode: "0755"
-
-- name: Extract release
-  ansible.builtin.unarchive:
-    src: "{{ playbook_dir }}/tmp/{{ app_domain }}-{{ mint_version }}.tar.xz"
-    dest: "{{ app_deploy_target }}"
-    creates: "{{ app_deploy_target }}/api-v12"
-
-- name: Create scripts folder
-  ansible.builtin.file:
-    path: "{{ app_deploy_target }}/scripts"
-    state: directory
-    mode: "0755"
-
-- name: Upload laravel.sh
-  ansible.builtin.template:
-    src: laravel.sh.j2
-    dest: "{{ app_deploy_target }}/scripts/laravel.sh"
-    mode: "0555"
-
-- name: Upload configurations
-  ansible.builtin.import_tasks: config.yml
-
-- name: Setup systemd services
-  ansible.builtin.import_tasks: systemd.yml

+ 0 - 101
deploy/roles/mint-v2.3/tasks/systemd.yml

@@ -1,101 +0,0 @@
-- name: Upload clean.py
-  ansible.builtin.copy:
-    src: clean.py
-    dest: "{{ app_deploy_target | dirname }}/"
-    mode: "0444"
-
-- name: Upload clean.service
-  become: true
-  ansible.builtin.template:
-    src: clean.service.j2
-    dest: "/etc/systemd/system/{{ app_domain }}-clean.service"
-    mode: "0444"
-
-- name: Upload clean.timer
-  become: true
-  ansible.builtin.template:
-    src: clean.timer.j2
-    dest: "/etc/systemd/system/{{ app_domain }}-clean.timer"
-    mode: "0444"
-
-- name: Upload php-fpm.sh
-  ansible.builtin.copy:
-    src: php-fpm.sh
-    dest: "/srv/bin/"
-    mode: "0555"
-
-- name: Upload php-fpm-v8.1.service
-  become: true
-  ansible.builtin.template:
-    src: php-fpm-8.1.service.j2
-    dest: "/etc/systemd/system/php-fpm-8.1.service"
-    mode: "0444"
-
-- name: Upload php-fpm-8.4.service
-  become: true
-  ansible.builtin.template:
-    src: php-fpm-8.4.service.j2
-    dest: "/etc/systemd/system/php-fpm-8.4.service"
-    mode: "0444"
-
-- name: Upload open-ai-server.sh
-  ansible.builtin.template:
-    src: open-ai-server.sh.j2
-    dest: "{{ app_deploy_target }}/scripts/open-ai-server.sh"
-    mode: "0555"
-
-- name: Upload open-ai-server.service
-  become: true
-  ansible.builtin.template:
-    src: open-ai-server.service.j2
-    dest: "/etc/systemd/system/{{ app_domain }}-open-ai-server.service"
-    mode: "0444"
-
-- name: Upload ai-translate.sh
-  ansible.builtin.template:
-    src: ai-translate.sh.j2
-    dest: "{{ app_deploy_target }}/scripts/ai-translate.sh"
-    mode: "0555"
-
-- name: Upload ai-translate.service
-  become: true
-  ansible.builtin.template:
-    src: ai-translate.service.j2
-    dest: "/etc/systemd/system/{{ app_domain }}-ai-translate.service"
-    mode: "0444"
-
-- name: Upload laravel-worker.service
-  become: true
-  ansible.builtin.template:
-    src: laravel-job.service.j2
-    dest: "/etc/systemd/system/{{ app_domain }}-laravel-job-{{ item.name }}.service"
-    mode: "0444"
-  with_items:
-    - { name: "mq-discussion", image: "{{ app_php81_image }}", args: "mq:discussion" }
-    - { name: "mq-pr", image: "{{ app_php81_image }}", args: "mq:pr" }
-    - { name: "mq-progress", image: "{{ app_php81_image }}", args: "mq:progress" }
-    - { name: "mq-wbw.analyses", image: "{{ app_php81_image }}", args: "mq:wbw.analyses" }
-    - { name: "mq-export.pali.chapter", image: "{{ app_php81_image }}", args: "mq:export.pali.chapter" }
-    - { name: "mq-export.article", image: "{{ app_php81_image }}", args: "mq:export.article" }
-
-- name: Upload laravel sceduler
-  ansible.builtin.include_tasks: laravel-scheduler.yml
-  with_items:
-    - { image: "{{ app_php81_image }}", version: "v8" }
-    - { image: "{{ app_php84_image }}", version: "v12" }
-
-# - name: Reload systemd profiles
-#   become: true
-#   ansible.builtin.command: systemctl daemon-reload
-
-- name: Reload systemd profiles
-  become: true
-  ansible.builtin.systemd_service:
-    daemon_reload: true
-
-- name: Enable clean timer
-  become: true
-  ansible.builtin.systemd_service:
-    name: "{{ app_domain }}-clean.timer"
-    state: restarted
-    enabled: true

+ 0 - 15
deploy/roles/mint-v2.3/templates/ai-translate.service.j2

@@ -1,15 +0,0 @@
-[Unit]
-Description=open-ai server({{ app_domain }}).
-Wants=network-online.target
-After=network-online.target
-
-[Service]
-Type=simple
-User={{ ansible_user }}
-ExecStart=/usr/bin/docker run --rm --name {{ app_domain }}-ai-translate -v /srv:/srv:z {{ app_python_image }} {{ app_deploy_target }}/scripts/ai-translate.sh
-ExecStop=/usr/bin/docker stop {{ app_domain }}-ai-translate
-WorkingDirectory={{ app_deploy_target }}
-Restart=always
-
-[Install]
-WantedBy=multi-user.target

+ 0 - 11
deploy/roles/mint-v2.3/templates/ai-translate.sh.j2

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-set -e
-
-. /srv/python3/bin/activate
-
-cd {{ app_deploy_target }}/ai-translate/
-# https://github.com/iapt-platform/mint/blob/df8e1cf7ade16d17add360e7a869540c1ddaf1b9/api-v8/config/mint.php#L129
-python3 -m ai_translate -c config.toml -n ai.translate -q ai_translate_v2
-
-exit 0

+ 0 - 16
deploy/roles/mint-v2.3/templates/ai-translate.toml.j2

@@ -1,16 +0,0 @@
-[rabbitmq]
-host = '{{ app_rabbitmq_host }}'
-port = {{ app_rabbitmq_port }}
-user = '{{ app_rabbitmq_user }}'
-password = '{{ app_rabbitmq_password }}'
-virtual-host = '{{ app_rabbitmq_virtual_host }}'
-customer-timeout = 3600
-
-[redis]
-namespace = '{{ app_domain }}://'
-host = '{{ app_redis_host }}'
-port = {{ app_redis_port }}
-
-[app]
-api-url = '{{ app_api_server }}/api'
-openai-proxy-url = '{{ app_openai_proxy_server }}/api/openai'

+ 0 - 13
deploy/roles/mint-v2.3/templates/clean.service.j2

@@ -1,13 +0,0 @@
-[Unit]
-Description=Clean legacy files({{ app_domain }}).
-Wants=network-online.target
-After=network-online.target
-
-[Service]
-Type=oneshot
-User=root
-ExecStart=/usr/bin/python3 clean.py -d -k {{ app_deploy_keeps }}
-WorkingDirectory={{ app_deploy_target | dirname }}
-
-[Install]
-WantedBy=multi-user.target

+ 0 - 9
deploy/roles/mint-v2.3/templates/clean.timer.j2

@@ -1,9 +0,0 @@
-[Unit]
-Description=Clean legacy files daily({{ app_domain }}).e.
-
-[Timer]
-OnCalendar=*-*-* 3:00:00
-Persistent=false
-
-[Install]
-WantedBy=timers.target

+ 0 - 10
deploy/roles/mint-v2.3/templates/docker.sh.j2

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-if [[ "$#" -eq 1 && "$1" == "php81" ]]; then
-    docker run --rm -it -v {{ app_php_fpm81_port }}
-elif [[ "$#" -eq 1 && "$1" == "php84" ]]; then
-    docker run --rm -it -v {{ app_php_fpm84_port }}
-else
-    echo "Usage: $0 php81 | php84"
-    exit 1
-fi

+ 0 - 15
deploy/roles/mint-v2.3/templates/laravel-job.service.j2

@@ -1,15 +0,0 @@
-[Unit]
-Description=laravel job({{ app_domain }}-{{ item.name }}).
-Wants=network-online.target
-After=network-online.target
-
-[Service]
-Type=simple
-User={{ ansible_user }}
-ExecStart=/usr/bin/docker run --rm --name {{ app_domain }}-laravel-job-{{ item.name }} -v /srv:/srv:z {{ item.image }} {{ app_deploy_target }}/scripts/laravel.sh {{ item.args }}
-ExecStop=/usr/bin/docker stop {{ app_domain }}-laravel-job-{{ item.name }}
-WorkingDirectory={{ app_deploy_target }}
-Restart=always
-
-[Install]
-WantedBy=multi-user.target

+ 0 - 14
deploy/roles/mint-v2.3/templates/laravel-scheduler.service.j2

@@ -1,14 +0,0 @@
-[Unit]
-Description=Laravel scheduler({{ app_domain }}).
-Wants=network-online.target
-After=network-online.target
-
-[Service]
-Type=oneshot
-User={{ ansible_user }}
-ExecStart=/usr/bin/docker run --rm --name {{ app_domain }}-laravel-scheduler-{{ item.version }} -v /srv:/srv:z {{ item.image }} {{ app_deploy_target }}/scripts/laravel.sh schedule:run
-ExecStop=/usr/bin/docker stop {{ app_domain }}-laravel-scheduler-{{ item.version }}
-WorkingDirectory={{ app_deploy_target }}
-
-[Install]
-WantedBy=multi-user.target

+ 0 - 9
deploy/roles/mint-v2.3/templates/laravel-scheduler.timer.j2

@@ -1,9 +0,0 @@
-[Unit]
-Description=Run laravel scheduler every minute({{ app_domain }}).
-
-[Timer]
-OnBootSec=15minutes
-OnUnitActiveSec=1minute
-
-[Install]
-WantedBy=timers.target

+ 0 - 63
deploy/roles/mint-v2.3/templates/laravel.sh.j2

@@ -1,63 +0,0 @@
-#!/bin/bash
-
-set -e
-
-# -----------------------------------------------------------------------------
-if [[ "$EUID" -ne 0 ]]; then
-    echo "please run this script as root."
-    exit 1
-fi
-
-. /etc/os-release
-if [[ "$ID" != "ubuntu" ]]; then
-    echo "unsupported distribution $ID"
-    exit 1
-fi
-
-. $HOME/.nvm/nvm.sh
-# -----------------------------------------------------------------------------
-
-export PHP_VERSION="$(php -r 'echo PHP_VERSION;')"
-
-if [[ "$PHP_VERSION" == "8.1.34" ]]; then
-    export WORKSPACE={{ app_deploy_target }}/api-v8
-elif [[ "$PHP_VERSION" == "8.4.16" ]]; then
-    export WORKSPACE={{ app_deploy_target }}/api-v12
-else
-    echo "unsupported php $PHP_VERSION"
-    exit 1
-fi
-
-# -----------------------------------------------------------------------------
-
-if [[ "$#" -eq 1 && "$1" == "diagnose" ]]; then
-    echo "workspace: $WORKSPACE"
-    php --version
-    echo "NodeJs: $(node -v)"
-    echo "npm: $(npm -v)"
-    composer diagnose
-elif [[ "$#" -eq 1 && "$1" == "setup" ]]; then
-    cd $WORKSPACE/
-    echo "caching configuration"
-    php artisan config:cache
-    echo "caching events"
-    php artisan event:cache
-    echo "caching routes"
-    php artisan route:cache
-    echo "caching views"
-    php artisan view:cache
-
-    echo "check file permissions"    
-    chown -R www-data:www-data bootstrap/cache storage
-elif [[ "$#" -eq 1 ]]; then
-    cd $WORKSPACE/
-    echo "run $1..."
-    php -d memory_limit={{ app_php_memory_limit }} artisan $1
-else
-    echo "unsupported args"
-    exit 1
-fi
-
-exit 0
-
-

+ 0 - 5
deploy/roles/mint-v2.3/templates/open-ai-server.json.j2

@@ -1,5 +0,0 @@
-{ 
-    "port": 8080,
-    "debug": false, 
-    "api-url": "{{ app_api_server }}/api" 
-}

Some files were not shown because too many files changed in this diff