From 9f09732b9a7ffc90b7849c663746f9f5dae7396a Mon Sep 17 00:00:00 2001 From: Antoine Jacques Date: Tue, 7 Jul 2020 02:38:10 +0200 Subject: [PATCH] Firefly III One Click App (#217) --- public/v2/apps/firefly-iii.json | 97 ++++++++++++++++++++++++++++++++ public/v2/logos/firefly-iii.png | Bin 0 -> 22027 bytes 2 files changed, 97 insertions(+) create mode 100644 public/v2/apps/firefly-iii.json create mode 100644 public/v2/logos/firefly-iii.png diff --git a/public/v2/apps/firefly-iii.json b/public/v2/apps/firefly-iii.json new file mode 100644 index 0000000..034b310 --- /dev/null +++ b/public/v2/apps/firefly-iii.json @@ -0,0 +1,97 @@ +{ + "captainVersion": "2", + "documentation": "Taken from https://docs.firefly-iii.org/installation/docker", + "description": "Firefly III - A free and open source personal finance manager", + "displayName": "Firefly III", + "dockerCompose": { + "version": "3.8", + "services": { + "$$cap_appname": { + "image": "jc5x/firefly-iii:$$cap_firefly_version", + "containerHttpPort": "8080", + "volumes": [ + "$$cap_appname-export:/var/www/firefly-iii/storage/export", + "$$cap_appname-upload:/var/www/firefly-iii/storage/upload" + ], + "restart": "always", + "depends_on": ["$$cap_appname-db"], + "environment": { + "SITE_OWNER": "$$cap_firefly_site-owner", + "TZ": "$$cap_firefly_time-zone", + "TRUSTED_PROXIES": "**", + "DB_CONNECTION": "mysql", + "DB_PORT": 3306, + "DB_DATABASE": "firefly", + "DB_USERNAME": "firefly", + "DB_HOST": "srv-captain--$$cap_appname-db", + "DB_PASSWORD": "$$cap_mariadb_password", + "APP_KEY": "$$cap_firefly_app-key" + } + }, + "$$cap_appname-db": { + "image": "mariadb:$$cap_mariadb_version", + "notExposeAsWebApp": "true", + "volumes": ["$$cap_appname-db-data:/var/lib/mysql"], + "restart": "always", + "environment": { + "MYSQL_ROOT_PASSWORD": "$$cap_mariadb_password", + "MYSQL_DATABASE": "firefly", + "MYSQL_USER": "firefly", + "MYSQL_PASSWORD": "$$cap_mariadb_password" + } + } + }, + "volumes": { + "$$cap_appname-db-data": {}, + "$$cap_appname-export": {}, + "$$cap_appname-upload": {} + } + }, + + "instructions": { + "start": "Enter your Firefly III Configuration parameters and click on next. It will take about a minute for the process to finish.", + "end": "Firefly III is deployed and available from the url http://$$cap_appname.$$cap_root_domain" + }, + "variables": [ + { + "id": "$$cap_mariadb_version", + "label": "Mariadb Version Tag", + "description": "Check out their Docker page for the valid tags https://hub.docker.com/_/mariadb?tab=tags", + "defaultValue": "10.5.4", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_mariadb_password", + "label": "Mariadb Password", + "description": "The password of the Mariadb Database\"", + "validRegex": "/.{1,}/" + }, + { + "id": "$$cap_firefly_version", + "label": "Firefly Version Tag", + "description": "Check out their Docker page for the valid tags https://hub.docker.com/r/jc5x/firefly-iii/tags", + "defaultValue": "release-5.3.0", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_firefly_site-owner", + "label": "Firefly Site Owner Mail", + "description": "The email address of the owner of the app.", + "validRegex": "/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/" + }, + { + "id": "$$cap_firefly_time-zone", + "label": "Time zone", + "description": "The preferred time zone. Check out the available time zone on https://en.wikipedia.org/wiki/List_of_tz_database_time_zones", + "defaultValue": "Europe/Brussels", + "validRegex": "/.{1,}/" + }, + { + "id": "$$cap_firefly_app-key", + "label": "Firefly APP KEY", + "description": "The key from which everything is encrypted. Generate one on https://passwordsgenerator.net/?length=32&symbols=0&numbers=1&lowercase=1&uppercase=1&similar=0&ambiguous=0&client=1&autoselect=0", + "defaultValue": "qSAY3tVhAHgz87gusKFoPbg9hpCnMVTR", + "validRegex": "/^[A-Za-z0-9]{32}$/" + } + ] +} diff --git a/public/v2/logos/firefly-iii.png b/public/v2/logos/firefly-iii.png new file mode 100644 index 0000000000000000000000000000000000000000..8611300e1dc425f6fc07a944850a661c49d45d13 GIT binary patch literal 22027 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