{"id":10116,"date":"2019-08-15T16:58:47","date_gmt":"2019-08-15T16:58:47","guid":{"rendered":"https:\/\/www.nurango.ca\/blog\/?p=10116"},"modified":"2023-02-08T04:23:56","modified_gmt":"2023-02-08T04:23:56","slug":"install-asterisk-with-freepbx","status":"publish","type":"post","link":"https:\/\/www.nurango.ca\/blog\/install-asterisk-with-freepbx","title":{"rendered":"Install asterisk-16 with FreePBX-14 on CentOS"},"content":{"rendered":"\n<p>asterisk combined with FreePBX is a robust and feature rich IP-PBX that is used in small and large scale deployments. It can scale up with little to no effort and can be easily clustered for redundancy and larger capacity needs. Combined with the power of Linux &#8211; CentOS7 in this case, you can maintain, secure and integrate with almost anything. <\/p>\n\n\n\n<p>While FreePBX offers both Stand-alone and an All-in-one Linux\/asterisk\/FPBX <a href=\"https:\/\/www.freepbx.org\/downloads\/freepbx-distro\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">versions<\/a>, this post is for the brave souls that prefer a manual approach. This will be the case if you are installing in a Cloud environment and don&#8217;t have physical access to the machine.<\/p>\n\n\n\n\n\n<p>Watch the <a href=\"https:\/\/youtu.be\/GlY17kyxqTE\" target=\"_blank\" rel=\"noopener\">walk-through of this installation<\/a> on our Youtube channel.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>With introductions out of the way, let&#8217;s take a look at the packages that we&#8217;re using;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VPS with CentOS 7<\/li>\n\n\n\n<li>asterisk v16<\/li>\n\n\n\n<li>FreePBX v14<\/li>\n\n\n\n<li>PJSIP v2.8<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>OS Pre-requisites<\/strong><\/p>\n\n\n\n<p>Assuming a new installation, let&#8217;s first make sure SELinux is disabled;<\/p>\n\n\n\n<p><code>sestatus<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"595\" height=\"58\" src=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/sestatus-1.png\" alt=\"\" class=\"wp-image-10118\" srcset=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/sestatus-1.png 595w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/sestatus-1-300x29.png 300w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/sestatus-1-370x36.png 370w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<p>If not,<\/p>\n\n\n\n<p><code>sed -i 's\/SELINUX=enforcing\/SELINUX=disabled\/g' \/etc\/selinux\/config<\/code><\/p>\n\n\n\n<p><code>reboot<\/code><\/p>\n\n\n\n<p>Make sure we&#8217;re up-to date;<\/p>\n\n\n\n<p><code>sudo yum -y update<\/code><\/p>\n\n\n\n<p><code>reboot<\/code><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Installing asterisk 16<\/h4>\n\n\n\n<p>Install dependency packages;<\/p>\n\n\n\n<p><code>sudo yum -y install epel-release gcc-c++ ncurses-devel libxml2-devel wget openssl-devel newt-devel kernel-devel-uname -r sqlite-devel libuuid-devel gtk2-devel jansson-devel binutils-devel bzip2 patch libedit libedit-devel tftp-server \\<br>   ncurses-devel sendmail sendmail-cf sox newt-devel libxml2-devel libtiff-devel \\<br>   audiofile-devel gtk2-devel subversion kernel-devel git crontabs cronie \\<br>   cronie-anacron wget vim nano uuid-devel sqlite-devel net-tools<\/code><\/p>\n\n\n\n<p>Add asterisk Firewall rules &#8211; This is optional and can be done later as well;<\/p>\n\n\n\n<p><code>sudo firewall-cmd --zone=public --permanent --add-service={sip,sips}<br>sudo firewall-cmd --zone=public --permanent --add-port=10000-20000\/udp<br>sudo firewall-cmd --zone=public --permanent --add-port=4569\/udp<\/code><\/p>\n\n\n\n<p>Verify:<br><code> sudo firewall-cmd --permanent --list-services<br> sudo firewall-cmd --permanent --list-ports<\/code><\/p>\n\n\n\n<p><strong>Build and Compile asterisk:<\/strong><\/p>\n\n\n\n<p><code>mkdir ~\/build-asterisk<br>cd ~\/build-asterisk<\/code><\/p>\n\n\n\n<p><strong>Build PJSIP;<br><\/strong><br>PJSIP is a SIP Protocol stack that seems poised to replace ChanSIP as the primary SIP driver in asterisk. Although I have had several issues using PJSIP and prefer ChanSIP configurations and commands, my personal needs will likely not influence the direction \ud83d\ude00 .. It does appear to be more robust than Chan, but not as polished just yet. You will also need to learn the new operators as the differ from the more familiar asterisk CLI commands. Read the list <strong><a href=\"https:\/\/wiki.asterisk.org\/wiki\/display\/AST\/Asterisk+12+chan_pjsip+CLI+Specification\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">here<\/a><\/strong>.<\/p>\n\n\n\n<p>More about PJSIPs technology here: <a href=\"https:\/\/www.pjsip.org\/sip_media_features.htm\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">https:\/\/www.pjsip.org\/sip_media_features.htm<\/a><\/p>\n\n\n\n<p>Let&#8217;s grab PJSIP, compile the flags and build it into the asterisk directory;<br><br><code>wget https:\/\/www.pjsip.org\/release\/2.8\/pjproject-2.8.tar.bz2<br>tar -jxvf pjproject-2.8.tar.bz2<br>cd pjproject-2.8<br><\/code><br><br>Config options:<br><br><code>.\/configure CFLAGS=\"-DNDEBUG -DPJ_HAS_IPV6=1\" --prefix=\/usr --libdir=\/usr\/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr<\/code><\/p>\n\n\n\n<p>Build dependencies:<br><code>make dep<\/code><\/p>\n\n\n\n<p>Build:<br><code>make<\/code><\/p>\n\n\n\n<p>Install:<br><code>sudo make install<br>sudo ldconfig<\/code><\/p>\n\n\n\n<p><strong>Building asterisk;<\/strong><\/p>\n\n\n\n<p>Back to our build directory;<br><code>cd ~\/build-asterisk<\/code><\/p>\n\n\n\n<p>Download:<br><code>wget http:\/\/downloads.asterisk.org\/pub\/telephony\/asterisk\/asterisk-16-current.tar.gz<\/code><\/p>\n\n\n\n<p>Extract:<br>tar -zxvf asterisk-16-current.tar.gz<\/p>\n\n\n\n<p>Enter dir:<br><code>cd asterisk-16.X.X<\/code><\/p>\n\n\n\n<p>Enable MP3 Support (for MoH, recordings, etc);<br> <code>sudo yum install svn<br>contrib\/scripts\/get_mp3_source.sh<\/code><\/p>\n\n\n\n<p>Configure and Build<br><code>.\/configure --libdir=\/usr\/lib64 --with-jansson-bundled<\/code><\/p>\n\n\n\n<p>We now need to enable the MP3 support flag inside of the asterisk Add-ons list to compile;<\/p>\n\n\n\n<p><code>make menuselect<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"971\" height=\"207\" src=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/asterisk_mp3.png\" alt=\"\" class=\"wp-image-10119\" srcset=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/asterisk_mp3.png 971w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/asterisk_mp3-300x64.png 300w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/asterisk_mp3-768x164.png 768w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/asterisk_mp3-370x79.png 370w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/asterisk_mp3-760x162.png 760w\" sizes=\"(max-width: 971px) 100vw, 971px\" \/><\/figure>\n\n\n\n<p>Save &amp; Exit<\/p>\n\n\n\n<p>Finish up by building, compiling and generating the sample configs in \/etc\/asterisk\/. Then ensure asterisk starts up at boot.<br><br><code>make<br>make install<br>make samples<br>make config<\/code><\/p>\n\n\n\n<p>Congrats! You have a working version of asterisk 16! If you&#8217;re not installing FreepBX, you can fire up asterisk and start configuring &#8211; <code>systemctl start asterisk<\/code> <\/p>\n\n\n\n<p>For the rest of us, let&#8217;s move onward.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installing FreePBX 14<\/h2>\n\n\n\n<p>At the time of this article, the FreePBX road-map on their own wiki seems to be outdated and unclear as to EOL on specific versions. That said, v14 seems to be the preferred Stable release and is used by their pre-compiled packages. We don&#8217;t much care about this since luckily FreePBX includes an auto update feature for it&#8217;s core inside the UI.<\/p>\n\n\n\n<p>Install dependency source;<br><code>rpm -Uvh https:\/\/mirror.webtatic.com\/yum\/el7\/epel-release.rpm<\/code><\/p>\n\n\n\n<p>For some very questionable reason, CentOS still comes with PHP 5.4. We need to enable the repo for 5.6 (although this is not ideal either, I will test with later versions and update).<\/p>\n\n\n\n<p><code>rpm -Uvh https:\/\/mirror.webtatic.com\/yum\/el7\/webtatic-release.rpm<\/code><\/p>\n\n\n\n<p>Install dependencies:<\/p>\n\n\n\n<p><code>sudo yum install -y php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring php56w-pear php56w-process mariadb-server mariadb httpd gnutls-devel unixODBC mysql-connector-odbc<\/code><\/p>\n\n\n\n<p>Install a legacy component:<br><code>pear install Console_Getopt<\/code><\/p>\n\n\n\n<p>Optionally setup our Web access firewall rules:<br><code>firewall-cmd --zone=public --add-port=443\/tcp --permanent<br>firewall-cmd --reload<\/code><\/p>\n\n\n\n<p>Enable MariaDB and Apache at startup:<br><code>systemctl enable mariadb.service<br>systemctl enable httpd.service<\/code> <\/p>\n\n\n\n<p>Start-up Maria:<br><code>systemctl start mariadb<br><\/code><\/p>\n\n\n\n<p>Run the mysql configuration script &#8211; Do <strong>NOT<\/strong> set a root password on the DB as the FreePBX install script will do this for us.<br><code>mysql_secure_installation<\/code><\/p>\n\n\n\n<p>Create our asterisk user and group:<br><code>adduser asterisk -m -c \"Asterisk User\"<\/code><\/p>\n\n\n\n<p>Set permissions on files and folders:<br><code>chown asterisk. \/var\/run\/asterisk<br>chown -R asterisk. \/etc\/asterisk<br>chown -R asterisk. \/var\/{lib,log,spool}\/asterisk<br>chown -R asterisk. \/usr\/lib64\/asterisk<br>chown -R asterisk. \/var\/www\/<\/code><\/p>\n\n\n\n<p>Modify Apache:<br> <code>sed -i 's\/(^upload_max_filesize = ).<em>\/\\120M\/' \/etc\/php.ini sed -i 's\/^(User|Group).<\/em>\/\\1 asterisk\/' \/etc\/httpd\/conf\/httpd.conf<br>sed -i 's\/AllowOverride None\/AllowOverride All\/' \/etc\/httpd\/conf\/httpd.conf<\/code><br><\/p>\n\n\n\n<p>Start Apache:<br><code>systemctl start httpd.service<\/code><\/p>\n\n\n\n<p>Finally, download FreePBX and install;<\/p>\n\n\n\n<p><code>cd \/usr\/src<br>wget http:\/\/mirror.freepbx.org\/modules\/packages\/freepbx\/freepbx-14.0-latest.tgz<br>tar xfz freepbx-14.0-latest.tgz<br>rm -f freepbx-14.0-latest.tgz<br>cd freepbx<\/code><br><\/p>\n\n\n\n<p>Use the FPBX script to start asterisk:<br><code>.\/start_asterisk start<\/code><\/p>\n\n\n\n<p>Run the installer:<br><code>.\/install -n<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"876\" height=\"224\" src=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/freepbx-installed.png\" alt=\"\" class=\"wp-image-10121\" srcset=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/freepbx-installed.png 876w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/freepbx-installed-300x77.png 300w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/freepbx-installed-768x196.png 768w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/freepbx-installed-370x95.png 370w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/freepbx-installed-760x194.png 760w\" sizes=\"(max-width: 876px) 100vw, 876px\" \/><\/figure>\n\n\n\n<p>That should do it! We can complete the setup by accessing the UI through the web browser. Don&#8217;t forget to disable firewalld if you need to gain temporary access and have not set your rules &#8211; <code>systemctl stop firewalld<\/code><\/p>\n\n\n\n<p>Now switch to your browser and navigate to your boxes IP.<\/p>\n\n\n\n<p>Configure admin user details and update settings;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"379\" src=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup1-1024x379.png\" alt=\"\" class=\"wp-image-10124\" srcset=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup1-1024x379.png 1024w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup1-300x111.png 300w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup1-768x284.png 768w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup1-370x137.png 370w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup1-760x281.png 760w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup1.png 1291w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Notifications:<\/strong> Used to send admin emails regarding updates available or that were auto installed, as well as if any modules have been modified. Modified files indicate an intruder may have gained access to your system and changed some FPBX config files.<\/p>\n\n\n\n<p><strong>Auto Updates:<\/strong> This has worked well in my experience but if you want to maintain control and test updates before deploying, disable auto-updates.<\/p>\n\n\n\n<p>You will now be prompted to login with your new user;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"886\" height=\"447\" src=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup2.png\" alt=\"\" class=\"wp-image-10125\" srcset=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup2.png 886w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup2-300x151.png 300w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup2-768x387.png 768w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup2-370x187.png 370w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup2-760x383.png 760w\" sizes=\"(max-width: 886px) 100vw, 886px\" \/><\/figure>\n\n\n\n<p>Timezone and language settings:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"989\" height=\"213\" src=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup3.png\" alt=\"\" class=\"wp-image-10126\" srcset=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup3.png 989w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup3-300x65.png 300w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup3-768x165.png 768w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup3-370x80.png 370w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup3-760x164.png 760w\" sizes=\"(max-width: 989px) 100vw, 989px\" \/><\/figure>\n\n\n\n<p>FreePBX will finish loading the dashboard and initial configs. When that&#8217;s done, complete the setup by pressing the big red &#8220;Apply config&#8221; button.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"166\" src=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup4-1024x166.png\" alt=\"\" class=\"wp-image-10127\" srcset=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup4-1024x166.png 1024w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup4-300x49.png 300w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup4-768x124.png 768w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup4-370x60.png 370w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup4-760x123.png 760w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup4.png 1069w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>&#8220;Oila!&#8221; You&#8217;re ready to start setting up your shiny new phone system \ud83d\ude00<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"378\" src=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup5-1024x378.png\" alt=\"\" class=\"wp-image-10128\" srcset=\"https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup5-1024x378.png 1024w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup5-300x111.png 300w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup5-768x283.png 768w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup5-370x137.png 370w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup5-760x280.png 760w, https:\/\/www.nurango.ca\/blog\/wp-content\/uploads\/sites\/3\/2019\/07\/admin-setup5.png 1287w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Tip:<\/strong> Don&#8217;t forget to setup NAT and Firewall rules under &#8220;Settings&#8221; if applicable.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>I hope this was helpful as it took some time to figure out! If you have any comments or suggestions, please post them down below.<\/p>\n\n\n\n<p><strong>Prefer a hosted VoIP system solution? Check-out our <a href=\"https:\/\/www.nurango.ca\/pricing\">Business VoIP<\/a> plans.<\/strong><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>asterisk combined with FreePBX is a robust and feature rich IP-PBX that is used in small and large scale deployments. It can scale up with little to no effort and can be easily clustered for redundancy and larger capacity needs. Combined with the power of Linux &#8211; CentOS7 in this case, you can maintain, secure and integrate with almost anything. While FreePBX&hellip;<\/p>\n","protected":false},"author":1,"featured_media":10149,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[4],"tags":[6,59,56],"class_list":["post-10116","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guides","tag-asterisk","tag-centos","tag-freepbx"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/posts\/10116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/comments?post=10116"}],"version-history":[{"count":12,"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/posts\/10116\/revisions"}],"predecessor-version":[{"id":10256,"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/posts\/10116\/revisions\/10256"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/media\/10149"}],"wp:attachment":[{"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/media?parent=10116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/categories?post=10116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nurango.ca\/blog\/wp-json\/wp\/v2\/tags?post=10116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}