{"id":504,"date":"2025-02-25T15:30:16","date_gmt":"2025-02-25T21:30:16","guid":{"rendered":"https:\/\/bblaze.xyz\/?p=504"},"modified":"2025-12-08T16:06:46","modified_gmt":"2025-12-08T22:06:46","slug":"virtualmin-postgresql-containers","status":"publish","type":"post","link":"https:\/\/jb03.com\/index.php\/2025\/02\/25\/virtualmin-postgresql-containers\/","title":{"rendered":"Virtualmin, PostgreSQL &amp; Containers"},"content":{"rendered":"\n<p>Let&#8217;s start with the why.<\/p>\n\n\n\n<p>The reason you want to use databases (either MySQL or PostgreSQL) which are part of a Virtualmin domain is so they will automatically be included in any VM backups of that domain. That is, when a new domain is added to Virtualmin and either (or both) of the database boxes are checked, VM will automatically create the necessary database(s) and include include them in any backups (assuming the settings are correct.)<\/p>\n\n\n\n<p>Consider it this way\u2026 You want to run Application_A and Application_B inside docker containers. However, each requires MySQL. So you have the option of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Having the server run 3 instances of MySQL: one native to the OS, one within the Application_A container, and one within the Application_B container, or<\/li>\n\n\n\n<li>Having the server run 1 instance of MySQL. Only the one native to the OS is required and Application_A &amp; Application_B connect to it.<\/li>\n<\/ul>\n\n\n\n<p>Running multiple instances of the same application is not very efficient. Further, backing up databases inside containers is\u2026 Well\u2026 Complicated.<\/p>\n\n\n\n<p>Backing up databases tied to Virtualmin domains is incredibly simple and straightforward.<\/p>\n\n\n\n<p>So let&#8217;s have at it.<\/p>\n\n\n\n<p>Before going any further this tutorial assumes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/jb03.com\/virtualmin-at-server-cheap\/\">Virtualmin<\/a> has been correctly loaded on your system,<\/li>\n\n\n\n<li><a href=\"https:\/\/jb03.com\/installing_docker\/\">Docker<\/a> has been installed on your system,<\/li>\n\n\n\n<li><a href=\"https:\/\/jb03.com\/installing-portainer\/\">Portainer<\/a> has been installed on your system, and<\/li>\n\n\n\n<li><a href=\"https:\/\/jb03.com\/postgresql-virtualmin-phppgadmin\/\">PostgreSQL<\/a> and its Virtualmin module have been properly installed.<\/li>\n<\/ul>\n\n\n\n<p>If anyone is curious I&#8217;m working on the server hosted at Server Cheap (that&#8217;s not an endorsement, I have zero relationship with those people.)<\/p>\n\n\n\n<p><strong>First \u2013 We Add the Domain to Virtualmin<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-one-1024x604.png\" alt=\"\" class=\"wp-image-508\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-one-1024x604.png 1024w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-one-300x177.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-one-768x453.png 768w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-one.png 1213w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Here we are adding the domain name &#8220;pgadmin.imfbsbn.com&#8221;.<\/p>\n\n\n\n<p>Because the administration username is going to be set automatically it&#8217;s going to be &#8220;pgadmin&#8221;.<\/p>\n\n\n\n<p>In terms of features, we only need DNS, Apache, and PostgresSQL. Those are the only boxes that need to be checked.<\/p>\n\n\n\n<p>Go ahead and create the server.<\/p>\n\n\n\n<p><strong>Second \u2013 We Create the Reverse Proxy To the Container<\/strong><\/p>\n\n\n\n<p>Now go to Website Configuration \u2013 \u2013 Edit Proxy Website and make the changes necessary to set up the reverse proxy to the container.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"358\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-two-1024x358.png\" alt=\"\" class=\"wp-image-509\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-two-1024x358.png 1024w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-two-300x105.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-two-768x268.png 768w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-two.png 1033w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>Third \u2013 We get Our Application Running in the Container<\/strong><\/p>\n\n\n\n<p>Next were going to log into Portainer and create a new stack.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-three.png\" alt=\"\" class=\"wp-image-510\"\/><\/figure>\n<\/div>\n\n\n<p>Here&#8217;s the code you need to enter in the stack:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services: \n  pgadmin:\n    image: dpage\/pgadmin4:latest\n    restart: unless-stopped\n    environment:\n      PGADMIN_DEFAULT_EMAIL: pgadmin@bblaze.xyz\n      PGADMIN_DEFAULT_PASSWORD: fshbhhj3fUFZbUIV\n    ports:\n      - \"5050:80\"\n    extra_hosts:\n      - \"host.docker.internal:host-gateway\"<\/code><\/pre>\n\n\n\n<p>Then go ahead and deploy the stack.<\/p>\n\n\n\n<p>Once the container has loaded and is running you should be able to visit the domain name and see the login page for PG Admin 4:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"503\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-four-1024x503.png\" alt=\"\" class=\"wp-image-513\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-four-1024x503.png 1024w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-four-300x147.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-four-768x377.png 768w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-four-1536x754.png 1536w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-four.png 1591w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>And if you enter the credentials from the stack you should be allowed to login:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"469\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-five-1024x469.png\" alt=\"\" class=\"wp-image-514\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-five-1024x469.png 1024w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-five-300x137.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-five-768x352.png 768w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-five.png 1483w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>Fourth \u2013 Configure PostgresSQL To Allow Host Connections<\/strong><\/p>\n\n\n\n<p>We have to make a few changes to a couple of files before the PostgresSQL server will allow our docker container to connect.<\/p>\n\n\n\n<p>Let&#8217;s do the easiest first.<\/p>\n\n\n\n<p>On our Debian system, we can use the Virtualmin file manager to navigate to \/etc\/postgresql\/15\/main\u2026<\/p>\n\n\n\n<p>NOTE: Because our domain is set up as a proxy, Virtualmin might not show us the file manager has a menu option. To use the file manager you may have to select an alternate domain hosted on the system or use Webmin.<\/p>\n\n\n\n<p>Now you can right-click on the file postgresql.conf and then click edit from the pop-up window.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"818\" height=\"515\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-six.png\" alt=\"\" class=\"wp-image-515\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-six.png 818w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-six-300x189.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-six-768x484.png 768w\" sizes=\"auto, (max-width: 818px) 100vw, 818px\" \/><\/figure>\n<\/div>\n\n\n<p>Virtualmin will pop open a window where you can edit this file.<\/p>\n\n\n\n<p>Scroll down a couple of screens until you get to CONNECTIONS AND AUTHENTICATION.<\/p>\n\n\n\n<p>In that section you will need to remove the # in front of listen_addresses.<\/p>\n\n\n\n<p>You also need to delete &#8216;localhost&#8217; and put in &#8216;*&#8217; as shown below.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"949\" height=\"457\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-seven.png\" alt=\"\" class=\"wp-image-516\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-seven.png 949w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-seven-300x144.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-seven-768x370.png 768w\" sizes=\"auto, (max-width: 949px) 100vw, 949px\" \/><\/figure>\n<\/div>\n\n\n<p>Save the file by clicking on the diskette at the top right of the pop-up window.<\/p>\n\n\n\n<p>Now comes the tricky part.<\/p>\n\n\n\n<p>Before continuing, we need to gather and confirm a little bit of information.<\/p>\n\n\n\n<p>First we need to find out the IP address of our docker container running PGAdmin4. Thankfully, no commands are necessary. Portainer will simply show us the IP on the container page.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"269\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-eight-1024x269.png\" alt=\"\" class=\"wp-image-517\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-eight-1024x269.png 1024w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-eight-300x79.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-eight-768x202.png 768w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-eight.png 1237w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>We can see that our PGAdmin container has an IP address of 172.19.0.2. We&#8217;re gonna need to know that in just a little bit.<\/p>\n\n\n\n<p>Next we are going to confirm \u2013 in Virtualmin \u2013 our username and database name for Postgres.<\/p>\n\n\n\n<p>For this we need to navigate over to the &#8220;Webmin&#8221; side of Virtualmin. To do that either press Alt-W or click on the Webmin tab on the top left side of the menu.<\/p>\n\n\n\n<p>From there navigate to Servers \u2013 \u2013 Postgres Database Server:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"555\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-nine-1024x555.png\" alt=\"\" class=\"wp-image-519\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-nine-1024x555.png 1024w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-nine-300x163.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-nine-768x416.png 768w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-nine.png 1219w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>On this screen (shown above) we need to confirm that Virtualmin has created a database called &#8220;pgadmin&#8221;.<\/p>\n\n\n\n<p>Now we are ready to click on the PostgreSQL Users button.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"871\" height=\"307\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-10.png\" alt=\"\" class=\"wp-image-520\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-10.png 871w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-10-300x106.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-10-768x271.png 768w\" sizes=\"auto, (max-width: 871px) 100vw, 871px\" \/><\/figure>\n<\/div>\n\n\n<p>On the users page we want to confirm that Virtualmin has created a user called &#8220;pgadmin&#8221;.<\/p>\n\n\n\n<p>Go ahead and click on the user pgadmin.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"336\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-11-1024x336.png\" alt=\"\" class=\"wp-image-524\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-11-1024x336.png 1024w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-11-300x98.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-11-768x252.png 768w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-11.png 1045w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Here you want to ABSOLUTELY CHANGE THE PASSWORD and write it down. I&#8217;m not exactly sure what is going on here behind-the-scenes. But it appears that Postgres users are not initially assigned a password when created. So setting a password here is absolutely essential for continuing.<\/p>\n\n\n\n<p>Now that we have confirmed our IP address, database name, username, and password, we are ready to proceed to the next step.<\/p>\n\n\n\n<p>Click the blue button that says Return to Database List.<\/p>\n\n\n\n<p>Click the Virtualmin button &#8220;Allowed Hosts&#8221;.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"517\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-11b.png\" alt=\"\" class=\"wp-image-527\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-11b.png 829w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-11b-300x187.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-11b-768x479.png 768w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/figure>\n<\/div>\n\n\n<p>At the bottom left, click on that white button that reads Edit Config File.<\/p>\n\n\n\n<p>Scroll down to the end of that file. You want to make it look something like this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"697\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-12.png\" alt=\"\" class=\"wp-image-526\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-12.png 799w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-12-300x262.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-12-768x670.png 768w\" sizes=\"auto, (max-width: 799px) 100vw, 799px\" \/><\/figure>\n<\/div>\n\n\n<p>The line you want to add the look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>host    pgadmin          pgadmin         172.19.0.2\/32           scram-sha-256<\/code><\/pre>\n\n\n\n<p>This is telling PostgeSQL to allow access to the pgadmin database by the pgadmin user from IP 172.19.0.2 using sha-256 password encryption.<\/p>\n\n\n\n<p>NOTE: if you get stuck you may want to test with lines #98\/99 which I have commented out above.<\/p>\n\n\n\n<p>After you have made the changes, save the file.<\/p>\n\n\n\n<p>Again, click the blue &#8220;Return to Database List&#8221; button.<\/p>\n\n\n\n<p>Restart the PostgreSQL server by using the &#8220;Stop&#8221; and &#8220;Start&#8221; buttons within Virtualmin.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"637\" height=\"349\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-13.png\" alt=\"\" class=\"wp-image-532\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-13.png 637w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-13-300x164.png 300w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><\/figure>\n<\/div>\n\n\n<p>Then\u2026<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"289\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-14.png\" alt=\"\" class=\"wp-image-533\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-14.png 601w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-14-300x144.png 300w\" sizes=\"auto, (max-width: 601px) 100vw, 601px\" \/><\/figure>\n<\/div>\n\n\n<p>Return to the browser tab where you have PG Admin 4 open.<\/p>\n\n\n\n<p>Click on the button that says &#8220;Add New Server&#8221;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"637\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-15.png\" alt=\"\" class=\"wp-image-535\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-15.png 853w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-15-300x224.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-15-768x574.png 768w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n<\/div>\n\n\n<p>Enter whatever you want for the name.<\/p>\n\n\n\n<p>Then click over to the connections tab:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"793\" height=\"667\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-16.png\" alt=\"\" class=\"wp-image-537\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-16.png 793w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-16-300x252.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-16-768x646.png 768w\" sizes=\"auto, (max-width: 793px) 100vw, 793px\" \/><\/figure>\n<\/div>\n\n\n<p>Enter data into the fields like above.<\/p>\n\n\n\n<p>If everything worked as it should, you should see something like this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/PGC-17-1024x339.png\" alt=\"\" class=\"wp-image-538\"\/><\/figure>\n<\/div>\n\n\n<p>Congratulations!<\/p>\n\n\n\n<p>You just connected a docker container to the PostgreSQL server hosted natively on the OS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s start with the why. The reason you want to use databases (either MySQL or PostgreSQL) &hellip; <a title=\"Virtualmin, PostgreSQL &amp; Containers\" class=\"hm-read-more\" href=\"https:\/\/jb03.com\/index.php\/2025\/02\/25\/virtualmin-postgresql-containers\/\"><span class=\"screen-reader-text\">Virtualmin, PostgreSQL &amp; Containers<\/span>Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,37,39,40,41],"tags":[],"class_list":["post-504","post","type-post","status-publish","format-standard","hentry","category-docker","category-intermediate","category-portainer","category-postgresql","category-virtualmin"],"_links":{"self":[{"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/posts\/504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/comments?post=504"}],"version-history":[{"count":1,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/posts\/504\/revisions"}],"predecessor-version":[{"id":630,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/posts\/504\/revisions\/630"}],"wp:attachment":[{"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/media?parent=504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/categories?post=504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/tags?post=504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}