diff --git a/apps/dashboard/assets/js/renderers/quick-access.js b/apps/dashboard/assets/js/renderers/quick-access.js index 4b069d7..0625904 100644 --- a/apps/dashboard/assets/js/renderers/quick-access.js +++ b/apps/dashboard/assets/js/renderers/quick-access.js @@ -3,7 +3,6 @@ const QUICK_LINKS = [ { label: "Komodo", icon: "🦎", url: "https://komodo.kaleschke.info" }, { label: "Uptime Kuma", icon: "📡", url: "https://uptime.kaleschke.info" }, { label: "Beszel", icon: "📊", url: "https://beszel.kaleschke.info" }, - { label: "Firefly III", icon: "🦋", url: "https://firefly.kaleschke.info" }, { label: "Paperless", icon: "📄", url: "https://paperless.kaleschke.info" }, { label: "Mealie", icon: "🍽️", url: "https://mealie.kaleschke.info" }, { label: "Immich", icon: "🖼️", url: "https://immich.kaleschke.info" }, diff --git a/apps/dashboard/dashboard.html b/apps/dashboard/dashboard.html index 4a718df..df78b33 100644 --- a/apps/dashboard/dashboard.html +++ b/apps/dashboard/dashboard.html @@ -634,7 +634,6 @@ .quick-tile-icon-komodo { background: linear-gradient(135deg, #00e2b3, #68c7ff); } .quick-tile-icon-kuma { background: linear-gradient(135deg, #00d98a, #7fffc7); } .quick-tile-icon-beszel { background: linear-gradient(135deg, #53f1b4, #a9ffd8); } - .quick-tile-icon-firefly { background: linear-gradient(135deg, #ffb54d, #ffd66f); } .quick-tile-icon-paperless { background: linear-gradient(135deg, #89ffdc, #46cfa0); } .quick-tile-icon-mealie { background: linear-gradient(135deg, #7ec2ff, #f6ff8c); } .quick-tile-icon-immich { background: linear-gradient(135deg, #ffd15c, #ff9d4d); } diff --git a/apps/firefly-fints/.env b/apps/firefly-fints/.env deleted file mode 100644 index 545be97..0000000 --- a/apps/firefly-fints/.env +++ /dev/null @@ -1,5 +0,0 @@ -FIREFLY_III_URL=https://firefly.kaleschke.info -FIREFLY_III_ACCESS_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiZjM0ODZiMTgyNTI3Mjc5NGQwYWVlNzI2NzZhMTM1MzM2ZGI5MWUwZTc1MTRiNzE5Y2E1NWExMTkxNzg4MzBiMDMyN2RiNTNjZTJiYTM3YzgiLCJpYXQiOjE3NzUxMTY2MjkuMjE4ODQ4LCJuYmYiOjE3NzUxMTY2MjkuMjE4ODUsImV4cCI6MTgwNjY1MjYyMS4yMDA4NTQsInN1YiI6IjEiLCJzY29wZXMiOltdfQ.DJy2jTGGvhTe7cB9QSaMh3mcLlQr34HOoPdSdViusY4wFWE7zK9p_bsrw-3MxYlOccztDNqGSdclpTnLErbIM5eHfn5qUx9K7r6fLwfgV4SXxt_a8wLLvO6fc2S1x2HrhjFdLe2yIbLD5Z1cTb88fIA7g3aEvqWpAKSezGgWcsAIzqSfYVF4_aM2R_sfdJkj8HMGthWeS6AzSlFetLsVMossPA5j3_nh0PED2Na0p0fgKlkvp0Gzs2ZPyyRfJTVg90OoFOYdnWXWc31tJGGFBv4BfDa81CetJr9Qba6KN1fz9I4ACoOiy_051ZDjx1ev3HYZDbwJ_XdQh7OmA9PjtcpgjEgGGXJE_hWlSEIYRIlm-pX9QlinY3kNTV39xVk416KU85Twamo-Q0FS3NVv-cLBNIFBFAaGjNL7hU_OTdWIDeGEj6bLypvYmdL0o0OJvEipIJbHj5cslKiOq-ffd-BnaKLvX8yEBair68MXgJrAXGMSliEoIEXGQ5Ws2DtzEtj2H-2Ubqqnymgx4xY3sMx0YyTRHU3zlS9XCPS3tn5f6RekIPwYSXZ40Kj2efvEMjlDxqlp1yc8k8hvrSShnrKqqwFP0rWifZYMmRk6MuLCZDJfFcv-WSkK7H7ERyHtvRFwfQ78qGetrGA_G2f7atVU9WLudmvEDx2sVIWzdWI - -TZ=Europe/Berlin -FINTS_PERSISTENCE=0OjMrMSsxKzAnIjt9fXM6NjoiSElUQU5TIjthOjI6e2k6NztPOjI0OiJGaHBcU2VnbWVudFxUQU5cSElUQU5TdjciOjE6e2k6MDtzOjI2NzoiSElUQU5TOjc0Ojc6MysxKzErMCtOOk46MDo5NDA6MjpTZWFsT25lOkRlY291cGxlZDo6REtCIEFwcDo6OkRLQiBBcHA6MjA0ODpOOjE6TjowOjA6TjpKOjAwOjA6Tjo6OTk5OjU6MzpKOko6OTEwOjI6SEhEMS4zLjA6OjpjaGlwVEFOIG1hbnVlbGw6NjoxOlRBTi1OdW1tZXI6MjA0ODpOOjE6TjowOjA6TjpKOjAwOjA6Tjo6Ojo6Ojo5MTM6MjpRMVM6U2Vjb2Rlcl9VQzoxLjIuMDpjaGlwVEFOIFFSOjY6MTpUQU4tTnVtbWVyOjIwNDg6TjoxOk46MDowOk46SjowMDowOk4nIjt9aTo2O086MjQ6IkZocFxTZWdtZW50XFRBTlxISVRBTlN2NiI6MTp7aTowO3M6MTgwOiJISVRBTlM6NzM6NjozKzErMSswK046TjowOjkxMDoyOkhIRDEuMy4wOjo6Y2hpcFRBTiBtYW51ZWxsOjY6MTpUQU4tTnVtbWVyOjIwNDg6TjoxOk46MDowOk46SjowMDowOk46OjkxMzoyOlExUzpTZWNvZGVyX1VDOjEuMi4wOmNoaXBUQU4gUVI6NjoxOlRBTi1OdW1tZXI6MjA0ODpOOjE6TjowOjA6TjpKOjAwOjA6TiciO319czo2OiJISVRJQVMiO2E6MTp7aToxO086Mjg6IkZocFxTZWdtZW50XEFub255bW91c1NlZ21lbnQiOjE6e2k6MDtzOjg4OiJISVRJQVM6NTg6MTozKzErMSswKzE6OjMwOk46VTo6Ojo6dXJuPzppc28/OnN0ZD86aXNvPzoyMDAyMj86dGVjaD86eHNkPzpwYWluLjAwMS4wMDEuMDknIjt9fXM6NjoiSElUU1lTIjthOjE6e2k6MTtPOjI4OiJGaHBcU2VnbWVudFxBbm9ueW1vdXNTZWdtZW50IjoxOntpOjA7czoyNDoiSElUU1lTOjU5OjE6MysxKzErMCtOOk4nIjt9fXM6NjoiSElWT09TIjthOjE6e2k6MTtPOjI4OiJGaHBcU2VnbWVudFxBbm9ueW1vdXNTZWdtZW50IjoxOntpOjA7czo0NToiSElWT09TOjg6MTozKzErMSswK046SEtDQ006SEtDTUU6SEtJUEU6SEtJUE0nIjt9fXM6NjoiSElWUEFTIjthOjE6e2k6MTtPOjI4OiJGaHBcU2VnbWVudFxBbm9ueW1vdXNTZWdtZW50IjoxOntpOjA7czoxOToiSElWUEFTOjk6MTozKzErMSswJyI7fX1zOjY6IkhJVlBQUyI7YToxOntpOjE7TzoyNDoiRmhwXFNlZ21lbnRcVlBQXEhJVlBQU3YxIjoxOntpOjA7czoxNzA6IkhJVlBQUzo3OjE6MysxKzErMCsxMDAwOk46VjpOOk46dXJuPzppc28/OnN0ZD86aXNvPzoyMDAyMj86dGVjaD86eHNkPzpwYWluLjAwMi4wMDEuMTA6SEtDQ006SEtDQ1M6SEtDREU6SEtDRE46SEtDTUU6SEtDU0E6SEtDU0U6SEtJREE6SEtJUEQ6SEtJUEU6SEtJUE06SEtJUFQ6SEtJUFo6SEtUSUEnIjt9fXM6NjoiSElXRFVTIjthOjE6e2k6NTtPOjI4OiJGaHBcU2VnbWVudFxBbm9ueW1vdXNTZWdtZW50IjoxOntpOjA7czoyMzoiSElXRFVTOjYxOjU6MysxKzErMCs5MCciO319czo2OiJISVdQRFMiO2E6MTp7aTo2O086Mjg6IkZocFxTZWdtZW50XEFub255bW91c1NlZ21lbnQiOjE6e2k6MDtzOjI2OiJISVdQRFM6NjA6NjozKzErMSswK046TjpOJyI7fX1zOjY6IkhJV1NPUyI7YTozOntpOjU7TzoyODoiRmhwXFNlZ21lbnRcQW5vbnltb3VzU2VnbWVudCI6MTp7aTowO3M6Mjc6IkhJV1NPUzo2NDo1OjMrMSsxKzArSjpOOjkwJyI7fWk6NDtPOjI4OiJGaHBcU2VnbWVudFxBbm9ueW1vdXNTZWdtZW50IjoxOntpOjA7czoyNzoiSElXU09TOjYzOjQ6MysxKzErMCtKOk46OTAnIjt9aTozO086Mjg6IkZocFxTZWdtZW50XEFub255bW91c1NlZ21lbnQiOjE6e2k6MDtzOjI1OiJISVdTT1M6NjI6MzozKzErMSswK0o6OTAnIjt9fXM6NjoiSElaREZTIjthOjE6e2k6MTtPOjI4OiJGaHBcU2VnbWVudFxBbm9ueW1vdXNTZWdtZW50IjoxOntpOjA7czoyMzoiSElaREZTOjY1OjE6MysxKzErMCs5MCciO319czo2OiJISVpETFMiO2E6MTp7aToxO086Mjg6IkZocFxTZWdtZW50XEFub255bW91c1NlZ21lbnQiOjE6e2k6MDtzOjIwOiJISVpETFM6NjY6MTozKzErMSswJyI7fX19czoyNDoic2luZ2xlU3RlcFRhbk1vZGVBbGxvd2VkIjtiOjA7czoxMToidGFuUmVxdWlyZWQiO2E6NDk6e3M6NToiSEtUQU4iO2I6MDtzOjU6IkhLVlBQIjtiOjA7czo1OiJIS1ZPTyI7YjowO3M6NToiSEtWUEEiO2I6MDtzOjU6IkhLQVVCIjtiOjE7czo1OiJIS0FVUCI7YjoxO3M6NToiSEtCQVoiO2I6MTtzOjU6IkhLQk1FIjtiOjE7czo1OiJIS0JTRSI7YjoxO3M6NToiSEtDQVoiO2I6MTtzOjU6IkhLQ0NNIjtiOjE7czo1OiJIS0NDUyI7YjoxO3M6NToiSEtDREIiO2I6MTtzOjU6IkhLQ0RFIjtiOjE7czo1OiJIS0NETCI7YjoxO3M6NToiSEtDRE4iO2I6MTtzOjU6IkhLQ01FIjtiOjE7czo1OiJIS0NTQSI7YjoxO3M6NToiSEtDU0IiO2I6MTtzOjU6IkhLQ1NFIjtiOjE7czo1OiJIS0NTTCI7YjoxO3M6NToiSEtETUUiO2I6MTtzOjU6IkhLRFNCIjtiOjE7czo1OiJIS0RTRSI7YjoxO3M6NToiSEtEU1ciO2I6MTtzOjU6IkhLRUtQIjtiOjA7czo1OiJIS0ZSRCI7YjoxO3M6NToiSEtJREEiO2I6MTtzOjU6IkhLSVBEIjtiOjE7czo1OiJIS0lQRSI7YjoxO3M6NToiSEtJUE0iO2I6MTtzOjU6IkhLSVBTIjtiOjA7czo1OiJIS0lQVCI7YjoxO3M6NToiSEtJUFoiO2I6MTtzOjU6IkhLSVNTIjtiOjA7czo1OiJIS0tBWiI7YjoxO3M6NToiSEtLSUYiO2I6MTtzOjU6IkhLUEFFIjtiOjE7czo1OiJIS1FURyI7YjoxO3M6NToiSEtTQUwiO2I6MTtzOjU6IkhLVElBIjtiOjE7czo1OiJIS1RTWSI7YjowO3M6NToiSEtXUEQiO2I6MDtzOjU6IkhLV0RVIjtiOjA7czo1OiJIS1dTTyI7YjowO3M6NToiSEtaREYiO2I6MTtzOjU6IkhLWkRMIjtiOjE7czo1OiJIS1NQQSI7YjoxO3M6NToiSEtUQUIiO2I6MDt9czoxMToiYWxsVGFuTW9kZXMiO2E6Mzp7aTo5NDA7Tzo1NzoiRmhwXFNlZ21lbnRcVEFOXFZlcmZhaHJlbnNwYXJhbWV0ZXJad2VpU2Nocml0dFZlcmZhaHJlblY3IjoxOntpOjA7czo4MToiOTQwOjI6U2VhbE9uZTpEZWNvdXBsZWQ6OkRLQiBBcHA6OjpES0IgQXBwOjIwNDg6TjoxOk46MDowOk46SjowMDowOk46Ojk5OTo1OjM6SjpKIjt9aTo5MTA7Tzo1NzoiRmhwXFNlZ21lbnRcVEFOXFZlcmZhaHJlbnNwYXJhbWV0ZXJad2VpU2Nocml0dFZlcmZhaHJlblY3IjoxOntpOjA7czo3MzoiOTEwOjI6SEhEMS4zLjA6OjpjaGlwVEFOIG1hbnVlbGw6NjoxOlRBTi1OdW1tZXI6MjA0ODpOOjE6TjowOjA6TjpKOjAwOjA6TiI7fWk6OTEzO086NTc6IkZocFxTZWdtZW50XFRBTlxWZXJmYWhyZW5zcGFyYW1ldGVyWndlaVNjaHJpdHRWZXJmYWhyZW5WNyI6MTp7aTowO3M6Nzg6IjkxMzoyOlExUzpTZWNvZGVyX1VDOjEuMi4wOmNoaXBUQU4gUVI6NjoxOlRBTi1OdW1tZXI6MjA0ODpOOjE6TjowOjA6TjpKOjAwOjA6TiI7fX19aToyO2E6MTp7aTowO2k6OTQwO31pOjM7TzoxNjoiRmhwXFByb3RvY29sXFVQRCI6Mjp7czo1OiJoaXVwYSI7TzoyNToiRmhwXFNlZ21lbnRcSElVUEFcSElVUEF2NCI6MTp7aTowO3M6Mjg6IkhJVVBBOjc1OjQ6MysxMDEzMjcxMTc0KzArMCciO31zOjU6ImhpdXBkIjthOjU6e2k6MDtPOjI1OiJGaHBcU2VnbWVudFxISVVQRFxISVVQRHY2IjoxOntpOjA7czo0MTU6IkhJVVBEOjc2OjY6MysxMDEzMjcxMTc0OjExMTAxbGE3UXF6c3RIVFVXcWFoNEhkbkdoRFE9PToyODA6MTIwMzAwMDArREU0MjEyMDMwMDAwMTAxMzI3MTE3NCsxMDEzMjcxMTc0KzErRVVSK01pY2hhZWwgS2FsZXNjaGtlIHVuZCtLYWxlc2Noa2UrR2lyb2tvbnRvKytIS0FVQjoxK0hLQVVQOjErSEtCQVo6MStIS0NBWjoxK0hLQ0NTOjErSEtDREI6MStIS0NERToxK0hLQ0RMOjErSEtDRE46MStIS0NTQToxK0hLQ1NCOjErSEtDU0U6MStIS0NTTDoxK0hLRFNCOjErSEtEU1c6MStIS0VLUDoxK0hLRlJEOjErSEtJREE6MStIS0lQRDoxK0hLSVBTOjErSEtJUFQ6MStIS0lQWjoxK0hLS0FaOjErSEtLSUY6MStIS1BBRToxK0hLUVRHOjErSEtTQUw6MStIS1RJQToxK0hLVFNZOjErSEtaREY6MStIS1pETDoxK0hLU1BBOjErSEtUQUI6MSciO31pOjE7TzoyNToiRmhwXFNlZ21lbnRcSElVUERcSElVUER2NiI6MTp7aTowO3M6Mzg3OiJISVVQRDo3Nzo2OjMrMTIxMDA4Njg1NDoxMTEwMWxnTE9jQWNHN0RYYUloVE5YaXA2Qi9RPT06MjgwOjEyMDMwMDAwK0RFNDQxMjAzMDAwMDEyMTAwODY4NTQrMTAxMzI3MTE3NCsxK0VVUitDbGFyYStLYWxlc2Noa2UrR2lyb2tvbnRvIHUxOCsrSEtCQVo6MStIS0NBWjoxK0hLQ0NTOjErSEtDREI6MStIS0NERToxK0hLQ0RMOjErSEtDRE46MStIS0NTQToxK0hLQ1NCOjErSEtDU0U6MStIS0NTTDoxK0hLRFNCOjErSEtEU1c6MStIS0VLUDoxK0hLRlJEOjErSEtJREE6MStIS0lQRDoxK0hLSVBTOjErSEtJUFQ6MStIS0lQWjoxK0hLS0FaOjErSEtLSUY6MStIS1BBRToxK0hLUVRHOjErSEtTQUw6MStIS1RJQToxK0hLVFNZOjErSEtaREY6MStIS1pETDoxK0hLU1BBOjErSEtUQUI6MSciO31pOjI7TzoyNToiRmhwXFNlZ21lbnRcSElVUERcSElVUER2NiI6MTp7aTowO3M6NDAxOiJISVVQRDo3ODo2OjMrMTMwMjgzNDQzNToxMTEwMWxWcnN4eGk5S2lVZWYvUllvYmk4MEFnPT06MjgwOjEyMDMwMDAwK0RFNDYxMjAzMDAwMDEzMDI4MzQ0MzUrMTAxMzI3MTE3NCsxK0VVUitNaWNoYWVsK0thbGVzY2hrZStUYWdlc2dlbGQrK0hLQkFaOjErSEtDQVo6MStIS0NDTToxK0hLQ0NTOjErSEtDREI6MStIS0NERToxK0hLQ0RMOjErSEtDRE46MStIS0NNRToxK0hLQ1NBOjErSEtDU0I6MStIS0NTRToxK0hLQ1NMOjErSEtEU0I6MStIS0RTVzoxK0hLRUtQOjErSEtGUkQ6MStIS0lEQToxK0hLSVBEOjErSEtJUFM6MStIS0lQVDoxK0hLSVBaOjErSEtLQVo6MStIS0tJRjoxK0hLUEFFOjErSEtRVEc6MStIS1NBTDoxK0hLVElBOjErSEtUU1k6MStIS1pERjoxK0hLWkRMOjErSEtTUEE6MStIS1RBQjoxJyI7fWk6MztPOjI1OiJGaHBcU2VnbWVudFxISVVQRFxISVVQRHY2IjoxOntpOjA7czoyMDI6IkhJVVBEOjc5OjY6Mys0OTMwMDAwMDAwMDAzOTMwOjEyMTAwbD8rQzZqdmVxU0RrQzMvWUF6VGtEU1VnPT06MjgwOjEyMDMwMDAwKysxMDEzMjcxMTc0KzUwK0VVUitNaWNoYWVsK0thbGVzY2hrZStWaXNhIEtyZWRpdGthcnRlKytIS0NBWjoxK0hLRUtQOjErSEtGUkQ6MStIS0tBWjoxK0hLUEFFOjErSEtRVEc6MStIS1NBTDoxK0hLVFNZOjErSEtUQUI6MSciO31pOjQ7TzoyNToiRmhwXFNlZ21lbnRcSElVUERcSElVUER2NiI6MTp7aTowO3M6MjAwOiJISVVQRDo4MDo2OjMrNDk5ODAwMDAwMDAwMTE5MDoxMjEwMGxVeFJOeWVHSGprMmk5RmV1ZzZFa2VnPT06MjgwOjEyMDMwMDAwKysxMDEzMjcxMTc0KzUwK0VVUitNYXJpbmErS2FsZXNjaGtlK1Zpc2EgS3JlZGl0a2FydGUrK0hLQ0FaOjErSEtFS1A6MStIS0ZSRDoxK0hLS0FaOjErSEtQQUU6MStIS1FURzoxK0hLU0FMOjErSEtUU1k6MStIS1RBQjoxJyI7fX19aTo0O086NTc6IkZocFxTZWdtZW50XFRBTlxWZXJmYWhyZW5zcGFyYW1ldGVyWndlaVNjaHJpdHRWZXJmYWhyZW5WNyI6MTp7aTowO3M6ODE6Ijk0MDoyOlNlYWxPbmU6RGVjb3VwbGVkOjpES0IgQXBwOjo6REtCIEFwcDoyMDQ4Ok46MTpOOjA6MDpOOko6MDA6MDpOOjo5OTk6NTozOko6SiI7fWk6NTtOO2k6NjtzOjIyOiJBVjQyeTA0cjdVaUhwQlc1cCtYZmRBIjtpOjc7TjtpOjg7aTo3O30= \ No newline at end of file diff --git a/apps/firefly-fints/docker-compose.yml b/apps/firefly-fints/docker-compose.yml deleted file mode 100644 index bb568ca..0000000 --- a/apps/firefly-fints/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -version: "3.9" - -services: - firefly-fints: - image: benkl/firefly-iii-fints-importer:latest - container_name: firefly-fints - restart: unless-stopped - env_file: - - .env - volumes: - - /mnt/user/appdata/firefly-fints:/data - networks: - - frontend_net - security_opt: - - no-new-privileges:true - ports: - - "8091:8080" - dns: - - 1.1.1.1 - - 8.8.8.8 - -networks: - frontend_net: - external: true \ No newline at end of file diff --git a/apps/firefly/.db.env b/apps/firefly/.db.env deleted file mode 100644 index cdd8236..0000000 --- a/apps/firefly/.db.env +++ /dev/null @@ -1,4 +0,0 @@ -MYSQL_RANDOM_ROOT_PASSWORD=yes -MYSQL_DATABASE=firefly -MYSQL_USER=firefly -MYSQL_PASSWORD=firefly \ No newline at end of file diff --git a/apps/firefly/.env b/apps/firefly/.env deleted file mode 100644 index d63924c..0000000 --- a/apps/firefly/.env +++ /dev/null @@ -1,16 +0,0 @@ -APP_KEY=base64:ZHr3GRFkH9jEJ6TtoD6pEEsLHEfRViqqxSV6G7Zsba8= -APP_URL=https://firefly.kaleschke.info - -DB_HOST=firefly-db -DB_PORT=3306 -DB_CONNECTION=mysql -DB_DATABASE=firefly -DB_USERNAME=firefly -DB_PASSWORD=firefly - -TRUSTED_PROXIES=** -APP_ENV=production -APP_DEBUG=false -LOG_CHANNEL=stack - -TZ=Europe/Berlin \ No newline at end of file diff --git a/apps/firefly/.importer.env b/apps/firefly/.importer.env deleted file mode 100644 index b6f0cd1..0000000 --- a/apps/firefly/.importer.env +++ /dev/null @@ -1,8 +0,0 @@ -TZ=Europe/Berlin -APP_ENV=production -APP_DEBUG=false -LOG_CHANNEL=stack - -TRUSTED_PROXIES=** -FIREFLY_III_URL=http://firefly-app:8080 -VANITY_URL=https://firefly.kaleschke.info \ No newline at end of file diff --git a/apps/firefly/docker-compose.yml b/apps/firefly/docker-compose.yml deleted file mode 100644 index c68949d..0000000 --- a/apps/firefly/docker-compose.yml +++ /dev/null @@ -1,67 +0,0 @@ -version: "3.9" - -services: - firefly-db: - image: mariadb:10.11 - container_name: firefly-db - restart: unless-stopped - env_file: - - .db.env - volumes: - - /mnt/user/appdata/firefly/db:/var/lib/mysql - networks: - - backend_net - security_opt: - - no-new-privileges:true - - firefly-app: - image: fireflyiii/core:latest - container_name: firefly-app - restart: unless-stopped - depends_on: - - firefly-db - env_file: - - .env - volumes: - - /mnt/user/appdata/firefly/upload:/var/www/html/storage/upload - networks: - - frontend_net - - backend_net - security_opt: - - no-new-privileges:true - labels: - - "traefik.enable=true" - - "traefik.docker.network=frontend_net" - - "traefik.http.routers.firefly.rule=Host(`firefly.kaleschke.info`)" - - "traefik.http.routers.firefly.entrypoints=websecure" - - "traefik.http.routers.firefly.tls=true" - - "traefik.http.routers.firefly.tls.certresolver=le" - - "traefik.http.services.firefly.loadbalancer.server.port=8080" - - firefly-importer: - image: fireflyiii/data-importer:latest - container_name: firefly-importer - restart: unless-stopped - depends_on: - - firefly-app - env_file: - - .env - - .importer.env - networks: - - frontend_net - security_opt: - - no-new-privileges:true - labels: - - "traefik.enable=true" - - "traefik.docker.network=frontend_net" - - "traefik.http.routers.firefly-importer.rule=Host(`import.firefly.kaleschke.info`)" - - "traefik.http.routers.firefly-importer.entrypoints=websecure" - - "traefik.http.routers.firefly-importer.tls=true" - - "traefik.http.routers.firefly-importer.tls.certresolver=le" - - "traefik.http.services.firefly-importer.loadbalancer.server.port=8080" - -networks: - frontend_net: - external: true - backend_net: - external: true \ No newline at end of file diff --git a/ops/Semaphore/Scripts/docker-ps.sh b/ops/Semaphore/Scripts/docker-ps.sh deleted file mode 100644 index 562cecf..0000000 --- a/ops/Semaphore/Scripts/docker-ps.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -docker ps \ No newline at end of file diff --git a/ops/Semaphore/docker-compose.yml b/ops/Semaphore/docker-compose.yml deleted file mode 100644 index 3c26285..0000000 --- a/ops/Semaphore/docker-compose.yml +++ /dev/null @@ -1,57 +0,0 @@ -services: - semaphore: - image: semaphoreui/semaphore:v2.17.33 - container_name: semaphore - restart: unless-stopped - security_opt: - - no-new-privileges:true - environment: - SEMAPHORE_DB_DIALECT: postgres - SEMAPHORE_DB_HOST: postgresql17 - SEMAPHORE_DB_PORT: 5432 - SEMAPHORE_DB_NAME: semaphore - SEMAPHORE_DB_USER: semaphore - SEMAPHORE_DB_PASS: ${SEMAPHORE_DB_PASS} - - SEMAPHORE_ADMIN: admin - SEMAPHORE_ADMIN_PASSWORD: ${SEMAPHORE_ADMIN_PASSWORD} - SEMAPHORE_ADMIN_NAME: micha - SEMAPHORE_ADMIN_EMAIL: michideheld@gmx.de - - SEMAPHORE_ACCESS_KEY_ENCRYPTION: ${SEMAPHORE_ACCESS_KEY_ENCRYPTION} - SEMAPHORE_WEB_ROOT: https://semaphore.kaleschke.info - SEMAPHORE_GIT_CLIENT: cmd_git - - volumes: - - semaphore_data:/var/lib/semaphore - - semaphore_config:/etc/semaphore - - semaphore_tmp:/tmp/semaphore - - networks: - - frontend_net - - backend_net - - dns: - - 1.1.1.1 - - 8.8.8.8 - - labels: - - traefik.enable=true - - traefik.docker.network=frontend_net - - traefik.http.routers.semaphore.rule=Host(`semaphore.kaleschke.info`) - - traefik.http.routers.semaphore.entrypoints=websecure - - traefik.http.routers.semaphore.tls=true - - traefik.http.routers.semaphore.tls.certresolver=le - - traefik.http.routers.semaphore.middlewares=authelia@file,secure-headers@file - - traefik.http.services.semaphore.loadbalancer.server.port=3000 - -volumes: - semaphore_data: - semaphore_config: - semaphore_tmp: - -networks: - frontend_net: - external: true - backend_net: - external: true \ No newline at end of file diff --git a/ops/Semaphore/playbooks/docker-ps.yml b/ops/Semaphore/playbooks/docker-ps.yml deleted file mode 100644 index 3a2d4d5..0000000 --- a/ops/Semaphore/playbooks/docker-ps.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: Docker PS on NAS - hosts: all - gather_facts: false - tasks: - - name: Run docker ps without python - raw: docker ps - register: docker_ps - - - name: Show stdout - debug: - msg: "{{ docker_ps.stdout_lines }}" \ No newline at end of file diff --git a/ops/borg-ui/BACKUP_AUDIT_STATUS_QUO.md b/ops/borg-ui/BACKUP_AUDIT_STATUS_QUO.md index 2b1d997..e967fe7 100644 --- a/ops/borg-ui/BACKUP_AUDIT_STATUS_QUO.md +++ b/ops/borg-ui/BACKUP_AUDIT_STATUS_QUO.md @@ -50,7 +50,6 @@ Der technische Scope für `critical_infra` ist in `all-important-sources.txt` fe - `/local/immich/external` - `/local/gitea/data` - `/local/appdata/mealie/data` -- `/local/appdata/firefly/upload` - `/local/appdata/mailarchiver/data-protection-keys` ### Secrets / Konfiguration / Infrastruktur @@ -85,8 +84,6 @@ Der technische Scope für `critical_infra` ist in `all-important-sources.txt` fe | Tailscale | State-Verzeichnis | keine separate DB | Ja | gut | | AdGuard | `conf` | `work` bewusst nicht im Critical-Scope | Teilweise | okay | | Komodo | `core` + `periphery` | MongoDB Dump aktuell nicht verifiziert | Teilweise | offen | -| Firefly | Uploads | MariaDB Dump scheitert aktuell an korruptem Table | Teilweise | offen, aber niedrige Priorität wenn Ablösung geplant | -| Semaphore | Docker named volumes | Shared PostgreSQL vorgesehen, App-Volumes nicht in Borg | Nein / Teilweise | Lücke | | Redis | transiente Daten / Cache | absichtlich nicht im Scope | Nein | bewusst ausgeschlossen | | Scrutiny | Config + InfluxDB | InfluxDB nicht im Scope | Nein | bewusst ausgeschlossen | | Plex | Medien-Metadaten / Cache | kein Critical-Scope | Nein | bewusst ausgeschlossen | @@ -98,14 +95,12 @@ Der technische Scope für `critical_infra` ist in `all-important-sources.txt` fe - `postgresql17-globals.sql` - `postgresql17-mailarchiver.dump` - `postgresql17-paperless.dump` -- `postgresql17-semaphore.dump` - `postgresql17-authelia.dump` - `mealie.dump` - `immich.dump` ### Nicht erfolgreich / nicht bestätigt -- `firefly.sql` - Dump scheitert aktuell an korruptem MariaDB-Table `rt_meta` - `komodo-mongo.archive.gz` - im bisherigen Lauf nicht sichtbar, daher noch nicht als bestätigt werten ## Ergebnis des ersten `critical_infra`-Laufs @@ -160,17 +155,7 @@ Das ist kein Strukturfehler, sondern eine normale Trennung zwischen Nutzdaten un - Dump-Pfad im Skript vorhanden - Erfolg noch nicht bestätigt -2. **Semaphore** - - PostgreSQL-Teil ist grundsätzlich dumpbar - - die App selbst nutzt aber Docker named volumes - - diese Volumes sind aktuell nicht sauber im Borg-Scope enthalten - -3. **Firefly** - - Datei-Uploads sind enthalten - - DB-Dump aktuell fehlerhaft - - wenn Firefly sowieso bald entfernt wird, ist das momentan nicht blockierend - -4. **Automatisierung** +2. **Automatisierung** - Dumps wurden manuell erzeugt - die festgelegte Zielrichtung ist jetzt host-seitig über Unraid User Scripts / Host-Cron - eine saubere Pre-Backup-Automatisierung ist noch nicht final eingebunden @@ -191,7 +176,6 @@ Das eigentliche Restproblem ist aktuell **nicht** die Share-Struktur, sondern: - einzelne noch offene Dump-Kandidaten - fehlende Automatisierung -- einzelne Spezialfälle wie Semaphore named volumes ## Nächste sinnvolle Schritte @@ -203,7 +187,6 @@ Das eigentliche Restproblem ist aktuell **nicht** die Share-Struktur, sondern: - optionale spätere Scope-Verschlankung nur bewusst und nicht ad hoc vornehmen 3. Erst danach entscheiden: - ob Pfade umgezogen werden müssen - - ob Firefly schlicht ausläuft statt weiter bereinigt zu werden - wie die Pre-Backup-Dumps automatisiert werden ## Festgehaltene Entscheidung @@ -232,11 +215,6 @@ Stand jetzt werden **keine grundlegenden Share-Umstrukturierungen** vorgenommen. - `services/gitea` bleibt an Ort und Stelle. - `appdata` wird aktuell nicht großflächig bereinigt oder umgebaut. -### Einfluss von Firefly und Semaphore - -- `Semaphore` ist als zukünftige Löschung eingeplant und wird deshalb **nicht** mehr durch Strukturmaßnahmen optimiert. -- `Firefly` ist ebenfalls als zukünftige Löschung eingeplant und wird deshalb **nicht** mehr durch Strukturmaßnahmen optimiert. - ### Aktuelle Prioritäten statt Share-Umbau 1. Den erfolgreichen ersten `critical_infra`-Lauf dokumentarisch abschließen und die verbleibenden Restpunkte sauber abgrenzen. diff --git a/ops/borg-ui/BACKUP_SCOPE.md b/ops/borg-ui/BACKUP_SCOPE.md index 8482416..53ecdc3 100644 --- a/ops/borg-ui/BACKUP_SCOPE.md +++ b/ops/borg-ui/BACKUP_SCOPE.md @@ -27,7 +27,6 @@ Do not back up raw live database storage directories as the primary recovery art | Immich | DB dump + file data | `/local/borg-dumps`, `/local/immich/upload`, `/local/immich/external` | | Gitea | file data (SQLite inside `/data`) | `/local/gitea/data` | | Mealie | DB dump + file data | `/local/borg-dumps`, `/local/appdata/mealie/data` | -| Firefly | MariaDB dump + uploads | `/local/borg-dumps`, `/local/appdata/firefly/upload` | | Mail-archiver | shared Postgres dump + data protection keys | `/local/borg-dumps`, `/local/appdata/mailarchiver/data-protection-keys` | | Authelia | shared Postgres dump + config + secrets | `/local/borg-dumps`, `/local/appdata/authelia/config`, `/local/secrets` | | Traefik | file data | `/local/appdata/traefik` | @@ -45,7 +44,6 @@ Do not back up raw live database storage directories as the primary recovery art - `mailarchiver` - `paperless` -- `semaphore` - `authelia` ### Dedicated PostgreSQL @@ -55,7 +53,6 @@ Do not back up raw live database storage directories as the primary recovery art ### Other Databases -- Firefly MariaDB - Komodo MongoDB ## Explicitly Not Backed Up as Raw Live DB Files @@ -63,7 +60,6 @@ Do not back up raw live database storage directories as the primary recovery art - `/mnt/user/appdata/postgresql17` - `/mnt/user/appdata/mealie/postgres` - `/mnt/user/appdata/immich_postgres` -- `/mnt/user/appdata/firefly/db` - `/mnt/user/appdata/komodo/mongo` - `/mnt/user/appdata/redis` - `/mnt/user/appdata/scrutiny/influxdb` @@ -81,10 +77,6 @@ These are not part of the first-class Borg scope: - filebrowser app state - portainer -## Special Case - -`ops/Semaphore` currently stores app state in named Docker volumes, not host bind mounts. That state is not covered by the current Borg mounts and should be migrated to bind mounts before claiming full Borg coverage for Semaphore. - ## Suggested Retention - daily: 7 diff --git a/ops/borg-ui/all-important-sources.txt b/ops/borg-ui/all-important-sources.txt index b36981d..e4412ba 100644 --- a/ops/borg-ui/all-important-sources.txt +++ b/ops/borg-ui/all-important-sources.txt @@ -8,7 +8,6 @@ /local/immich/external /local/gitea/data /local/appdata/mealie/data -/local/appdata/firefly/upload /local/appdata/mailarchiver/data-protection-keys /local/secrets /local/appdata/authelia/config diff --git a/ops/borg-ui/scripts/pre-backup-dumps.sh b/ops/borg-ui/scripts/pre-backup-dumps.sh index c81d2f6..6232ae1 100644 --- a/ops/borg-ui/scripts/pre-backup-dumps.sh +++ b/ops/borg-ui/scripts/pre-backup-dumps.sh @@ -142,7 +142,6 @@ main() { dump_pg_globals "postgresql17" "$shared_pg_password" "$SHARED_PG_ADMIN_USER" "$LATEST_DIR/postgresql17-globals.sql" dump_pg_db "postgresql17" "$shared_pg_password" "$SHARED_PG_ADMIN_USER" "mailarchiver" "$LATEST_DIR/postgresql17-mailarchiver.dump" dump_pg_db "postgresql17" "$shared_pg_password" "$SHARED_PG_ADMIN_USER" "paperless" "$LATEST_DIR/postgresql17-paperless.dump" - dump_optional_pg_db "postgresql17" "$shared_pg_password" "$SHARED_PG_ADMIN_USER" "semaphore" "$LATEST_DIR/postgresql17-semaphore.dump" dump_optional_pg_db "postgresql17" "$shared_pg_password" "$SHARED_PG_ADMIN_USER" "authelia" "$LATEST_DIR/postgresql17-authelia.dump" else warn "Skipping shared PostgreSQL dumps because container 'postgresql17' is missing" @@ -163,9 +162,6 @@ main() { warn "Skipping missing container: immich_postgres" fi - # MariaDB / MySQL - dump_mysql_container "firefly-db" "$LATEST_DIR/firefly.sql" - # MongoDB dump_mongo_container "komodo-mongo" "$LATEST_DIR/komodo-mongo.archive.gz"