From 87299cc1769c5ecaa79859db964c3ba2eb34f042 Mon Sep 17 00:00:00 2001 From: Tiago Serafim Date: Thu, 11 May 2023 16:39:50 -0300 Subject: [PATCH] feat: add Windmill as one-click-app. (#924) * feat: add Windmill as one-click-app. * Update Windmill: it's ideal to have one worker and multiple replicas. --- public/v4/apps/windmill.yml | 105 +++++++++++++++++++++++++++++++++++ public/v4/logos/windmill.png | Bin 0 -> 7479 bytes 2 files changed, 105 insertions(+) create mode 100644 public/v4/apps/windmill.yml create mode 100644 public/v4/logos/windmill.png diff --git a/public/v4/apps/windmill.yml b/public/v4/apps/windmill.yml new file mode 100644 index 0000000..2fd8e8b --- /dev/null +++ b/public/v4/apps/windmill.yml @@ -0,0 +1,105 @@ +captainVersion: 4 +services: + $$cap_appname-postgres: + image: postgres:$$cap_postgres_version + volumes: + - $$cap_appname-postgres-data:/var/lib/postgresql/data + restart: always + environment: + POSTGRES_DB: windmill + POSTGRES_USER: postgres + POSTGRES_PASSWORD: $$cap_postgres_pass + caproverExtra: + notExposeAsWebApp: 'true' + + $$cap_appname: + image: ghcr.io/windmill-labs/windmill:$$cap_app_version + expose: + - 8000 + environment: + DATABASE_URL: postgres://postgres:$$cap_postgres_pass@srv-captain--$$cap_appname-postgres/windmill?sslmode=disable + BASE_URL: $$cap_wm_base_url + RUST_LOG: 'info' + NUM_WORKERS: '0' + DISABLE_SERVER: 'false' + METRICS_ADDR: 'false' + depends_on: + - $$cap_appname-postgres + caproverExtra: + containerHttpPort: '8000' + + $$cap_appname-worker: + image: ghcr.io/windmill-labs/windmill:$$cap_app_version + environment: + DATABASE_URL: postgres://postgres:$$cap_postgres_pass@srv-captain--$$cap_appname-postgres/windmill?sslmode=disable + BASE_URL: $$cap_wm_base_url + BASE_INTERNAL_URL: 'http://srv-captain--$$cap_appname:8000' + RUST_LOG: 'info' + NUM_WORKERS: '1' + DISABLE_SERVER: 'true' + KEEP_JOB_DIR: 'false' + DENO_PATH: '/usr/bin/deno' + PYTHON_PATH: '/usr/local/bin/python3' + METRICS_ADDR: 'false' + depends_on: + - $$cap_appname-postgres + caproverExtra: + notExposeAsWebApp: 'true' + + $$cap_appname-lsp: + image: ghcr.io/windmill-labs/windmill-lsp:$$cap_app_version + expose: + - 3001 + caproverExtra: + containerHttpPort: '3001' + notExposeAsWebApp: 'true' + +caproverOneClickApp: + instructions: + start: |- + Windmill is an open-source alternative to Retool, Airplane and n8n to build all your internal tools (endpoints, workflows, UIs) through simple scripts - in Typescript, Python, Go & Bash - and low code builders. + end: |- + Windmill has been successfully deployed! + Please change the following settings before using the service: + 1. Go to the settings for `$$cap_appname` + 2. Enable **Websocket Support** + 3. Enable **HTTPS** + 4. Click on **Edit Default Nginx Configurations** and paste the following content before the last closing bracket "}": + ``` + location /ws/ { + proxy_pass http://srv-captain--$$cap_appname-lsp:3001/ws/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + ``` + Now you can access it at `https://$$cap_appname.$$cap_root_domain` + + Default e-mail is `admin@windmill.dev` and the password is `changeme` + + displayName: Windmill + isOfficial: true + description: Windmill is an open-source alternative to Retool, Airplane and n8n. + documentation: https://windmill.dev + variables: + - id: $$cap_app_version + label: Windmill Version + defaultValue: '1.99' + description: Checkout their github page for the valid tags https://github.com/windmill-labs/windmill/releases + validRegex: /^([^\s^\/])+$/ + - id: $$cap_wm_base_url + label: WM Base URL + defaultValue: https://$$cap_appname.$$cap_root_domain + description: |- + Server fully qualified url of the user-facing URL. + Example: https://windmill.example.com + - id: $$cap_postgres_version + label: Postgres Version + defaultValue: '15-alpine' + description: Checkout their page for the valid tags https://hub.docker.com/_/postgres + validRegex: /^([^\s^\/])+$/ + - id: $$cap_postgres_pass + label: Potgress Database password + description: 'Password for postgres' + defaultValue: $$cap_gen_random_hex(16) + validRegex: /^([^\s^\/])+$/ diff --git a/public/v4/logos/windmill.png b/public/v4/logos/windmill.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac5b6005b68dd70c55cbf966c6aeff853aaa6e3 GIT binary patch literal 7479 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 literal 0 HcmV?d00001