{"id":806,"date":"2019-11-24T15:25:18","date_gmt":"2019-11-24T14:25:18","guid":{"rendered":"https:\/\/louis.hatier.me\/blog\/?p=806"},"modified":"2019-11-24T15:25:19","modified_gmt":"2019-11-24T14:25:19","slug":"docker-registry-prive","status":"publish","type":"post","link":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/","title":{"rendered":"Docker Registry priv\u00e9"},"content":{"rendered":"<p><a href=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry.png\" data-rel=\"lightbox-gallery-KdCPAeIi\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-809\" src=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry-300x294.png\" alt=\"Docker Registry\" width=\"150\" height=\"147\" srcset=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry-300x294.png 300w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry.png 400w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a>Docker est une plateforme open-source qui permet de packager des applications sous forme de container en embarquant leurs d\u00e9pendances, ce qui lui permet d\u2019\u00eatre facilement portable et d\u00e9ployable.<\/p>\n<p>Un container est fabriqu\u00e9 \u00e0 partir d\u2019une \u201cimage\u201d, nous allons voir comment g\u00e9rer un registre priv\u00e9 d\u2019images Docker avec <a href=\"https:\/\/github.com\/SUSE\/Portus\" target=\"_blank\" rel=\"noopener noreferrer\">Portus<\/a>.<\/p>\n<p>Installer Docker et Docker Compose sur le serveur qui fera office de registre.<\/p>\n<p><!--more--><\/p>\n<p>Suivre la documentation officielle :<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.docker.com\/install\/linux\/docker-ce\/ubuntu\/#set-up-the-repository\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/docs.docker.com\/install\/linux\/docker-ce\/ubuntu\/#set-up-the-repository<\/a><\/li>\n<li><a href=\"https:\/\/docs.docker.com\/compose\/install\/#install-compose\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/docs.docker.com\/compose\/install\/#install-compose<\/a><\/li>\n<\/ul>\n<p>G\u00e9n\u00e9rer un certificat :<\/p>\n<pre><code class=\"no-highlight\">openssl req -newkey rsa:2048 -nodes -sha256 -keyout portus.key -x509 -days 365 -out portus.crt\n<\/code><\/pre>\n<h2>Docker Compose<\/h2>\n<p>La partie la plus complexe est de bien param\u00e9trer le fichier <code>docker-compose.yml<\/code><br \/>\nIl faut s&rsquo;inspirer des exemples sur leur <a href=\"https:\/\/github.com\/SUSE\/Portus\/tree\/master\/examples\/compose\" target=\"_blank\" rel=\"noopener noreferrer\">Github<\/a>.<br \/>\nPrendre l&rsquo;exemple avec <a href=\"https:\/\/github.com\/quay\/clair\" target=\"_blank\" rel=\"noopener noreferrer\">Clair<\/a> secure qui est un scan de vuln\u00e9rabilit\u00e9 d&rsquo;image.<br \/>\nRenseigner les mots de passe dans le fichier <code>.env<\/code><br \/>\nUne fois le fichier <code>docker-compose.yml<\/code> complet et les diff\u00e9rents dossiers cr\u00e9\u00e9s (nginx, registry, clair, secrets, certificates), copier les fichier portus.key et portus.crt dans secrets et certificates.<\/p>\n<p>Lancer Docker Compose :<\/p>\n<pre><code class=\"no-highlight\">docker-compose up # permet de voir la sortie console\ndocker-compose up -d # en mode d\u00e9tach\u00e9\n<\/code><\/pre>\n<h2>Param\u00e9trer les clients Docker<\/h2>\n<p>Le client Docker, c&rsquo;est le d\u00e9veloppeur qui a son docker d&rsquo;install\u00e9 sur sa machine et qui souhaite utiliser les images du registre priv\u00e9.<br \/>\nPremi\u00e8rement, il faut se connecter \u00e0 l&rsquo;interface de Portus (connexion LDAP ou custom), puis se cr\u00e9er un token dans la page profil.<br \/>\nEnsuite il faut pr\u00e9ciser \u00e0 Docker de \u201ctruster\u201d notre registry, qui a un certificat inconnu dans notre cas :<\/p>\n<pre><code class=\"no-highlight\">sudo nano \/lib\/systemd\/system\/docker.service\n<\/code><\/pre>\n<pre><code class=\"no-highlight\">ExecStart=\/usr\/bin\/dockerd -H fd:\/\/ --insecure-registry my-custom-host.domain.local:5000 --\nregistry-mirror=https:\/\/my-custom-host.domain.local:5000\n<\/code><\/pre>\n<pre><code class=\"no-highlight\">sudo service docker restart\nsudo systemctl daemon-reload\n<\/code><\/pre>\n<p>On r\u00e9cup\u00e8re le fichier portus.crt et on le copie en local :<\/p>\n<pre><code class=\"no-highlight\">sudo cp portus.crt \/etc\/docker\/certs.d\/my-custom-host.domain.local:5000\/ca.crt\n<\/code><\/pre>\n<p>On peut maintenant tenter de se connecter au registry priv\u00e9 :<\/p>\n<pre><code class=\"no-highlight\">docker login -u mylogin -p MoNSeCreTTokeN my-custom-host.domain.local:5000\n<\/code><\/pre>\n<h2>Tag et Push d&rsquo;image<\/h2>\n<p>Pour tagger une image et la pusher sur le registry :<\/p>\n<pre><code class=\"no-highlight\">docker image tag foo-bar:latest my-custom-host.domain.local\/mylogin\/foo-bar:1.0\ndocker image push my-custom-host.domain.local:5000\/mylogin\/foo-bar:1.0\n<\/code><\/pre>\n<p><a href=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/portus.png\" data-rel=\"lightbox-gallery-KdCPAeIi\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-815 size-medium\" src=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/portus-300x106.png\" alt=\"Portus\" width=\"300\" height=\"106\" srcset=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/portus-300x106.png 300w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/portus-1024x363.png 1024w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/portus-768x272.png 768w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/portus-1536x544.png 1536w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/portus.png 1916w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2>Pour aller plus loin<\/h2>\n<p>Pour orchestrer les containers Docker, il existe Docker Swarm (\u00e0 l\u2019instar de Kubernetes) que l\u2019on peut administrer avec une interface de type <a href=\"https:\/\/www.portainer.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Portainer<\/a>.<\/p>\n<p>Il permet d\u2019organiser la mise \u00e0 jour des containers, leur scalabilit\u00e9 et bien plus.<\/p>\n<p>On peut lui lier un outil packag\u00e9 qui pourra monitorer tout \u00e7a : <a href=\"https:\/\/github.com\/stefanprodan\/swarmprom\" target=\"_blank\" rel=\"noopener noreferrer\">Swarmprom<\/a>.<\/p>\n<p>Pour ceux qui pr\u00e9f\u00e8re Elastic Stack il existe le composant Dockerbeat.<\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img decoding=\"async\" src=\"https:\/\/static.hupso.com\/share\/buttons\/dot.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"pinterest\",\"email\",\"linkedin\");var hupso_counters_lang = \"en_US\";var hupso_image_folder_url = \"\";var hupso_url_c=\"\";var hupso_title_c=\"Docker%20Registry%20priv%C3%A9\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Docker est une plateforme open-source qui permet de packager des applications sous forme de container en embarquant leurs d\u00e9pendances, ce qui lui permet d\u2019\u00eatre facilement portable et d\u00e9ployable. Un container est fabriqu\u00e9 \u00e0 partir d\u2019une \u201cimage\u201d, nous allons voir comment g\u00e9rer un registre priv\u00e9 d\u2019images Docker avec Portus. Installer Docker et Docker Compose sur le [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68,8],"tags":[60],"class_list":["post-806","post","type-post","status-publish","format-standard","hentry","category-ci-cd","category-outils","tag-docker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Docker Registry priv\u00e9 - Melting Poutre<\/title>\n<meta name=\"description\" content=\"Mise en place d&#039;un registre priv\u00e9 Docker\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Registry priv\u00e9 - Melting Poutre\" \/>\n<meta property=\"og:description\" content=\"Mise en place d&#039;un registre priv\u00e9 Docker\" \/>\n<meta property=\"og:url\" content=\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/\" \/>\n<meta property=\"og:site_name\" content=\"Melting Poutre\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-24T14:25:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-24T14:25:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry-300x294.png\" \/>\n<meta name=\"author\" content=\"Louis Hatier\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Louis Hatier\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/\"},\"author\":{\"name\":\"Louis Hatier\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\"},\"headline\":\"Docker Registry priv\u00e9\",\"datePublished\":\"2019-11-24T14:25:18+00:00\",\"dateModified\":\"2019-11-24T14:25:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/\"},\"wordCount\":345,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\"},\"image\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry-300x294.png\",\"keywords\":[\"Docker\"],\"articleSection\":[\"CI\/CD\",\"Outils\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/\",\"url\":\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/\",\"name\":\"Docker Registry priv\u00e9 - Melting Poutre\",\"isPartOf\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry-300x294.png\",\"datePublished\":\"2019-11-24T14:25:18+00:00\",\"dateModified\":\"2019-11-24T14:25:19+00:00\",\"description\":\"Mise en place d'un registre priv\u00e9 Docker\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#primaryimage\",\"url\":\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry.png\",\"contentUrl\":\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry.png\",\"width\":400,\"height\":392,\"caption\":\"Docker Registry\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/#website\",\"url\":\"https:\/\/louis.hatier.me\/blog\/\",\"name\":\"Melting Poutre\",\"description\":\"Du web et d&#039;autres choses\",\"publisher\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/louis.hatier.me\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\",\"name\":\"Louis Hatier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cd8d107ede5a4ec340326655e74a00ca62b02e41a02442f961c36f085aa89942?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cd8d107ede5a4ec340326655e74a00ca62b02e41a02442f961c36f085aa89942?s=96&d=mm&r=g\",\"caption\":\"Louis Hatier\"},\"logo\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/louis.hatier.me\",\"https:\/\/www.linkedin.com\/in\/louishatier\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Docker Registry priv\u00e9 - Melting Poutre","description":"Mise en place d'un registre priv\u00e9 Docker","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:\/\/louis.hatier.me\/blog\/docker-registry-prive\/","og_locale":"fr_FR","og_type":"article","og_title":"Docker Registry priv\u00e9 - Melting Poutre","og_description":"Mise en place d'un registre priv\u00e9 Docker","og_url":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/","og_site_name":"Melting Poutre","article_published_time":"2019-11-24T14:25:18+00:00","article_modified_time":"2019-11-24T14:25:19+00:00","og_image":[{"url":"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry-300x294.png","type":"","width":"","height":""}],"author":"Louis Hatier","twitter_misc":{"\u00c9crit par":"Louis Hatier","Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#article","isPartOf":{"@id":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/"},"author":{"name":"Louis Hatier","@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11"},"headline":"Docker Registry priv\u00e9","datePublished":"2019-11-24T14:25:18+00:00","dateModified":"2019-11-24T14:25:19+00:00","mainEntityOfPage":{"@id":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/"},"wordCount":345,"commentCount":0,"publisher":{"@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11"},"image":{"@id":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#primaryimage"},"thumbnailUrl":"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry-300x294.png","keywords":["Docker"],"articleSection":["CI\/CD","Outils"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/","url":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/","name":"Docker Registry priv\u00e9 - Melting Poutre","isPartOf":{"@id":"https:\/\/louis.hatier.me\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#primaryimage"},"image":{"@id":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#primaryimage"},"thumbnailUrl":"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry-300x294.png","datePublished":"2019-11-24T14:25:18+00:00","dateModified":"2019-11-24T14:25:19+00:00","description":"Mise en place d'un registre priv\u00e9 Docker","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/louis.hatier.me\/blog\/docker-registry-prive\/#primaryimage","url":"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry.png","contentUrl":"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2019\/11\/docker-registry.png","width":400,"height":392,"caption":"Docker Registry"},{"@type":"WebSite","@id":"https:\/\/louis.hatier.me\/blog\/#website","url":"https:\/\/louis.hatier.me\/blog\/","name":"Melting Poutre","description":"Du web et d&#039;autres choses","publisher":{"@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/louis.hatier.me\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11","name":"Louis Hatier","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cd8d107ede5a4ec340326655e74a00ca62b02e41a02442f961c36f085aa89942?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cd8d107ede5a4ec340326655e74a00ca62b02e41a02442f961c36f085aa89942?s=96&d=mm&r=g","caption":"Louis Hatier"},"logo":{"@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/louis.hatier.me","https:\/\/www.linkedin.com\/in\/louishatier\/"]}]}},"_links":{"self":[{"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts\/806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/comments?post=806"}],"version-history":[{"count":10,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts\/806\/revisions"}],"predecessor-version":[{"id":825,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts\/806\/revisions\/825"}],"wp:attachment":[{"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/media?parent=806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/categories?post=806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/tags?post=806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}