{"id":1532,"date":"2020-06-14T00:47:10","date_gmt":"2020-06-13T21:47:10","guid":{"rendered":"https:\/\/helia.ee\/koolitus\/?page_id=1532"},"modified":"2020-06-14T00:47:10","modified_gmt":"2020-06-13T21:47:10","slug":"create-video-stream-your-own-live-video-streaming-server-with-linux","status":"publish","type":"page","link":"https:\/\/helia.ee\/koolitus\/?page_id=1532","title":{"rendered":"Create Video Stream &#8211; Your Own Live Video Streaming Server With Linux"},"content":{"rendered":"<p>Most live streaming tools and sites are free to the public but they often tend to require that you create an account, providing information you may not wish to appear online. They\u00a0<em>can\u00a0<\/em>hold some content behind advertisements and incorporate confusing Terms of Service that they may not even stick to themselves.<\/p>\n<p>There are those who enjoy the ability to stream live, but don\u2019t have a need to have their videos be available to the masses. Instead, they\u2019d prefer to have more control over their stream and the content they produce. Open-source software, like Linux, is the best answer to this obstacle.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" class=\"wp-image-34998 lazyloaded\" src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img.jpg.webp\" sizes=\"(max-width: 680px) 100vw, 680px\" srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img.jpg.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img-300x150.jpg.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img-610x305.jpg.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img-80x40.jpg.webp 80w\" alt=\"\" data-lazy-srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img.jpg.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img-300x150.jpg.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img-610x305.jpg.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img-80x40.jpg.webp 80w\" data-lazy-sizes=\"(max-width: 680px) 100vw, 680px\" data-lazy-src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-img.jpg.webp\" data-was-processed=\"true\" \/><\/figure>\n<\/div>\n<h2><strong>Thinking Ahead<\/strong><\/h2>\n<p>Before you begin setting up your own personal streaming server, you should ask yourself a few questions. First, what quality of stream are you looking for? Next, how many viewers do you expect to pull in? Where will you store all of your streamed content? Who will have access to that content?<\/p>\n<p>System requirements can also be seen as a concern. However, there are no set rules on exactly what you\u2019ll need in this regard, so do yourself a favor and experiment to see what works best for your goals.<\/p>\n<p>You\u2019ll need to figure out which protocol will handle the audio and video portion of the streaming. Real-Time Messaging Protocol (RTMP) is a great choice but there are others, such as WebRTC, that might fare better in your situation. RTMP has broad support so we\u2019ll focus on that for this article.<\/p>\n<p>Another thing to worry about is likely delays in your \u201clive\u201d streaming. Just because you go live doesn\u2019t mean that everything will line up perfectly. Video streams need to be encoded, transferred, buffered, and displayed, so expect the need for a bit of tweaking in the stream\u2019s attributes.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" class=\"wp-image-34999 lazyloaded\" src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3.jpg.webp\" sizes=\"(max-width: 680px) 100vw, 680px\" srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3.jpg.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-300x184.jpg.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-610x373.jpg.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-80x50.jpg.webp 80w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-70x43.jpg.webp 70w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-140x85.jpg.webp 140w\" alt=\"\" data-lazy-srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3.jpg.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-300x184.jpg.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-610x373.jpg.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-80x50.jpg.webp 80w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-70x43.jpg.webp 70w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3-140x85.jpg.webp 140w\" data-lazy-sizes=\"(max-width: 680px) 100vw, 680px\" data-lazy-src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-3.jpg.webp\" data-was-processed=\"true\" \/><\/figure>\n<\/div>\n<h2><strong>Linux Server Setup<\/strong><\/h2>\n<p>Ubuntu Linux is my personal favorite, so that will be the version of choice here. For those who prefer a GUI option,\u00a0<a href=\"https:\/\/www.ubuntu.com\/download\/desktop\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Ubuntu Desktop<\/a>\u00a0is available.<\/p>\n<ul>\n<li>Fire up the Ubuntu installer and choose the settings that best fit your needs. You\u2019ll probably want to set some static network settings since this is going to be used as a server.<\/li>\n<li>Reboot the system after installation if it doesn\u2019t do so automatically. Once the Ubuntu system boots up, install any updates that are available:<\/li>\n<\/ul>\n<pre class=\"wp-block-preformatted\"><strong>sudo apt update<\/strong><\/pre>\n<pre class=\"wp-block-preformatted\"><strong>sudo apt upgrade<\/strong><\/pre>\n<p>We\u2019ll be using\u00a0<strong>Nginx web server<\/strong>\u00a0for this streaming server. Install it:<\/p>\n<pre class=\"wp-block-preformatted\"><strong>sudo apt install nginx<\/strong><\/pre>\n<p>Procure the RTMP module so Nginx can handle your media stream:<\/p>\n<pre class=\"wp-block-preformatted\"><strong>sudo add-apt-repository universe<\/strong><\/pre>\n<pre class=\"wp-block-preformatted\"><strong>sudo apt install libnginx-mod-rtmp<\/strong><\/pre>\n<p>Adjust Nginx\u2019s configuration so that it can accept and deliver your media stream.<\/p>\n<pre class=\"wp-block-preformatted\"><strong>sudo nano \/etc\/nginx\/nginx.conf<\/strong><\/pre>\n<p>Add the following code to the bottom of the config file:<\/p>\n<p><strong>rtmp {<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0server {<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0listen 1935;<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0chunk_size 4096;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0application live {<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0live on;<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0record off;<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/strong><br \/>\n<strong>}<\/strong><\/p>\n<p>Save the config file as we\u2019ll be using it later to create a working streaming server.<\/p>\n<p>Restart Nginx with its new configuration:<\/p>\n<pre class=\"wp-block-preformatted\"><strong>sudo systemctl restart nginx<\/strong><\/pre>\n<h2><strong>Streaming Software Setup<\/strong><\/h2>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" class=\"wp-image-35000 lazyloaded\" src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2.jpg.webp\" sizes=\"(max-width: 680px) 100vw, 680px\" srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2.jpg.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2-300x169.jpg.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2-610x344.jpg.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2-80x45.jpg.webp 80w\" alt=\"\" data-lazy-srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2.jpg.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2-300x169.jpg.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2-610x344.jpg.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2-80x45.jpg.webp 80w\" data-lazy-sizes=\"(max-width: 680px) 100vw, 680px\" data-lazy-src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-2.jpg.webp\" data-was-processed=\"true\" \/><\/figure>\n<\/div>\n<p>The server is ready, so now it\u2019s time to set up your streaming software. Let\u2019s use\u00a0<a href=\"https:\/\/obsproject.com\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Open Broadcaster Software<\/a>\u00a0(OBS) in this run-through.<\/p>\n<ul>\n<li>Head to the site and select the build for Linux. After the software launches, configure OBS with the settings that best match your hardware.<\/li>\n<li>Add a streaming source by clicking the + just under\u00a0<strong>Source<\/strong>.<\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" class=\"wp-image-35001 lazyloaded\" src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-1.png.webp\" sizes=\"(max-width: 205px) 100vw, 205px\" srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-1.png.webp 205w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-1-64x50.png.webp 64w\" alt=\"\" data-lazy-srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-1.png.webp 205w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-1-64x50.png.webp 64w\" data-lazy-sizes=\"(max-width: 205px) 100vw, 205px\" data-lazy-src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-1.png.webp\" data-was-processed=\"true\" \/><\/figure>\n<\/div>\n<ul>\n<li>For testing sake, choose\u00a0<strong>Display Capture<\/strong>, and enter a name for the source.<\/li>\n<li>Click the\u00a0<strong>OK<\/strong>\u00a0button, and OBS will mirror your desktop.<\/li>\n<li>Next, click the\u00a0<strong>File<\/strong>\u00a0tab and choose\u00a0<strong>Settings<\/strong>.<\/li>\n<\/ul>\n<p>In the Stream section, select\u00a0<strong>set Stream Type to Custom\u2026<\/strong>\u00a0and enter the following URL into the Server field:<\/p>\n<pre class=\"wp-block-preformatted\"><strong>rtmp:\/\/IPaddress\/live<\/strong><\/pre>\n<p>In place of\u00a0<strong>IPaddress<\/strong>, enter the IP address of your streaming server.<\/p>\n<p>Now create your own Stream Key and enter it into the Stream key box. Make it something you\u2019ll remember and write it down. For added security, check the\u00a0<strong>Use authentication\u00a0<\/strong>box and add your preferred credentials.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" class=\"wp-image-35002 lazyloaded\" src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2.png.webp\" sizes=\"(max-width: 680px) 100vw, 680px\" srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2.png.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2-300x206.png.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2-610x418.png.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2-73x50.png.webp 73w\" alt=\"\" data-lazy-srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2.png.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2-300x206.png.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2-610x418.png.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2-73x50.png.webp 73w\" data-lazy-sizes=\"(max-width: 680px) 100vw, 680px\" data-lazy-src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/OBS-walkthrough-2.png.webp\" data-was-processed=\"true\" \/><\/figure>\n<\/div>\n<p>Finish with\u00a0<strong>Apply<\/strong>\u00a0followed by the\u00a0<strong>OK<\/strong>\u00a0button.<\/p>\n<p>Everything should now be configured for streaming. To begin your first stream, hit the\u00a0<strong>Stream Now<\/strong>\u00a0button.The button will change to\u00a0<strong>Stop Streaming<\/strong>\u00a0so long as everything was done correctly. Your stream\u2019s bandwidth metrics will appear at the bottom of the OBS window.<\/p>\n<h2><strong>Be Your First Viewer<\/strong><\/h2>\n<p>There are plenty of open source media players that support RTMP, the most well-known of which is\u00a0<a href=\"https:\/\/www.videolan.org\/vlc\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">VLC media player<\/a>. Install and launch this software, click the\u00a0<strong>Media<\/strong>\u00a0tab, and select\u00a0<strong>Open Network Stream<\/strong>\u00a0from the menu.<\/p>\n<p>Got your Stream Key handy? Type the path to your stream, and include the Stream Key you set up earlier, to the end of it. Should look like:<\/p>\n<pre class=\"wp-block-preformatted\"><strong>rtmp:\/\/IPaddress\/live\/SecretKey<\/strong><\/pre>\n<p>Click\u00a0<strong>Play<\/strong>\u00a0and you\u2019ll get a live view of your very own stream.<\/p>\n<h2><strong>Additional Measures<\/strong><\/h2>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" class=\"wp-image-35003 lazyloaded\" src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1.jpg.webp\" sizes=\"(max-width: 680px) 100vw, 680px\" srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1.jpg.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1-300x200.jpg.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1-610x406.jpg.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1-75x50.jpg.webp 75w\" alt=\"\" data-lazy-srcset=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1.jpg.webp 680w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1-300x200.jpg.webp 300w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1-610x406.jpg.webp 610w, https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1-75x50.jpg.webp 75w\" data-lazy-sizes=\"(max-width: 680px) 100vw, 680px\" data-lazy-src=\"https:\/\/helpdeskgeek.com\/wp-content\/pictures\/2019\/08\/Linux-Streamer-Server-1.jpg.webp\" data-was-processed=\"true\" \/><\/figure>\n<\/div>\n<p>Now that the basics have been achieved, limiting access to your streaming server and being able to record and save your videos are two other factors you may be interested in.<\/p>\n<p>By default, anyone can view your stream. This may go against the purpose of creating the server in the first place. You\u2019ll want to set up limited access using a Linux firewall,\u00a0<a href=\"https:\/\/httpd.apache.org\/docs\/current\/howto\/htaccess.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">.htaccess file<\/a>, or the\u00a0<a href=\"https:\/\/github.com\/arut\/nginx-rtmp-module\/wiki\/Directives#access\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">built-in access controls in the RTMP module<\/a>. This choice is left up to you.<\/p>\n<p>The Nginx configuration provided here will only enable you to stream videos, but not save them. To add a storage option, in the Nginx config, just below the RTMP section, you can set up the stream recording options and provide a location to where you want your content saved and stored.<\/p>\n<p>Set an existing path in order to allow Nginx to write to it. Enter the following:<\/p>\n<p><strong>application live {<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0live on;<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0record all;<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0record_path \/var\/www\/html\/recordings;<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0record_unique on;<\/strong><br \/>\n<strong>}<\/strong><\/p>\n<p>That\u2019s all you should need when setting up a live streaming server using the Ubuntu Linux OS. If you\u2019re more interested in a non-live media streaming server, I would suggest the use of\u00a0<a href=\"https:\/\/www.plex.tv\/\">Plex<\/a>\u00a0in place of OBS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most live streaming tools and sites are free to the public but they often tend to require that you create an account, providing information you may not wish to appear online. They\u00a0can\u00a0hold some content behind advertisements and incorporate confusing Terms of Service that they may not even stick to themselves. There are those who enjoy [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-1532","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/helia.ee\/koolitus\/index.php?rest_route=\/wp\/v2\/pages\/1532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helia.ee\/koolitus\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/helia.ee\/koolitus\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/helia.ee\/koolitus\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/helia.ee\/koolitus\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1532"}],"version-history":[{"count":1,"href":"https:\/\/helia.ee\/koolitus\/index.php?rest_route=\/wp\/v2\/pages\/1532\/revisions"}],"predecessor-version":[{"id":1533,"href":"https:\/\/helia.ee\/koolitus\/index.php?rest_route=\/wp\/v2\/pages\/1532\/revisions\/1533"}],"wp:attachment":[{"href":"https:\/\/helia.ee\/koolitus\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}