{"id":1597,"date":"2024-04-15T12:27:05","date_gmt":"2024-04-15T11:27:05","guid":{"rendered":"https:\/\/ryeroxley.com\/?p=1597"},"modified":"2024-05-02T11:06:50","modified_gmt":"2024-05-02T10:06:50","slug":"truenas-scale-apps-truenas-vs-truecharts","status":"publish","type":"post","link":"https:\/\/ryeroxley.com\/index.php\/2024\/04\/15\/truenas-scale-apps-truenas-vs-truecharts\/","title":{"rendered":"TrueNAS Scale Apps TrueNAS vs Truecharts"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1597\" class=\"elementor elementor-1597\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f7688eb e-flex e-con-boxed e-con e-parent\" data-id=\"f7688eb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-313df70 elementor-widget elementor-widget-text-editor\" data-id=\"313df70\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>There are two main sources of Apps for TrueNAS Scale TrueNAS and TrueCharts. TrueNAS Apps are produced and maintained by TrueNAS. Truecharts are open source and are maintained by the Truechart community. At the time of writing, there are 80 TrueNAS Apps and 761 Truechart Apps.<\/p><p>There has been criticism of Truechart Apps for being unstable and requiring reinstalling.\u00a0 Using the release train of TrueNAS Scale 23.10 (Cobia) I have had no major issues using Truecharts.\u00a0 Issues do arise when TrueNAS changes the system underlying the structure of the Apps. This is going to happen when Dragonfish (TrueNAS Scale 24.xx) replaces Cobia (TrueNAS Scale 23.10) when iX-Systems will no longer maintain or support any form of PVC-based storage for apps.\u00a0<\/p><p>\u00a0Here are the prerequisites for Truecharts:<\/p><ul><li>The dataset for the Apps pool must be <a href=\"https:\/\/ryeroxley.com\/index.php\/2024\/04\/07\/configuring-truenas-scale-storage\/\">setup<\/a><\/li><li>Truecharts catalog must be <a href=\"https:\/\/ryeroxley.com\/index.php\/2024\/04\/08\/initial-configuration-of-truenas-scale-apps\/\">installed<\/a><\/li><li>It is recommended that you set up HeavyScript and run it nightly with a cron job.<\/li><li>Truecharts provides its solution to iX-Systems removing PVC, OpenEBS so I recommend installing this.<\/li><li>Some Truecharts need Prometheus Operator others need Cloudnative-PG Operator so I recommend installing both.<\/li><\/ul><p>If you are running everything through a Cloudflare Tunnel then Cloudflare can be used to provide TLS for HTTPS and authentication services. If you want the flexibility of running your authentication then you will need to install:<\/p><ul><li>Traefik<\/li><li>Cert-manager<\/li><li>clusterissuer<\/li><li>Authelia<\/li><\/ul><p>There are several alternatives for storing configuration files related to TrueNAS Scale Apps:<\/p><ul><li>PVC<\/li><li>Host Path<\/li><li>emptyDir<\/li><li>NFS Share<\/li><li>iSCSI Share<\/li><\/ul><p>PVC is a &#8220;hidden&#8221; storage. You can not easily access (or share) it from the Host. The advantage is that you do not have to worry about file permissions. The disadvantage is if you delete the container the PVC is also deleted.<\/p><p>The advantage of using Host Path\/NFS Share\/iSCSI Share is that data can be accessed externally from the host, but the permissions must be managed.<\/p><p>My preference is to use Host Path so that I can easily access the data if necessary. I have had cause to roll back a container without issue.<\/p><p>I would recommend a dedicated dataset within which to store the data for the apps. Each app has its dataset. By using this approach, snapshots can be applied to either the entire dataset or individual apps.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5e86b25 e-flex e-con-boxed e-con e-parent\" data-id=\"5e86b25\" data-element_type=\"container\" data-e-type=\"container\" id=\"Settup_Host_Storage\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b27009 elementor-widget elementor-widget-text-editor\" data-id=\"9b27009\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Setting up Apps Host storage<\/h3><p>I have a dataset called appdata which I use to store the datasets that apps use for storing their persistent data. In TrueNAS Scale go to <strong>Datasets,<\/strong> click on the appropriate dataset, then <strong>Add Dataset.<\/strong> Provide a suitable name for the dataset in the resulting pane. All the other fields can be left at the default. All the other fields can be left at the default. Click <strong>Save<\/strong>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ccc1d22 e-grid e-con-boxed e-con e-parent\" data-id=\"ccc1d22\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-738aceb elementor-widget elementor-widget-image\" data-id=\"738aceb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-75.webp\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Data Storage Management Interface - Dataset Overview\" data-elementor-lightbox-description=\"This image features a part of a data storage management interface, specifically the &#039;Datasets&#039; section. The screen shows four datasets named &#039;appdata&#039;, &#039;apps&#039;, &#039;ix-applications&#039;, and &#039;data&#039;. Usage statistics are presented beside each dataset name, such as &#039;708 KiB \/ 899.25 GiB&#039; for &#039;appdata&#039;, indicating the amount of space used and the total available. All datasets are marked as &#039;Unencrypted&#039; under the encryption column, and various roles are likely assigned as indicated by icons, though the roles are not specified in the image. There are expandable arrows and menu icons next to each dataset, suggesting additional options or information is available.\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTY4MywidXJsIjoiaHR0cHM6XC9cL3J5ZXJveGxleS5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9pbWFnZS03NS53ZWJwIn0%3D\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"471\" src=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-75-1024x471.webp\" class=\"attachment-large size-large wp-image-1683\" alt=\"A snapshot of a computer interface showing a list of datasets with their names, used and available space, encryption status, and roles within a data storage management system.\" srcset=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-75-1024x471.webp 1024w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-75-300x138.webp 300w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-75-768x353.webp 768w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-75.webp 1521w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8527b04 elementor-widget elementor-widget-image\" data-id=\"8527b04\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-76.webp\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Data Management System - Data Protection Overview\" data-elementor-lightbox-description=\"The image shows a portion of a data management system&#039;s interface dedicated to &#039;Data Protection&#039;. The section details &#039;Total Snapshots: 0&#039;, &#039;Snapshot Tasks: 0&#039;, &#039;Replication Tasks: 0&#039;, &#039;Cloud Sync Tasks: 0&#039;, and &#039;Rsync Tasks: 0&#039;, indicating that no data protection tasks are currently set up or running. There are buttons for &#039;Add Zvol&#039; and &#039;Add Dataset&#039;, and a highlighted option to &#039;Create Snapshot&#039;. Below are further management options, including &#039;Manage Snapshots&#039;, &#039;Manage Snapshot Tasks&#039;, &#039;Manage Replication Tasks&#039;, &#039;Manage Cloud Sync Tasks&#039;, and &#039;Manage Rsync Tasks&#039;, which suggest the ability to organize and control various data protection operations within the system.\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTY4NCwidXJsIjoiaHR0cHM6XC9cL3J5ZXJveGxleS5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9pbWFnZS03Ni53ZWJwIn0%3D\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"756\" height=\"450\" src=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-76.webp\" class=\"attachment-large size-large wp-image-1684\" alt=\"Screenshot of the &#039;Data Protection&#039; section within a data management system interface, displaying options for snapshot and task management.\" srcset=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-76.webp 756w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-76-300x179.webp 300w\" sizes=\"(max-width: 756px) 100vw, 756px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2fbdf57 elementor-widget elementor-widget-image\" data-id=\"2fbdf57\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-77.webp\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Storage System Interface - Adding New Dataset\" data-elementor-lightbox-description=\"The image displays an interface form titled &#039;Add Dataset&#039; used for creating a new data storage set within a system. It has a &#039;Parent Path&#039; field prefilled with &#039;appdata&#039;, and a &#039;Name&#039; field filled with &#039;cloudflaredns&#039;. There are multiple options for configuration including comments, sync settings, compression level, whether to enable Atime, encryption options (inherited as non-encrypted), and other options like ZFS deduplication, case sensitivity, and share type. Each setting has a default or inherited option selected, indicating a standardized setup process for the dataset. The &#039;Save&#039; button is highlighted at the bottom, along with an &#039;Advanced Options&#039; link, suggesting further customizable settings are available.\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTY4OCwidXJsIjoiaHR0cHM6XC9cL3J5ZXJveGxleS5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9pbWFnZS03Ny53ZWJwIn0%3D\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"661\" height=\"1024\" src=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-77-661x1024.webp\" class=\"attachment-large size-large wp-image-1688\" alt=\"Screenshot of an &#039;Add Dataset&#039; form in a data storage system interface, detailing options for dataset creation with fields like Name, Sync, and Compression Level.\" srcset=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-77-661x1024.webp 661w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-77-194x300.webp 194w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-77-768x1190.webp 768w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-77-991x1536.webp 991w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-77.webp 1149w\" sizes=\"(max-width: 661px) 100vw, 661px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-935271f e-flex e-con-boxed e-con e-parent\" data-id=\"935271f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2c77b69 elementor-widget elementor-widget-text-editor\" data-id=\"2c77b69\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Return to the list of Datasets and select the one you have just created. (You may have to refresh your browser.) Then click <strong>Edit<\/strong> in the permissions section. In the resulting form change both User and Group to <strong>apps<\/strong> and make sure that <strong>Apply User<\/strong> and <strong>Apply Group<\/strong> are selected and give write permissions to the group. Click <strong>Save<\/strong>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a55548e e-grid e-con-boxed e-con e-parent\" data-id=\"a55548e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a2322af elementor-widget elementor-widget-image\" data-id=\"a2322af\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-78.webp\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Storage System Directory - Dataset Overview\" data-elementor-lightbox-description=\"The image is a snapshot of a storage system&#039;s user interface, specifically the &#039;Datasets&#039; section under &#039;Storage&#039;. It showcases a hierarchy of datasets, with &#039;appdata&#039; expanded to reveal a child dataset named &#039;cloudflaredns&#039;, indicating a structured organization of data storage. All datasets, including &#039;cloudflaredns&#039;, &#039;apps&#039;, and &#039;data&#039;, are listed as unencrypted with their used and available space denoted. For instance, &#039;cloudflaredns&#039; shows 96 KiB used out of 899.25 GiB available. The interface is clean and straightforward, providing users with essential information on storage allocation and dataset encryption status at a glance.\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTY5NSwidXJsIjoiaHR0cHM6XC9cL3J5ZXJveGxleS5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9pbWFnZS03OC53ZWJwIn0%3D\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-78-1024x486.webp\" class=\"attachment-large size-large wp-image-1695\" alt=\"Screenshot of a storage system&#039;s dataset directory, showing various datasets including a newly added &#039;cloudflaredns&#039; dataset under the &#039;appdata&#039; parent dataset, all unencrypted.\" srcset=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-78-1024x486.webp 1024w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-78-300x142.webp 300w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-78-768x365.webp 768w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-78.webp 1525w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f64c204 elementor-widget elementor-widget-image\" data-id=\"f64c204\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-79.webp\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"File System Permissions Overview\" data-elementor-lightbox-description=\"The image captures a segment of a file system&#039;s interface detailing the permissions structure. It displays that the &#039;Owner&#039; and &#039;Group&#039; are both set to &#039;root&#039;. Under Unix Permissions, &#039;root&#039; is granted full access with the ability to read, write, and execute, while &#039;Group&#039; and &#039;Other&#039; permissions are set to read and execute only. An &#039;Edit&#039; button is present, indicating that these permissions can be modified. The interface uses a simple black background with white text, emphasizing clarity and ease of use for system administration tasks.\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTY5NiwidXJsIjoiaHR0cHM6XC9cL3J5ZXJveGxleS5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9pbWFnZS03OS53ZWJwIn0%3D\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"748\" height=\"514\" src=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-79.webp\" class=\"attachment-large size-large wp-image-1696\" alt=\"Screenshot of a file system permissions panel showing &#039;root&#039; as the owner and group, with Unix permissions set for &#039;root&#039; to read, write, and execute, while others only have read and execute permissions.\" srcset=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-79.webp 748w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-79-300x206.webp 300w\" sizes=\"(max-width: 748px) 100vw, 748px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5e213ff elementor-widget elementor-widget-image\" data-id=\"5e213ff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"712\" src=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-80-1024x712.webp\" class=\"attachment-large size-large wp-image-1697\" alt=\"Screenshot of a Unix Permissions Editor interface with fields for &#039;User&#039; and &#039;Group&#039; both set to &#039;apps&#039;, and checkmarks for read, write, and execute access for both. There&#039;s also an &#039;Other&#039; category with read and execute permissions checked. The dataset path &#039;\/mnt\/appdata\/cloudfareddns&#039; is indicated at the top.\" srcset=\"https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-80-1024x712.webp 1024w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-80-300x209.webp 300w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-80-768x534.webp 768w, https:\/\/ryeroxley.com\/wp-content\/uploads\/2024\/04\/image-80.webp 1274w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f08fa0a e-flex e-con-boxed e-con e-parent\" data-id=\"f08fa0a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-351795a elementor-widget elementor-widget-text-editor\" data-id=\"351795a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The data set is now ready for use by the app container.<\/p><p>Next: <a href=\"https:\/\/ryeroxley.com\/index.php\/2024\/04\/08\/initial-configuration-of-truenas-scale-apps\/\">Initial configuration of TrueNAS Scale Apps<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>There are two main sources of Apps for TrueNAS Scale TrueNAS and TrueCharts. TrueNAS Apps are produced and maintained by TrueNAS. Truecharts are open source and are maintained by the Truechart community. At the time of writing, there are 80 TrueNAS Apps and 761 Truechart Apps. There has been criticism of Truechart Apps for being [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[25],"tags":[],"class_list":["post-1597","post","type-post","status-publish","format-standard","hentry","category-apps"],"_links":{"self":[{"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/posts\/1597","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/comments?post=1597"}],"version-history":[{"count":27,"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/posts\/1597\/revisions"}],"predecessor-version":[{"id":2163,"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/posts\/1597\/revisions\/2163"}],"wp:attachment":[{"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/media?parent=1597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/categories?post=1597"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ryeroxley.com\/index.php\/wp-json\/wp\/v2\/tags?post=1597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}