From f3358000b165e197075caa6bbcb996e4184e5d99 Mon Sep 17 00:00:00 2001 From: Arob Date: Sat, 24 May 2025 23:42:20 +0000 Subject: [PATCH] FreeScout template (#149) * Add FreeScout template * Final commit. Tested and working. - opted to use internal db rather than external - http instead of https for traefik-generated domain --- blueprints/freescout/docker-compose.yml | 61 +++++++++++++++++++++++++ blueprints/freescout/freescout.svg | 13 ++++++ blueprints/freescout/template.toml | 30 ++++++++++++ meta.json | 49 ++++++++------------ 4 files changed, 124 insertions(+), 29 deletions(-) create mode 100644 blueprints/freescout/docker-compose.yml create mode 100644 blueprints/freescout/freescout.svg create mode 100644 blueprints/freescout/template.toml diff --git a/blueprints/freescout/docker-compose.yml b/blueprints/freescout/docker-compose.yml new file mode 100644 index 00000000..a6b03ecf --- /dev/null +++ b/blueprints/freescout/docker-compose.yml @@ -0,0 +1,61 @@ +services: + freescout-db: + image: mariadb:10.6 + volumes: + - freescout-db-data:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${DB_NAME} + MYSQL_USER: ${DB_USER} + MYSQL_PASSWORD: ${DB_PASS} + healthcheck: + test: + [ + "CMD", + "mysqladmin", + "ping", + "-h", + "localhost", + "-u", + "root", + "-p${MYSQL_ROOT_PASSWORD}", + ] + interval: 10s + timeout: 5s + retries: 5 + restart: unless-stopped + + freescout: + image: tiredofit/freescout:latest + volumes: + - freescout-data:/data + - freescout-html:/www/html + - freescout-logs:/www/logs + depends_on: + freescout-db: + condition: service_healthy + environment: + - ADMIN_EMAIL=${ADMIN_EMAIL} + - ADMIN_PASS=${ADMIN_PASS} + - ADMIN_FIRST_NAME=${ADMIN_FIRST_NAME} + - ADMIN_LAST_NAME=${ADMIN_LAST_NAME} + - SITE_URL=${SITE_URL} + - DB_HOST=freescout-db + - DB_PORT=3306 + - DB_TYPE=mysql + - DB_NAME=${DB_NAME} + - DB_USER=${DB_USER} + - DB_PASS=${DB_PASS} + - APPLICATION_NAME=${APPLICATION_NAME} + - SETUP_TYPE=AUTO + - ENABLE_AUTO_UPDATE=TRUE + - DISPLAY_ERRORS=FALSE + - APP_PROXY=${APP_PROXY} + - APP_TRUSTED_PROXIES=${APP_TRUSTED_PROXIES} + restart: unless-stopped + +volumes: + freescout-db-data: + freescout-data: + freescout-html: + freescout-logs: diff --git a/blueprints/freescout/freescout.svg b/blueprints/freescout/freescout.svg new file mode 100644 index 00000000..ca7b9df9 --- /dev/null +++ b/blueprints/freescout/freescout.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/blueprints/freescout/template.toml b/blueprints/freescout/template.toml new file mode 100644 index 00000000..ad30c8b1 --- /dev/null +++ b/blueprints/freescout/template.toml @@ -0,0 +1,30 @@ +[variables] +main_domain = "${domain}" +mysql_root_password = "${password:16}" +admin_email = "${email}" +admin_password = "${password:16}" +db_name = "freescout" +db_user = "freescout_user" +db_pass = "${password:16}" + +[config] +mounts = [] + +[[config.domains]] +serviceName = "freescout" +port = 80 +host = "${main_domain}" + +[config.env] +MYSQL_ROOT_PASSWORD = "${mysql_root_password}" +DB_NAME = "${db_name}" +DB_USER = "${db_user}" +DB_PASS = "${db_pass}" +ADMIN_EMAIL = "${admin_email}" +ADMIN_PASS = "${admin_password}" +ADMIN_FIRST_NAME = "Admin" +ADMIN_LAST_NAME = "User" +SITE_URL = "http://${main_domain}" +APPLICATION_NAME = "Customer Support" +APP_PROXY = "" +APP_TRUSTED_PROXIES = "172.16.0.0/12,192.168.0.0/16,10.0.0.0/8" diff --git a/meta.json b/meta.json index d9a301a2..bb2c6faa 100644 --- a/meta.json +++ b/meta.json @@ -12,6 +12,19 @@ "logo": "autobase.svg", "tags": ["database", "postgres", "self-hosted", "server"] }, + { + "id": "freescout", + "name": "FreeScout", + "version": "latest", + "description": "FreeScout is a free open source help desk and shared inbox system. It's a self-hosted alternative to HelpScout, Zendesk, and similar services that allows you to manage customer communications through email and a clean web interface. FreeScout makes it easy to organize support requests, track customer conversations, and collaborate with your team.", + "links": { + "github": "https://github.com/freescout-helpdesk/freescout", + "website": "https://freescout.net/", + "docs": "https://github.com/freescout-helpdesk/freescout/wiki/Installation-Guide" + }, + "logo": "freescout.svg", + "tags": ["helpdesk", "support", "email", "customer-service", "self-hosted"] + }, { "id": "openresty-manager", "name": "OpenResty Manager", @@ -686,11 +699,7 @@ "website": "https://pterodactyl.io", "docs": "https://pterodactyl.io/project/introduction.html" }, - "tags": [ - "self-hosted", - "open-source", - "management" - ] + "tags": ["self-hosted", "open-source", "management"] }, { "id": "pyrodactyl", @@ -703,11 +712,7 @@ "website": "https://pyrodactyl.dev", "docs": "https://pyrodactyl.dev/docs" }, - "tags": [ - "self-hosted", - "open-source", - "management" - ] + "tags": ["self-hosted", "open-source", "management"] }, { "id": "influxdb", @@ -2252,13 +2257,7 @@ "website": "https://homebridge.io/", "docs": "https://github.com/homebridge/homebridge/wiki" }, - "tags": [ - "iot", - "homekit", - "internet-of-things", - "self-hosted", - "server" - ] + "tags": ["iot", "homekit", "internet-of-things", "self-hosted", "server"] }, { "id": "homeassistant", @@ -2342,11 +2341,7 @@ "website": "https://qdrant.tech/", "docs": "https://qdrant.tech/documentation/" }, - "tags": [ - "vector-db", - "database", - "search" - ] + "tags": ["vector-db", "database", "search"] }, { "id": "trmnl-byos-laravel", @@ -2359,12 +2354,9 @@ "website": "https://docs.usetrmnl.com/go/diy/byos", "docs": "https://github.com/usetrmnl/byos_laravel/blob/main/README.md" }, - "tags": [ - "e-ink" - ] - }, + "tags": ["e-ink"] + }, { - "id": "chibisafe", "name": "Chibisafe", "version": "latest", @@ -2378,7 +2370,6 @@ "tags": ["media system", "storage", "file-sharing"] }, { - "id": "rybbit", "name": "Rybbit", "version": "latest", @@ -2390,5 +2381,5 @@ "docs": "https://www.rybbit.io/docs" }, "tags": ["analytics"] - } + } ]