{"id":2450,"date":"2024-06-02T17:24:32","date_gmt":"2024-06-02T14:24:32","guid":{"rendered":"https:\/\/www.fibacloud.com\/community\/tutorials\/?p=2450"},"modified":"2026-10-04T22:57:46","modified_gmt":"2026-10-04T19:57:46","slug":"how-to-ensure-cloud-security-with-vpn","status":"publish","type":"post","link":"https:\/\/www.fibacloud.com\/community\/tutorials\/en\/how-to-ensure-cloud-security-with-vpn\/","title":{"rendered":"Cloud Security with VPN: Restricted WireGuard Access"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2450\" class=\"elementor elementor-2450\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-307c032 e-con-full e-flex e-con e-parent\" data-id=\"307c032\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-278d918 elementor-widget elementor-widget-text-editor\" data-id=\"278d918\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.21.0 - 08-05-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>A VPN encrypts traffic between a client and the VPN endpoint. It does not replace application authorization, server updates or TLS. A practical starting point for cloud security is a narrow tunnel that reaches the required service instead of granting access to the whole network.<\/p>\n<p>This guide sets up <strong>restricted WireGuard access<\/strong> between an Ubuntu 24.04 LTS client and one cloud server. The client routes only the server\u2019s VPN address through the tunnel. Internet egress, default routes, NAT and forwarding to other servers remain unchanged. Access to a wider private network or a full-tunnel design requires a separate network plan.<\/p>\n<h2>Choose WireGuard or OpenVPN deliberately<\/h2>\n<p>WireGuard identifies peers by public key. Each peer\u2019s <code>AllowedIPs<\/code> participates in routing and checks the source addresses accepted from that peer. OpenVPN offers different authentication and PKI options. Do not combine their commands into one installation procedure.<\/p>\n<p>With OpenVPN, clients receive the CA\u2019s <strong>public certificate<\/strong> and their own credentials. <strong>Never copy the CA private key to a client.<\/strong> Do not replace an existing organizational OpenVPN deployment merely to follow this guide; use its approved profiles and revocation process. The implementation below uses WireGuard.<\/p>\n<figure class=\"fc-editorial-figure\" data-fc-visual=\"20260920\" aria-labelledby=\"fc-editorial-caption-2450\"><a href=\"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-content\/uploads\/community-editorial-20260920\/fc-vpn-en-inline-20260920.webp\" target=\"_blank\" rel=\"noopener\" aria-label=\"Open full-size illustration\"><picture><source media=\"(max-width: 600px)\" srcset=\"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-content\/uploads\/community-editorial-20260920\/fc-vpn-en-mobile-20260920.webp\" width=\"720\" height=\"1140\"><img loading=\"lazy\" src=\"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-content\/uploads\/community-editorial-20260920\/fc-vpn-en-inline-20260920.webp\" srcset=\"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-content\/uploads\/community-editorial-20260920\/fc-vpn-en-inline-20260920.webp 1440w, https:\/\/www.fibacloud.com\/community\/tutorials\/wp-content\/uploads\/community-editorial-20260920\/fc-vpn-en-inline-20260920-300x242.webp 300w, https:\/\/www.fibacloud.com\/community\/tutorials\/wp-content\/uploads\/community-editorial-20260920\/fc-vpn-en-inline-20260920-1024x825.webp 1024w, https:\/\/www.fibacloud.com\/community\/tutorials\/wp-content\/uploads\/community-editorial-20260920\/fc-vpn-en-inline-20260920-768x619.webp 768w\" sizes=\"auto, (max-width: 900px) 100vw, 820px\" width=\"1440\" height=\"1160\" alt=\"Where does the encrypted tunnel end?\" class=\"wp-image-2590\"  decoding=\"async\"><\/picture><\/a><figcaption id=\"fc-editorial-caption-2450\"><strong>Where does the encrypted tunnel end?<\/strong> The VPN tunnel protects traffic between the client and VPN gateway. Beyond the gateway, routing, firewall rules and application TLS\/authentication still control access.<details><summary>Step-by-step explanation<\/summary><ol><li>Connect: The client authenticates the VPN gateway.<\/li><li>Encrypt: Protect traffic inside the tunnel.<\/li><li>Restrict: Apply access rules beyond the gateway.<\/li><li>Protect: Keep application TLS and authentication.<\/li><\/ol><\/details><\/figcaption><\/figure>\n<h2>Prerequisites and address plan<\/h2>\n<p>You need administrative access to both endpoints, a working management connection and recovery-console access to the cloud server. Start on separate test servers. This example uses:<\/p>\n<table>\n<thead>\n<tr>\n<th>Role<\/th>\n<th>VPN address<\/th>\n<th>Required information<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Cloud server<\/td>\n<td><code>10.77.0.1\/32<\/code><\/td>\n<td>A client-reachable public endpoint on UDP <code>51820<\/code><\/td>\n<\/tr>\n<tr>\n<td>Client<\/td>\n<td><code>10.77.0.2\/32<\/code><\/td>\n<td>Server public key and endpoint address<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The addresses must not overlap your existing local networks. If an interface or configuration named <code>wg0<\/code> already exists, do not overwrite it; choose a separate test interface and matching filename. <code>vpn.example.com<\/code> and <code>198.51.100.10<\/code> are documentation examples. Replace them with the real server name and client public source IP.<\/p>\n<p>Record the current state on both endpoints:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d82e7f8 elementor-widget elementor-widget-text-editor\" data-id=\"d82e7f8\" data-element_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<pre><code class=\"language-bash\">ip -4 address show\nip -4 route show\nsudo wg show<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ff156f elementor-widget elementor-widget-text-editor\" data-id=\"6ff156f\" data-element_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<p>If <code>wg<\/code> is not installed yet, run the last command after package installation. On both Ubuntu 24.04 endpoints:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2ac0edc elementor-widget elementor-widget-text-editor\" data-id=\"2ac0edc\" data-element_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<pre><code class=\"language-bash\">sudo apt update\nsudo apt install wireguard<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f827b73 elementor-widget elementor-widget-text-editor\" data-id=\"f827b73\" data-element_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<h2>Generate separate keys on each endpoint<\/h2>\n<p>Run the following independently on the server and client. Stop if the working directory already contains these key files; do not replace a production key.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4562c1c elementor-widget elementor-widget-text-editor\" data-id=\"4562c1c\" data-element_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<pre><code class=\"language-bash\">install -d -m 700 \"$HOME\/wireguard-setup\"\ncd \"$HOME\/wireguard-setup\"\numask 077\nwg genkey | tee wg0.private | wg pubkey &gt; wg0.public\ncat wg0.public<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64c6fab elementor-widget elementor-widget-text-editor\" data-id=\"64c6fab\" data-element_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<p>Share only <code>wg0.public<\/code> through a trusted channel. The private key stays on its endpoint. Do not expose it in chat, email, repositories or screenshots. Record which device owns each public key.<\/p>\n<h2>Keep server and client configurations separate<\/h2>\n<p>For a new configuration, restrict permissions <strong>before writing the key<\/strong> on each endpoint:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c3d6d4d elementor-widget elementor-widget-text-editor\" data-id=\"c3d6d4d\" data-element_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<pre><code class=\"language-bash\">sudo install -d -m 700 \/etc\/wireguard\nsudo touch \/etc\/wireguard\/wg0.conf\nsudo chmod 600 \/etc\/wireguard\/wg0.conf\nsudoedit \/etc\/wireguard\/wg0.conf<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2800bad elementor-widget elementor-widget-text-editor\" data-id=\"2800bad\" data-element_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<p>Replace the <code>&lt;...&gt;<\/code> placeholders with the correct keys in your local editor. Placeholders are not valid keys. Do not put private keys in command arguments or shell history.<\/p>\n<p><strong>Cloud server \u2014 <code>\/etc\/wireguard\/wg0.conf<\/code>:<\/strong><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cb0cf82 elementor-widget elementor-widget-text-editor\" data-id=\"cb0cf82\" data-element_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<pre><code class=\"language-ini\">[Interface]\nAddress = 10.77.0.1\/32\nListenPort = 51820\nPrivateKey = &lt;SERVER_PRIVATE_KEY&gt;\n\n[Peer]\nPublicKey = &lt;CLIENT_PUBLIC_KEY&gt;\nAllowedIPs = 10.77.0.2\/32<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bb2af62 elementor-widget elementor-widget-text-editor\" data-id=\"bb2af62\" data-element_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<p><strong>Client \u2014 <code>\/etc\/wireguard\/wg0.conf<\/code>:<\/strong><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2192d79 elementor-widget elementor-widget-text-editor\" data-id=\"2192d79\" data-element_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<pre><code class=\"language-ini\">[Interface]\nAddress = 10.77.0.2\/32\nPrivateKey = &lt;CLIENT_PRIVATE_KEY&gt;\n\n[Peer]\nPublicKey = &lt;SERVER_PUBLIC_KEY&gt;\nEndpoint = vpn.example.com:51820\nAllowedIPs = 10.77.0.1\/32\nPersistentKeepalive = 25<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b858a2e elementor-widget elementor-widget-text-editor\" data-id=\"b858a2e\" data-element_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<p><code>PersistentKeepalive<\/code> helps preserve a client-side NAT mapping; it is not mandatory on every network. Give each client a distinct public key and non-overlapping <code>\/32<\/code> address on the server. Do not share one private key across users. Do not add <code>0.0.0.0\/0<\/code>, <code>::\/0<\/code>, NAT or IP forwarding to this example; they change its scope.<\/p>\n<h2>Keep network rules narrow<\/h2>\n<p>In the cloud network rule, allow only the required client source IP to the server\u2019s UDP <code>51820<\/code> port. If the client\u2019s public IP changes, plan the access model with the administrator instead of silently allowing every source.<\/p>\n<p>If UFW is already enabled and is the server\u2019s active firewall, inspect it first. Replace the documentation address with the real client source IP:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-61a4995 elementor-widget elementor-widget-text-editor\" data-id=\"61a4995\" data-element_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<pre><code class=\"language-bash\">sudo ufw status numbered\nsudo ufw allow proto udp from 198.51.100.10 to any port 51820<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8995bc0 elementor-widget elementor-widget-text-editor\" data-id=\"8995bc0\" data-element_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<p>This guide does not enable or reset UFW or disable another firewall. If your firewall differs, have the administrator configure the equivalent narrow rule. Preserve the rules used for management access.<\/p>\n<p>Limit the application port separately. For example, to allow only this client to an already configured HTTPS service through the VPN:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bef9baa elementor-widget elementor-widget-text-editor\" data-id=\"bef9baa\" data-element_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<pre><code class=\"language-bash\">sudo ufw allow in on wg0 proto tcp from 10.77.0.2 to 10.77.0.1 port 443<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b47f6c5 elementor-widget elementor-widget-text-editor\" data-id=\"b47f6c5\" data-element_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<p>This does not automatically remove the application\u2019s existing public access. Verify the public\/private access policy separately, and keep application login requirements in place.<\/p>\n<h2>Start and verify the connection<\/h2>\n<p>Run on the server first, then the client:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b98ba0f elementor-widget elementor-widget-text-editor\" data-id=\"b98ba0f\" data-element_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<pre><code class=\"language-bash\">sudo wg-quick up wg0\nsudo wg show wg0<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8179d4e elementor-widget elementor-widget-text-editor\" data-id=\"8179d4e\" data-element_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<p>Initiate traffic from the client and inspect the handshake time:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3050d59 elementor-widget elementor-widget-text-editor\" data-id=\"3050d59\" data-element_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<pre><code class=\"language-bash\">ip route get 10.77.0.1\nping -c 3 10.77.0.1\nsudo wg show wg0 latest-handshakes\nip -4 route show default<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fec1ba1 elementor-widget elementor-widget-text-editor\" data-id=\"fec1ba1\" data-element_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<p>Expect the route through <code>wg0<\/code>, a recent handshake and transfer counters increasing in both directions. A handshake value of <code>0<\/code> means no handshake has occurred yet. ICMP may be blocked, so a failed ping alone does not prove a broken tunnel. The default internet route should remain the same as before.<\/p>\n<p>If an existing HTTPS application is configured on the VPN address with a valid certificate, test using its real hostname without disabling TLS verification:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ac94a71 elementor-widget elementor-widget-text-editor\" data-id=\"ac94a71\" data-element_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<pre><code class=\"language-bash\">curl --connect-timeout 5 \\\n  --resolve app.example.com:443:10.77.0.1 \\\n  https:\/\/app.example.com\/<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cb723bf elementor-widget elementor-widget-text-editor\" data-id=\"cb723bf\" data-element_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<p>This command verifies an existing service; it does not install the application or certificate. Separately check that an authorized client can access it and that the application rejects an unauthorized account. After the checks, enable startup on each endpoint with <code>sudo systemctl enable wg-quick@wg0<\/code> if required.<\/p>\n<h2>Troubleshooting and rollback<\/h2>\n<ul>\n<li><strong>No handshake:<\/strong> Check endpoint DNS\/IP, UDP port, the public key assigned to each peer and the client source-IP rule.<\/li>\n<li><strong>Handshake but no service:<\/strong> Check <code>AllowedIPs<\/code>, the application\u2019s listening address\/port and its <code>wg0<\/code> rule. Do not add unnecessary NAT or broad network access.<\/li>\n<li><strong>Address overlap:<\/strong> Bring down the tunnel and update both endpoints with unused addresses.<\/li>\n<li><strong>Lost or exposed key:<\/strong> Remove that peer\u2019s public-key authorization, generate a new key pair and update the peer configuration.<\/li>\n<\/ul>\n<p>To roll back, run <code>sudo wg-quick down wg0<\/code> on both endpoints. If this procedure enabled startup, use <code>sudo systemctl disable wg-quick@wg0<\/code>. Remove only peer entries and network rules added by this test; preserve existing management rules. Recheck the default route and previous application access.<\/p>\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.wireguard.com\/quickstart\/\" rel=\"nofollow noopener\" target=\"_blank\">WireGuard \u2014 Official quick start and key generation<\/a><\/li>\n<li><a href=\"https:\/\/www.wireguard.com\/protocol\/\" rel=\"nofollow noopener\" target=\"_blank\">WireGuard \u2014 Protocol and peer identity<\/a><\/li>\n<li><a href=\"https:\/\/manpages.ubuntu.com\/manpages\/noble\/en\/man8\/wg-quick.8.html\" rel=\"nofollow noopener\" target=\"_blank\">Ubuntu 24.04 \u2014 wg-quick: interface and route management<\/a><\/li>\n<li><a href=\"https:\/\/manpages.ubuntu.com\/manpages\/noble\/en\/man8\/ufw.8.html\" rel=\"nofollow noopener\" target=\"_blank\">Ubuntu 24.04 \u2014 ufw: interface, protocol and source-address rules<\/a><\/li>\n<li><a href=\"https:\/\/openvpn.net\/community-docs\/setting-up-your-own-certificate-authority--ca--and-generating-certificates-and-keys-for-an-openvpn-server-and-multiple-clients.html\" rel=\"nofollow noopener\" target=\"_blank\">OpenVPN \u2014 Certificate authority setup and key separation<\/a><\/li>\n<\/ul>\n<p class=\"fc-article-review-date\">Technical content and sources reviewed on October 4, 2026. Recheck the relevant official documentation when a version or provider changes.<\/p>\t\t\t\t\t\t<\/div>\n\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>Set up restricted WireGuard access to one Ubuntu 24.04 cloud server. Verify peer keys, narrow routes and connectivity without changing default routes.<\/p>\n","protected":false},"author":1,"featured_media":2589,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[224,267,269,273,271],"class_list":["post-2450","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials-en","tag-cloud-computing","tag-cloud-security","tag-cyber-security","tag-vpn","tag-vpn-install"],"lang":"en","translations":{"en":2450,"tr":2061},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/posts\/2450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/comments?post=2450"}],"version-history":[{"count":26,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/posts\/2450\/revisions"}],"predecessor-version":[{"id":2476,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/posts\/2450\/revisions\/2476"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/media\/2589"}],"wp:attachment":[{"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/media?parent=2450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/categories?post=2450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/tags?post=2450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}