{"id":305,"date":"2017-12-29T14:18:28","date_gmt":"2017-12-29T14:18:28","guid":{"rendered":"https:\/\/bootstrap-it.com\/blog\/?p=305"},"modified":"2017-12-29T14:20:09","modified_gmt":"2017-12-29T14:20:09","slug":"aws-s3-based-enterprise-network-file-sharing-using-nextcloud","status":"publish","type":"post","link":"https:\/\/bootstrap-it.com\/blog\/?p=305","title":{"rendered":"AWS S3-based enterprise network file sharing using Nextcloud"},"content":{"rendered":"<div id=\"s-share-buttons\" class=\"horizontal-w-c-circular s-share-w-c\"><a href=\"http:\/\/www.facebook.com\/sharer.php?u=https:\/\/bootstrap-it.com\/blog\/?p=305\" target=\"_blank\" title=\"Share to Facebook\" class=\"s3-facebook hint--top\"><\/a><a href=\"http:\/\/twitter.com\/intent\/tweet?text=AWS S3-based enterprise network file sharing using Nextcloud&url=https:\/\/bootstrap-it.com\/blog\/?p=305\" target=\"_blank\"  title=\"Share to Twitter\" class=\"s3-twitter hint--top\"><\/a><a href=\"http:\/\/reddit.com\/submit?url=https:\/\/bootstrap-it.com\/blog\/?p=305&title=AWS S3-based enterprise network file sharing using Nextcloud\" target=\"_blank\" title=\"Share to Reddit\" class=\"s3-reddit hint--top\"><\/a><a href=\"http:\/\/www.linkedin.com\/shareArticle?mini=true&url=https:\/\/bootstrap-it.com\/blog\/?p=305\" target=\"_blank\" title=\"Share to LinkedIn\" class=\"s3-linkedin hint--top\"><\/a><a href=\"mailto:?Subject=AWS%20S3-based%20enterprise%20network%20file%20sharing%20using%20Nextcloud&Body=Here%20is%20the%20link%20to%20the%20article:%20https:\/\/bootstrap-it.com\/blog\/?p=305\" title=\"Email this article\" class=\"s3-email hint--top\"><\/a><\/div><div class=\"section-inner sectionLayout--insetColumn\">\n<p id=\"9e28\" class=\"graf graf--p graf-after--h3\"><em class=\"markup--em markup--p-em\">This article is excerpted from my Manning book,\u00a0<\/em><a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.manning.com\/books\/linux-in-action?a_aid=bootstrap-it&amp;a_bid=4ca15fc9\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https:\/\/www.manning.com\/books\/linux-in-action?a_aid=bootstrap-it&amp;a_bid=4ca15fc9\"><em class=\"markup--em markup--p-em\">Linux in Action<\/em><\/a><em class=\"markup--em markup--p-em\">.<\/em><\/p>\n<p id=\"bba0\" class=\"graf graf--p graf-after--p\">Nextcloud is an open source software suite that, when installed on a Linux server, can leverage storage capacity for saving, editing, and consuming a wide range of document types\u200a\u2014\u200aincluding services like audio\/video call hosting. Nextcloud also provides _client_ applications that allow users on Linux, Windows, MacOS, and smart phone platforms to engage with media resources.<\/p>\n<p id=\"9f9f\" class=\"graf graf--p graf-after--p\">Using Nextcloud, you can create your own private versions of Dropbox or Google Drive, but on your terms and without having to worry about unexpected changes to availability or service\/privacy agreements.<\/p>\n<p id=\"7481\" class=\"graf graf--p graf-after--p\">So great. Nextcloud has some real benefits. But going it alone means you\u2019re on the hook for the costs and complexity of data hosting, replication, and backups. Is it really worth all the trouble and expense when you can get lots of storage at little or no cost using any one of those other services?<\/p>\n<p id=\"ac33\" class=\"graf graf--p graf-after--p\">Good news: you can have it both ways. For particularly sensitive data, you can keep the whole thing in-house. But you can also build a Nextcloud server as your front end (to finely control how users interface with your media), but have the data itself automatically and securely saved to cheaper, reliable third party services including Dropbox, Google Drive, and Amazon\u2019s S3. If, down the line, you find you need to migrate your data away from a third-party provider like S3, you can do it without your users ever noticing the change.<\/p>\n<h4 id=\"bfcf\" class=\"graf graf--h4 graf-after--p\">Hardware prerequisites<\/h4>\n<p id=\"f0a6\" class=\"graf graf--p graf-after--h4\">Let\u2019s put something together using Ubuntu.<\/p>\n<p id=\"975e\" class=\"graf graf--p graf-after--p\">It\u2019s always a good idea to check out an application\u2019s documentation to make sure that you\u2019ve got enough hardware and software muscle to handle the load. The figure below shows Nextcloud\u2019s System Requirements web page. If you\u2019re planning to host a simple, lightly-used server providing for just a few dozen users, then you\u2019ll find Nextcloud is a fairly easy to get along with, demanding nothing that can\u2019t be handled by an off-the-shelf container.<\/p>\n<\/div>\n<div class=\"section-inner sectionLayout--outsetColumn\">\n<figure id=\"246d\" class=\"graf graf--figure graf--layoutOutsetCenter graf-after--p\" data-scroll=\"native\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*1oQwQ-u6yDbY2D6rPmnULQ.png\" data-width=\"1920\" data-height=\"1080\" data-action=\"zoom\" data-action-value=\"1*1oQwQ-u6yDbY2D6rPmnULQ.png\" data-scroll=\"native\">\n<p>&nbsp;<\/p>\n<div style=\"width: 1010px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*1oQwQ-u6yDbY2D6rPmnULQ.png\" alt=\"\" width=\"1000\" height=\"562\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*1oQwQ-u6yDbY2D6rPmnULQ.png\" \/><p class=\"wp-caption-text\">Hardware and software requirements for both recommended and minimal Nextcloud installations<\/p><\/div>\n<\/div>\n<\/div>\n<\/figure>\n<\/div>\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p id=\"2916\" class=\"graf graf--p graf-after--figure\">Any old minimal hardware configuration will work just fine for technology testing, but I wouldn\u2019t want to rely on a single LXC container running off an old PC to serve tens of thousands of users and terabytes of data. Planning an enterprise-scale deployment? Nextcloud\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/docs.nextcloud.com\/server\/12\/admin_manual\/installation\/deployment_recommendations.html\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https:\/\/docs.nextcloud.com\/server\/12\/admin_manual\/installation\/deployment_recommendations.html\">provides a useful, multi-level Deployment Recommendations guide<\/a>\u00a0to provisioning full-strength platforms.<\/p>\n<p id=\"b8af\" class=\"graf graf--p graf-after--p\">Here, for instance, is what Nextcloud recommends for a smaller work group with up to 150 users accessing up to 10TB of data:<\/p>\n<ul class=\"postList\">\n<li id=\"8ad7\" class=\"graf graf--li graf-after--p\">One sever with 2 CPU cores<\/li>\n<li id=\"78e3\" class=\"graf graf--li graf-after--li\">16GB of RAM<\/li>\n<li id=\"3282\" class=\"graf graf--li graf-after--li\">Authentication through Lightweight Directory Access Protocol (LDAP) (a widely-used distributed information protocol)<\/li>\n<li id=\"b709\" class=\"graf graf--li graf-after--li\">Red Hat Enterprise Linux or Ubuntu 16.04 _with_ vendor support<br \/>\nApache with TLS\/SSL encryption certificate<\/li>\n<li id=\"10c8\" class=\"graf graf--li graf-after--li\">The MySQL or MariaDB database<\/li>\n<li id=\"f7a2\" class=\"graf graf--li graf-after--li\">The Btrfs file system mounted with _nodatacow_ for Nextcloud data partitions to permit _zero downtime_ backups<\/li>\n<li id=\"2dcc\" class=\"graf graf--li graf-after--li\">Caching with memcache to speed up access performance<\/li>\n<\/ul>\n<h4 id=\"2623\" class=\"graf graf--h4 graf-after--li\">Building a LAMP\u00a0server<\/h4>\n<p id=\"5882\" class=\"graf graf--p graf-after--h4\">Building a base environment suitable for testing the package should be simple enough. Here are all the packages you\u2019ll need for your server in a single command. I threw in wget and nano just in case they\u2019re not already installed. In the interest of keeping the base image as small as possible, packages like nano are often not installed by default on some virtualized platforms like LXC containers.<\/p>\n<pre id=\"a62a\" class=\"graf graf--pre graf-after--p\"># apt install apache2 mariadb-server libapache2-mod-php7.0 \\\r\n php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring \\\r\n php7.0-intl php7.0-mcrypt php-imagick php7.0-xml php7.0-zip \\\r\n wget nano<\/pre>\n<p id=\"500b\" class=\"graf graf--p graf-after--pre\">If you\u2019re not picky about using MySQL rather than MariaDB\u200a\u2014\u200aand you\u2019re on an Ubuntu server\u200a\u2014\u200athen you could just as easily spare yourself a lot of typing and go with the LAMP server metapackage I mentioned in the previous chapter. Again: don\u2019t forget the caret (`^`) at the end of the package name.<\/p>\n<pre id=\"b173\" class=\"graf graf--pre graf-after--p\"> # apt install lamp-server^<\/pre>\n<p id=\"2593\" class=\"graf graf--p graf-after--pre\">Once installed, don\u2019t forget to run the MySQL secure installation tool:<\/p>\n<pre id=\"82d0\" class=\"graf graf--pre graf-after--p\"># mysql_secure_installation<\/pre>\n<p id=\"fb74\" class=\"graf graf--p graf-after--pre\">If you chose the MariaDB route and found yourself having to use sudo with that command, here\u2019s a quick fix:<\/p>\n<pre id=\"2708\" class=\"graf graf--pre graf-after--p\">MariaDB [(none)]&gt; SET PASSWORD = PASSWORD(\u2018your-password\u2019);\r\nMariaDB [(none)]&gt; update mysql.user set plugin = \u2018mysql_native_password\u2019 where User=\u2019root\u2019;\r\nMariaDB [(none)]&gt; FLUSH PRIVILEGES;<\/pre>\n<h4 id=\"dbb3\" class=\"graf graf--h4 graf-after--pre\">Apache configuration<\/h4>\n<p id=\"7c60\" class=\"graf graf--p graf-after--h4\">To ensure that Apache will be able to communicate with Nextcloud, there are a few relatively simple adjustments you\u2019re going to have to make. First off, you should enable a couple of Apache modules through the a2enmod tool. The rewrite module is used to rewrite URLs in real time as they\u2019re moved between a client and the server. The headers module performs a similar function for HTTP headers.<\/p>\n<pre id=\"45a1\" class=\"graf graf--pre graf-after--p\"># a2enmod rewrite\r\n# a2enmod headers<\/pre>\n<p id=\"45ab\" class=\"graf graf--p graf-after--pre\">If you\u2019re not planning to use this server for any other purpose, locating the Nextcloud application files in the Apache document root would work. Since the value of the `DocumentRoot` entry in the 000-default.conf file in your \/etc\/apache2\/sites-available\/ directory already points to \/var\/www\/html\/, there\u2019s really nothing left for you to do.<\/p>\n<p id=\"10e1\" class=\"graf graf--p graf-after--p\">However, placing Nextcloud\u2019s data files in the default document root presents a potential security risk, so you will probably want your Nextcloud application in some other part of your file system.<\/p>\n<p id=\"b108\" class=\"graf graf--p graf-after--p\">There are two ways to tell Apache how to find site files that aren\u2019t in the document root. The \u201cUbuntu method\u201d involves adding a new section to your existing 000-default.conf file that contains all the necessary information. However, most people seem to prefer creating a new\u00a0.conf file in the \/etc\/apache2\/sites-available\/ directory for each new service. Both work just fine, but here\u2019s what the separate file should look like assuming you placed the application in \/var\/www\/ rather than the document root:<\/p>\n<pre id=\"833c\" class=\"graf graf--pre graf-after--p\">Alias \/nextcloud \u201c\/var\/www\/nextcloud\/\u201d<\/pre>\n<pre id=\"4a3a\" class=\"graf graf--pre graf-after--pre\">&lt;Directory \/var\/www\/nextcloud\/&gt;\r\n Options +FollowSymlinks\r\n AllowOverride All<\/pre>\n<pre id=\"579e\" class=\"graf graf--pre graf-after--pre\">&lt;IfModule mod_dav.c&gt;\r\n Dav off\r\n &lt;\/IfModule&gt;<\/pre>\n<pre id=\"e7b3\" class=\"graf graf--pre graf-after--pre\">SetEnv HOME \/var\/www\/nextcloud\r\n SetEnv HTTP_HOME \/var\/www\/nextcloud<\/pre>\n<pre id=\"eb55\" class=\"graf graf--pre graf-after--pre\">&lt;\/Directory&gt;<\/pre>\n<p id=\"83a7\" class=\"graf graf--p graf-after--pre\">Note that the \u201cAlias\u201d line associates the contents of the \/var\/www\/nextcloud\/ directory with the \u201cnextcloud\u201d host (or \u201csite\u201d), and the two \u201cSenEnv\u201d lines assign environment variables that will define the way the Nextcloud application works<\/p>\n<p id=\"e3a4\" class=\"graf graf--p graf-after--p\">A similar directive using the Ubuntu method would involve adding a section in your 000-default.conf file that might look something like this:<\/p>\n<pre id=\"6fad\" class=\"graf graf--pre graf-after--p\">&lt;VirtualHost *:443&gt; &lt;1&gt;\r\n ServerName bootstrap-it.com\r\n DocumentRoot \/var\/www\/nextcloud\r\n ServerAlias bootstrap-it.com\/nextcloud &lt;2&gt;\r\n&lt;\/VirtualHost&gt;<\/pre>\n<p id=\"cfc8\" class=\"graf graf--p graf-after--pre\">As you can see in the figure, when Apache reads this file, it will redirect all incoming traffic addressed to example.com\/nextcloud to the application files in \/var\/www\/ (assuming, again, that your domain is example.com\u2026as before, an IP address will work just as well).<\/p>\n<\/div>\n<div class=\"section-inner sectionLayout--outsetColumn\">\n<figure id=\"469c\" class=\"graf graf--figure graf--layoutOutsetCenter graf-after--p\" data-scroll=\"native\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*qpVPhfV9gRBKpBvHaFvi8g.png\" data-width=\"1502\" data-height=\"901\" data-is-featured=\"true\" data-action=\"zoom\" data-action-value=\"1*qpVPhfV9gRBKpBvHaFvi8g.png\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"42\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*qpVPhfV9gRBKpBvHaFvi8g.png\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*qpVPhfV9gRBKpBvHaFvi8g.png\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">Apache reads configuration files in \/etc\/apache2\/sites-enabled\/ and uses their settings to redirect\u00a0requests<\/figcaption><\/figure>\n<\/div>\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p id=\"df6f\" class=\"graf graf--p graf-after--figure\">Finally, you\u2019ll need to create a symbolic link in the \/etc\/apache2\/sites-enabled\/ directory pointing to the nextcloud.conf file you created in \/etc\/apache2\/sites-available\/.<\/p>\n<pre id=\"d8d3\" class=\"graf graf--pre graf-after--p\"># ln -s \/etc\/apache2\/sites-available\/nextcloud.conf \\\r\n    \/etc\/apache2\/sites-enabled\/nextcloud.conf<\/pre>\n<p id=\"faa1\" class=\"graf graf--p graf-after--pre\">But why? And what\u2019s a symbolic link?<\/p>\n<p id=\"6fee\" class=\"graf graf--p graf-after--p\">When Apache starts up, it reads the contents of \/etc\/apache2\/sites-enabled\/ looking for site configurations to load. Those configurations won\u2019t actually exist in \/etc\/apache2\/sites\/enabled\/, but there will be symbolic links to the real files in \/etc\/apache2\/sites-available\/.<\/p>\n<p id=\"13b4\" class=\"graf graf--p graf-after--p\">So why not just tell Apache to read \/etc\/apache2\/sites-available\/ in the first place and cut out the middleman? Because hanging it all on symbolic links makes it really easy and convenient to quickly disable a site and then\u200a\u2014\u200awhen you\u2019ve finished a round of edits\u200a\u2014\u200are-enable it once again. Rather than having to actually delete and rewrite the real file, you\u2019ll only need to play with an easy-to-manage link to it.<\/p>\n<p id=\"8cbe\" class=\"graf graf--p graf-after--p\">Symbolic links? They\u2019re just objects that\u00a0<em class=\"markup--em markup--p-em\">represent<\/em>\u00a0files or directories living elsewhere on a file system. They allow a user to execute or view a resource in one place, even though the resource itself is elsewhere.<\/p>\n<h4 id=\"5b31\" class=\"graf graf--h4 graf-after--p\">Downloading and unpacking Nextcloud<\/h4>\n<p id=\"9c9d\" class=\"graf graf--p graf-after--h4\">You can download the most recent Nextcloud package from the\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/nextcloud.com\/install\/\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https:\/\/nextcloud.com\/install\/\">Nextcloud Install page<\/a>. If you\u2019re installing to a container or VM\u200a\u2014\u200aor from a server without a desktop GUI installed\u200a\u2014\u200athen the most convenient approach is to get the package\u2019s download URL and grab the package from the command line.<\/p>\n<p id=\"ff64\" class=\"graf graf--p graf-after--p\">One quick way to get that URL from the Nextcloud site (from a regular session on your own PC) is to click the Download tab beneath Get Nextcloud Server and then, as you can see below, the Details and Download options button. Right click on the\u00a0.tar.bz2 link and select Copy Link Address from the menu.<\/p>\n<\/div>\n<div class=\"section-inner sectionLayout--outsetColumn\">\n<figure id=\"2599\" class=\"graf graf--figure graf--layoutOutsetCenter graf-after--p\" data-scroll=\"native\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*QCGSaGcpfG0I3koimYLrrA.png\" data-width=\"1920\" data-height=\"1080\" data-action=\"zoom\" data-action-value=\"1*QCGSaGcpfG0I3koimYLrrA.png\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"40\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*QCGSaGcpfG0I3koimYLrrA.png\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*QCGSaGcpfG0I3koimYLrrA.png\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">Links to Nextcloud download archives: either the\u00a0.tar.bz2 or the\u00a0.zip formats will\u00a0work<\/figcaption><\/figure>\n<\/div>\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p id=\"146f\" class=\"graf graf--p graf-after--figure\">You can copy that URL into a `wget` command either through right-clicking in the terminal and selecting paste, or through SHIFT+CTRL+v.<\/p>\n<pre id=\"3a34\" class=\"graf graf--pre graf-after--p\">$ wget <a class=\"markup--anchor markup--pre-anchor\" href=\"https:\/\/download.nextcloud.com\/server\/releases\/nextcloud-12.0.0.tar.bz2\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https:\/\/download.nextcloud.com\/server\/releases\/nextcloud-12.0.0.tar.bz2\">https:\/\/download.nextcloud.com\/server\/releases\/nextcloud-12.0.0.tar.bz2<\/a><\/pre>\n<p id=\"a3b5\" class=\"graf graf--p graf-after--pre\">Don\u2019t forget to click the MD5 or SHA256 hash links and confirm that those values are identical to the hashes you generate from the downloaded archive. Unpacking a\u00a0.tar.bz2 archive requires the xjf arguments rather than the `xzf` you would use for a\u00a0.gz.<\/p>\n<pre id=\"3079\" class=\"graf graf--pre graf-after--p\">$ tar xjf nextcloud-12.0.0.tar.bz2<\/pre>\n<p id=\"3918\" class=\"graf graf--p graf-after--pre\">The next step involves copying the unpacked files and directories to their new home\u200a\u2014\u200awhich, following the best practices I mentioned earlier\u200a\u2014\u200awill be in \/var\/www\/, a location outside the document root. Adding -r to the copy command will copy the files \u201crecursively\u201d, to include subdirectories and their contents.<\/p>\n<pre id=\"a209\" class=\"graf graf--pre graf-after--p\"># cp -r nextcloud \/var\/www\/<\/pre>\n<p id=\"757b\" class=\"graf graf--p graf-after--pre\">Just two more small steps and you\u2019re good to go. Apache will need full access to all the files in the Nextcloud directories in order to do its job. You could have root own them, but that means you\u2019d have to give visiting users root powers to access those files. As you might imagine, giving everyone on the internet that kind of access to your files poses just a wee problem. So, many web servers use a special system user called www-data.<\/p>\n<p id=\"941b\" class=\"graf graf--p graf-after--p\">This next command will use chown to turn the user and group ownership of all those files over to the web server user www-data. Using the uppercase -R will (like the lowercase -r you used with cp) apply the command recursively to all files and directories in the directory hierarchy.<\/p>\n<pre id=\"ea9c\" class=\"graf graf--pre graf-after--p\"># chown -R www-data:www-data \/var\/www\/nextcloud\/<\/pre>\n<p id=\"ba29\" class=\"graf graf--p graf-after--pre\">Apache has no idea of the kinds of stuff we\u2019ve been up to while it wasn\u2019t looking, so you\u2019d better let it in on the fun by restarting the service.<\/p>\n<pre id=\"b7f8\" class=\"graf graf--pre graf-after--p\"># systemctl restart apache2<\/pre>\n<p id=\"0f0a\" class=\"graf graf--p graf-after--pre\">If that restart _wasn\u2019t_ successful, then make a note of any error messages and see if there\u2019s anything you can fix. You can also dig a bit deeper into the logs by displaying the last ten entries in the Journal. There might, for instance, be a reference to a specific line in the nextcloud.conf file.<\/p>\n<pre id=\"f980\" class=\"graf graf--pre graf-after--p\"># journalctl | tail<\/pre>\n<p id=\"9550\" class=\"graf graf--p graf-after--pre\">But if everything went well, then direct your browser to your container\u2019s IP address followed by `nextcloud`. You\u2019ll be taken to a page where you\u2019re asked to create a new admin account and provide valid login credentials for your MariaDB database. Unless you\u2019ve created a different database user account for the purpose, you\u2019ll use `root` and the password you gave it earlier.<\/p>\n<pre id=\"3f60\" class=\"graf graf--pre graf-after--p\">10.0.3.36\/nextcloud<\/pre>\n<p id=\"facd\" class=\"graf graf--p graf-after--pre\">Once your information is digested, you\u2019ll be shown links to Nextcloud\u2019s client apps and then dropped into the administration console you can see in the next figure. That\u2019s where you can upload, view, and share documents and media files.<\/p>\n<\/div>\n<div class=\"section-inner sectionLayout--outsetColumn\">\n<figure id=\"5ea0\" class=\"graf graf--figure graf--layoutOutsetCenter graf-after--p\" data-scroll=\"native\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*SeK-xAj6C76LbnnS6DA2Hw.png\" data-width=\"1920\" data-height=\"1080\" data-action=\"zoom\" data-action-value=\"1*SeK-xAj6C76LbnnS6DA2Hw.png\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"40\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*SeK-xAj6C76LbnnS6DA2Hw.png\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*SeK-xAj6C76LbnnS6DA2Hw.png\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">The main Nextcloud console, complete with sample folders and files\u200a\u2014\u200ayou can work with objects here just as you would using an OS file\u00a0manager<\/figcaption><\/figure>\n<\/div>\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p id=\"baf3\" class=\"graf graf--p graf-after--figure\">As the site administrator, you can also create groups and users, assign permissions and quotas, and manage how the site functions.<\/p>\n<h4 id=\"c95f\" class=\"graf graf--h4 graf-after--p\">Using AWS S3 as your primary Nextcloud storage<\/h4>\n<p id=\"c81c\" class=\"graf graf--p graf-after--h4\">The thing about storing stuff is that you have to find space to put it all. And, since all storage devices will eventually fail without warning, you\u2019ll need multiple copies of each device. Figuring out how to provision, connect, and maintain such storage arrays is time consuming, and keeping it going is relatively expensive.<\/p>\n<p id=\"d314\" class=\"graf graf--p graf-after--p\">Cloud storage, on the other hand, is comparatively cheap and\u200a\u2014\u200aas you can read in my Manning \u201c<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.manning.com\/books\/learn-amazon-web-services-in-a-month-of-lunches?a_aid=bootstrap-it&amp;amp;a_bid=1c1b5e27\" target=\"_blank\" rel=\"noopener nofollow\" data-href=\"https:\/\/www.manning.com\/books\/learn-amazon-web-services-in-a-month-of-lunches?a_aid=bootstrap-it&amp;amp;a_bid=1c1b5e27\">Learn Amazon Web Services in a Month of Lunches<\/a>\u201d book\u200a\u2014\u200asimple to set up. Since the big cloud providers invest vast funds in data security and resilience, their services are pretty much guaranteed to be more reliable than anything you could put together.<\/p>\n<p id=\"b27b\" class=\"graf graf--p graf-after--p\">Therefore, using cloud-based data as a back end to your locally hosted Nextcloud site is a serious option to explore. Here\u2019s how it works.<\/p>\n<p id=\"e3fe\" class=\"graf graf--p graf-after--p\">You\u2019ll first need to enable the External storage support App bundle. From the gear icon at the top right, click the Apps item, and then the Disabled apps link in the left panel. As the figure shows, the External storage support option appears in the list. Click Enable.<\/p>\n<\/div>\n<div class=\"section-inner sectionLayout--outsetColumn\">\n<figure id=\"5c51\" class=\"graf graf--figure graf--layoutOutsetCenter graf-after--p\" data-scroll=\"native\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*-a0H9uIuRfKA7VrqYSGuqg.png\" data-width=\"1920\" data-height=\"1080\" data-action=\"zoom\" data-action-value=\"1*-a0H9uIuRfKA7VrqYSGuqg.png\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"40\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*-a0H9uIuRfKA7VrqYSGuqg.png\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*-a0H9uIuRfKA7VrqYSGuqg.png\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">The list of currently available apps, including External storage\u00a0support<\/figcaption><\/figure>\n<\/div>\n<div class=\"section-inner sectionLayout--insetColumn\">\n<h4 id=\"b80f\" class=\"graf graf--h4 graf-after--figure\">Connect Nextcloud to an S3\u00a0bucket<\/h4>\n<p id=\"3e93\" class=\"graf graf--p graf-after--h4\">From the command line on any computer with the AWS CLI installed and configured for your AWS account (see\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/livebook.manning.com\/#!\/book\/learn-amazon-web-services-in-a-month-of-lunches\/chapter-12\/\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https:\/\/livebook.manning.com\/#!\/book\/learn-amazon-web-services-in-a-month-of-lunches\/chapter-12\/\">chapter 12 of my AWS in a Month of Lunches book<\/a>\u00a0for details), create a new bucket with a globally unique name.<\/p>\n<pre id=\"ce83\" class=\"graf graf--pre graf-after--p\">$ aws s3 mb nextcloud32327<\/pre>\n<p id=\"4f7e\" class=\"graf graf--p graf-after--pre\">Retrieve a set of account Access Keys from the Your Security Credentials page in the AWS console (<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/livebook.manning.com\/#!\/book\/learn-amazon-web-services-in-a-month-of-lunches\/chapter-7\/\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https:\/\/livebook.manning.com\/#!\/book\/learn-amazon-web-services-in-a-month-of-lunches\/chapter-7\/\">chapter 7 in the AWS book<\/a>). You can also use an existing set of keys if you\u2019ve got one available.<\/p>\n<p id=\"beda\" class=\"graf graf--p graf-after--p\">Now head back to your Nextcloud console, click on Admin from the gear drop-down, and then on the External storages link that should be visible in the left panel. This will open the External storages page, where you can click the Add storage drop-down and select Amazon S3 from the list\u200a\u2014\u200awhich also includes Dropbox and Google Drive.<\/p>\n<p id=\"259c\" class=\"graf graf--p graf-after--p\">You\u2019ll be prompted to enter the S3 bucket you want to use along with your Access and Secret keys. All other fields\u200a\u2014\u200awhich allow you to customize your configuration using things like non-standard ports or SSL encryption\u200a\u2014\u200aare optional. When you\u2019re done, clicking the check mark to the right will save your settings and set Nextcloud off trying to authenticate with AWS.<\/p>\n<p id=\"66a9\" class=\"graf graf--p graf-after--p\">If you\u2019re successful, you\u2019ll see a happy green circle to the left, as is visible in the figure. If it doesn\u2019t work, the most likely cause is that you somehow used invalid authentication keys. It can\u2019t hurt to confirm network connectivity to the internet and, in particular, AWS.<\/p>\n<\/div>\n<div class=\"section-inner sectionLayout--outsetColumn\">\n<figure id=\"a19f\" class=\"graf graf--figure graf--layoutOutsetCenter graf-after--p\" data-scroll=\"native\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*zbG4uS8cvDADuCnLH1Rpkg.png\" data-width=\"1920\" data-height=\"1080\" data-action=\"zoom\" data-action-value=\"1*zbG4uS8cvDADuCnLH1Rpkg.png\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"40\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*zbG4uS8cvDADuCnLH1Rpkg.png\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*zbG4uS8cvDADuCnLH1Rpkg.png\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">The External storages setup page for Amazon S3, showing a successful connection to my S3\u00a0bucket<\/figcaption><\/figure>\n<\/div>\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p id=\"7f13\" class=\"graf graf--p graf-after--figure\">You can test your new storage configuration by copying and pasting a file from your computer into the folder in your Nextcloud console. Then, from your AWS CLI, list the contents of your bucket.<\/p>\n<pre id=\"69a8\" class=\"graf graf--pre graf-after--p\">$ aws s3 ls s3:\/\/nextcloud32327\r\ntestfile.pdf<\/pre>\n<p id=\"4d7b\" class=\"graf graf--p graf-after--pre\">Of course, you\u2019ll need to test it the other way too. Copy a local file to the bucket from your command line.<\/p>\n<pre id=\"117f\" class=\"graf graf--pre graf-after--p\">$ aws s3 cp test.txt s3:\/\/nextcloud32327<\/pre>\n<p id=\"1d5b\" class=\"graf graf--p graf-after--pre\">That test.txt file should appear in your console. Glorious multi-platform storage integration.<\/p>\n<p id=\"32bf\" class=\"graf graf--p graf-after--p graf--trailing\"><em class=\"markup--em markup--p-em\">This article &#8211; which originally appeared on <a href=\"https:\/\/medium.com\/@dbclin\">my Medium account<\/a>, is excerpted from my\u00a0<\/em><a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.manning.com\/books\/linux-in-action?a_aid=bootstrap-it&amp;a_bid=4ca15fc9\" target=\"_blank\" rel=\"noopener nofollow\" data-href=\"https:\/\/www.manning.com\/books\/linux-in-action?a_aid=bootstrap-it&amp;a_bid=4ca15fc9\"><em class=\"markup--em markup--p-em\">Manning \u201cLinux in Action\u201d book<\/em><\/a><em class=\"markup--em markup--p-em\">. There\u2019s lots more fun\u00a0<\/em><a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/bootstrap-it.com\/index.php\/books\/\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https:\/\/bootstrap-it.com\/index.php\/books\/\"><em class=\"markup--em markup--p-em\">where this came from<\/em><\/a><em class=\"markup--em markup--p-em\">. Who knows\u2026you might also enjoy my recently published\u00a0<\/em><a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.manning.com\/books\/learn-amazon-web-services-in-a-month-of-lunches?a_aid=bootstrap-it&amp;amp;a_bid=1c1b5e27\" target=\"_blank\" rel=\"noopener nofollow\" data-href=\"https:\/\/www.manning.com\/books\/learn-amazon-web-services-in-a-month-of-lunches?a_aid=bootstrap-it&amp;amp;a_bid=1c1b5e27\"><em class=\"markup--em markup--p-em\">Learn Amazon Web Services in a Month of Lunches<\/em><\/a><em class=\"markup--em markup--p-em\">.<\/em><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This article is excerpted from my Manning book,\u00a0Linux in Action. Nextcloud is an open source software suite that, when installed on a Linux server, can leverage storage capacity for saving, editing, and consuming a wide range of document types\u200a\u2014\u200aincluding services&hellip; <a href=\"https:\/\/bootstrap-it.com\/blog\/?p=305\" class=\"more-link\">Continue Reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":307,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-305","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.2.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AWS S3-based enterprise network file sharing using Nextcloud - Bootstrap IT<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bootstrap-it.com\/blog\/?p=305\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AWS S3-based enterprise network file sharing using Nextcloud - Bootstrap IT\" \/>\n<meta property=\"og:description\" content=\"This article is excerpted from my Manning book,\u00a0Linux in Action. Nextcloud is an open source software suite that, when installed on a Linux server, can leverage storage capacity for saving, editing, and consuming a wide range of document types\u200a\u2014\u200aincluding services&hellip; Continue Reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bootstrap-it.com\/blog\/?p=305\" \/>\n<meta property=\"og:site_name\" content=\"Bootstrap IT\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-29T14:18:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-29T14:20:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bootstrap-it.com\/blog\/wp-content\/uploads\/nextcloud-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"599\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"dbclin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@davidbclinton\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"dbclin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/?p=305\",\"url\":\"https:\/\/bootstrap-it.com\/blog\/?p=305\",\"name\":\"AWS S3-based enterprise network file sharing using Nextcloud - Bootstrap IT\",\"isPartOf\":{\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#website\"},\"datePublished\":\"2017-12-29T14:18:28+00:00\",\"dateModified\":\"2017-12-29T14:20:09+00:00\",\"author\":{\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/ae0fb1d5b3b01558b92b6426d77766ec\"},\"breadcrumb\":{\"@id\":\"https:\/\/bootstrap-it.com\/blog\/?p=305#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bootstrap-it.com\/blog\/?p=305\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/?p=305#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/bootstrap-it.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AWS S3-based enterprise network file sharing using Nextcloud\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#website\",\"url\":\"https:\/\/bootstrap-it.com\/blog\/\",\"name\":\"Bootstrap IT\",\"description\":\"Learn technology using technology\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bootstrap-it.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/ae0fb1d5b3b01558b92b6426d77766ec\",\"name\":\"dbclin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a93785d437350478a7f1dfcbec58d26bc28e0124e405179acbe1b4325c09f90a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a93785d437350478a7f1dfcbec58d26bc28e0124e405179acbe1b4325c09f90a?s=96&d=mm&r=g\",\"caption\":\"dbclin\"},\"sameAs\":[\"http:\/\/bootstrap-it.com\/\",\"dbclinton\",\"https:\/\/twitter.com\/davidbclinton\"],\"url\":\"https:\/\/bootstrap-it.com\/blog\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AWS S3-based enterprise network file sharing using Nextcloud - Bootstrap IT","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bootstrap-it.com\/blog\/?p=305","og_locale":"en_US","og_type":"article","og_title":"AWS S3-based enterprise network file sharing using Nextcloud - Bootstrap IT","og_description":"This article is excerpted from my Manning book,\u00a0Linux in Action. Nextcloud is an open source software suite that, when installed on a Linux server, can leverage storage capacity for saving, editing, and consuming a wide range of document types\u200a\u2014\u200aincluding services&hellip; Continue Reading &rarr;","og_url":"https:\/\/bootstrap-it.com\/blog\/?p=305","og_site_name":"Bootstrap IT","article_published_time":"2017-12-29T14:18:28+00:00","article_modified_time":"2017-12-29T14:20:09+00:00","og_image":[{"width":1000,"height":599,"url":"https:\/\/bootstrap-it.com\/blog\/wp-content\/uploads\/nextcloud-image.png","type":"image\/png"}],"author":"dbclin","twitter_card":"summary_large_image","twitter_creator":"@davidbclinton","twitter_misc":{"Written by":"dbclin","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bootstrap-it.com\/blog\/?p=305","url":"https:\/\/bootstrap-it.com\/blog\/?p=305","name":"AWS S3-based enterprise network file sharing using Nextcloud - Bootstrap IT","isPartOf":{"@id":"https:\/\/bootstrap-it.com\/blog\/#website"},"datePublished":"2017-12-29T14:18:28+00:00","dateModified":"2017-12-29T14:20:09+00:00","author":{"@id":"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/ae0fb1d5b3b01558b92b6426d77766ec"},"breadcrumb":{"@id":"https:\/\/bootstrap-it.com\/blog\/?p=305#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bootstrap-it.com\/blog\/?p=305"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/bootstrap-it.com\/blog\/?p=305#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bootstrap-it.com\/blog"},{"@type":"ListItem","position":2,"name":"AWS S3-based enterprise network file sharing using Nextcloud"}]},{"@type":"WebSite","@id":"https:\/\/bootstrap-it.com\/blog\/#website","url":"https:\/\/bootstrap-it.com\/blog\/","name":"Bootstrap IT","description":"Learn technology using technology","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bootstrap-it.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/ae0fb1d5b3b01558b92b6426d77766ec","name":"dbclin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a93785d437350478a7f1dfcbec58d26bc28e0124e405179acbe1b4325c09f90a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a93785d437350478a7f1dfcbec58d26bc28e0124e405179acbe1b4325c09f90a?s=96&d=mm&r=g","caption":"dbclin"},"sameAs":["http:\/\/bootstrap-it.com\/","dbclinton","https:\/\/twitter.com\/davidbclinton"],"url":"https:\/\/bootstrap-it.com\/blog\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=305"}],"version-history":[{"count":2,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/305\/revisions"}],"predecessor-version":[{"id":308,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/305\/revisions\/308"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/307"}],"wp:attachment":[{"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}