{"id":985,"date":"2022-03-19T12:37:44","date_gmt":"2022-03-19T11:37:44","guid":{"rendered":"https:\/\/macchina.io\/blog\/?p=985"},"modified":"2022-03-19T12:37:46","modified_gmt":"2022-03-19T11:37:46","slug":"using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote","status":"publish","type":"post","link":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/","title":{"rendered":"Using a Let&#8217;s Encrypt Wildcard Certificate with macchina.io REMOTE"},"content":{"rendered":"<p>For running the macchina.io REMOTE server (also known as reflector server), a wildcard certificate is required. Wildcard certificates have become quite expensive recently. While it was possible to buy one for about 250 $, minimum prices seem to have doubled in recent months. However, it&#8217;s not necessary to buy a wildcard certificate. A free wildcard certificate from <a href=\"https:\/\/letsencrypt.org\" target=\"_blank\" rel=\"noopener\">Let&#8217;s Encrypt<\/a> works perfectly fine.<\/p>\n<p>However, a bit of set-up work is required in order to obtain and automatically renew wildcard certificates from Let&#8217;s Encrypt. The issue with Let&#8217;s Encrypt wildcard certificates is that issuing them requires proof of domain ownership via a DNS challenge (this method is known as DNS-01 challenge). This involves creating a TXT entry in the DNS zone for the wildcard domain, which is then checked by the Let&#8217;s Encrypt backend. Fortunately, Certbot supports a number of plugins for dealing with the APIs of different DNS providers to automate this process.\u00a0<\/p>\n<p>The following instructions are therefore based on Route 53, the DNS service offered by AWS. With a different DNS provider, the steps will be slightly different. \u00a0<\/p>\n<p>Apart from using Route 53 for DNS, the following prerequisites must be met:<\/p>\n<ul>\n<li>The macchina.io REMOTE server runs on Ubuntu 18.04 or 20.04<\/li>\n<li>HAProxy is used for TLS termination<\/li>\n<\/ul>\n<h2>Create an IAM user for Certbot<\/h2>\n<p>This first step is specific to AWS Route 53. The goal is to create an API account that can be used by the <a href=\"https:\/\/certbot-dns-route53.readthedocs.io\/en\/stable\/\">certbot-dns-route53<\/a> plugin to update the TXT entry for the DNS zone. Note that the account must be created in IAM (AWS Identity and Access Management), not in the organization, and must be created for API access, not interactive use. The account&#8217;s permissions should be restricted with a policy. The <a href=\"https:\/\/certbot-dns-route53.readthedocs.io\/en\/stable\/\">certbot-dns-route53<\/a> documentation has a description of the required permissions, and an example policy, which should look like this:<\/p>\n<pre>{<br \/>  \"Version\": \"2012-10-17\",<br \/>  \"Statement\": [<br \/>    {      <br \/>      \"Sid\": \"VisualEditor0\",<br \/>      \"Effect\": \"Allow\",<br \/>      \"Action\": \"route53:ChangeResourceRecordSets\",<br \/>      \"Resource\": [<br \/>        \"arn:aws:route53:::hostedzone\/&lt;your_zone_id&gt;\"<br \/>      ]<br \/>    },<br \/>    {<br \/>      \"Sid\": \"VisualEditor1\",<br \/>      \"Effect\": \"Allow\",<br \/>      \"Action\": [<br \/>        \"route53:GetChange\",<br \/>        \"route53:ListHostedZones\"<br \/>      ],<br \/>      \"Resource\": \"*\"<br \/>    }<br \/>  ]<br \/>}<\/pre>\n<p>After creating the user and assigning the policy, note the access key and secret.<\/p>\n<h2>Configure Certbot and the Route 53 Plugin<\/h2>\n<p>After creating the new IAM user, on the Ubuntu system running the macchina.io REMOTE server, create a new configuration file containing the AWS credentials for the newly created user.<\/p>\n<pre>$ sudo mkdir \/root\/.aws<br \/><br \/>$ sudo vi \/root\/.aws\/config<\/pre>\n<p>The configuration file should contain the access key and secret access key and look like:<\/p>\n<pre>[default]<br \/>aws_access_key_id=&lt;your_access_key&gt;<br \/>aws_secret_access_key=&lt;your_secret_access_key&gt;<\/pre>\n<h2>Installing Certbot and the Route 53 Plugin<\/h2>\n<p>Run the following commands to <a href=\"https:\/\/aws.amazon.com\/premiumsupport\/knowledge-center\/lightsail-install-certbot-package\/\" target=\"_blank\" rel=\"noopener\">install Certbot<\/a>:<\/p>\n<pre>$ sudo snap install core; sudo snap refresh core; sudo snap install --classic certbot<\/pre>\n<p>Then, install the plugin:<\/p>\n<pre>$ sudo snap set certbot trust-plugin-with-root=ok <br \/><br \/>$ sudo snap install --beta certbot-dns-route53 <br \/><br \/>$ sudo snap connect certbot:plugin certbot-dns-route53<\/pre>\n<h2>Passing the Certificate and Private Key to HAProxy<\/h2>\n<p>Certbot will obtain a private key and certificate and store both in separate files in <em>\/etc\/letsencrypt\/live\/&lt;your_domain&gt;\/privkey.pem<\/em> and <em>\/etc\/letsencrypt.live\/&lt;your_domain&gt;fullchain.pem<\/em>.<\/p>\n<p>However, HAProxy expects both the certificate and the private key in a single file. Furthermore, after automatically renewing the certificate, HAProxy must be reconfigured to load the new certificates. This can be handled via a renew hook script. The script looks as follows:<\/p>\n<pre>#! \/bin\/bash<br \/># Certbot post-renew hook for HAProxy<br \/><br \/>cat \/etc\/letsencrypt\/live\/&lt;your_domain&gt;\/fullchain.pem &gt;\/etc\/haproxy\/reflector.pem <br \/>cat \/etc\/letsencrypt\/live\/&lt;your_domain&gt;\/privkey.pem &gt;&gt;\/etc\/haproxy\/reflector.pem <br \/>\/etc\/init.d\/haproxy reload<\/pre>\n<p>It copies the certificate chain and the private key into a single file (<em>\/etc\/haproxy\/reflector.pem<\/em>), then tells HAProxy to reload its configuration. Store the script in a suitable location (e.g., <em>\/etc\/haproxy\/certbot-renew-hook.sh<\/em>) and make it executable.<\/p>\n<h2>Obtaining the Wildcard Certificate<\/h2>\n<p>The final step is to initially obtain the wildcard certificate.<\/p>\n<pre>$ sudo bash<br \/><br \/># export AWS_CONFIG_FILE=\/root\/.aws\/config<br \/><br \/># certbot certonly --dns-route53 -d '*.my-devices.net' --post-hook \/etc\/haproxy\/certbot-renew-hook.sh <\/pre>\n<p>If all goes well (obtaining the certificate may take a couple of seconds), HAProxy should then run with the Let&#8217;s Encrypt wildcard certificate. Furthermore, the certificate should be renewed automatically.<\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For running the macchina.io REMOTE server (also known as reflector server), a wildcard certificate is required. Wildcard certificates have become quite expensive recently. While it was possible to buy one for about 250 $, minimum prices seem to have doubled in recent months. However, it&#8217;s not necessary to buy a wildcard certificate. A free wildcard [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":990,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_eb_attr":"","footnotes":""},"categories":[3,160,25,1],"tags":[176,175],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using a Let&#039;s Encrypt Wildcard Certificate with macchina.io REMOTE - macchina.io Blog [STAGING]<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using a Let&#039;s Encrypt Wildcard Certificate with macchina.io REMOTE - macchina.io Blog [STAGING]\" \/>\n<meta property=\"og:description\" content=\"For running the macchina.io REMOTE server (also known as reflector server), a wildcard certificate is required. Wildcard certificates have become quite expensive recently. While it was possible to buy one for about 250 $, minimum prices seem to have doubled in recent months. However, it&#8217;s not necessary to buy a wildcard certificate. A free wildcard [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/\" \/>\n<meta property=\"og:site_name\" content=\"macchina.io Blog [STAGING]\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-19T11:37:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-19T11:37:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"674\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"G\u00fcnter Obiltschnig\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@macchina_io\" \/>\n<meta name=\"twitter:site\" content=\"@macchina_io\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00fcnter Obiltschnig\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/\"},\"author\":{\"name\":\"G\u00fcnter Obiltschnig\",\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/#\/schema\/person\/85e732123d4102689b6436b2807a626b\"},\"headline\":\"Using a Let&#8217;s Encrypt Wildcard Certificate with macchina.io REMOTE\",\"datePublished\":\"2022-03-19T11:37:44+00:00\",\"dateModified\":\"2022-03-19T11:37:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/\"},\"wordCount\":568,\"publisher\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png\",\"keywords\":[\"certificate\",\"letsencrypt\"],\"articleSection\":[\"Internet of Things\",\"macchina.io REMOTE\",\"Security\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/\",\"url\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/\",\"name\":\"Using a Let's Encrypt Wildcard Certificate with macchina.io REMOTE - macchina.io Blog [STAGING]\",\"isPartOf\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png\",\"datePublished\":\"2022-03-19T11:37:44+00:00\",\"dateModified\":\"2022-03-19T11:37:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#primaryimage\",\"url\":\"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png\",\"contentUrl\":\"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png\",\"width\":800,\"height\":674},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/web-staging.macchina.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using a Let&#8217;s Encrypt Wildcard Certificate with macchina.io REMOTE\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/#website\",\"url\":\"https:\/\/web-staging.macchina.io\/blog\/\",\"name\":\"macchina.io Blog [STAGING]\",\"description\":\"Internet of Things, edge computing, IoT device software, C++\",\"publisher\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/web-staging.macchina.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/#organization\",\"name\":\"macchina.io\",\"url\":\"https:\/\/web-staging.macchina.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/macchina.io\/blog\/wp-content\/uploads\/2018\/08\/macchina.io_emp_logo.png\",\"contentUrl\":\"https:\/\/macchina.io\/blog\/wp-content\/uploads\/2018\/08\/macchina.io_emp_logo.png\",\"width\":1537,\"height\":529,\"caption\":\"macchina.io\"},\"image\":{\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/macchina_io\",\"https:\/\/www.linkedin.com\/showcase\/37869369\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/web-staging.macchina.io\/blog\/#\/schema\/person\/85e732123d4102689b6436b2807a626b\",\"name\":\"G\u00fcnter Obiltschnig\",\"sameAs\":[\"http:\/\/www.appinf.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using a Let's Encrypt Wildcard Certificate with macchina.io REMOTE - macchina.io Blog [STAGING]","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/","og_locale":"en_US","og_type":"article","og_title":"Using a Let's Encrypt Wildcard Certificate with macchina.io REMOTE - macchina.io Blog [STAGING]","og_description":"For running the macchina.io REMOTE server (also known as reflector server), a wildcard certificate is required. Wildcard certificates have become quite expensive recently. While it was possible to buy one for about 250 $, minimum prices seem to have doubled in recent months. However, it&#8217;s not necessary to buy a wildcard certificate. A free wildcard [&hellip;]","og_url":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/","og_site_name":"macchina.io Blog [STAGING]","article_published_time":"2022-03-19T11:37:44+00:00","article_modified_time":"2022-03-19T11:37:46+00:00","og_image":[{"width":800,"height":674,"url":"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png","type":"image\/png"}],"author":"G\u00fcnter Obiltschnig","twitter_card":"summary_large_image","twitter_creator":"@macchina_io","twitter_site":"@macchina_io","twitter_misc":{"Written by":"G\u00fcnter Obiltschnig","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#article","isPartOf":{"@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/"},"author":{"name":"G\u00fcnter Obiltschnig","@id":"https:\/\/web-staging.macchina.io\/blog\/#\/schema\/person\/85e732123d4102689b6436b2807a626b"},"headline":"Using a Let&#8217;s Encrypt Wildcard Certificate with macchina.io REMOTE","datePublished":"2022-03-19T11:37:44+00:00","dateModified":"2022-03-19T11:37:46+00:00","mainEntityOfPage":{"@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/"},"wordCount":568,"publisher":{"@id":"https:\/\/web-staging.macchina.io\/blog\/#organization"},"image":{"@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#primaryimage"},"thumbnailUrl":"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png","keywords":["certificate","letsencrypt"],"articleSection":["Internet of Things","macchina.io REMOTE","Security"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/","url":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/","name":"Using a Let's Encrypt Wildcard Certificate with macchina.io REMOTE - macchina.io Blog [STAGING]","isPartOf":{"@id":"https:\/\/web-staging.macchina.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#primaryimage"},"image":{"@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#primaryimage"},"thumbnailUrl":"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png","datePublished":"2022-03-19T11:37:44+00:00","dateModified":"2022-03-19T11:37:46+00:00","breadcrumb":{"@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#primaryimage","url":"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png","contentUrl":"https:\/\/web-staging.macchina.io\/blog\/wp-content\/uploads\/2022\/03\/letsencrypt.png","width":800,"height":674},{"@type":"BreadcrumbList","@id":"https:\/\/web-staging.macchina.io\/blog\/internet-of-things\/using-a-lets-encrypt-wildcard-certificate-with-macchina-io-remote\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/web-staging.macchina.io\/blog\/"},{"@type":"ListItem","position":2,"name":"Using a Let&#8217;s Encrypt Wildcard Certificate with macchina.io REMOTE"}]},{"@type":"WebSite","@id":"https:\/\/web-staging.macchina.io\/blog\/#website","url":"https:\/\/web-staging.macchina.io\/blog\/","name":"macchina.io Blog [STAGING]","description":"Internet of Things, edge computing, IoT device software, C++","publisher":{"@id":"https:\/\/web-staging.macchina.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/web-staging.macchina.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/web-staging.macchina.io\/blog\/#organization","name":"macchina.io","url":"https:\/\/web-staging.macchina.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/web-staging.macchina.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/macchina.io\/blog\/wp-content\/uploads\/2018\/08\/macchina.io_emp_logo.png","contentUrl":"https:\/\/macchina.io\/blog\/wp-content\/uploads\/2018\/08\/macchina.io_emp_logo.png","width":1537,"height":529,"caption":"macchina.io"},"image":{"@id":"https:\/\/web-staging.macchina.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/macchina_io","https:\/\/www.linkedin.com\/showcase\/37869369"]},{"@type":"Person","@id":"https:\/\/web-staging.macchina.io\/blog\/#\/schema\/person\/85e732123d4102689b6436b2807a626b","name":"G\u00fcnter Obiltschnig","sameAs":["http:\/\/www.appinf.com"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/posts\/985"}],"collection":[{"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/comments?post=985"}],"version-history":[{"count":3,"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/posts\/985\/revisions"}],"predecessor-version":[{"id":989,"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/posts\/985\/revisions\/989"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/media\/990"}],"wp:attachment":[{"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/media?parent=985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/categories?post=985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/web-staging.macchina.io\/blog\/wp-json\/wp\/v2\/tags?post=985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}