From 131ae0073e11e99d6dd554264e9e006edf2549e3 Mon Sep 17 00:00:00 2001 From: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Date: Mon, 16 Feb 2026 12:28:00 +1100 Subject: [PATCH] feat(blueprint): strapi template (#616) * feat(blueprint): strapi template * feat: strapi meta.json * fix: strapi extra colon * fix: docker syntax for expose and depends_on * fix: change image base * fix: strapi healthcheck * fix: add jwt secret and admin jwt secret to strapi * fix: strapi healthcheck start interval * fix(template): strapi v5.33.0 * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu --- blueprints/strapi/docker-compose.yml | 58 ++++++++++++++++++++++++++++ blueprints/strapi/strapi.svg | 23 +++++++++++ blueprints/strapi/template.toml | 15 +++++++ meta.json | 18 +++++++++ 4 files changed, 114 insertions(+) create mode 100644 blueprints/strapi/docker-compose.yml create mode 100644 blueprints/strapi/strapi.svg create mode 100644 blueprints/strapi/template.toml diff --git a/blueprints/strapi/docker-compose.yml b/blueprints/strapi/docker-compose.yml new file mode 100644 index 00000000..6ac724fc --- /dev/null +++ b/blueprints/strapi/docker-compose.yml @@ -0,0 +1,58 @@ +# Self-host guide: +# - https://strapi.io/blog/how-to-self-host-your-headless-cms-using-docker-compose + +services: + strapi: + image: elestio/strapi-production:v5.33.0 + environment: + # https://docs.strapi.io/cms/configurations/environment + NODE_ENV: production + STRAPI_TELEMETRY_DISABLED: true + STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE: en + FAST_REFRESH: true + JWT_SECRET: ${JWT_SECRET} + ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET} + DATABASE_CLIENT: postgres + DATABASE_HOST: strapi_postgres + DATABASE_PORT: 5432 + DATABASE_NAME: strapi + DATABASE_USERNAME: strapi + DATABASE_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - strapi_data:/srv/app + expose: + - 1337 + depends_on: + - strapi_postgres + healthcheck: + test: + - CMD + - wget + - "-q" + - "--spider" + - "http://127.0.0.1:1337" + start_period: 3s + interval: 30s + timeout: 10s + retries: 5 + + strapi_postgres: + image: postgres:18 + environment: + POSTGRES_DB: strapi + POSTGRES_USER: strapi + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - strapi_postgres_data:/var/lib/postgresql + healthcheck: + test: + - CMD-SHELL + - "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}" + start_period: 3s + interval: 30s + timeout: 10s + retries: 5 + +volumes: + strapi_data: + strapi_postgres_data: diff --git a/blueprints/strapi/strapi.svg b/blueprints/strapi/strapi.svg new file mode 100644 index 00000000..1e4ed993 --- /dev/null +++ b/blueprints/strapi/strapi.svg @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/blueprints/strapi/template.toml b/blueprints/strapi/template.toml new file mode 100644 index 00000000..0acddaf5 --- /dev/null +++ b/blueprints/strapi/template.toml @@ -0,0 +1,15 @@ +[variables] +main_domain = "${domain}" +postgres_password = "${password:32}" +jwt_secret = "${password:32}" +admin_jwt_secret = "${password:32}" + +[[config.domains]] +serviceName = "strapi" +port = 1337 +host = "${main_domain}" + +[config.env] +POSTGRES_PASSWORD = "${postgres_password}" +JWT_SECRET = "${jwt_secret}" +ADMIN_JWT_SECRET = "${admin_jwt_secret}" diff --git a/meta.json b/meta.json index 51502273..65f66797 100644 --- a/meta.json +++ b/meta.json @@ -5803,6 +5803,24 @@ "media" ] }, + { + "id": "strapi", + "name": "Strapi", + "version": "v5.33.0", + "description": "Open-source headless CMS to build powerful APIs with built-in content management.", + "logo": "strapi.svg", + "links": { + "github": "https://github.com/strapi/strapi", + "discord": "https://discord.com/invite/strapi", + "docs": "https://docs.strapi.io", + "website": "https://strapi.io" + }, + "tags": [ + "headless", + "cms", + "content-management" + ] + }, { "id": "supabase", "name": "SupaBase",