From 3a28d5d5487baee23a13f72e77862a19a0eed8a7 Mon Sep 17 00:00:00 2001 From: bktan8 Date: Fri, 15 May 2020 16:22:42 -0700 Subject: [PATCH] Tutorial: Create a mirror of upstream update server (#1153) Closes #1133 Signed-off-by: Bun K Tan --- .../mirror-upstream-server-01.png | Bin 0 -> 15617 bytes .../mirror-upstream-server-02.png | Bin 0 -> 15161 bytes source/tutorials/mirror-upstream-server.rst | 244 ++++++++++++++++++ 3 files changed, 244 insertions(+) create mode 100755 source/_figures/mirror-upstream-server/mirror-upstream-server-01.png create mode 100755 source/_figures/mirror-upstream-server/mirror-upstream-server-02.png create mode 100644 source/tutorials/mirror-upstream-server.rst diff --git a/source/_figures/mirror-upstream-server/mirror-upstream-server-01.png b/source/_figures/mirror-upstream-server/mirror-upstream-server-01.png new file mode 100755 index 0000000000000000000000000000000000000000..30511b68157bad3221a93a0f8652fa8ff150856f GIT binary patch literal 15617 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 Fe*t?yt+oIF literal 0 HcmV?d00001 diff --git a/source/_figures/mirror-upstream-server/mirror-upstream-server-02.png b/source/_figures/mirror-upstream-server/mirror-upstream-server-02.png new file mode 100755 index 0000000000000000000000000000000000000000..2846250d866aad2adf46c6ab0e7b9a6f143f42a9 GIT binary patch literal 15161 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 literal 0 HcmV?d00001 diff --git a/source/tutorials/mirror-upstream-server.rst b/source/tutorials/mirror-upstream-server.rst new file mode 100644 index 00000000..126183f4 --- /dev/null +++ b/source/tutorials/mirror-upstream-server.rst @@ -0,0 +1,244 @@ +.. _mirror-upstream-server: + +Mirror Upstream |CL| Update Server +################################## + +For organizations that want to use the |CL| upstream updates, but want the +benefits of a local mirror, this tutorial shows how to set up one and +configure your |CL| clients to use it. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* The recommended disk space for the mirror server should have at least 100GB + of disk space as each complete update content is approximately 45GB. + +Install up |CL| server to host updates +************************************** + +#. Follow the :ref:`bare-metal-install-server` guide to install |CL| server. + Add a user with `Administrator` privilege. + +#. After installation is complete, boot it up. + +#. Add the `wget` bundle. This will be used to clone the upstream |CL| server. + + .. code-block:: bash + + sudo swupd bundle-add wget + +Clone the |CL| update content +***************************** + +|CL| periodically releases a "minversion", which is a complete update. +Then, subsequent releases are small updates until the next minversion. + +Download a minversion to start your mirror. + +#. Determine a proper minversion by looking at a `Manifest.MoM`_ file + for a particular release of |CL|. + + For example, if you look at + https://cdn.download.clearlinux.org/update/33010/Manifest.MoM, + you will see that the minversion is 32900. So clone this version as the + starting point. + + .. code-block:: console + :emphasize-lines: 4 + + MANIFEST 30 + version: 33010 + previous: 33000 + minversion: 32900 + filecount: 1131 + timestamp: 1588358889 + contentsize: 0 + +#. Make a directory to store the cache. + + .. code-block:: bash + + mkdir ~/mirror-download-clearlinux-org && cd $_ + +#. Recursively download the :file:`update/0` folder. + + .. code-block:: bash + + wget --no-verbose \ + --no-parent --recursive \ + --no-host-directories -erobots=off \ + --reject "index.html" https://cdn.download.clearlinux.org/update/0/ + +#. Recursively download the :file:`update/version` folder. + + .. code-block:: bash + + wget --no-verbose \ + --no-parent --recursive \ + --no-host-directories -erobots=off \ + --reject "index.html" https://cdn.download.clearlinux.org/update/version/ + +#. Now, recursively download the determined minversion, which for this example + is 32900. + + .. code-block:: bash + + wget --no-verbose \ + --no-parent --recursive \ + --no-host-directories -erobots=off \ + --reject "index.html" https://cdn.download.clearlinux.org/update/32900/ + + .. note:: + + A minversion is pretty big, which is approximately 45GB. Depending on your + proximity to the upstream server and your connection speed to the Internet, + it may take up to a couple of days or more to complete the download. So + be patient. + +#. Download later versions, up to the latest, if you like. + +Setup a web server to host the mirrored content +*********************************************** + +By design, the |CL| swupd client communicates with the update server using +HTTPS for security reasons. However, it can use HTTP by adding the +:command:`--allow-insecure-http` flag, if needed. Setting an HTTPS is a lot +more involved. For this tutorial, we'll just use an HTTP server for +demonstration purpose. + +#. Install the `nginx` bundle. + + .. code-block:: bash + + sudo swupd bundle-add nginx + +#. Configure the web server. + + a. Create a symbolic link to the mirrored update content directory. + + .. code-block:: bash + + sudo mkdir -p /var/www && cd $_ + sudo ln -sf $HOME/mirror-download-clearlinux-org mirror-download-clearlinux-org + + #. Set up nginx configuration files. + + .. code-block:: bash + + sudo mkdir -p /etc/nginx/conf.d + sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf + + #. Grant $USER permission to run the web server. + + .. code-block:: bash + + sudo tee -a /etc/nginx/nginx.conf << EOF + user $USER; + EOF + + #. Configure the web server. + + .. code-block:: bash + + sudo tee -a /etc/nginx/conf.d/mirror-download-clearlinux-org.conf << EOF + server { + listen 80; + listen [::]:80; + server_name localhost; + location / { + root /var/www/mirror-download-clearlinux-org; + autoindex on; + } + } + EOF + + #. Set nginx to start automatically on boot and then start it. + + .. code-block:: bash + + sudo systemctl enable nginx --now + +Test your mirror +**************** + +Now, try out your mirror by installing |CL| and adding bundles from it. + +#. Download either the live desktop or live server installer ISO of the + `same version` as the mirrored version, which is 32900 for this tutorial. + Go to `https://cdn.download.clearlinux.org/releases//clear`. + +#. Burn the ISO to a thumb drive. See :ref:`bootable-usb`. + +#. Boot it up and start the installer. Depending on which version of + |CL| you want to install, follow one of these guides: + + * *Desktop* version: :ref:`bare-metal-install-desktop` + * *Server* version: :ref:`bare-metal-install-server` + + In the :guilabel:`Advanced options` tab of the installer, select + :guilabel:`Swupd Mirror`. See Figure 1. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/mirror-upstream-server/mirror-upstream-server-01.png + :scale: 100% + :alt: Advanced options > Swupd Mirror + + `Figure 1: Advanced options > Swupd Mirror` + + In the :guilabel:`Mirror URL` field, set it to the IP address of your mirror. It should be something like this: http:///update. + And check the option :guilabel:`Allow installation over insecure connections (http://)`. See Figure 2. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/mirror-upstream-server/mirror-upstream-server-02.png + :scale: 100% + :alt: Advanced options > Mirror URL setting + + `Figure 2: Advanced options > Mirror URL setting` + +#. After installation completes, boot up, and log in. + +#. Verify that the swupd client is pointing to your mirror. + + .. code-block:: bash + + sudo swupd info + + Example output: + + .. code-block:: console + + Warning: This is an insecure connection + The --allow-insecure-http flag was used, be aware that this poses a threat the system + + Distribution: Clear Linux OS + Installed version: 32900 + Version URL: https://192.168.1.100/update + Content URL: https://192.168.1.100/update + +#. Try listing available bundles on your mirror. + + .. code-block:: bash + + sudo swupd bundle-list -a + +#. Add a bundle. + + .. code-block:: bash + + sudo swupd bundle-add + +Keep your mirror in sync with upstream +************************************** + +Be sure to keep your mirror in sync with upstream so that your clients have the +latest and greatest software and security updates. You can do that continuing +to clone the newer upstream releases. + +.. _Manifest.MoM: + https://docs.01.org/clearlinux/latest/reference/manpages/swupd.1.html