{"id":317,"date":"2021-06-04T15:06:08","date_gmt":"2021-06-04T09:36:08","guid":{"rendered":"http:\/\/chaoticfly.in\/?p=317"},"modified":"2021-06-21T21:17:30","modified_gmt":"2021-06-21T15:47:30","slug":"a-developers-productivity-setup-using-a-raspberry-pi-4","status":"publish","type":"post","link":"https:\/\/chaoticfly.in\/index.php\/2021\/06\/04\/a-developers-productivity-setup-using-a-raspberry-pi-4\/","title":{"rendered":"A Developers Productivity Setup using a Raspberry Pi (4)"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"471\" src=\"http:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/tools-1024x471.png\" alt=\"\" class=\"wp-image-340\" srcset=\"https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/tools-1024x471.png 1024w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/tools-300x138.png 300w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/tools-768x353.png 768w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/tools-1536x706.png 1536w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/tools-2048x942.png 2048w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/tools-620x285.png 620w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Objective<\/h2>\n\n\n\n<p>I always wanted to have a workspace that could replace many a tool I use as a paid alternative or tools hosted in the cloud. Specially now, when most of the time I spend at home working, I have a need to manage my productivity. It uses docker for easy siloed management and it does not require any complicated system changes that break one app or the other. Additionally Dockerhub is a treasure of images that can be run very easily and can be leveraged.<\/p>\n\n\n\n<p>The only drawback to using docker as an app deployment tool is that all the tools run in different ports and one has to remember the mappings. The mappings are easily visible in portainer and hence useful. Another useful technique is to locally install nginx and use it as reverse proxy.<\/p>\n\n\n\n<p><a href=\"https:\/\/docs.nginx.com\/nginx\/admin-guide\/web-server\/reverse-proxy\/\">NGINX Docs | NGINX Reverse Proxy<\/a> <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tools Installed<\/h2>\n\n\n\n<ol class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"https:\/\/documentation.portainer.io\/quickstart\/?hsCtaTracking=cb3a059b-7f57-4333-a92f-b06202ef8690%7C4427d7bc-1ae8-4a30-812c-d30ee496008f\" data-type=\"URL\" data-id=\"https:\/\/documentation.portainer.io\/quickstart\/?hsCtaTracking=cb3a059b-7f57-4333-a92f-b06202ef8690%7C4427d7bc-1ae8-4a30-812c-d30ee496008f\" target=\"_blank\">Portainer<\/a> &#8211; Visual docker\/container management web app. We will use portainer to deploy containers off dockerhub.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.bookstackapp.com\/docs\/admin\/installation\/\" data-type=\"URL\" data-id=\"https:\/\/www.bookstackapp.com\/docs\/admin\/installation\/\" target=\"_blank\">BookStack<\/a> &#8211; Notes taking and writing management tool.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/wekan.github.io\/\" data-type=\"URL\" data-id=\"https:\/\/wekan.github.io\/\" target=\"_blank\">Wekan<\/a> &#8211; A trello like Kanban Board\/ Lists App.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/bitwarden\/server\" data-type=\"URL\" data-id=\"https:\/\/github.com\/bitwarden\/server\" target=\"_blank\">Bitwarden Server<\/a> &#8211; To store all my passwords locally and not depend on passwords.google.com or Microsoft. Bitwarden is an open-source solution with a server, web app, browser plugin and iOS\/Android apps.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/pi-hole\/docker-pi-hole\/#running-pi-hole-docker\" data-type=\"URL\" data-id=\"https:\/\/github.com\/pi-hole\/docker-pi-hole\/#running-pi-hole-docker\" target=\"_blank\">Pihole<\/a> &#8211; To Manage my network and conserve my bandwidth. Primarily an Adblocker and I use this to manage intrusive ads on my parents phones and desktop. This I also use to manage access to devices.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/grafana.com\/blog\/2021\/01\/26\/how-to-connect-and-monitor-your-raspberry-pi-with-grafana-cloud\/\" data-type=\"URL\" data-id=\"https:\/\/grafana.com\/blog\/2021\/01\/26\/how-to-connect-and-monitor-your-raspberry-pi-with-grafana-cloud\/\" target=\"_blank\">Prometheus\/Grafana<\/a> &#8211; Monitor the pi and network.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/filebrowser\/filebrowser\" data-type=\"URL\" data-id=\"https:\/\/github.com\/filebrowser\/filebrowser\" target=\"_blank\">FileBrowser<\/a> &#8211; To manage additional storage. Simple file manager to manage an attached storage. Simply attach a drive to the pi. Attach it to \/srv to mount it to the container.<br><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"76\" class=\"wp-image-352\" style=\"width: 900px;\" src=\"http:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-4.12.10-PM.png\" alt=\"\" srcset=\"https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-4.12.10-PM.png 3024w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-4.12.10-PM-300x25.png 300w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-4.12.10-PM-1024x86.png 1024w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-4.12.10-PM-768x65.png 768w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-4.12.10-PM-1536x129.png 1536w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-4.12.10-PM-2048x172.png 2048w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-4.12.10-PM-620x52.png 620w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/jgraph\/docker-drawio\" data-type=\"URL\" data-id=\"https:\/\/github.com\/jgraph\/docker-drawio\" target=\"_blank\">Draw.io<\/a> &#8211; Diagramming Swiss knife.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/hub.docker.com\/r\/plantuml\/plantuml-server\" data-type=\"URL\" data-id=\"https:\/\/hub.docker.com\/r\/plantuml\/plantuml-server\" target=\"_blank\">PlantUML Server<\/a> &#8211; For UML Diagramming<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/hoppscotch\/hoppscotch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/hoppscotch\/hoppscotch\" target=\"_blank\">Hoppscotch<\/a> &#8211; REST\/Web Socket Client to replace Postman<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/hub.docker.com\/_\/owncloud\" data-type=\"URL\" data-id=\"https:\/\/hub.docker.com\/_\/owncloud\" target=\"_blank\">Owncloud<\/a> &#8211; Optionally I have a stopped instance of owncloud. I dont really need it as I could do with an old HDD attached to the pi.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/cdr\/code-server\" data-type=\"URL\" data-id=\"https:\/\/github.com\/cdr\/code-server\" target=\"_blank\">Code Server<\/a> &#8211; Code Editor\/IDE. The Visual Studio Code Server replicates the desktop app to the web. It provides most of the features the desktop editor provides.<\/li><\/ol>\n\n\n\n<p>Additionally to the above installation, we get the following as dependencies. This can be leveraged for development:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/hub.docker.com\/_\/mongo\" data-type=\"URL\" data-id=\"https:\/\/hub.docker.com\/_\/mongo\" target=\"_blank\" rel=\"noreferrer noopener\">Mongo Server<\/a><\/li><li><a href=\"https:\/\/hub.docker.com\/_\/mariadb\" data-type=\"URL\" data-id=\"https:\/\/hub.docker.com\/_\/mariadb\" target=\"_blank\" rel=\"noreferrer noopener\">MySQL\/MariaDB<\/a> &#8211; With Booksstack<\/li><li>Additionally install <a href=\"https:\/\/hub.docker.com\/r\/phpmyadmin\/phpmyadmin\/\" data-type=\"URL\" data-id=\"https:\/\/hub.docker.com\/r\/phpmyadmin\/phpmyadmin\/\" target=\"_blank\" rel=\"noreferrer noopener\">PHPMyAdmin<\/a> to manage MySQL.<\/li><\/ol>\n\n\n\n<p>Also other databases can be installed. Databases like Postgres could be run.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Rasberry PI Preparation<\/h2>\n\n\n\n<p>I have tested this in a Raspberry Pi 4gb and an 8gb, it could as well run in a 2gb version, but we may have to reduce the number of containers we host. To run docker efficiently, it is better to use a 64 bit image. I have used the <a rel=\"noreferrer noopener\" href=\"https:\/\/downloads.raspberrypi.org\/raspios_arm64\/images\/\" data-type=\"URL\" data-id=\"https:\/\/downloads.raspberrypi.org\/raspios_arm64\/images\/\" target=\"_blank\">raspbian beta<\/a> image, however one can choose the ever so stable <a rel=\"noreferrer noopener\" href=\"https:\/\/ubuntu.com\/download\/raspberry-pi\" data-type=\"URL\" data-id=\"https:\/\/ubuntu.com\/download\/raspberry-pi\" target=\"_blank\">ubuntu server 64 for raspberry pi<\/a>.<\/p>\n\n\n\n<p>Installation Instruction follow this guide &#8211; <a href=\"https:\/\/www.raspberrypi.org\/documentation\/installation\/installing-images\/\">Installing operating system images &#8211; Raspberry Pi Documentation<\/a><\/p>\n\n\n\n<p>Disable the gui from raspi-config &#8211; <a href=\"https:\/\/www.raspberrypi.org\/documentation\/configuration\/raspi-config.md\">raspi-config &#8211; Raspberry Pi Documentation<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update &amp;&amp; sudo apt-get upgrade<\/code><\/pre>\n\n\n\n<p>I have found an issue with dhcpcd when a lot of virtual networks are added: <\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/raspberrypi\/linux\/issues\/4092\">https:\/\/github.com\/raspberrypi\/linux\/issues\/4092<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/dhcpcd.conf\nat the end: denyinterfaces veth*<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Setup Docker &amp; Docker Compose<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>wget -O - https:\/\/get.docker.com -o get-docker.sh | sh<\/code><\/pre>\n\n\n\n<p>Install docker-compose:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install -y python3 python3-pip\nsudo pip3 -v install docker-compose<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Topology<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"431\" src=\"http:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/raspberrypi.png\" alt=\"\" class=\"wp-image-324\" srcset=\"https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/raspberrypi.png 576w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/raspberrypi-300x224.png 300w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/figure>\n\n\n\n<p>I have attached the raspberry pi 4 to the router using a RJ45 cable. Much faster as I host pihole. The Pi can be added as a WiFi device as well.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Install Portainer<\/h2>\n\n\n\n<p>The Portainer installation guide &#8211; <a href=\"https:\/\/documentation.portainer.io\/v2.0\/deploy\/ceinstalldocker\/\">Docker &#8211; Documentation (portainer.io)<\/a>. Run it in the Raspberry Pi commandline.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker volume create portainer_data<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v \/var\/run\/docker.sock:\/var\/run\/docker.sock -v portainer_data:\/data portainer\/portainer-ce\n<\/code><\/pre>\n\n\n\n<p>Browse to the URL of Portainer. Below is how it looks with containers.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"http:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/portainer-1024x530.png\" alt=\"\" class=\"wp-image-322\" srcset=\"https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/portainer-1024x530.png 1024w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/portainer-300x155.png 300w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/portainer-768x397.png 768w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/portainer-1536x795.png 1536w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/portainer-2048x1059.png 2048w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/portainer-620x321.png 620w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Portainer also has App Template feature that can be used to deploy repdefined stake.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"592\" src=\"http:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-9.53.48-AM-1024x592.png\" alt=\"\" class=\"wp-image-325\" srcset=\"https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-9.53.48-AM-1024x592.png 1024w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-9.53.48-AM-300x173.png 300w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-9.53.48-AM-768x444.png 768w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-9.53.48-AM-1536x888.png 1536w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-9.53.48-AM-2048x1184.png 2048w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-9.53.48-AM-620x358.png 620w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Add App from Dockerhub<\/h2>\n\n\n\n<p>In most cases the install is straight forward. Click on Containers -&gt; Add A new container.  <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"302\" src=\"http:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/dockerhub-1024x302.png\" alt=\"\" class=\"wp-image-326\" srcset=\"https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/dockerhub-1024x302.png 1024w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/dockerhub-300x88.png 300w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/dockerhub-768x226.png 768w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/dockerhub-1536x453.png 1536w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/dockerhub-2048x604.png 2048w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/dockerhub-620x183.png 620w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Choose an image with ARM 64. In the above example, we are adding an nginx server in the above. Once added to portainer, the env and storage parameters can be changed by looking at the documentation.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Add App using Docker Compose<\/h2>\n\n\n\n<p>Portainer accepts docker-compse and many stacks can be deployed using a docker-compose file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"482\" src=\"http:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-2.24.07-PM-1024x482.png\" alt=\"\" class=\"wp-image-327\" srcset=\"https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-2.24.07-PM-1024x482.png 1024w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-2.24.07-PM-300x141.png 300w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-2.24.07-PM-768x361.png 768w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-2.24.07-PM-1536x723.png 1536w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-2.24.07-PM-2048x963.png 2048w, https:\/\/chaoticfly.in\/wp-content\/uploads\/2021\/06\/Screenshot-2021-06-04-at-2.24.07-PM-620x292.png 620w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>below the compose file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\nversion: \"2\"\nservices:\n  bookstack:\n    image: ghcr.io\/linuxserver\/bookstack\n    container_name: bookstack\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - APP_URL=\n      - DB_HOST=bookstack_db\n      - DB_USER=bookstack\n      - DB_PASS=bookstack\n      - DB_DATABASE=bookstackapp\n    volumes:\n      - \/path\/to\/data:\/config\n    ports:\n      - 9080:80\n    restart: unless-stopped\n    depends_on:\n      - bookstack_db\n  bookstack_db:\n    image: ghcr.io\/linuxserver\/mariadb\n    container_name: bookstack_db\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - MYSQL_ROOT_PASSWORD=root\n      - TZ=Europe\/London\n      - MYSQL_DATABASE=bookstackapp\n      - MYSQL_USER=bookstack\n      - MYSQL_PASSWORD=bookstack\n    volumes:\n      - \/path\/to\/data:\/config\n    ports:\n      - 3306:3306\n    restart: unless-stopped<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Custom Install Apps using Docker Commandline<\/h2>\n\n\n\n<p><strong>Requires an advanced understanding of Docker.<\/strong><\/p>\n\n\n\n<p>A lot of tools may not compile due to the images being built with other platform. The moment there is a <strong>&#8220;process exec&#8221;<\/strong> error, it is probably incompatible with arm 64. In which case the best approach is to rebuild from source using an arm based image.<\/p>\n\n\n\n<p>Portainer automatically will pick up any images added or containers launched.<\/p>\n\n\n<p class=\"fonts-plugin-block \" style=\"font-family: Shadows Into Light Two;font-size: 25px;line-height: 1;text-align: center;color: #ff6900\">end.<\/p>","protected":false},"excerpt":{"rendered":"<p>The Objective I always wanted to have a workspace that could replace many a tool I use as a paid alternative or tools hosted in the cloud. Specially now, when most of the time I spend at home working, I have a need to manage my productivity. It uses docker for easy siloed management and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[29],"tags":[30,31,10,33,32],"class_list":["post-317","post","type-post","status-publish","format-standard","hentry","category-technology","tag-docker","tag-productivity","tag-raspberrypi","tag-self-host","tag-tools"],"jetpack_featured_media_url":"","uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"RoboGalleryMansoryImagesCenter":false,"RoboGalleryPreload":false,"1536x1536":false,"2048x2048":false,"post-image":false},"uagb_author_info":{"display_name":"chaoticfly","author_link":"https:\/\/chaoticfly.in\/index.php\/author\/chaoticfly\/"},"uagb_comment_info":3,"uagb_excerpt":"The Objective I always wanted to have a workspace that could replace many a tool I use as a paid alternative or tools hosted in the cloud. Specially now, when most of the time I spend at home working, I have a need to manage my productivity. It uses docker for easy siloed management and&hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/posts\/317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/comments?post=317"}],"version-history":[{"count":13,"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/posts\/317\/revisions"}],"predecessor-version":[{"id":355,"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/posts\/317\/revisions\/355"}],"wp:attachment":[{"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/media?parent=317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/categories?post=317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chaoticfly.in\/index.php\/wp-json\/wp\/v2\/tags?post=317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}