<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>LES Talk — LowEndSpirit DEV</title>
        <link>https://dev.lowendspirit.com/index.php?p=/</link>
        <pubDate>Fri, 10 Apr 2026 21:01:47 +0000</pubDate>
        <language>en</language>
            <description>LES Talk — LowEndSpirit DEV</description>
    <atom:link href="https://dev.lowendspirit.com/index.php?p=/categories/les-talk/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Test Talk</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/4489/test-talk</link>
        <pubDate>Sat, 27 Aug 2022 04:06:12 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Mason</dc:creator>
        <guid isPermaLink="false">4489@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Another test</p>
]]>
        </description>
    </item>
    <item>
        <title>Alternatives to CentOS -- After The Storm by vyas</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/4049/alternatives-to-centos-after-the-storm-by-vyas</link>
        <pubDate>Thu, 14 Apr 2022 03:47:38 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>vyas</dc:creator>
        <guid isPermaLink="false">4049@/index.php?p=/discussions</guid>
        <description><![CDATA[<h1 data-id="alternatives-to-centos-after-the-storm">Alternatives to CentOs- After The Storm</h1>

<p>Welcome to this first post of 2022 on the LES Blog!</p>

<p>Nearly 14 months have passed since the seminal announcement by Red Hat about the End of Life (EOL) for CentOs8. The much loved server oriented Linux distribution did reach it EOL on December 31, 2021. Over this period, how have the users coped up? What are the alternatives they have settled for? Did the predictions of doom and gloom really come true? Finally, which of the several alternative projects have made the greatest headway or found  the highest user acceptance? Read on to learn more. <br /><br /><img src="https://talk.lowendspirit.com/uploads/editor/2h/lcz0t11ueysb.jpg" width="400x" alt="CentOS logo- Wikimedia Commons" /><br /><br />
Source: Wikimedia Commons</p>

<blockquote><div>
  <p>You can listen to the audio version of this post at (<a rel="nofollow" href="https://studio.lovo.ai/share/o/61227312-55da-4eef-a759-13e6cdecd6c8/60d4551aab24d20012ab6216">External Link</a>)</p>
</div></blockquote>

<h3 data-id="in-this-post">In This Post</h3>

<ol><li><a rel="nofollow" href="#Background">Background: RedHat Discontinues development for CentOs8</a></li>
<li><a rel="nofollow" href="#Adversity-Opportunity">Every Adversity is an Opportunity</a></li>
<li><a rel="nofollow" href="#Alternatives-CentOs8">Do We Have "Good" Alternatives?</a></li>
<li><a rel="nofollow" href="#Alma-Rocky">Alma Linux and Rocky Linux</a></li>
<li><a rel="nofollow" href="#Other-Alternatives">Other Alternatives to CentOs8</a></li>
<li><a rel="nofollow" href="#CentOs-Stream">What About CentOs Stream and CentOs7?</a></li>
<li><a rel="nofollow" href="#End-CentOs8-Era">Wrapping Up: End of CentOs8 Era</a></li>
<li><a rel="nofollow" href="#Fun-Reading">Optional reading - For Fun's Sake</a></li>
</ol><h2 data-id="background-december-2020-centos-project-closing-its-doors">Background: December 2020- CentOs project closing its doors <a name="Background"></a></h2>

<p>In early December 2020, the folks at Red Hat Linux had made the announcement that CentOS 8, the latest version of the open source server oriented operating system, <a rel="nofollow" href="https://blog.centos.org/2020/12/future-is-centos-stream/">would reach its end of life on December 31, 2021</a>. Development of Centos 9 would stop. CentOs project would focus on something called <a rel="nofollow" href="https://www.centos.org/centos-stream/">CentOs Stream</a>, instead of  a server distribution that was <em>downstream</em> of Read Hat Linux.</p>

<p>Naturally, there was a lot of hue and cry among the users of CentOS in particular, and  the open source community in general. The recurring view expressed was that an open source project that was backed by a large company, which decided to shut it down, leaving the users abandoned. The large company, Red Hat Linux, <a rel="nofollow" href="https://www.redhat.com/en/about/press-releases/ibm-closes-landmark-acquisition-red-hat-34-billion-defines-open-hybrid-cloud-future">had itself been acquired by a much bigger tech company</a>, - none other than Big Blue  a.k.a IBM.</p>

<h2 data-id="every-adversity-is-an-opportunity">Every Adversity is an opportunity? <a name="Adversity-Opportunity"></a></h2>

<p>Since the day of the announcement, several expected and un-expected things happened.</p>

<p>a. There was an uproar in the tech community, and discussions on Reddit and web hosting forums, including this one.</p>

<p>b. Two new major projects were announced: Rocky Linux and Alma Linux. Both are backed by well known names in the Linux world. The trend of announcing new alternatives to CentOS continues. As recently as January 2022, SuSe Linux have proposed their own alternative to CentOs, <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/3716/liberty-linux-yaca-yet-another-centos-alternative/">called Liberty Linux</a>. And if you scroll below to the "Piece De Resistance" section below, you may be in for a surprise.</p>

<p>c. Media houses, publications, bloggers and YouTubers all began to come up with "<a rel="nofollow" href="https://duckduckgo.com/?q=alternatives+to+cent0s+2022">Alternatives to CentOs</a>" type of posts. Some posted good alternatives, others simply drew up a  random lists of operating systems <a rel="nofollow" href="https://www.g2.com/products/centos/competitors/alternatives">which included Windows 10!</a></p>

<p>d. Competitors such as Oracle began to run promotions trying to woo away users into the fold of Oracle Linux.</p>

<blockquote><div>
  <p>They say, every adversity is an opportunity. Maybe for the real change makers over the long run. In reality, in the short term, it is the opportunists who can also benefit.</p>
</div></blockquote>

<p>What turns out to be true in this case? Read on to find out...</p>

<h3 data-id="it-s-good-to-have-alternatives-but-do-we-have-good-alternatives">It's good to have alternatives... but do we have "Good" alternatives?<a name="Alternatives-CentOs8"></a></h3>

<p>My main intention here is to see where things stand nearly 14 months after the Red Hat announcement was made. In early February 2022, we will be in the fifth or sixth week since CentOs 8 reached its end of life. given this timeline, some of the questions I was keen to understand were:</p>

<p>a. Many alternatives to CentOs were proposed as in the multiple lists prepared by different publications. You can read some of them <a rel="nofollow" href="https://www.zdnet.com/article/where-centos-linux-users-can-go-from-here/">here</a> and <a rel="nofollow" href="https://www.makeuseof.com/best-centos-alternatives/">here</a>. Have the users really migrated to one of the many alternatives that are that were proposed?</p>

<p>b. What made them choose one option over another? Did any move to CentOs Stream?</p>

<p>c. What is the feedback about these alternatives? Which one really gained traction among the users?</p>

<h2 data-id="taking-a-look-user-feedback-and-beyond">Taking a Look: User feedback and beyond</h2>

<h3 data-id="alma-linux-and-rocky-linux-the-dynamic-duo">Alma Linux and Rocky Linux - The Dynamic Duo<a name="Alma-Rocky"></a></h3>

<blockquote><div>
  <p>While researching for this article, it has become evident that the two most popular CentOS alternatives are <a rel="nofollow" href="https://almalinux.org/">AlmaLinux</a> and <a rel="nofollow" href="https://rockylinux.org/">Rocky Linux</a>. The former is created by the folks at <a rel="nofollow" href="https://cloudlinux.com">Cloud Linux</a>, while the latter is set up by one of the original co-founders of CentOS.</p>
</div></blockquote>

<p>No matter which publication or resource once one looks at, these two names keep coming up right at the top.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/lq/vxbixr2p5o2g.png" width="400" alt="Logo of Alma Linux" /><br /><br />
Source: Alma Linux</p>

<p>Alma Linux has a very good comparison of features, organizational structure, etc. for some of the alternative If you scroll below, you will find a table comparing the different alternative: CentOs, Alma Linux, Rocky Linux, Oracle Linux and Red Hat . Alma Linux is an open a community based distribution from the folks at Cloud Linux. Rocky Linux is a private limited company started by one of the original co founders of CentOS. The former is a nonprofit, latter is a for profit setup.  They both offer scripts that help the users migrate from CentOS to their respective distributions. Compatibility with Red Hat Enterprise Linux support, end of life cycles etc are pretty much identical.</p>

<p>Source: <a rel="nofollow" href="https://wiki.almalinux.org/Comparison.html">Alma Linux</a><br /><img src="https://talk.lowendspirit.com/uploads/editor/5l/64k85bxcq7s8.jpg" alt="Comparison of alternatives to CentOs. Source: Alma Linux" /><br /></p>

<p>Some of the limitations of the alternatives were discussed extensively across Reddit, HackerNews and other sources. Some of the below also came up <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/3751/call-for-inputs-from-providers-users-centos-alternatives-2022">in this discussion right here on LES</a>. They include, in no particular order,</p>

<ul><li>Community, or lack of</li>
<li>Longevity of the teams or support from the organizations behind the projects</li>
<li>Maturity of the products</li>
<li>Backing by large Corporates. Some people were not happy with Corporate support for some of the newer projects- the Red Hat experience probably left a bad taste.</li>
</ul><p>Computingforgeeks has a good list of features that discusses the pro's and con's of the different <a rel="nofollow" href="https://computingforgeeks.com/rocky-linux-vs-centos-stream-vs-rhel-vs-oracle-linux/">alternatives to CentOs</a>. You can also read this <a rel="nofollow" href="https://www.reddit.com/r/linuxadmin/comments/r55u96/alma_or_rocky_linux_and_why/">discussion on Reddit</a> and on <a rel="nofollow" href="https://news.ycombinator.com/item?id=28213775">Hackernews</a>. For those who prefer the Video version, here is a decent resource that explains the difference between Rocky and Alma Linux.</p>

<blockquote><div>
  <p><span data-youtube="youtube-Iwafps4PnPI?autoplay=1"><a rel="nofollow" href="https://www.youtube.com/watch?v=Iwafps4PnPI"><img src="https://img.youtube.com/vi/Iwafps4PnPI/0.jpg" width="640" height="385" border="0" alt="image" /></a></span></p>
</div></blockquote>

<p><strong>Update April 2022</strong>: <a rel="nofollow" href="Distrowatch.com">Distrowatch.com</a> in their <a rel="nofollow" href="https://distrowatch.com/weekly.php?issue=20220404#news">April 4, 2022 edition of weekly newsletter (Issue 962)</a> mentions an article by FOSS Force which talks about Alma Linux as the most favored replacement for CentOs.</p>

<h3 data-id="the-next-most-discussed-talked-about-alternatives-to-centos">The Next most discussed/ talked about alternatives to CentOs <a name="Other-Alternatives"></a></h3>

<p>Based on anecdotal experience and discussion with the LES community, I did  not encounter many users who have taken up any of the other alternatives. This includes Oracle Linux. Granted this is a small subset of the user base, it does give a data point to be considered.  With that in mind, I am listing a few alternatives that I have come across nonetheless.</p>

<h5 data-id="oracle-linux">Oracle Linux</h5>

<p>Oracle Linux is based on Red Hat Enterprise Linux. Oracle even created a page on its website targeting CentOS users. They have developed a script that can convert existing CentOS installations to Oracle Linux. This distribution is free to use, but support contract is available for a charge.<br /><img src="https://talk.lowendspirit.com/uploads/editor/hw/5kzdhgcowav7.png" alt="Screenshot of Oracle Linux" /><br /><br />
Source:Wikimedia commons</p>

<p>According to the <a rel="nofollow" href="https://en.wikipedia.org/wiki/Oracle_Linux">Wikipedia page for this distribution</a>,</p>

<blockquote><div>
  <p>Oracle Linux is ..."available partially under the GNU General Public License since late 2006.[4] It is compiled from Red Hat Enterprise Linux (RHEL) source code, replacing Red Hat branding with Oracle's."</p>
</div></blockquote>

<h4 data-id="liberty-linux-project-by-suse-linux">Liberty Linux (project by Suse Linux)</h4>

<p>This is the newest kid on the block, I had posted about it in the LES forum. Too early to discuss or comment, pending further updates, I will <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/3716/liberty-linux-yaca-yet-another-centos-alternative/p1">leave you with the link to the LES discussion</a>.</p>

<h4 data-id="springdale-linux">Springdale Linux</h4>

<p>This is a project by the  members of the computing staff of Princeton University and the Institute for Advanced Study, this was earlier known as PUIAS Linux. They describe themselves as a "Custom Red Hat based Distribution and Mirror." Among other things they have an Interesting Webpage !!  The design reminds us of the early years of the World Wide Web.</p>

<blockquote><div>
  <p>visit <a rel="nofollow" href="https://springdale.math.ias.edu/timeline">Springdale Linux</a> to learn more.</p>
</div></blockquote>

<h4 data-id="clearos">ClearOS</h4>

<p>ClearOs offer commercial and community edition, as per the discussion on ClearOS forums, this <a rel="nofollow" href="https://www.clearos.com/clearfoundation/social/community/is-clearos-still-under-active-development">may not be a long term viable alternative </a></p>

<h3 data-id="vzlinux">VZLinux</h3>

<p>This is a CentOs based distribution from folks at Virtuozzo. You can download the image files from: <br /><a href="https://repo.virtuozzo.com/vzlinux/8/iso/" rel="nofollow">https://repo.virtuozzo.com/vzlinux/8/iso/</a></p>

<p>Other than the above, I did not find much written or talked about this alternative to CentOs.</p>

<h4 data-id="fedora-server">Fedora Server</h4>

<p>Fedora is primarily a desktop oriented distribution, and a server version of Fedora, while possible and even capable, does not make a lot of sense. Atleast to me. According to one of the posts I came across on the topic,</p>

<blockquote><div>
  <p>Fedora server also follows short lifecycle. It is a community-supported operating system. Paid or commercial support option does not exist, and the lifecycle makes it less appealing as an alternative.</p>
</div></blockquote>

<h3 data-id="what-about-centos-stream">What about CentOs Stream? <a name="CentOs-Stream"></a></h3>

<p>Would you really consider moving to CentOS Stream for your servers? I have not found a definitive "Heck Yes" or "Hell, No!" answer to this query. Nor have, it appears <a rel="nofollow" href="https://thenewstack.io/centos-9-stream-is-now-available-but-should-you-use-it/">these guys</a>.<br /><br /><img src="https://talk.lowendspirit.com/uploads/editor/ux/hs77wp8k2myh.png" width="400" alt="CentOS Stream" /><br /><br />
Source: Postgresweb</p>

<h4 data-id="are-you-perfectly-happy-with-centos-7">Are you perfectly happy with CentOs 7?</h4>

<p>If you are happy with CentOs7, or belong to the <em>if-it-ain't-broke-don't-fix-it</em> school, then you have atleast 30 plus months of updates for CentOs coming from Red Hat. The Frequently Asked Question page on CentOs site <a rel="nofollow" href="https://www.redhat.com/en/blog/faq-centos-stream-updates">confirms the same</a>. In that case, should the <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/3751/call-for-inputs-from-providers-users-centos-alternatives-2022">EOL for CentOs 8creally be a concern for you</a>?</p>

<hr /><h3 data-id="and-now-the-pice-de-rsistance-a-server-linux-distribution-from-microsoft">And now, the pièce de résistance: A server Linux distribution from Microsoft</h3>

<p>This one is real guys, and no more a joke in the Linux and open source communities. (Anybody remember Lindows.. er.. <a rel="nofollow" href="https://www.linspirelinux.com/">Linspire</a>?)<br />
edit: The project is still alive! That's cool.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/b6/b9de0a2lvvus.png" alt="Linspire Desktop" /><br /><br />
Source: Wikipedia</p>

<p>The Linux distribution from Microsoft, called CBL-Mariner, is based off Fedora and Linux From Scratch.  Form the github page for CBL-Mariner, <a href="https://github.com/microsoft/CBL-Mariner" rel="nofollow">https://github.com/microsoft/CBL-Mariner</a></p>

<blockquote><div>
  <p>CBL-Mariner is an internal Linux distribution for Microsoft’s cloud infrastructure and edge products and services. CBL-Mariner is designed to provide a consistent platform for these devices and services and will enhance Microsoft’s ability to stay current on Linux updates. This initiative is part of Microsoft’s increasing investment in a wide range of Linux technologies, such as SONiC, Azure Sphere OS and Windows Subsystem for Linux (WSL). CBL-Mariner is being shared publicly as part of Microsoft’s commitment to Open Source and to contribute back to the Linux community. CBL-Mariner does not change our approach or commitment to any existing third-party Linux distribution offerings.</p>
</div></blockquote>

<h3 data-id="wrapping-it-up-nearing-the-end-of-the-centos-era">Wrapping it up: Nearing the end of the CentOS Era <a name="End-CentOs8-Era"></a></h3>

<p>It is great to see several alternatives for CentOs, which is one of the beauties of the Open Source world. The challenge, as always, is that it presents a problem of plenty. Many folks in the LES Community- web hosts or the advanced users who used CentOs previously, seem to have converged towards Alma Linux or Rocky Linux. Among the rest of the list- Oracle Linux might have some users, given that many members on both the green forums have atleast one instance of <a rel="nofollow" href="https://blogs.oracle.com/cloud-infrastructure/post/oracle-builds-out-their-portfolio-of-oracle-cloud-infrastructure-always-free-services">Oracle Free tier</a>.</p>

<p>I hope that this post has captured the "After the Storm" scenario since CentOS8 reached EOL. Over the long run, I intend it will offer a handy resource for the LES community. In addition to the top two alternatives (Rocky Linux and Alma Linux), there is a long tail of "also consider" alternatives. Which is one of the real beautiful things about the Linux and Open Source world.</p>

<hr /><h2 data-id="further-optional-reading-ffs-for-fun-s-sake">Further (Optional) reading: FFs (For Fun's Sake)<a name="Fun-Reading"></a></h2>

<p>While researching for this post, the search results threw some junk posts. I am adding a few of them below to add a flavor of humor. For example, <strong>really useless practices by some of the reviewers and authors</strong>. These included:</p>

<blockquote><div>
  <p>Some reviewers did a desktop review of Alma Linux, as in literally installing graphical interfaces. They spent a lot of time talking about how GNOME performed on this distribution versus KDE. One person even, did a screen capture of games being played on Alma Linux. Not sure if any server admins run GUI or play Steam games on their production servers.</p>
</div></blockquote>

<p><img src="https://www.how2shout.com/linux/wp-content/uploads/2021/03/command-to-install-KDE-plasma-desktop-GUI-AlmaLinux.jpg" alt="How To Shout article showing Alma Linux Desktop" /><br /><br />
Source: HowtoShout</p>

<p>The Techmint guys aren't too far behind : <a href="https://www.tecmint.com/wp-content/uploads/2021/06/AlmaLinux-Desktop.png" rel="nofollow">https://www.tecmint.com/wp-content/uploads/2021/06/AlmaLinux-Desktop.png</a></p>

<p><strong>Windows 10 as an alternative to CentOS? Really??</strong><br /><a rel="nofollow" href="https://www.g2.com/products/centos/competitors/alternatives">g2 smokes some cheap stuff.</a></p>

<p><strong>The Roll your eyeballs version</strong><br />
Simply copy and paste names of popular Linux distributions, and not really doing any favor to the reader.  <a rel="nofollow" href="https://www.hostingseekers.com/blog/centos-alternatives/">Hostingseekers, you need therapy</a></p>

<hr /><p><strong>Author's Note</strong>:</p>

<p>I put together this post with the intention of creating a handy resource for readers here on the Low End Spirit blog. I am not a user of CentOS or any of its derivatives. Even though I began my Linux Journey with Red Hat 6 (Zoot), my poison of choice for many years has been Debian. Or, grudgingly, I use Ubuntu LTS where the Software as a Service (SaaS) vendors require me to use it.</p>

<p>This post presented an opportunity first and foremost to understand what is going on in the CentOS world, or the CentOS extended universe. (To borrow a phrase from the Marvel Universe). I have not done any installation or testing of my own for the purposes of this article.My interest was mainly in understanding what has been the market acceptance over the past few months. One hopes that has been served well.</p>

<p>For any questions or comments, write to me at <a rel="nofollow" href="http://" title="contact+les@amarvyas.in">contact+les@amarvyas.in</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Tip: Install OS via netboot.xyz without ISO support</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/2210/tip-install-os-via-netboot-xyz-without-iso-support</link>
        <pubDate>Sat, 05 Dec 2020 19:07:54 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>ehab</dc:creator>
        <guid isPermaLink="false">2210@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>It can happen your vm provider has a broken iso mount or does not support it at all. You can install your OS using netboot.xyz the following way:</p>

<p>1- Have your vm already installed with one of the provided templates e.g: <strong>debian 9</strong>.  ssh into your vm as root install the ipxe package:</p>

<p><code spellcheck="false" tabindex="0"># apt-get install ipxe</code><br /><code spellcheck="false" tabindex="0"># update-grub</code></p>

<p>Get your ip, gateway from your vm info email, provider cp or on debian this way and store it as it will be needed later.</p>

<p><code spellcheck="false" tabindex="0"># cat /etc/network/interfaces</code><br />
or <br /><code spellcheck="false" tabindex="0"># ip r</code></p>

<p><code spellcheck="false" tabindex="0"># reboot</code></p>

<p>2-  From your vnc or console, you should be able to see similar grub menu</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/89/p5ref5ubzzkz.png" alt="" title="" /></p>

<p>after you press enter then quickly keep pressing <strong>CTRL+B</strong>  ,or you can set to boot from CD only in you cp... then you should</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/gp/yvf6khru9zp1.png" alt="" title="" /></p>

<p>enter your ip info you stored from the above step 1 like show in next image</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/85/nmyulta4p1o1.png" alt="" title="" /></p>

<p>if your vm supports ipv6 then it may try to configure it so you press enter like shown:</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/zn/ecukkfl0pmi6.png" alt="" title="" /></p>

<p>let it boot and should be good <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/ey/cms1cy48k78r.png" alt="" title="" /></p>

<p>I wrote this article when i got a HH vm and uploading iso is broken at time of this article.</p>

<p><strong>References :</strong><br />
1- <a href="https://unix.stackexchange.com/questions/190865/is-it-possible-to-add-some-pxe-network-boot-option-to-grub" rel="nofollow">https://unix.stackexchange.com/questions/190865/is-it-possible-to-add-some-pxe-network-boot-option-to-grub</a><br />
2- <a href="http://www.panticz.de/Install-GRUB-iPXE-netboot" rel="nofollow">http://www.panticz.de/Install-GRUB-iPXE-netboot</a></p>
]]>
        </description>
    </item>
    <item>
        <title>How to Create and Setup a Debian KVM VPS with Proxmox VE 6 -- Part III -- Network Configuration</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3933/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-iii-network-configuration</link>
        <pubDate>Fri, 23 Jul 2021 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">3933@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Not_Oles" rel="nofollow">@Not_Oles</a>, 23 Jul 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/n9/cixat1djj0ag.png" alt="image" /></p>

<h2 data-id="i-before-we-start">I. Before We Start</h2>

<p>We need to obtain our basic network configuration from our provider. Or, if we are running our own host node, we need to assign basic network configuration to ourselves. Our basic network configuration might look something like this:</p>

<table><thead><tr><th><strong>Item</strong></th>
  <th><strong>Value</strong></th>
</tr></thead><tbody><tr><td>IPv4 address</td>
  <td>172.16.165.97/28</td>
</tr><tr><td>Netmask</td>
  <td>255.255.255.240</td>
</tr><tr><td>Broadcast</td>
  <td>172.16.165.111</td>
</tr><tr><td>Gateway</td>
  <td>172.16.164.1</td>
</tr></tbody></table><p>For IPv6, one might expect something like:</p>

<table><thead><tr><th><strong>Item</strong></th>
  <th><strong>Value</strong></th>
</tr></thead><tbody><tr><td>IPv6 address</td>
  <td>fe80::/64</td>
</tr></tbody></table><p>But occasionally, IPv6 could be something like:</p>

<table><thead><tr><th><strong>Item</strong></th>
  <th><strong>Value</strong></th>
</tr></thead><tbody><tr><td>IPv6 address</td>
  <td>fe80:xxxx:xxxx:xxxx::97/128</td>
</tr><tr><td>Gateway6</td>
  <td>fe80:xxxx:xxxx:xxxx::3</td>
</tr></tbody></table><p>Notes:</p>

<ul><li>The /28 in the IPv4 address and the longer netmask are <a rel="nofollow" href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#:~:text=CIDR%20notation%20is%20a%20compact,bits%20in%20the%20network%20mask.">different ways of providing the same information about the size of the local, directly connected network.</a> It suffices for us to have this information in one format or the other. We don't need both formats because the information is the same. Also, the broadcast IP might not be provided, since it isn't strictly necessary.</li>
<li>For the second format of the IPv6 address, <strong>what happened to the /64</strong>? 😱 The /128 in the second form of the IPv6 address might seem <strong><em>clueless</em></strong> to IPv6 fans expecting a /64. Also, the second format of the IPv6 address includes a gateway6 address. The gateway6 address might seem strange to some IPv6 fans, but we need the gateway6 for our minimal, static configuration. More on all this below.</li>
</ul><h2 data-id="ii-introduction">II. Introduction</h2>

<p>In <a rel="nofollow" href="https://lowendspirit.com/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-ii-debian-install/">the previous post of this series</a> we finished using the Proxmox web GUI to install our new Debian KVM VPS via the <a rel="nofollow" href="https://www.debian.org/CD/netinst/">Debian netinst installer iso image.</a> The final step in Part II was removing the netinst install iso image from the emulated cdrom and then reooting our new VM, which came up from its own internal filesystem:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/hs/2qx8afaew937.png" alt="" title="" /></p>

<p>In today's post, we continue from this exact place where we left Part II -- connected to our newly installed and newly rebooted KVM via the Proxmox web GUI. In this post, we will accomplish the networking configuration which was skipped in Part II because the <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/63101/#Comment_63101">Debian netinst iso doesn't automatically configure out of band IP addresses.</a></p>

<p>There are three network configuration and related tasks we will accomplish today:</p>

<ul><li>First, we go "inside" our VM through the Proxmox web GUI's emulated "physical" console connection and set up networking. In Debian, networking setup requires that we adjust the file /etc/network/interfaces to tell our VM its network address and the address of its gateway to the internet.</li>
<li>Second, we edit the file /etc/resolv.conf to tell our VM the numerical addresses of <a rel="nofollow" href="https://en.wikipedia.org/wiki/Domain_Name_System">Domain Name System ("DNS")</a> servers it can use to translate human readable <a rel="nofollow" href="https://en.wikipedia.org/wiki/Uniform_Resource_Identifier">Uniform Resource Identifiers (URI)</a> into numerical <a rel="nofollow" href="https://en.wikipedia.org/wiki/IP_address">Internet Protocaol ("IP") addresses.</a></li>
<li>Third, we set up /etc/apt/sources.list to tell our system's <a rel="nofollow" href="https://www.debian.org/doc/manuals/debian-faq/uptodate.en.html">Aptitude software package manager ("APT")</a> where to get software updates and the additional software packages we will want to install.</li>
</ul><p>Section III, Quick Setup, runs quickly through all three of today's tasks in "recipe style."</p>

<p>Section IV offers additional context on our setup environment.</p>

<p>Sections V, VI, and VII provide additional details on today's three setup tasks.</p>

<p>Section VIII discusses security.</p>

<p>Section IX discusses backup.</p>

<p>When we finish the Quick Setup, our new Debian KVM VPS should be connected to the internet, DNS should work, and we should be able to use the Debian package system to add whatever additional software we want.</p>

<p>When we finish all of today's post, we should have reasonable context within which to understand our Debian VM's networking setup.</p>

<h2 data-id="iii-quick-setup">III. Quick Setup</h2>

<p>Logged into our VM through the Proxmox web GUI, we run the command <code spellcheck="false" tabindex="0">ip link show</code>. This command will give us the name of our network interface, probably something like "ens18."</p>

<p>As root or with <code spellcheck="false" tabindex="0">sudo</code>, we edit the text of the file /etc/network/interfaces so that it contains the minimum necessary information:</p>

<pre spellcheck="false" tabindex="0">auto ens18
iface ens18 inet static
  address IPv4_ADDRESS/CIDR
  gateway GATEWAY_ADDRESS

iface ens18 inet6 static
  address IPv6_ADDRESS/CIDR
  gateway GATEWAY6_ADDRESS
</pre>

<p>Using our example network configuration, our minimal /etc/network/interfaces looks like this:</p>

<pre spellcheck="false" tabindex="0">auto ens18
iface ens18 inet static
  address 172.16.165.97/28
  gateway 172.16.164.1

iface ens18 inet6 static
  address fe80:xxxx:xxxx:xxxx::97/128
  gateway fe80:xxxx:xxxx:xxxx::3
</pre>

<p>Second, we edit the /etc/resolv.conf file so that it looks like this:</p>

<pre spellcheck="false" tabindex="0">nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 2606:4700:4700::1111
nameserver 2001:4860:4860::8888
</pre>

<p>Third, we edit /etc/apt/sources.list so that it looks like this:</p>

<pre spellcheck="false" tabindex="0">deb http://deb.debian.org/debian buster main contrib non-free

deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free

deb http://deb.debian.org/debian buster-updates main contrib non-free
</pre>

<p>Finally, we restart networking so that our new configuration takes effect:</p>

<pre spellcheck="false" tabindex="0">systemctl restart networking
</pre>

<p>At this point, we should have both IPv4 and IPv6 connectivity, and DNS and APT both should work.</p>

<h2 data-id="iv-more-context">IV. More Context</h2>

<ul><li><strong>Virtualized Console Connection</strong></li>
</ul><p>The Proxmox web GUI virtualizes a wired console connection. In other words, our web browser does connect over the internet to our Proxmox server, but, the view from inside our new KVM is the same as though a wired connection was attached. Our new KVM thinks it's talking over a wired connection to a physical console. From inside our new KVM, there is, as yet, no network connection.</p>

<p>By default, the Proxmox web GUI works via <a rel="nofollow" href="https://en.wikipedia.org/wiki/Virtual_Network_Computing">VNC.</a> <a rel="nofollow" href="https://pve.proxmox.com/wiki/Serial_Terminal">In the Proxmox wiki on serial terminal</a> Proxmox warns that VNC might</p>

<blockquote><div>
  <p>not have the features you need (i.e. easy copy/paste between other terminals)</p>
</div></blockquote>

<p>or it might be</p>

<blockquote><div>
  <p>impossible to capture all [kernel messages, standard output, or error] messages on [the] VNC screen.</p>
</div></blockquote>

<p>Yep, copy / paste commands <a rel="nofollow" href="https://forum.proxmox.com/threads/copy-paste-keys-commands-for-ct-kvm-vnc-console.28037/">do not seem to work in the Proxmox KVM virtual console.</a></p>

<p>Also, if you enjoy using the vi editor, you might find what looks like a "Send-Esc" button among the set of choices within the set exposed by the top button on the console VNC control bar. Use of the real keyboard Escape key results in exiting full screen. However, a second real Esc seems to produce the expected mode change, despite that maybe we no longer can see too well without returning to full screen.</p>

<ul><li><strong>No DHCP, No SLAAC</strong></li>
</ul><p>These days most network setups use <a rel="nofollow" href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol">Dynamic Host Configuration Protocol (DHCP)</a> to autoconfigure IPv4 networking. The machine on which networking is to be configured asks for and receives from a DHCP server all the needed information for the networking setup.</p>

<p>It is possible to configure DHCP so that it always returns the same IP address to each VM, but, since our entire Proxmox network is static, it may be simpler to set up networking manually--the traditional way for servers.</p>

<p><a rel="nofollow" href="https://en.wikipedia.org/wiki/IPv6#Stateless_address_autoconfiguration_(SLAAC)">Stateless Address Autoconfiguration ("SLAAC")</a> provides automatic configuration of IPv6 addresses. SLAAC requires a /64, which is why people say, for IPv6, that a /64 is expected and that less than a /64 is <em>clueless.</em> However, it remains possible to hand configure a single static IPv6 address, as we are doing here.</p>

<p>What if, for whatever reason, we simply do not want to use SLAAC? What if our provider doesn't receive enough IPv6 addresses from <em>his</em> provider to allow passing on to each VPS its own /64? What if our provider's provider charges an extra fee for extra IPv6 addresses, but we do not want to pay our provider's pass through of his provider's extra fee? What if we simply choose to use single, static IPs as is traditional for servers?</p>

<ul><li><strong>No Cloud-Init</strong></li>
</ul><p>As mentioned in <a rel="nofollow" href="https://lowendspirit.com/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-ii-debian-install/">the previous post of this series,</a> most VM network setups these days are done with <a rel="nofollow" href="https://github.com/canonical/cloud-init">Cloud-Init.</a> Proxmox <a rel="nofollow" href="https://pve.proxmox.com/wiki/Cloud-Init_Support">supports Cloud-Init,</a> which enables both networking and ssh access to virtual machines to be set up on the Proxmox hypervisor and outside of the VM. Cloud-init can use DHCP. Here, however, we have chosen the simplest possible manual configuration with static IPs.</p>

<ul><li><strong>Our Static, Routed Configuration And Out of Band Gateway From Our Provider's Provider</strong></li>
</ul><p>Here, our single, static IPv4 and single, static IPv6 are each derived from a <a rel="nofollow" href="https://en.wikipedia.org/wiki/Routing">routed subnet</a> assigned to our server node. However, our internet gateway IPv4 address is not included among our server's routed group of IPv4s. This is called an "out of band" gateway.</p>

<p>Besides routed subnets, it also is possible for a datacenter to assign to servers non-routed, individual IP addresses. Data for these non-routed IPs moves between the datacenter switch and server nodes via <a rel="nofollow" href="https://en.wikipedia.org/wiki/Network_layer">the "link layer."</a> Hetzner has a <a rel="nofollow" href="https://docs.hetzner.com/robot/dedicated-server/network/net-config-debian/">tutorial on Debian network configuration</a> which includes discussion of "bridged configuration" for non-routed IPs.</p>

<ul><li><strong>Systemd in Debian Networking</strong></li>
</ul><p><a rel="nofollow" href="https://lwn.net/Articles/585319/">Since about 2014,</a> networking is setup on Debian with <a rel="nofollow" href="https://en.wikipedia.org/wiki/Systemd">systemd.</a> The choice of systemd <a rel="nofollow" href="https://lwn.net/Articles/585363/">initially was</a> and <a rel="nofollow" href="https://www.howtogeek.com/675569/why-linuxs-systemd-is-still-divisive-after-all-these-years/">has continued to be divisive.</a> Nevertheless systemd has remained as the Debian default.</p>

<p>There are at least two basic variations of Debian's systemd network arrangement. The first--which seems to be the default variation for Debian systemd network configuration--at least with the netinst iso--is using systemd's networking.service. For example, by using <code spellcheck="false" tabindex="0">systemctl</code>, we can confirm that networking.service is what is being used on our Node:</p>

<pre spellcheck="false" tabindex="0">root@Proxmox-VE ~ # systemctl status networking.service
● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: 
   Active: active (exited) since Wed 2021-06-02 19:13:13 UTC; 1 weeks 2 days ago
     Docs: man:interfaces(5)
 Main PID: 791 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   Memory: 0B
   CGroup: /system.slice/networking.service

 [ . . . ]
root@Proxmox-VE ~ # 
</pre>

<p>Our test KVM also seems to think its networking is controlled by systemd:</p>

<pre spellcheck="false" tabindex="0">root@debian-kvm:~# systemctl status networking
● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2021-06-16 01:20:45 UTC; 4min 51s ago
     Docs: man:interfaces(5)
  Process: 448 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=0/SUCCESS)
 Main PID: 448 (code=exited, status=0/SUCCESS)

Jun 16 01:20:45 debian-kvm systemd[1]: Starting Raise network interfaces...
Jun 16 01:20:45 debian-kvm systemd[1]: Started Raise network interfaces.
root@debian-kvm:~#
</pre>

<p>As we can see, systemd networking.service calls the traditional debian <code spellcheck="false" tabindex="0">ifup</code> and <code spellcheck="false" tabindex="0">ifdown</code>.</p>

<pre spellcheck="false" tabindex="0">root@debian-kvm:~# cat /lib/systemd/system/networking.service
[Unit]
Description=Raise network interfaces
Documentation=man:interfaces(5)
DefaultDependencies=no
Requires=ifupdown-pre.service
Wants=network.target
After=local-fs.target network-pre.target apparmor.service systemd-sysctl.service systemd-modules-load.service ifupdown-pre.service
Before=network.target shutdown.target network-online.target
Conflicts=shutdown.target

[Install]
WantedBy=multi-user.target
WantedBy=network-online.target

[Service]
Type=oneshot
EnvironmentFile=-/etc/default/networking
ExecStart=/sbin/ifup -a --read-environment
ExecStop=/sbin/ifdown -a --read-environment --exclude=lo
RemainAfterExit=true
TimeoutStartSec=5min
root@debian-kvm:~# 
</pre>

<p>The second Debian systemd possibility--not the default on Debian netinst.iso and not used here--is systemd-networkd. Sahitya Maruvada has a simple, clear, Debian systemd-networkd introduction, <a rel="nofollow" href="https://medium.com/100-days-of-linux/working-with-systemd-networkd-e461cfe80e6d">Working with systemd-networkd.</a> The <a rel="nofollow" href="https://wiki.debian.org/SystemdNetworkd">systemd-networkd wiki page</a> and the <a rel="nofollow" href="https://manpages.debian.org/buster/systemd/systemd.network.5.en.html">systemd.network manpage</a> also are available.</p>

<ul><li><strong>Official Debian Network Setup Instructions</strong></li>
</ul><p>Official Debian network setup instructions include the <a rel="nofollow" href="https://wiki.debian.org/NetworkConfiguration">Wiki,</a> the <a rel="nofollow" href="https://www.debian.org/doc/manuals/debian-reference/ch05.en.html">Handbook,</a> manual pages such as <code spellcheck="false" tabindex="0">man interfaces</code>, /etc/network/interfaces examples <a rel="nofollow" href="https://salsa.debian.org/debian/ifupdown/-/blob/master/examples/network-interfaces">online,</a> and sometimes locally:</p>

<pre spellcheck="false" tabindex="0"># less /usr/share/doc/ifupdown/examples/network-interfaces
</pre>

<ul><li><strong>The <code spellcheck="false" tabindex="0">ip</code> Command Usually Is Available Even Though Networking Setup Varies Among Linux Distributions</strong></li>
</ul><p>Setting up networking, DNS name resolution, and software package management is very different in different Linux distributions. Therefore, we should not assume that the steps taken below would be exactly the same with a different Linux distribution than Debian.</p>

<p>Nevertheless, despite the different distributions' differing network setup systems, the <code spellcheck="false" tabindex="0">ip</code> command, <a rel="nofollow" href="https://en.wikipedia.org/wiki/Iproute2">supplied by the iproute2 collection,</a> usually is available these days. Please see also Red Hat's <a rel="nofollow" href="https://access.redhat.com/sites/default/files/attachments/rh_ip_command_cheatsheet_1214_jcs_print.pdf">IP Command Cheat Sheet</a></p>

<p>Because the <code spellcheck="false" tabindex="0">ip</code> command often is available, networking can be configured in many distributions, including Debian, by running a sequence of <code spellcheck="false" tabindex="0">ip</code> commands. The net effect <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> of the sequence of <code spellcheck="false" tabindex="0">ip</code> commands can be to get the network functioning on most distributions without touching that individual distribution's network setup scheme.</p>

<p>Here's <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/63067/#Comment_63067">an example</a> of the <code spellcheck="false" tabindex="0">ip</code> command used in the context of an <a rel="nofollow" href="https://en.wikipedia.org/wiki/IPXE">iPXE boot.</a> Note that the first command in the linked example requires knowledge of the name of the interface. We can list the names of the interfaces on our system by running the <code spellcheck="false" tabindex="0">ip link show</code> command.</p>

<p>One issue with using a sequence of <code spellcheck="false" tabindex="0">ip</code> commands is that the network setup fails to persist across reboots. However, we can place the <code spellcheck="false" tabindex="0">ip</code> command sequence inside a script which will be run automagically every time the server reboots. The sequence of <code spellcheck="false" tabindex="0">ip</code> commands in a script reminds us of the days before systemd, when scripts controlled all parts of the boot process including network setup.</p>

<p>Our KVM VPS's internal network configuration that we will be using below is similar to <a rel="nofollow" href="https://lowendspirit.com/creating-our-first-lxc-vps-with-proxmox-ve-6-2-at-soyoustart/">how LXC containers are configured in Proxmox.</a> As will be seen below, Proxmox's LXC containers' network configuration adopts a variant of the "scripted <code spellcheck="false" tabindex="0">ip</code> command" approach, which also works inside Proxmox's KVM VPSes.</p>

<h2 data-id="v-our-vm-s-network-setup">V. Our VM's Network Setup</h2>

<ul><li><strong>Interfaces</strong></li>
</ul><p>Our original /etc/network/interfaces file, the one installed by the netinst.iso, might look like this:</p>

<pre spellcheck="false" tabindex="0">debian@debian-kvm:~$ cd /etc/network
debian@debian-kvm:/etc/network$ cat interfaces.original
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
debian@debian-kvm:/etc/network$ 
</pre>

<p>Note that, in the default from the netinst.iso, /etc/network/interfaces.d is empty, so sourcing its files does nothing to the configuration.</p>

<pre spellcheck="false" tabindex="0">debian@debian-kvm:/etc/network$ ls interfaces.d
debian@debian-kvm:/etc/network$ 
</pre>

<p>Now, let's edit /etc/network/interfaces to match our example network information from the above Before We Start section.</p>

<pre spellcheck="false" tabindex="0">debian@debian-kvm:/etc/network$ cat interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
  address 172.16.165.97/28
  gateway 172.16.164.1

iface ens18 inet6 static
  address fe80:xxxx:xxxx:xxxx::97/128
  gateway fe80:xxxx:xxxx:xxxx::3

debian@debian-kvm:/etc/network$ 
</pre>

<p>The minimum required information does not include comments (lines beginning with <code spellcheck="false" tabindex="0">#</code>). Maybe we can make the rash and short-sighted assumption that we are not going to install anything which will want a file included from interfaces.d. The loopback interface might no longer be required <a rel="nofollow" href="https://salsa.debian.org/debian/ifupdown/-/blob/master/examples/network-interfaces">(please see lines 17 and 18 in this file from Debian sources).</a> Thus, for our example setup, the minimum /etc/network/interfaces might be:</p>

<pre spellcheck="false" tabindex="0">debian@debian-kvm:/etc/network$ cat interfaces

auto ens18
iface ens18 inet static
  address 172.16.165.97/28
  gateway 172.16.164.1

iface ens18 inet6 static
  address fe80:xxxx:xxxx:xxxx::97/128
  gateway fe80:xxxx:xxxx:xxxx::3

debian@debian-kvm:/etc/network$ 
</pre>

<p>When configuring Debian LXC containers, Proxmox configures their /etc/network/interfaces files using added post-up and pre-down routes. Similarly, just for fun, instead of giving the gateway addresses in our /etc/network/interfaces,, we can manually add routes. Except for the initial <code spellcheck="false" tabindex="0">post-up</code> and <code spellcheck="false" tabindex="0">pre-down</code> these added lines mirror <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/63067/#Comment_63067"><code spellcheck="false" tabindex="0">ip route</code> commands that we could run manually</a> to set up or take down networking without touching the /etc/network/interfaces file.</p>

<pre spellcheck="false" tabindex="0">debian@debian-kvm:/etc/network$ cat interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
  address 172.16.165.97/28
     post-up ip route add 172.16.164.1 dev ens18
     post-up ip route add default via 172.16.164.1 dev ens18
     pre-down ip route del default via 172.16.164.1 dev ens18
     pre-down ip route del 172.16.164.1 dev ens18

iface ens18 inet6 static
  address fe80:xxxx:xxxx:xxxx::97/128
     post-up ip route add fe80:xxxx:xxxx:xxxx::3  dev ens18
     post-up ip route add default via fe80:xxxx:xxxx:xxxx::3  dev ens18
     pre-down ip route del default via fe80:xxxx:xxxx:xxxx::3  dev ens18
     pre-down ip route del fe80:xxxx:xxxx:xxxx::3  dev ens18

debian@debian-kvm:/etc/network$ 
</pre>

<h2 data-id="vi-our-vm-s-dns">VI. Our VM's DNS</h2>

<p>We might want to add more or different nameservers to /etc/resolv.conf. Our Quick Setup configuration, above, includes <a rel="nofollow" href="https://blog.cloudflare.com/dns-resolver-1-1-1-1/">IPs from Cloudflare</a> and <a rel="nofollow" href="https://developers.google.com/speed/public-dns">from Google.</a></p>

<h2 data-id="vii-our-vm-s-apt-setup">VII. Our VM's Apt Setup</h2>

<p>The Debian wiki instructions for configuring apt are at <a rel="nofollow" href="https://wiki.debian.org/SourcesList">https://wiki.debian.org/SourcesList.</a> There also is a <a rel="nofollow" href="https://manpages.debian.org/buster/apt/sources.list.5.en.html">man page.</a> The configuration shown above, in Section III Quick Setup, is from the <a rel="nofollow" href="https://wiki.debian.org/SourcesList">SourcesList Debian wiki page.</a></p>

<p>The Debian <a rel="nofollow" href="https://www.debian.org/security/">Security Information page</a> says:</p>

<blockquote><div>
  <p>You can use apt to easily get the latest security updates. This requires a line such as<br />
  deb <a href="http://security.debian.org/debian-security" rel="nofollow">http://security.debian.org/debian-security</a> buster/updates main contrib non-free</p>
</div></blockquote>

<p>Many of the larger providers offer Debian mirrors. For example, Debian packages and security updates are available from the <a rel="nofollow" href="https://docs.hetzner.com/robot/dedicated-server/operating-systems/hetzner-aptitude-mirror/">Hetzner Debian Mirror</a></p>

<p>After /etc/sources.list is edited, we update our system's package repositories as follows:</p>

<pre spellcheck="false" tabindex="0">apt-get upgrade &amp;&amp; apt-get dist-upgrade -y
</pre>

<p>We can see exactly which packages are installed by looking at the logs in /var/log/apt.</p>

<p>We may wish to install openssh-server so that we can connect to our VM via ssh in addition to our Proxmox VNC connection. With ssh we regain cut and paste functionality while enjoying lower apparent latency!</p>

<pre spellcheck="false" tabindex="0">apt-get install openssh-server
</pre>

<p>The <a rel="nofollow" href="https://aboutbryan.com/2013/03/03/my-first-5-minutes-on-a-server-or-essential-security-for-linux-servers/">Kennedy article,</a> mentioned below in Section VII, has some good tips for ssh server configuration.</p>

<h2 data-id="viii-security">VIII. Security</h2>

<p><a rel="nofollow" href="https://www.google.com">Google</a> suggests its <a rel="nofollow" href="https://aboutbryan.com/2013/03/03/my-first-5-minutes-on-a-server-or-essential-security-for-linux-servers/">first choice among essential server security articles.</a> This article from 2013, by Bryan Kennedy, seems to provide still-good advice, except that, nowadays, many people prefer to use <a rel="nofollow" href="https://en.wikipedia.org/wiki/EdDSA">ed25519 keys</a></p>

<h2 data-id="ix-backup">IX. Backup</h2>

<p>After all this work, we certainly want to make an offline backup of our new VM. We can <a rel="nofollow" href="https://pve.proxmox.com/wiki/Backup_and_Restore">use Proxmox to make the backup</a> and then download a a copy from the host node's /var/lib/vz/dump directory.</p>
]]>
        </description>
    </item>
    <item>
        <title>HTTP Server Setup with a Single Command Line</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3931/http-server-setup-with-a-single-command-line</link>
        <pubDate>Mon, 21 Mar 2022 20:31:31 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>alexxgg</dc:creator>
        <guid isPermaLink="false">3931@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/alexxgg" rel="nofollow">@alexxgg</a>, 19 May 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/y9/8lyyu4b1q32d.png" alt="image" /></p>

<p>This is a guest post by <a rel="nofollow" href="https://talk.lowendspirit.com">forum</a> user <a href="https://dev.lowendspirit.com/index.php?p=/profile/alexxgg" rel="nofollow">@alexxgg</a>,</p>

<p>Hi there!</p>

<p>These days when the internet shares things in milliseconds, who of you have needed to share a file quickly? I bet some of you remember at least one time one of those cases.</p>

<p>As you probably know, in terms of web servers, we can share files with popular software like Apache, Nginx, and Lighttpd but this software need basic configuration, also they consume server resources as long as they’re active.</p>

<p>What if you could set up a basic HTTP web server without installing Apache, Nginx, or Lighttpd? Well, that’s sounds kind of impossible, and even more unbelievable is that you can kill it with Ctrl^C. Thanks to Python3 we can do that with its <a rel="nofollow" href="https://pypi.org/project/httpserver/">HTTP server module</a>.</p>

<p>This module will deploy an HTTP server in any directory of the server, even in the root directory and that sounds ridiculously dangerous, fortunately, the default port of this HTTP server isn’t 80. Instead, it will use port: 8000 but you can assign a custom port, very convenient for NAT environment instances.</p>

<p>Now you can deploy a basic HTTP server -in the current directory with the default port- by typing this single command line:</p>

<pre spellcheck="false" tabindex="0">python3 -m http.server
</pre>

<p>Starting HTTP Server</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/05/lopja74fwxsh.png" alt="" title="" /></p>

<p>Killing HTTP Server</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/j0/nzh2vdl7fq70.png" alt="" title="" /></p>

<p>HTTP Server as Shown in Browser</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ic/4ppesu0bamvj.png" alt="" title="" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/81/dmmmh9vc0eds.png" alt="" title="" /></p>

<p>You can change the default port (example port: 32085) and specify a directory (example directory: /tmp/) with:</p>

<pre spellcheck="false" tabindex="0">python3 -m http.sever 32085 --directory /tmp/
</pre>

<p>More information about Python3 httpserver module is available <a rel="nofollow" href="https://docs.python.org/3/library/http.server.html">here</a></p>

<p>Also, there is a github page <a rel="nofollow" href="https://github.com/freelamb/simple_http_server">here</a></p>

<p><strong>Note</strong>: of course, you will need to install Python3 in order to use these post example command lines.<br />
Leave a comment to let me know any questions or suggestions.</p>
]]>
        </description>
    </item>
    <item>
        <title>How to change the number of minutes that the sudo password is cached</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3928/how-to-change-the-number-of-minutes-that-the-sudo-password-is-cached</link>
        <pubDate>Mon, 21 Mar 2022 20:21:02 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>mikho</dc:creator>
        <guid isPermaLink="false">3928@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/mikho" rel="nofollow">@mikho</a>, 4 May 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/c2/qds4s5mryuc2.png" alt="image" /></p>

<p>This is a really QUICK TIP!</p>

<p>When you run any command as root, using sudo, the password is remembered for 15 minutes by default.<br />
If you want to change the time that the password is cached, open the terminal (as root) and run:</p>

<pre spellcheck="false" tabindex="0">editor /etc/sudoers 
</pre>

<p>Find this line in the file:</p>

<pre spellcheck="false" tabindex="0">defaults env_reset
</pre>

<p>And change it into:</p>

<pre spellcheck="false" tabindex="0">defaults env_reset , timestamp_timeout=x
</pre>

<p>where “x” is the time in minutes that the password will be cached.</p>

<p>Save and exit and work is done!</p>
]]>
        </description>
    </item>
    <item>
        <title>Announcing Cloudflare for SaaS for Everyone</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3918/announcing-cloudflare-for-saas-for-everyone</link>
        <pubDate>Mon, 21 Mar 2022 19:43:33 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Laton</dc:creator>
        <guid isPermaLink="false">3918@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Laton" rel="nofollow">@Laton</a>, 24 Apr 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/73/vn4x16y1spbj.png" alt="" title="" /></p>

<p>Cloudflare has recently adapted their <a rel="nofollow" href="https://www.cloudflare.com/en-gb/ssl-for-saas-providers/">SSL for SaaS</a> product, which was originally limited only to their Enterprise customers but has now been released publicly. Yesterday they announced their Cloudflare for SaaS solution available to everyone. And to reflect their recent service evolution of the product they have re-named it to: <a rel="nofollow" href="https://www.cloudflare.com/en-gb/saas/">Cloudflare for SaaS</a>.</p>

<p>You may ask yourself: <em>What exactly is SaaS?</em><br />
Software as a Service (SaaS) is a method of providing software to an end-user where the software is not installed and maintained by the user, but via hosted services (most often through a web browser). Popular examples of such a service include Salesforce, Google Apps, Microsoft Office 365, etc.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/wr/ss73sxt4l6wk.png" alt="" title="" /></p>

<p>Since the 15th of April, they have released their beta stage, which is available for sign up if you submit your request <a rel="nofollow" href="https://forms.gle/crARoXd4taCtoSti8">here</a>. Before the introduction of <a rel="nofollow" href="https://www.cloudflare.com/en-gb/saas/">Cloudflare for SaaS</a>, your best bet was for your customer to set up a CNAME record and have them generate a private key and CSR.</p>

<p>On top of that, you would be required to maintain a solution to generate and securely store private keys. But with the introduction of Cloudflare for SaaS, it is now more freely accessible and has provided less of a burden when managing multiple customers.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ya/rh7reoegqtg4.png" alt="" title="" /></p>

<h4 data-id="cloudflare-workers">Cloudflare Workers</h4>

<p>Back in January when SSL for SaaS was announced, 80% of beta users were already building their application on Cloudflare workers. But by combining the use of Cloudflare for SaaS with <a rel="nofollow" href="https://workers.cloudflare.com/">Cloudflare workers</a>, will overall reduce the time and core resources from building your application.</p>

<h4 data-id="security">Security</h4>

<p>It also has already provided <a rel="nofollow" href="https://www.cloudflare.com/en-gb/ddos/">DDoS Protection</a> and <a rel="nofollow" href="https://www.cloudflare.com/en-gb/waf/">Web Application Firewall (WAF)</a> built-in. Alongside the benefits offered to the Enterprise customers at no additional cost.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/96/7te3da508k5e.png" alt="" title="" /></p>

<p>So, if you want to have more control of your SSL certificate solution and would like a simple but manageable solution, then why not sign up for the <a rel="nofollow" href="https://forms.gle/crARoXd4taCtoSti8">beta</a>.</p>
]]>
        </description>
    </item>
    <item>
        <title>HOWTO: Locate empty files and directories</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3930/howto-locate-empty-files-and-directories</link>
        <pubDate>Wed, 05 May 2021 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>mikho</dc:creator>
        <guid isPermaLink="false">3930@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/mikho" rel="nofollow">@mikho</a>, 5 May 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/kl/ovtru2uav7gg.png" alt="image" /></p>

<p>When installing software on your VPS you will end up with both empty files and empty directories, often these are used as placeholders/lock files/socket files for communication.</p>

<p>This short guide will give you some examples on how to find those empty files/directories.</p>

<p>The command we are going to use is the “<strong>find</strong>” command. To find empty directories/files in the current directory, you use the parameter “<em><strong>-empty</strong></em>“.</p>

<p>You also have to use the parameter “<em><strong>-type</strong></em>” to define if you are looking for directories (d) or files (f).</p>

<h2 data-id="examples"><strong>Examples</strong></h2>

<p>Here is the command to find empty directories in the current directory:</p>

<pre spellcheck="false" tabindex="0">find ./ -type d -empty
</pre>

<p>And here is the command to find empty files in the current directory:</p>

<pre spellcheck="false" tabindex="0">find ./ -type f -empty
</pre>

<p>If you need to know how many empty files you have in the current directory, pipe the find command to “<em><strong>wc -l</strong></em>“:</p>

<pre spellcheck="false" tabindex="0">find ./ -type f -empty | wc -l
</pre>

<p>Similarly, to recursivly count how many how many files are located under the current directory and sub-directories,  you can use the following command:</p>

<pre spellcheck="false" tabindex="0">find ./ -type f -not -empty | wc -l 
</pre>

<p>To remove all empty directories in the current directory, the command you can use is:</p>

<pre spellcheck="false" tabindex="0">find ./ -type d -empty -exec rmdir {} \;
</pre>

<p><strong>– In all the commands above, the  (./) means the current directory or folder, if you want to perform actions in other directories, just replace the  (./) with the path to the new directory.</strong></p>

<p><strong>– In system directories such as /etc/, there are many empty files and directories.</strong></p>

<p><strong>But it is strongly recommended to not remove them.</strong></p>
]]>
        </description>
    </item>
    <item>
        <title>Portainer – A Docker management tool</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3919/portainer-a-docker-management-tool</link>
        <pubDate>Mon, 21 Mar 2022 19:47:34 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>sahjanivishal</dc:creator>
        <guid isPermaLink="false">3919@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/sahjanivishal" rel="nofollow">@sahjanivishal</a>, 27 Apr 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<h3 data-id="what-is-docker">What is Docker?</h3>

<p>If you're reading this, most probably you already know Docker or have at least heard about it a lot. But still, for the uninitiated, Docker is an open platform for developing, shipping, and running applications and it enables you to separate your applications from your infrastructure so you can deliver software quickly. Find Docker interesting and want to know more? Head over to their <a rel="nofollow" href="https://docs.docker.com/get-started/overview/">docs</a> and you can find all the information you need!</p>

<h3 data-id="what-is-portainer">What is Portainer?</h3>

<p>So, talking about the elephant in the room, <a rel="nofollow" href="https://www.portainer.io/">Portainer</a> is a fully-featured web based GUI management tool for Docker. It runs locally, giving developers a rich UI to build and publish container images, deploy and manage applications and leverage data persistence and horizontal scaling for their applications.<br />
Worried about the cost? Portainer Community Edition is open source, free forever and used by more than 500,000 developers worldwide.</p>

<h3 data-id="what-can-i-use-portainer-for">What can I use Portainer for?</h3>

<ol><li>Visualize your server's docker environment on your web browser. (<em>I know that you don't fear the terminal, but hey, a little help won't harm anybody!</em>)</li>
<li>Aggregate view of Docker Swarm clusters (<em>Yeah, it's that fancy!</em>)</li>
<li>Deploy containers with some pre-built templates, right from inside the Portainer.</li>
<li>Start, Stop, Kill, Restart, Pause, Resume and Remove the containers easily with the web-GUI.</li>
<li>Facing any issue while deploying containers? Don't worry, Portainer to rescue! You can inspect the logs for any containers directly from the GUI and see what is stopping you from conquering the world.</li>
</ol><h3 data-id="how-do-i-install-portainer">How do I install Portainer?</h3>

<p>So, you're happy to give Portainer a go and want to know how can you install it? I have got you covered:</p>

<ol><li>Make sure you have Docker Engine installed on your server. You can follow the install instructions given <a rel="nofollow" href="https://docs.docker.com/get-docker/">here.</a></li>
<li>Run the following command to create a docker volume which should give output as <code spellcheck="false" tabindex="0">portainer_data</code> indicating the command was successfully executed:</li>
</ol><p><code spellcheck="false" tabindex="0">sudo docker volume create portainer_data</code></p>

<ol start="3"><li>Once the volume is created, run the following command to create and run the Portainer container:</li>
</ol><p><code spellcheck="false" tabindex="0">sudo docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce</code></p>

<p>The above command should create and run the Portainer container on your server's port number 9000, which can be generally accessed in following ways:</p>

<p>a) By opening <code spellcheck="false" tabindex="0">http://your_server_ip:9000</code> in your favorite browser.<br />
b) If you have a domain name pointed towards your server's IP, by opening <code spellcheck="false" tabindex="0">yourdomain.com:9000</code> in your browser.</p>

<blockquote><div>
  <p>Note: If you want to access Portainer over a subdomain instead of every time typing <code spellcheck="false" tabindex="0">yourdomain.com:9000</code>, you can put it behind a reverse proxy with the help of any web server, like Caddy.</p>
</div></blockquote>

<p>4. Alright, once the container is up and running, access it via any of the above methods and you will be greeted by the following initial setup screen of Portainer:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/pa/33updf14w5mb.png" alt="" title="" /></p>

<blockquote><div>
  <p>Set the username and password for admin user here and click on <code spellcheck="false" tabindex="0">Create User</code>.</p>
</div></blockquote>

<p>5. Next, select Docker as the container management environment you want Portainer to connect to (yes Portainer can connect to Kubernetes too, but that's a story for another day):</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/xp/jl35jgd665h1.png" alt="" title="" /></p>

<p>6. Voila! now you have successfully connected your local Docker environment to Portainer and you should be able to see below screen:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/90/43xcygcvlqnz.png" alt="" title="" /></p>

<p>7. Click on the <code spellcheck="false" tabindex="0">local</code> endpoint to see all the containers, images, volumes, networks etc. in your Docker environment:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/am/z4sbzvuao0qn.png" alt="" title="" /></p>

<p>8. You can also deploy app templates containers right from inside the Portainer:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/65/sakwc8mh0hvd.png" alt="" title="" /></p>

<blockquote><div>
  <p>This is it! Go on, play around a bit and I'm sure you'll love how easy Portainer makes it to manage Docker containers. Given how many of the self-hosted apps can be deployed using Docker containers, Portainer is a must-have tool in your arsenal.</p>
</div></blockquote>
]]>
        </description>
    </item>
    <item>
        <title>Low memory usage SMTP Send-Only</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3925/low-memory-usage-smtp-send-only</link>
        <pubDate>Mon, 21 Mar 2022 20:13:41 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>mikho</dc:creator>
        <guid isPermaLink="false">3925@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/mikho" rel="nofollow">@mikho</a>, 1 May 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/kl/ovtru2uav7gg.png" alt="image" /></p>

<p>In the LowEndSpirit, we tend to look for resource-efficient alternatives. Here is an alternative to use instead of Postfix, Sendmail, or Exim.</p>

<p>Often when installing and running a web application or script you need an SMTP server to send an email, rarely there is the need to receive any email. It works equally well using <a rel="nofollow" href="https://linux.die.net/man/8/ssmtp">ssmtp</a>, which also is simple and fast to install. It takes two minutes to install and configure.</p>

<h3 data-id="redhat-centos7-fedora">RedHat, CentOS7, Fedora</h3>

<pre spellcheck="false" tabindex="0">yum install ssmtp
</pre>

<p>If you receive a <em>“Package ssmtp is not available”</em> error, you’ll need to install EPEL on your machine with the following command:</p>

<pre spellcheck="false" tabindex="0">yum --enablerepo=extras install epel-release
</pre>

<p>Once done, you’ll be able to install ssmtp using the above command.</p>

<h2 data-id="ubuntu-debian">Ubuntu, Debian</h2>

<pre spellcheck="false" tabindex="0">apt-get install ssmtp
</pre>

<p>The configuration is done in the <strong><em>/etc/ssmtp/ssmtp.conf</em></strong> and there is only a couple of settings to change:</p>

<p><em><strong>Mailhub</strong></em><br />
The mail server you must send mail through (relay). In this guide we will use GMail smtp Server.<br /><strong><em>From Line Override</em></strong><br />
Set to YES to allow the use of others choose from addresses other than the system itself.<br /><em><strong>AuthUser</strong></em><br />
The username or email adress on the account used to login to gmail.<br /><strong><em>AuthPass</em></strong><br />
The password for above account<br /><strong><em>UseSTARTTLS</em></strong><br />
Set to Yes to use TLS when connecting to the SMTP server.</p>

<pre spellcheck="false" tabindex="0">## Config file for sSMTP sendmail
## The person who gets all mail for userids &lt; 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587
AuthUser=name@gmail.com
AuthPass=YourtopSecretPassw0rd!
UseSTARTTLS=YES 
# Where will the mail seem to come from?
#rewriteDomain= 
# The full hostname
hostname=debianVPS.local 
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: 
addressFromLineOverride=YES
</pre>

<p>No reboots required.</p>

<p>To use ssmtp with the PHP <em>mail()</em> function, you have to edit the <em><strong>sendmail_path</strong></em> parameter in <strong><em>php.ini</em></strong> to something like this:</p>

<pre spellcheck="false" tabindex="0">sendmail_path = /usr/sbin/ssmtp -t
</pre>

<p>You have no open ports, everything just works!</p>
]]>
        </description>
    </item>
    <item>
        <title>Email notification when someone logs in via SSH</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3927/email-notification-when-someone-logs-in-via-ssh</link>
        <pubDate>Mon, 03 May 2021 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>mikho</dc:creator>
        <guid isPermaLink="false">3927@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/mikho" rel="nofollow">@mikho</a>, 3 May 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/kl/ovtru2uav7gg.png" alt="image" /></p>

<p>Even if it is too late when someone else logs in as root on your server, it is good to know that <strong>NOW</strong> is the time to get working on your security.</p>

<p>To setup email notification, login to your server as root.<br />
Edit .bashrc</p>

<pre spellcheck="false" tabindex="0">editor .bashrc
</pre>

<p>add the following line at the end, changing “ServerName” to the hostname of your server and “email@thisaddress.com” to your own email address.</p>

<pre spellcheck="false" tabindex="0">echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d"(" -f2 | cut -d")" -f1`" email@thisaddress.com 
</pre>

<hr /><p><strong>!NOTE!</strong> - Take notice of the ` in the code block. Sometimes when copying code from a webpage, these small characters will mess up when pasted.</p>

<hr /><p>Save and exit your .bashrc.</p>

<p>Next time someone, hopefully you, logs on as root, you will get an email about this.</p>

<p>This can be done for any user, you only have to make sure that the user can email out from your server.</p>

<p>Quick Tip: Use the guide <a rel="nofollow" href="https://lowendspirit.com/low-memory-usage-smtp-send-only/">here</a> to install and configure a Low Resource SMTP Server.</p>
]]>
        </description>
    </item>
    <item>
        <title>Reclaim reserved disk space KVM/VMWare/Dedicated</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3922/reclaim-reserved-disk-space-kvm-vmware-dedicated</link>
        <pubDate>Mon, 21 Mar 2022 20:04:09 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>mikho</dc:creator>
        <guid isPermaLink="false">3922@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/mikho" rel="nofollow">@mikho</a>, 29 Apr 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/c2/qds4s5mryuc2.png" alt="image" /></p>

<p>Following up on the bonus tip posted on <a rel="nofollow" href="https://lowendspirit.com/resize-your-kvm-vps-disk-partition-2-methods-and-bonus-tip-to-reclaim-disk-space-easy-mode/">Resize your KVM VPS disk partition, 2 methods and bonus tip to reclaim disk space – Easy mode</a>, here is a longer explanation and guide how to reclaim your reserved disk space.</p>

<hr /><p>Joe Dougherty from <a rel="nofollow" href="https://securedragon.net/">SecureDragon.net</a> (great guy running a great company) sent me a tip about <a rel="nofollow" href="http://www.lowendtalk.com/discussion/33817/reclaim-some-free-space-on-your-server-with-this-weird-trick-kvm-xen-dedi-only">this thread</a> and asked if I could write something about this “weird trick”. Actually it’s not a wierd trick, it’s a built in security feature. The information in this post will only work on dedicated servers or Virtual Servers that utilize full virtualization, meaning that <strong>this won’t work on OpenVZ</strong>.</p>

<hr /><p>On a newly created filesystems (Ext [2/3/4]) some of the space will be allocated for the system superuser (root) as “system reserved”. The default of 5% is meant for system partitions. If something goes wrong and your server consumes all its free disk space, the root user could still log in and check logs/crashdumps/etc and generally fix the situation.</p>

<p>For example, if your disk space fills up, the system logs (<em><code spellcheck="false" tabindex="0">/var/log</code></em>) and root’s mailbox (<em><code spellcheck="false" tabindex="0">/var/mail/root</code></em>) can still receive important information. For a <em><code spellcheck="false" tabindex="0">/home</code></em> or general data storage partition, there’s no need to leave any space for root. For very special needs, you can even change the user that gets this emergency space.</p>

<p>There’s another reason to not allow an ext[23] filesystem to get full, which is <a rel="nofollow" href="http://en.wikipedia.org/wiki/Defragmentation">fragmentation</a>. Ext4 should be better at this, as <a rel="nofollow" href="https://www.redhat.com/archives/ext3-users/2009-January/msg00026.html">explained by Linux filesystem developer/guru Theodore Ts’o</a>:</p>

<blockquote><div>
  <p>If you set the reserved block count to zero, it won't affect performance much except if you run for long periods of time (with lots of file creates and deletes) while the filesystem is almost full (i.e., say above 95%), at which point you'll be subject to fragmentation problems.  Ext4's multi-block allocator is much more fragmentation resistant, because it tries much harder to find contiguous blocks, so even if you don't enable the other ext4 features, you'll see better results simply mounting an ext3 filesystem using ext4 before the filesystem gets completely full.If you are just using the filesystem for long-term archive, where files aren't changing very often (i.e., a huge mp3 or video store), it obviously won't matter.</p>
  
  <p>Theodore Tso </p>
</div></blockquote>

<p>If you have a VPS with small disk size the 5% won’t mean much but if you have a 100GB drive or bigger, it quickly adds up to a vaste amount of unused space. In those cases we could lower the amount of reserved space in order to claim and use a few more GB.</p>

<p>At the time of writing the original post, I actually had an unused XEN VPS so lets have a look at what we can do about this by using that as a real life example.</p>

<p>first we confirm the filesystem parameters by running this <a rel="nofollow" href="https://linux.die.net/man/8/tune2fs">command</a>:</p>

<pre spellcheck="false" tabindex="0"># tune2fs -l /dev/xvda1
</pre>

<p>it will list all information about the disk. This is the output I got from my server:</p>

<pre spellcheck="false" tabindex="0">tune2fs 1.42.5 (29-Jul-2012)
Filesystem volume name:   &lt;none&gt;
Last mounted on:          &lt;not available&gt;
Filesystem UUID:          50fd54e4-7740-4683-b1e5-64e93d6d1e92
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              9830400
Block count:              39321600
Reserved block count:     1966080
Free blocks:              38473681
Free inodes:              9799099
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1014
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
RAID stride:              1
RAID stripe width:        80
Filesystem created:       Mon Nov 10 19:05:08 2014
Last mount time:          Sun Dec 14 17:25:37 2014
Last write time:          Sun Dec 14 17:25:13 2014
Mount count:              12
Maximum mount count:      34
Last checked:             Mon Nov 10 19:05:08 2014
Check interval:           15552000 (6 months)
Next check after:         Sat May  9 19:05:08 2015
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      e2ccf267-28ea-4e34-9df0-a349d06f0247
Journal backup:           inode blocks
</pre>

<p>The ineresting part from the output above:</p>

<pre spellcheck="false" tabindex="0">Reserved block count:     1966080
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
</pre>

<p>Before we move on to the amount of reserved space, take a moment to reflect on what user who is allowed to use the reserved space. By default it is root unless changed by the system administrator.</p>

<p>if you multiply the <em>Reserved Block Count</em> with the current <em>Block Size</em> (also found in the tune2fs output above)</p>

<pre spellcheck="false" tabindex="0">Block size:               4096
</pre>

<p>we get how much space in bytes that is reserved by the system:</p>

<table><tbody><tr><td>Block count * Block Size</td><td>Byte</td><td>Kilobyte</td><td>Megabyte</td><td>Gigabyte</td></tr><tr><td>1966080 * 4096</td><td>8053063680</td><td>7864320</td><td>7680</td><td>7,5</td></tr></tbody></table><p>Doing the same operation using the Block Count value:</p>

<pre spellcheck="false" tabindex="0">Block count:              39321600
</pre>

<p>will give you the Total Disk space of the drive</p>

<table><tbody><tr><td>Block count * Block Size</td><td>Byte</td><td>Kilobyte</td><td>Megabyte</td><td>Gigabyte</td></tr><tr><td>39321600 * 4096</td><td>161061273600</td><td>157286400</td><td>153600</td><td>150</td></tr></tbody></table><p>As you can see (7,5GB out of 150GB) exactly 5% of the disk is reserved space.</p>

<p>As previously mentioned, if you don’t have a large disk it would be wise to not change that 5% value since it could mean that you wont have enough “system reserved space” to recover from a full disk problem.</p>

<p>In my case, 7,5 GB of reserved space is a bit much and I would benefit if this was available for me to store my backups instead. So, how do we change the amount of reserved space?</p>

<p>Since my disk is in total 150GB each percentage is 1,5GB and I think that 1,5GB will be enough for this server, the command to set the reserved space to 1 percent would therefor look like this:</p>

<pre spellcheck="false" tabindex="0"># tune2fs -m 1 /dev/xvda1
</pre>

<p>The returned result :</p>

<pre spellcheck="false" tabindex="0">Setting reserved blocks percentage to 1% (393216 blocks)
</pre>

<p>Keeping in mind that each block is 4096 bytes the above result means the reserved space is:</p>

<pre spellcheck="false" tabindex="0">393216 * 4096 = 1,5 GB
</pre>

<p>Before you jump of joy I would like to end this article with a few words of caution;</p>

<p>While this is a nice way to get some extra space on your server <strong>TAKE EXTREME CARE</strong> if you decide to change the settings on the drive that has the / volume or you could end up with a server that even root can’t save when the disk runs out of space. If you have a secondary drive that only holds data, may it be your mp3 collection or family photos, you can set the reserved space to 0percent on that drive. As long as it is NOT the system drive.</p>
]]>
        </description>
    </item>
    <item>
        <title>How to Create and Setup a Debian KVM VPS with Proxmox VE 6 — Part II — Debian Install</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3917/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-ii-debian-install</link>
        <pubDate>Mon, 21 Mar 2022 19:40:48 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">3917@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Not_Oles" rel="nofollow">@Not_Oles</a>, 21 Apr 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/n9/cixat1djj0ag.png" alt="image" /></p>

<p><strong>Introduction</strong></p>

<p>In <a rel="nofollow" href="https://lowendspirit.com/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-i-creation">Part I of this series</a>, we downloaded the <a rel="nofollow" href="https://www.debian.org/CD/netinst/">Debian netinst install iso</a>. We then created a KVM VPS with the iso attached, and, finally, we successfully booted the iso.</p>

<p>In today's post, we're going to install our KVM with Debian 10 from the newly booted iso. But first, a bit of context on installing.</p>

<p><strong>Context</strong></p>

<ul><li><strong>Why the Debian minimal netinst iso?</strong></li>
</ul><p>Debian themselves say, <a rel="nofollow" href="https://www.debian.org/CD/netinst/">"we think that in many cases the minimal CD image is better — above all, you only download the packages that you selected for installation on your machine. . . ."</a></p>

<p>What we gain from this series is a well-proven, widely used, minimal, highly extensible, open-source server operating system.</p>

<ul><li><strong>What about networking?</strong></li>
</ul><p>The biggest difference between installing on our VPS and installing on our personal laptop or desktop might be network configuration. On personal devices, we are used to automatic network configuration happening behind the scenes via <a rel="nofollow" href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol">Dynamic Host Configuration Protocol (DHCP)</a>. We turn on our device, it gets its own IP address and internet connection without our having to do much.</p>

<p>On servers, however, the server's IP address and internet connection sometimes are set by hand instead of automatically via DHCP. Traditionally, server network settings are done from a console physically connected to the running server. Obviously, however, if our server is at a remote location, we cannot have a wired connection. Also, since networking hasn't yet been set up inside the server, we can't connect directly to our remote server over the internet, either.</p>

<p>As might be expected, the Debian minimal netinst iso is set up to configure networking automatically via DHCP. Thus, when we try the networking step of the install, that step will fail. The netinst iso will succeed, however, in installing a minimal Debian system without networking. In Part III of this series, covering Post Install Configuration, we will use the Proxmox web GUI and VNC to go inside our minimal system and set up networking by hand.</p>

<ul><li><strong>Alternative installation methods</strong></li>
</ul><p>It might be worth mentioning a few of the many other excellent methods of server installation which, although frequently used, are not selected here because they might be even more complex than our "simple" <img src="images/smile.png" alt=":)" title=":)" /> method.</p>

<ul><li>First, <a rel="nofollow" href="https://lowendspirit.com/debian-unattended-installation-using-a-preseed-file">Debian unattended Installation using a preseed file</a> will not work here because no networking is set up to use for obtaining the preseed file.</li>
<li>Cloud-init is <a rel="nofollow" href="https://github.com/canonical/cloud-init">"the <em>industry standard</em> multi-distribution method for cross-platform cloud instance initialization."</a> However, the <a rel="nofollow" href="https://pve.proxmox.com/wiki/Cloud-Init_Support">Proxmox Cloud-Init Support wiki article</a> says, despite the convenience of ready-made images, "we usually recommended to prepare the images by yourself," because "you will know exactly what you have installed." Also, for a special perspective on Cloud-Init, you might enjoy watching <a rel="nofollow" href="https://www.hashicorp.com/resources/cloudinit-the-good-parts">Cloud-Init: The Good Parts.</a></li>
<li>Proxmox supports <a rel="nofollow" href="https://pve.proxmox.com/wiki/VM_Templates_and_Clones">Templates.</a> It's possible to create templates with <a rel="nofollow" href="https://www.packer.io/">Packer.</a> If interested, you can check <a rel="nofollow" href="https://dev.to/aaronktberry/creating-proxmox-templates-with-packer-1b35">Creating proxmox templates with packer.</a></li>
</ul><p><strong>Before We Start</strong></p>

<p>We need to begin today at <a rel="nofollow" href="https://lowendspirit.com/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-i-creation">the exact stage where we left Part I.</a> Our Debian Installer should be booted and running on our VPS.</p>

<p>We also will need the server's hostname (which can be Debian) plus the username (which also can be Debian) and the real name for the user account which the installer will create. It's also convenient to have on hand two <a rel="nofollow" href="https://passwordsgenerator.net/">previously generated good passwords,</a> one for the root account and another for the new user account.</p>

<p><strong>Debian Installer Steps</strong></p>

<ul><li><strong>Select Install</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/h2/9s2boinm789t.png" alt="" title="" /></p>

<ul><li><strong>Language</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/oi/jyzq11ay2z2c.png" alt="" title="" /></p>

<ul><li><strong>Location</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/d8/4ogce6eln8c9.png" alt="" title="" /></p>

<ul><li><strong>Keyboard</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/10/ws7jw1dfl4uk.png" alt="" title="" /></p>

<ul><li><strong>DHCP Tries and Fails</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/00/qbxl1icecoc6.png" alt="" title="" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/dz/csnojjtvtggb.png" alt="" title="" /></p>

<ul><li><strong>Select "Do Not Configure Network at this Time"</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/9e/73uzhwy2lvp4.png" alt="" title="" /></p>

<ul><li><strong>Hostname</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/il/445y6j7140ya.png" alt="" title="" /></p>

<ul><li><strong>Enter and Confirm the Root Password</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/7n/9pzj9y6y9qtf.png" alt="" title="" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ya/jymedyyrhi6x.png" alt="" title="" /></p>

<ul><li><strong>User's Real Name</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/o5/bbaqkg91187q.png" alt="" title="" /></p>

<ul><li><strong>Username</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/p7/a0ccap5kqxff.png" alt="" title="" /></p>

<ul><li><strong>User Password</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/40/9mkk3s6d1qzk.png" alt="" title="" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/od/sh8bx3s7ht09.png" alt="" title="" /></p>

<ul><li><strong>Time Zone</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/tq/1qgateac02jk.png" alt="" title="" /></p>

<ul><li><strong>Partitioning Method</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/3h/gxc2wxgj9mfk.png" alt="" title="" /></p>

<ul><li><strong>Disk to Partition</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/os/uvqci3hbc4vy.png" alt="" title="" /></p>

<ul><li><strong>Partitioning Scheme</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/pl/31wn8e92ka2o.png" alt="" title="" /></p>

<ul><li><strong>Confirm Partitioning</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/9l/hh5ah0wha62m.png" alt="" title="" /></p>

<ul><li><strong>Write Changes to Disks</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/io/55x6c3zhihri.png" alt="" title="" /></p>

<ul><li><strong>Confirm No Additional Install Media</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/n4/b8zo11jrg9vz.png" alt="" title="" /></p>

<ul><li><strong>Confirm No Network Mirror</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/tj/riw8uqbklrhr.png" alt="" title="" /></p>

<ul><li><strong>Package Usage Survey</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/nl/brp3sp93qayg.png" alt="" title="" /></p>

<ul><li><strong>Choose Additional Software</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/8p/vtuzuhlsub2p.png" alt="" title="" /></p>

<ul><li><strong>Dual Boot</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/ad/vzsroraic1ds.png" alt="" title="" /></p>

<ul><li><strong>Grub</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/rf/a825mn0s7p30.png" alt="" title="" /></p>

<ul><li><strong>Installation Complete</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/3g/q96cfykeh2zm.png" alt="" title="" /></p>

<p>In the Proxmox web GUI, we select VPS &gt; Hardware &gt; CD/DVD Drive. Press edit and select "Do not use any media." Then, we return to our "Installation Complete" screen by selecting Console, which should reappear just as we left it. Finally, we click the "Continue" button, which should reboot the VPS.</p>

<p>In <a rel="nofollow" href="https://lowendspirit.com/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-i-creation">Part I</a>, we did not install Qemu Agent. Therefore, rebooting from the Proxmox web GUI (outside our VPS) as opposed to rebooting from the console (inside our VPS) might not work. However, if it is necessary to stop the server from the web GUI, we can use the web GUI's Stop command found on the drop-down menu of the Shutdown button.</p>

<ul><li><strong>Successful Reboot</strong></li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/yi/5qiz1u3nginb.png" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>AXEL – multi-threaded downloads</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3916/axel-multi-threaded-downloads</link>
        <pubDate>Wed, 14 Apr 2021 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>mikho</dc:creator>
        <guid isPermaLink="false">3916@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/mikho" rel="nofollow">@mikho</a>, 14 Apr 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<h2 data-id="what-is-axel">What is Axel?</h2>

<hr /><p>When you want to download something from the command line you normally use the commands wget or curl.</p>

<p>What if you want to accelerate these downloads? I recently found this command: <a rel="nofollow" href="https://github.com/eribertomota/axel">Axel</a> which works the same way but allows you to use multiple connections for one file.<br />
As a comparison, the Mozilla extension DownThemAll does the same thing in a graphical environment. Axel can also use multiple mirrors for a download and according to tests done by the Github author this can speed up downloads up to 60%!.</p>

<p>Axel has no dependencies, is lightweight, supports HTTP, HTTPS, FTP and FTPS protocols and unlike other similar programs, it downloads all the data directly to the destination file using a single thread., saving time at the end because the program does not ave to concatenate the downloaded parts. It is also available in the Debian repo</p>

<p>If you take a look at the options available, you see that you use it the same way as you would use wget.</p>

<pre spellcheck="false" tabindex="0">Usage: axel [options] url1 [url2] [url...] 
--max-speed=x           -s x    Specify maximum speed (bytes per second)
--num-connections=x     -n x    Specify maximum number of connections
--output=f              -o f    Specify local output file
--search[=x]            -S [x]  Search for mirrors and download from x servers
--header=x              -H x    Add header string
--user-agent=x          -U x    Set user agent
--no-proxy              -N      Just don't use any proxy server
--quiet                 -q      Leave stdout alone
--verbose               -v      More status information
--alternate             -a      Alternate progress indicator
--help                  -h      This information
--version               -V      Version information
</pre>

<p>Axel in its simplest use:</p>

<pre spellcheck="false" tabindex="0">axel url
</pre>

<p>Common options include</p>

<pre spellcheck="false" tabindex="0">--max-speed
</pre>

<p>to prevent the app chewing up all your bandwidth and</p>

<pre spellcheck="false" tabindex="0">--num-connections
</pre>

<p>to specify a number of connections (the recommended default of 4 is fine for most downloads).</p>

<hr /><p>Passing in multiple URLs allows downloading of the same file from multiple locations.</p>

<h2 data-id="summation">Summation</h2>

<p>Axel is a great command-line tool, but what if you want a GUI download manager with similar features? Check out uGet, which also includes accelerated downloads, clipboard monitoring, browser integration queuing support, and many more features!</p>

<p>Download Manager for for <a rel="nofollow" href="https://ugetdm.com/downloads/">Linux, BSD, Android, and Windows.</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Easy add IP to be blocked by iptables</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3905/easy-add-ip-to-be-blocked-by-iptables</link>
        <pubDate>Mon, 12 Apr 2021 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>mikho</dc:creator>
        <guid isPermaLink="false">3905@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/mikho" rel="nofollow">@mikho</a>, 12 Apr 2021</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>Following up on the post on how to loop thru a file and perform an action per line, which you can find here</p>

<p><a href="https://lowendspirit.com/how-to-loop-through-a-file-and-perform-an-action-per-line/" rel="nofollow">https://lowendspirit.com/how-to-loop-through-a-file-and-perform-an-action-per-line/</a></p>

<hr /><p>There is a case when this is useful, adding IPs from a text file into iptables and block their access to your VPS or dedicated server.</p>

<p>if you break down this command with its parameters (<em>iptables being the command</em>)</p>

<pre spellcheck="false" tabindex="0">iptables -A INPUT -s XXX.XXX.XXX.XXX -p udp -m udp --dport 28960:28965 -j DROP
</pre>

<p><u><strong>Parameter</strong>: Explanation</u><br /><strong>-A</strong>: Append this to existing rules<br /><strong>INPUT</strong>: The chain where the rule should be added into<br /><strong>-s XXX.XXX.XXX.XXX</strong>: -s Sets the source for a particular packet, in this case the ip of XXX.XXX.XXX.XXX<br /><strong>-p udp</strong>: -p = Sets the IP protocol for the rule, which can be either icmp, tcp, udp, or all, to match every possible protocol. If this option is omitted when creating a rule, the all option is the default.<br /><strong>-m udp</strong>: -m = match option  Different network protocols provide specialized matching options which may be set in specific ways to match a particular packet using that protocol. Of course, the protocol must first be specified in the iptables command, such as using -p tcp , to make the options for that protocol available.<br /><strong>–dport 28960:28965</strong>: –dport Specifies the destination port of the UDP packet, using the service name, port number, or range of port numbers. The –destination-port match option may be used instead of –dport.  To specify a specific range of port numbers, separate the two numbers with a colon (:), such as our example.  You may also use an exclamation point character (!) as a flag after the –dport option to tell iptables to match all packets which do not use that network service or port.<br /><strong>-j DROP</strong>: -j Tells iptables to jump to a particular target when a packet matches a particular rule. Valid targets to be used include the standard options, ACCEPT, DROP, QUEUE, and RETURN, as well as extended options that are available through modules loaded, such as LOG, MARK, and REJECT, among others. If no target is specified, the packet moves past the rule with no action taken. However, the counter for this rule is still increased by 1, as the packet matched the specified rule.  in our example we use DROP — The system that sent the packet is not notified of the failure. The packet is simply removed from the rule checking the chain and discarded.</p>

<p>This command will DROP connections from IP XXX.XXX.XXX.XXX on udp port 28960:28965</p>

<p>If you want to block all connections from a specific IP, no matter what port it tries to connect to, omit the -p -m and --dport parameters. This will look like this</p>

<pre spellcheck="false" tabindex="0">iptables -A INPUT -s XXX.XXX.XXX.XXX -j DROP
</pre>

<p>You might ask when are we going to loop thru the file?</p>

<pre spellcheck="false" tabindex="0">#!/bin/sh

# This will loop thru the file /ban/banip.txt and add every IP in that 
# file with a DROP to the INPUT chain in iptables.
#
# change the path and file name if required

# you can re-run this file if you are not saving your iptables config 
# between reboots. 
while read blist
do
/sbin/iptables -A INPUT -s $blist -j DROP &amp;&amp; sleep 2
echo $blist has been added to your iptables

done &lt; /ban/banip.txt
</pre>

<p>To add a single IP to the block list in iptables and add the IP to your text file, you could use a simple shell script like this</p>

<pre spellcheck="false" tabindex="0">#!/bin/sh
# Script to add ip
echo -n "Enter the IP to BAN and press [ENTER]:"
read ip
/sbin/iptables -A INPUT -s $ip -j DROP

#keep a record of the banned IP's if you want or comment out
echo $ip &gt;&gt; /ban/banip.txt
# Make sure you use the same path and filename as in the loop script
</pre>

<p>This is a quick and dirty way to keep a list of IPs you would like to block access from.</p>

<p>I'm sure that the readers have more sophisticated and innovative ways to add their own list of IPs to iptables.</p>

<p>Comment with how you do it and why you do it the way you do.</p>
]]>
        </description>
    </item>
    <item>
        <title>Extending Proxmox Disk Space with iSCSI Storage</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/2712/extending-proxmox-disk-space-with-iscsi-storage</link>
        <pubDate>Sat, 27 Mar 2021 03:41:28 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>ehab</dc:creator>
        <guid isPermaLink="false">2712@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>This tutorial describes how to setup an iscsi partion and add it to the Proxmox storage pool.</p>

<p>The main use case for this setup is to mix and extend storage options due to low local disk space, adding fast Nvme or slow cheap HDD for iso's,templates etc ...</p>

<p>While Proxmox cp does provide a GUI to add iscsi storage my experience with server restarts did not recover connectivity with the target disk.</p>

<p>In this tutorial i will walk though mostly a command line setup between two servers.</p>

<p><strong>Note</strong>: It is recommend to use a private network between the two servers and if possible a 10GB connection would be ideal.</p>

<h6 data-id="terms-to-know">Terms to know</h6>

<p><strong>Target</strong> - "is the server providing the disk/partion to share"<br /><strong>Initiator</strong> - "the proxmox server consuming the target"</p>

<p>The next diagram depicts the main commands and files to touch:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/b1/tkycefkq5qbq.png" alt="" /></p>

<p>are you ready; here we go:</p>

<h2 data-id="a-setting-up-the-target-example-ip-98-76-54-32">A - Setting up the Target example ip - 98.76.54.32 :</h2>

<pre spellcheck="false" tabindex="0"># apt-get install tgt 
# cat &lt;&lt;EOF &gt; /etc/tgt/conf.d/target01.conf
&lt;target iqn.2021-03.kvm:lun1&gt;
     backing-store /dev/mapper/vgstore-lviscsi
     initiator-address 12.34.56.78
     incominguser iscsi-user password
&lt;/target&gt;
EOF
# systemctl --now enable tgt
# systemctl status tgt  ### make sure its running ; you may need to reboot
</pre>

<p>in the above conf file i am setting the free partition /dev/mapper/vgstore-lviscsi make sure you add the correct partition available to you.</p>

<pre spellcheck="false" tabindex="0"># tgtadm -o show -m target
</pre>

<p>you may need to reboot to get tgtadm show tartget details.</p>

<h2 data-id="b-setting-up-the-initiator-example-ip-12-34-56-78">B - Setting up the ** Initiator ** example ip - 12.34.56.78 :</h2>

<pre spellcheck="false" tabindex="0"># apt-get install open-iscsi 
# systemctl --now enable open-iscsi
# reboot # if next command
# iscsiadm -m discovery -t sendtargets -p 98.76.54.32:3260  # should get next sample output
98.76.54.32:3260,1 iqn.2021-03.kvm:lun1
</pre>

<p>next is to change the target conf file</p>

<pre spellcheck="false" tabindex="0"># ## use tab after nodes to auto complete the name
nano /etc/iscsi/nodes/iqn.2021-03.kvm\:lun1/98.76.54.32\,3260\,1/default
</pre>

<p>find the key and edit value according to the following</p>

<pre spellcheck="false" tabindex="0">node.startup = automatic
node.session.auth.authmethod = CHAP
node.session.auth.username = iscsi-user
node.session.auth.password = password
</pre>

<pre spellcheck="false" tabindex="0"># systemctl restart open-iscsi 
# iscsiadm -m node --login     # should return successful 
</pre>

<p>now lets check if the partition is added</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/6b/3qsjo1vtzl58.png" alt="" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ki/2w7ef3s54fqd.png" alt="" /></p>

<p>Now its time to create the volume and display it</p>

<pre spellcheck="false" tabindex="0"># pvcreate /dev/sda
# vgcreate vgiscsi /dev/sda
# vgs
</pre>

<p><img src="https://talk.lowendspirit.com/uploads/editor/va/xmjon2q0sicr.png" alt="" /></p>

<h2 data-id="c-add-the-vg-group-to-proxmox">C - Add the vg group to proxmox</h2>

<p><img src="https://talk.lowendspirit.com/uploads/editor/o2/evpqwx6bc0qa.png" alt="" /><br /><img src="https://talk.lowendspirit.com/uploads/editor/sk/mc1azlbb9obj.png" alt="" /></p>

<p>next create and use the new lvm for creating a container like</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/pn/3mqfgs7392hq.png" alt="" /></p>

<p>and its done.</p>

<p>This was my experince of extending storage on a proxmox using iscsi. I hope you will have fun as much as i did.</p>

<p>Refs:<br /><a href="https://www.howtoforge.com/tutorial/how-to-setup-iscsi-storage-server-on-ubuntu-2004-lts/" rel="nofollow">https://www.howtoforge.com/tutorial/how-to-setup-iscsi-storage-server-on-ubuntu-2004-lts/</a><br /><a href="https://www.tecmint.com/setup-iscsi-target-and-initiator-on-debian-9/" rel="nofollow">https://www.tecmint.com/setup-iscsi-target-and-initiator-on-debian-9/</a></p>

<p><strong>Final notes:</strong> <br />
I would like to mention <a href="https://dev.lowendspirit.com/index.php?p=/profile/gleert" rel="nofollow">@gleert</a> from <a href="https://www.naranja.tech/" rel="nofollow">https://www.naranja.tech/</a> for providing a great kvm with a lot of bandwidth. <br />
I promised him that if my install worked and ran smoothly for a while i will add this note.</p>
]]>
        </description>
    </item>
    <item>
        <title>How to Create and Setup a Debian KVM VPS with Proxmox VE 6 -- Part I -- Creation</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/2260/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-i-creation</link>
        <pubDate>Wed, 16 Dec 2020 04:18:23 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">2260@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><strong>How to Create a Debian KVM VPS with Proxmox VE 6</strong></p>

<p>Contributed by Not_Oles, December 27, 2020</p>

<p><strong>Introduction</strong></p>

<p>This afternoon we're going to spin up a new Virtual Private Server ("VPS") running the <a rel="nofollow" href="https://debian.org">Debian GNU/Linux Operating System</a>. Our VPS will be a <a rel="nofollow" href="https://www.linux-kvm.org/page/Main_Page">Kernel-based Virtual Machine {"KVM")</a> utilizing the <a rel="nofollow" href="https://proxmox.com/en/proxmox-ve">Proxmox Virtual Environment.</a></p>

<p>Today's post will cover creation of the Virtual Machine ("VM") with the Proxmox web GUI ("Graphical User Environment") from the beginning up to the exciting moment when the Debian installer successfully starts. <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> The next post will cover the Debian installation, and the following post will cover configuration inside the newly installed Debian operating system.</p>

<p>We're going to be using an <a rel="nofollow" href="https://www.hetzner.com/dedicated-rootserver/ax51">AX51-NVME server at Hetzner</a> on which Proxmox already has been installed.</p>

<p><strong>Soyoustart, LXC, and Secure Shell Alternatives</strong></p>

<p>If you do not already have a Proxmox server, previous posts covering Proxmox <a rel="nofollow" href="https://lowendspirit.com/installing-proxmox-ve-6-2-at-soyoustart">installation</a> and <a rel="nofollow" href="https://lowendspirit.com/postinstall-configuration-of-proxmox-ve-6-2">postinstall configuration</a> at Soyoustart might be helpful.</p>

<p>Today's project involves a <a rel="nofollow" href="https://www.linux-kvm.org/page/Main_Page">KVM VPS.</a> Another <a rel="nofollow" href="https://lowendspirit.com/creating-our-first-lxc-vps-with-proxmox-ve-6-2-at-soyoustart">post in  this series</a> discusses creating <a rel="nofollow" href="https://linuxcontainers.org/lxc/introduction/">LXC container VPSes.</a></p>

<p>Today's post also assumes a bit of familiarity with <a rel="nofollow" href="https://www.ssh.com/ssh/">Secure Shell ("ssh"),</a> which is used here to obtain the Debian netinstall ISO file. However, alternate instructions also are given for uploading the ISO via the Proxmox web GUI.</p>

<p><strong>Download the ISO</strong></p>

<p>For today's KVM VPS we're going to use the standard Debian netinstall iso.</p>

<ul><li>Log in to the server and put the Debian iso in the right place for the Proxmox web GUI to find it.</li>
</ul><pre spellcheck="false" tabindex="0">$ ssh root@hels.example.com
Linux hels.example.com 5.4.78-2-pve #1 SMP PVE 5.4.78-2 (Thu, 03 Dec 2020 14:26:17 +0100) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 13 06:26:17 2020 from 187.XXX.XXX.XXX
root@hels ~ # cd /var/lib/vz/template/iso
root@hels /var/lib/vz/template/iso # wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.7.0-amd64-netinst.iso
[ . . . ]
HTTP request sent, awaiting response... 200 OK
Length: 352321536 (336M) [application/x-iso9660-image]
Saving to: ‘debian-10.7.0-amd64-netinst.iso’

debian-10.7.0-amd64-netinst 100%[===========================================&gt;] 336.00M   108MB/s    in 3.2s    

2020-12-15 23:34:41 (104 MB/s) - ‘debian-10.7.0-amd64-netinst.iso’ saved [352321536/352321536]

root@hels /var/lib/vz/template/iso # 
</pre>

<p><strong>Verify the ISO</strong></p>

<ul><li>Next we download the checksums file and the signature file so we can verify the ISO:</li>
</ul><pre spellcheck="false" tabindex="0">root@hels /var/lib/vz/template/iso # wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS
--2020-12-16 04:50:34--  https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS
Resolving cdimage.debian.org (cdimage.debian.org)... 2001:6b0:19::165, 2001:6b0:19::173, 194.71.11.173, ...
Connecting to cdimage.debian.org (cdimage.debian.org)|2001:6b0:19::165|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 658
Saving to: ‘SHA512SUMS’

SHA512SUMS                  100%[===========================================&gt;]     658  --.-KB/s    in 0s      

2020-12-16 04:50:35 (20.5 MB/s) - ‘SHA512SUMS’ saved [658/658]

root@hels /var/lib/vz/template/iso # wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS.sign
--2020-12-16 05:03:56--  https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS.sign
Resolving cdimage.debian.org (cdimage.debian.org)... 2001:6b0:19::165, 2001:6b0:19::173, 194.71.11.165, ...
Connecting to cdimage.debian.org (cdimage.debian.org)|2001:6b0:19::165|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 833
Saving to: ‘SHA512SUMS.sign’

SHA512SUMS.sign             100%[===========================================&gt;]     833  --.-KB/s    in 0s      

2020-12-16 05:03:56 (35.1 MB/s) - ‘SHA512SUMS.sign’ saved [833/833]

root@hels /var/lib/vz/template/iso # 

</pre>

<ul><li>Next we check the signature on the SHA512SUMS file:</li>
</ul><pre spellcheck="false" tabindex="0"><br /></pre>

<ul><li>We verify that the downloaded install file matches the SHA512sum:</li>
</ul><pre spellcheck="false" tabindex="0">root@hels /var/lib/vz/template/iso # sha512sum -c SHA512SUMS 2&gt;/dev/null | grep debian-10.7.0-amd64-netinst.iso 
debian-10.7.0-amd64-netinst.iso: OK
root@hels /var/lib/vz/template/iso # 
</pre>

<ul><li>Alternatively, we might already have the ISO downloaded and available locally, or it might be a custom ISO that we ourselves made. in these and similar cases, we can upload the ISO via the Proxmox web GUI.</li>
</ul><p>Log in to the web GUI at <a href="https://[Node_Name].example.com:8006" rel="nofollow">https://[Node_Name].example.com:8006</a>. Note that we must use http<strong>s</strong>. The server will send an empty response if we use http.</p>

<p>In the upper left hand Server View column of the web GUI, we expand the Node_Name by clicking the almost invisible "&gt;" to the left of the Node_Name. Then we click on "Local" and on "ISO Images." When we click on the "Upload" button above the list of images, a dialog box opens to start the upload.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/u6/w647u9qbalzi.png" alt="" title="Uploading an ISO with Proxmox web GUI" /></p>

<p><strong>Create the Virtual Machine</strong></p>

<ul><li>In the upper right of the Proxmox web GUI, we click the "Create VM" button.</li>
</ul><p><img src="http://talk.lowendspirit.com/uploads/editor/j3/fw9y3e3a8ig5.png" alt="" title="Create VM Button in Proxmox web GUI" /></p>

<ul><li>The "General" Tab is the first tab in the "Create: Virtual Machine" dialog.</li>
</ul><p>Proxmox assigns a VM ID number, by default beginning with 100, but we might prefer to use a custom numbering scheme.</p>

<p>By default, let's use the reverse DNS provided by Hetzner as the name of the server.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/f2/04ys3908rivz.png" alt="" title="General Tab" /></p>

<p>Click the "Next" button to continue to the OS tab.</p>

<ul><li>In the OS Tab, we select from the drop down the OS image we previously downloaded and verified. We also check to see that the OS type and kernel version are correct.</li>
</ul><p><img src="http://talk.lowendspirit.com/uploads/editor/g4/kahkbn3txzzc.png" alt="" title="OS Tab" /></p>

<ul><li>The System Tab is next. In the System Tab, we get to choose a graphics card, running <a rel="nofollow" href="https://pve.proxmox.com/wiki/Qemu-guest-agent#Introduction_-_What_is_qemu-guest-agent">Qemu Agent</a>, and the SCSI hard disk controller. Let's go with the defaults.</li>
</ul><p><img src="http://talk.lowendspirit.com/uploads/editor/ec/xc07rwuralka.png" alt="" title="System Tab" /></p>

<ul><li>In the Hard Disk Tab, let's increase the disk size allocation to 100 GB and otherwise go with the defaults.</li>
</ul><p><img src="http://talk.lowendspirit.com/uploads/editor/d4/9fbwjsl7ncwc.png" alt="" title="" /></p>

<ul><li>In the CPU Tab, let's give this user 8 cores.</li>
</ul><p><img src="http://talk.lowendspirit.com/uploads/editor/fa/9li4h21x9eso.png" alt="" title="" /></p>

<ul><li>In the Memory Tab, let's give this user 8096 MiB.</li>
</ul><p><img src="http://talk.lowendspirit.com/uploads/editor/9c/4os4kfou6r6t.png" alt="" title="" /></p>

<ul><li>In the Network Tab we can go with the defaults.</li>
</ul><p><img src="http://talk.lowendspirit.com/uploads/editor/as/divvgnukiv0t.png" alt="" title="" /></p>

<ul><li>In the Confirm Tab, let's click "Start after created."</li>
</ul><p><img src="http://talk.lowendspirit.com/uploads/editor/wu/xtlmcugljhpq.png" alt="" title="" /></p>

<ul><li>Selecting the newly created VM and "Console" lets us see the successful Debian boot screen! <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></li>
</ul><p><img src="http://talk.lowendspirit.com/uploads/editor/b2/4xnpdqncaovd.png" alt="" title="" /></p>

<p><strong>Conclusion</strong></p>

<p>At this point, the VM has been created, and Debian server is ready to be installed inside the newly created VM.</p>
]]>
        </description>
    </item>
    <item>
        <title>How to host Your WordPress website for less than 10 US Dollars Per Year</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/2258/how-to-host-your-wordpress-website-for-less-than-10-us-dollars-per-year</link>
        <pubDate>Tue, 15 Dec 2020 09:40:30 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>vyas</dc:creator>
        <guid isPermaLink="false">2258@/index.php?p=/discussions</guid>
        <description><![CDATA[<h1 data-id="wordpress-hosting-on-a-budget">WordPress Hosting on a Budget</h1>

<h3 data-id="summary">Summary</h3>

<p>In this post, I will discuss different ways to set up a WordPress website in under 10 US Dollars a year. Learn why I decided to take this approach, and how you can find frugal web hosting for an entry level blog or portfolio site.</p>

<hr /><p><strong>Note</strong></p>

<p>I had originally set out to discuss different ways to install WordPress. As I began writing it, it became evident that the LES readers might also be interested in learning about <strong>hosting a WordPress site in under 10 US dollars a year</strong>.  We will cover that in Part II of this 2 post series.</p>

<h3 data-id="what-you-can-expect-to-read-in-part-i">What you can expect to read in Part I? </h3>

<p>In this part, I have elaborated my reasons for doing so. For more discussions related to WordPress, you can visit the <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/1501/all-things-wordpress-discussions">All Things WordPress Discussion</a> in the LowEndSpirit Forum.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/kw/wb37wpy9dv7b.png" alt="feature image for blog post on WordPress. Dec 2020 by Amar Vyas, amarvyas.in" width="500" /></p>

<h2 data-id="introduction">Introduction</h2>

<p>During the recently concluded <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/46506#Comment_46506">Black Friday/ Cyber Monday 2020 (BFCM2020) deals</a> on LowEnd Spirit and elsewhere,  you may have picked up a VPS or two or a Shared Hosting Plan here and there. Which may have left you wondering,<br />
"What do I do with all these hosting plans?"</p>

<blockquote><div>
  <p>The more experienced hands may use their BFCM2020 purchase for specific projects such as Virtual Private Server for  Plex server, a NAT for a VPN, shared hosting for parking domains, and so on.</p>
</div></blockquote>

<p>In many cases, you, the buyer of these Black Friday deals would want to set up some soft of a website. Maybe you are not a beginner, but you might probably the ' go to ' person for friends, neighbours, relatives or significant others. They may often rely on for advise. Now lets' say one or more of them want to set up a website.</p>

<h3 data-id="a-website-in-2021-you-must-be-joking">A website in 2021 ? You must be joking!</h3>

<p>In spite of the barrage of Social Media sites and apps, the number of websites has actually increased the over the years For those interested in numbers, <a rel="nofollow" href="https://www.broadbandsearch.net/blog/internet-statistics">this site has some facts and figures</a> to peruse. Some of the data and the sources in such surveys or statistics might need a second look, but such information does offer a perspective.</p>

<p>The relative convenience of setting up a website these days seems to be a contributing factor for the increasing number of websites. The convenience could include:</p>

<ul><li><p>Beginner friendly Hosting, either through SAAS providers like <a rel="nofollow" href="https://squarespace.com">Squarespace</a> and <a rel="nofollow" href="https://wix.com">Wix</a>, or <br />
via shared or managed hosting that uses one click installers like <a rel="nofollow" href="https://softaculous.com">Softaculous</a> and <a rel="nofollow" href="https://installtron.com">Installtron</a>.</p></li>
<li><p>Less complexity of setting up a website due to 'no code' solutions</p></li>
<li>Cost of hosting, if we exclude the recent cPanel hike and its coming impact.</li>
<li>Tools for backup and updates</li>
<li>Ability to host in multiple languages</li>
</ul><p>Rather than pondering on these factors further, let us move on to our main discussion!</p>

<h3 data-id="wordpress-hosting-the-frugal-way">WordPress Hosting, the Frugal Way</h3>

<p>To keep things simple, I have structured this post in two segments. In the first part, I will provide a quick overview of the  ecosystem for WordPress hosting, and some of the providers in this space. Lets call this an appetizer for the main topic of discussion.</p>

<p>In the  Part II we will look at the different ways of setting up WordPress under different hosting configurations. This is the most important segment, where we will talk about how to host a WordPress site for under 10 US  Dollars a year. Our aim is not to go cheap, but to do so in a frugal manner. If you are starting out today, or are migrating a low traffic website, this is the section you should pay close attention to. I will talk about issues like traffic, load testing, basic configurations (or the "stack" of themes and plugins used by me.  Also find included some links, resources and takeaways from my testing.</p>

<hr /><h3 data-id="the-mad-rush-for-wordpress-hosting">The Mad Rush for WordPress Hosting</h3>

<p>Depending on which source you look up, the marketshare of WordPress in the web hosting space is on the rise. The numbers quoted often are: "WordPress occupies 40 % marketshare of all websites" to "more than 50% of all websites that use a content management system, use WordPress." <a rel="nofollow" href="https://w3techs.com/technologies/details/cm-wordpress">W3techs also reflects on this trend</a>.</p>

<p>Without flying the flag on behalf of <a rel="nofollow" href="https://automattic.com">Automattic</a>, the company behind WordPress, let us look at the Universe of WordPress Hosting.  This is a complex system with hosts, plugin and theme developers, website designers, social media and security consultants, content specialists, marketers, e and woo commerce specialists, and so forth. WordPress is open source and basic hosting and some themes and plugins are available at little to no cost. But the professional services (content, search engine optimization, security, etc..) might cost you a lot. So is the case with managed or specialized hosting.</p>

<p><strong>Our focus is on WordPress Hosting, so let us take a look at it closely.</strong><br />
This pricing for WordPress hosting is a very interesting area where you have <a rel="nofollow" href="https://wpvip.com">WordPress VIP</a> from automatic themselves, which exceeds US dollars 5,000  a month. In the mid range, there are pricing plans from a whole array of providers that can run into hundreds of US dollars a year.</p>

<p>If you look up managed WordPress hosting plans typically start at 10 to 15 US dollars a month at entry level, but the median price or most providers start their plans at 30 or 35 US dollars. Annually, the might run into excess of $300. If you look at the specifications that they provide, you would notice that the specifications or page views are not very high. <a rel="nofollow" href="https://www.wpbeginner.com/managed-wordpress-hosting/">Many of the providers offer similar set of features as this list shows</a> .</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/s2/emvswi26kzmk.png" alt="list of WordPress Hosting providers. A Vyas, Dec 2020.amarvyas.in" width="450" /></p>

<p>This may include CDN or content delivery network, image optimization etc. The key reason for pricing is because of support. But evaluating support is akin to wading through tricky waters. In recent weeks I have spent quite a bit of time reading up on customer service issues and overall service levels of some of these providers. Siteground in particular seems to be the most talked about (and often maligned) provider, largely because of their 'bait and switch' pricing and recent decision to limit WordPress support requests.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/g8/h032z883nnvy.png" alt="pricing plan for WP Optim, Dec 2020" width="400" /></p>

<p>Pricing plan for WP Optim, used for illustration<br /></p>

<h3 data-id="not-everyone-needs-feature-rich-hosting">Not everyone needs Feature-Rich Hosting</h3>

<p>A typical user may have a question like</p>

<blockquote><div>
  <p>"I am looking at hosting a simple website which will have about 50 posts and around 200  images. Do I really need to spend over 200 dollars a year on hosting?"</p>
</div></blockquote>

<p>If such a question is posed in the webhosting groups on Facebook or other sites, you will receive a list of provider recommendations that may look like the below table.</p>

<p>Before answering a yes or no, to the above question, I usually ask a set of qualifier questions myself. Many of which seem logical (atleast to me). For purpose of our discussion,</p>

<ul><li>We will focus on a blog or image / portfolio site only.</li>
<li>Deeply discounted shared hosting plans from the likes of Hostinger and EIG companies are excluded.</li>
</ul><p>Sample Checklist of questions for WordPress Hosting selection</p>

<pre spellcheck="false" tabindex="0">
- What kind of site do you have? 
(i.e.) Is it a Blog, portfolio, membership site, store with woo commerce etc..? 
- Do you plan to use a Content Delivery Network (CDN)? Or, do you have one currently?
- If you are looking to move hosts, what are the current (shared) hosting specifications?
- Where is your hosting located, and where do the maximum visitors come from?
- Do you use a monitoring service like Hetrix tools or Uptime Robot to 
monitor the website uptime?
- What is the current hosting plan fees and what is your appetite for a higher plan/ upgrade?
- Are you comfortable with a DIY setup, or do you need handholding? (i.e for an existing site,
 do you need help with migration, or for a new site do you need help with setting up the site ? )
</pre>

<p>Keeping those questions in focus, we will ddress some of these qustions in the second part of this post. Till then. I leave you with the screenshot of a sample website creted for this blog post.<br /><img src="https://talk.lowendspirit.com/uploads/editor/y8/ygfx27k755te.png" alt="screenshot from Blocksy Theme on ClassicPress. Amarvyas.in Dec 2020" width="500" /></p>

<p>Blocksy theme on ClassicPress: giving a Frugal WordPress Website with a modern look.</p>

<p>Resources: <br />
1. You may also want to read my  accompanying post o NAll Things WordPress discussion in the LES Forum.  <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/50067/#Comment_50067">Downside of Expensive WordPress Hosting Plans</a><br /><br />
2.Prices for "premium" or "Managed" WordPress Hosting Providers <br /></p><details><summary>Click the arrow to expand. </summary><br /><a rel="nofollow" href="https://closte.com/pricing">Closte</a><br /><br /><a rel="nofollow" href="https://10web.io/pricing/">10 Web</a> <br /><br /><a rel="nofollow" href="https://kinsta.com/plans/">Kinsta</a> <br /><br /><a rel="nofollow" href="https://pagely.com/plans-pricing/">Pagely</a><br /><a rel="nofollow" href="https://www.siteground.com/wordpress-hosting.htm">SiteGround</a> <br /><br /><a rel="nofollow" href="https://www.liquidweb.com/products/managed-wordpress/">LiquidWeb</a> <br /><br /><a rel="nofollow" href="https://getflywheel.com/pricing/">Flywheel</a><br /><br />
Nestify<br /><br /><a rel="nofollow" href="https://rocket.net">Rocket Web Hosting</a> <br /><br /><a rel="nofollow" href="https://wordpress.com/premium/">WordPress Premium</a><br /><br /><a rel="nofollow" href="https://wpengine.com/more/specialoffer/">WP Engine</a><br /><br /><a rel="nofollow" href="https://pressable.com/pricing/">Pressable</a><br /><br /><a rel="nofollow" href="https://pantheon.io/plans/pricing">Pantheon</a><br /><br /></details><hr /><p>For any feedback and suggestions about this post, please leave a comment below or contact <a href="https://dev.lowendspirit.com/index.php?p=/profile/vyas" rel="nofollow">@vyas</a> in the LES forum. All screenshots are taken from websites of respective providers. All other images are created by <a rel="nofollow" href="https://amarvyas.in">A Vyas</a>, December 2020.</p>
]]>
        </description>
    </item>
    <item>
        <title>Resize your KVM VPS disk partition, 2 methods and bonus tip to reclaim disk space - Easy mode.</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1353/resize-your-kvm-vps-disk-partition-2-methods-and-bonus-tip-to-reclaim-disk-space-easy-mode</link>
        <pubDate>Tue, 30 Jun 2020 13:57:58 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>LES_Blog</dc:creator>
        <guid isPermaLink="false">1353@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by Anthony Smith, 1 July 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>Did you upgrade your VPS and it looks like the disk is still the same size? Did you migrate your VPS to another host using the method in <a rel="nofollow" href="https://lowendspirit.com/migrate-a-kvm-vps-from-one-host-to-another-easy-mode" title="part 1 of this easy mode series">part 1 of this easy mode series</a> and the target disk was bigger so you want to make use of that extra space?</p>

<p>I will show you in a few simple methods below with examples of <em>resize2fs</em> and <em>growpart</em> and also the super simple point and click GParted.</p>

<hr /><p>In the following image we get a look at the disk and partition size before any changes have been made so we have a good starting point to work from, we can see it is a 10GB disk with a single partition <code spellcheck="false" tabindex="0">/dev/vda1</code> being pretty much the full 10GB.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/cr/7ik1nkkkz551.png" alt="" title="" /></p>

<p>I then resized the disk up to 15GB in the backend as you can see in the next image, the physical disk is now 15GB however the partition <code spellcheck="false" tabindex="0">/dev/vda1</code> is still only 10GB.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/fb/ifc9scgimrlb.png" alt="" title="" /></p>

<p>Starting with the GParted method we need to boot the VPS into a rescue mode that includes GParted, most hosts will offer some ISO with GParted included or just a plain GParted disk, I tend to use sysrescuecd as it usually has the relevant tool-set to complete most tasks.</p>

<p>Now you need to change the boot order and mount the ISO of choice (that includes GParted).</p>

<p>Boot order:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/rr/2rxm9e2bg04s.png" alt="" title="" /></p>

<p>Mount ISO and reboot:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/fh/o0binhj8yzbk.png" alt="" title="" /></p>

<p>Clicking the reboot button in SolusVM is what re-writes your config file on the backend so that the ISO mounts and the boot order changes, in Virtualizor you need to 'Stop' then 'Start', reboot, for some reason does not update the config file so the ISO will not mount.</p>

<p>You will then be able to open a VNC session using the built-in HTML5 VNC viewer or a direct VNC connection using a desktop client.</p>

<p>If you used sysrescuecd you should see something similar to this:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/2y/9yx4zpmqkl6p.png" alt="" title="" /></p>

<p>Pick the default option and when the rescue mode drops you at a prompt, run: <code spellcheck="false" tabindex="0">startx</code> as shown in the next image:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/jp/pcgop0tfcnra.png" alt="" title="" /></p>

<p>Give it a minute or so and the graphical session should start and look like this:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/2j/8bpcgceuzvvm.png" alt="" title="" /></p>

<p>You will see a shortcut to GParted on the bottom left, in other distros you may find it via the menu system.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/cz/vkf7b7fj7rnz.png" alt="" title="" /></p>

<p>After you launch GParted you will see a disk overview and you will see that extra 5GB of unused space:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ub/72amy53pysgw.png" alt="" title="" /></p>

<p>Right-click on the first partition on the left labelled <strong>/dev/vda1</strong> and select resize/move:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/zk/rrrbj1egrb0e.png" alt="" title="" /></p>

<p>Then grab the furthest extent of the partition and drag it to the right and click the 'resize/move' button.</p>

<p>Before:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/6y/bfldxltyuqy8.png" alt="" title="" /></p>

<p>After:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/5l/741hd7wcxrc1.png" alt="" title="" /></p>

<p>Then click the tick to confirm the operation:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/16/z8xdggd5l2gt.png" alt="" title="" /></p>

<p>Confirm:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/id/77s91713vcdy.png" alt="" title="" /></p>

<p>That should be it, the partition should now occupy all of the free space on the hard disk.</p>

<p>You can now shut down the rescue mode by unmounting the ISO and changing the boot order back:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/t3/2hsxls3aixlv.png" alt="" title="" /></p>

<p>Tip: Hit power off first then reboot, you will not risk any data while in rescue mode without mounted partitions so no need to wait for the full shutdown, this saves you 30 seconds or so.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/26/612hr7h8arym.png" alt="" title="" /></p>

<p>Now when you log in to your VPS again you will see that the partition size has grown:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/e1/a99qfsbj4o79.png" alt="" title="" /></p>

<p>Congratulations you are all done!</p>

<hr /><p>But what if you feel like using GParted was cheating, more like 'Super-easy' mode and you want to feel like you learned what is actually happening rather than just knowing where to click?</p>

<p>I hear you!, let's do it again then in a slightly different way, once again in the backend, I have increased the disk size on the same VPS to 20GB (an extra 5GB) as seen in the image below.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ho/uwmhzh8t3wcg.png" alt="" title="" /></p>

<p>Once again, get in to rescue mode or boot with the sysrescuecd iso, I won't repeat the same images as above, the process is identical however just get to the point whereby you get a prompt do <strong>not</strong> run startx.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/hu/lihlaf9ge90q.png" alt="" title="" /></p>

<p>Now running <code spellcheck="false" tabindex="0">fdisk -l /dev/vda</code> we can see that the disk <strong>vda</strong> is 20GB and the first partition <strong>vda1</strong> is 15GB, to extend this run:</p>

<p><code spellcheck="false" tabindex="0">growpart /dev/vda 1</code> <em>note the space between vda and 1</em></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/dm/x7wgpcg3yl8z.png" alt="" title="" /></p>

<p>This (growpart) will not always automatically grow the filesystem but what it is useful for is forcing the kernel to register the new disk size as some older kernels and tools may fail with you run resize2fs with an error along the lines of "Nothing to do"</p>

<p>So next we will manually run <code spellcheck="false" tabindex="0">resize2fs /dev/vda1</code></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/bi/f41p1p9dkune.png" alt="" title="" /></p>

<p>As you can see in the above image the increased partition size is verified with <code spellcheck="false" tabindex="0">lsblk /dev/vda</code> which will show the disk and the partition sizes.</p>

<p>Power off the VPS, change the boot order back to Hard disk first again and reboot.</p>

<p>Now when you log in to your actual OS you can verify that the partition has in fact expanded:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/nw/9y9fe042t8ez.png" alt="" title="" /></p>

<p><strong>BONUS TIP</strong></p>

<p>The ext4 filesystem most commonly used, certainly for Linux VPS templates anyway will as standard reserve 5% of your disk space in case you run out, it is like a buffer zone to prevent catastrophe.</p>

<p>It is a relic from ext3 which was released in 2001, at that time the average physical hard disk in use was between 10GB and 20GB.</p>

<p>These days disks even virtual ones are significantly bigger and you take very regular backups... right? so 5% is often really over the top.</p>

<p>You can reduce this to 0 however I seriously do not recommend that, but you can sometimes gain a good little chunk of disk space back by pushing the reserve down to 1%.</p>

<p>This can be done live, no need to reboot or go in to rescue mode, just run: <code spellcheck="false" tabindex="0">tune2fs -m 1 /dev/vda1</code></p>

<p>The 1 is the % of space to reserve for the partition you select, in this case <strong>/dev/vda1</strong></p>
]]>
        </description>
    </item>
    <item>
        <title>Installing Proxmox VE 6.2 at SoYouStart</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1298/installing-proxmox-ve-6-2-at-soyoustart</link>
        <pubDate>Mon, 22 Jun 2020 02:16:58 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">1298@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><strong>Installing Proxmox VE 6.2 at SoYouStart</strong><br /><em>How to (almost) become a Hosting Provider for only US$29.95 and in only 20 minutes</em></p>

<p>Contributed by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Not_Oles" rel="nofollow">@Not_Oles</a> -- June 21, 2020</p>

<p><strong>Introduction</strong></p>

<p>Every interaction with a website requires a <em>client</em> (often a web browser) and also a <em>server.</em> Servers are computers on the internet which transmit content in response to requests sent by clients. The server which supplies the specific content responsive to specific requests often is called the <em>host</em> for that content. Thus, a <em>hosting provider</em> is a person or a company which provides servers that can host content.</p>

<p><strong>OVH, SoYouStart, and Kimsufi</strong></p>

<p><a rel="nofollow" href="https://www.ovh.com/world/">OVH</a>, an international company based in France, is an example of a hosting provider. <a rel="nofollow" href="https://us.ovhcloud.com/about/company/timeline">As of 2017,</a> OVH had over 2,000 employees, 27 data centers worldwide, and over 300,000 active servers.</p>

<p>In addition to selling under its own name, OVH also has two additional brands: <a rel="nofollow" href="https://www.soyoustart.com/us/">SoYouStart</a>, which provides less expensive servers, and <a rel="nofollow" href="https://www.kimsufi.com/us/en/servers.xml">Kimsufi</a>, which provides very low cost servers.</p>

<p>As appropriate in the world of Low End Spirit, we will be working here today with one of the lowest cost SoYouStart servers. Our server was rented as a great Boxing Day deal for just US$29.95 per month.</p>

<p>Here are our server's specs: SYS-LE-1 Server - Intel Xeon D-1521 - 32GB DDR4 ECC 2133MHz - 2x 2To HDD SATA Soft RAID. SoYouStart servers are advertised as 250 Mbps bandwidth, which is symmetrical and unmetered. However <em>ssssh!</em> a few SoYouStart servers seem to be being delivered with 500 Mbps or even 1 Gbps.</p>

<p><strong>Avoiding waste of server resources</strong></p>

<p>Even our inexpensive SoYouStart server is bigger and more powerful than what is needed for the majority of websites or web services. And a latest generation web server might offer ten or twenty times the power of ours. Thus, to avoid the waste of server capacity which would result if each website or web service each had to use its own, individual <em>dedicated, bare metal server,</em> many methods have been developed for sharing or "virtualizing" server capacity.</p>

<p><strong>Proxmox Virtual Environment</strong></p>

<p><a rel="nofollow" href="https://proxmox.com/en/">Proxmox Virtual Environment ("PVE")</a> is a free, <a rel="nofollow" href="https://git.proxmox.com/">open source</a> server virtualization administrative system from an Austrian company. Proxmox has seen wide adoption. Proxmox software is designed to divide and share bare metal host servers and their resources among multiple <em>virtual private servers (VPS).</em> Proxmox VE 6.2 was <a rel="nofollow" href="https://forum.proxmox.com/threads/proxmox-ve-6-2-released.69647/">released on May 12, 2020.</a></p>

<p>Proxmox offers a <a rel="nofollow" href="https://pve.proxmox.com/wiki/Graphical_User_Interface">Graphical User Interface ("GUI")</a> through which one can administer, via a web browser, Proxmox itself as well as Proxmox host servers ("nodes") and  VPSes installed by Proxmox. Proxmox has <a rel="nofollow" href="https://pve.proxmox.com/wiki/Main_Page">an extensive wiki</a> and an <a rel="nofollow" href="https://forum.proxmox.com/">active forum</a>. <a rel="nofollow" href="https://proxmox.com/en/proxmox-ve/pricing">Proxmox paid support subscriptions</a> are available.</p>

<p>Proxmox is programmed in the <a rel="nofollow" href="https://pve.proxmox.com/wiki/Perl_Style_Guide">PERL ("Practical Extraction and Report Language") programming language.</a> Because Proxmox is programmed in PERL, Proxmox VE users have, in addition to the GUI, the option of controlling everything via <a rel="nofollow" href="https://www.proxmox.com/en/news/listid-1/mailid-89-useful-commands-for-your-proxmox-ve-cli?tmpl=component">the traditional command line interface ("CLI").</a></p>

<p><strong>The SoYouStart Control Panel</strong></p>

<p>OVH is <a rel="nofollow" href="https://proxmox.com/en/partners/hosting-partner">a Proxmox Hosting Partner</a>, and Proxmox is available on the SoYouStart Control Panel for install as one among the many OVH supported operating systems.</p>

<p>Besides installing supported operating systems, and somewhat similar to the OVH and the Kimsufi control panels, the SoYouStart Control Panel includes facilities for:</p>

<ul><li>Rescue Mode -- booting the server into an entirely memory resident operating system</li>
<li>Netboot -- booting the server's resident operating system on a kernel obtained over the network</li>
<li>IPMI -- Intelligent Platform Management Interface, <a rel="nofollow" href="https://www.supermicro.com/en/">Supermicro's</a> method of managing the server remotely, sometimes referred to as Keyboard, Video monitor, Mouse (KVM)</li>
<li>Failover IP assignment and transfer -- add or remove additional IP addresses or transfer IP addresses from one server to another</li>
<li>Setting Reverse DNS</li>
<li>Real time server monitoring</li>
<li>Backup</li>
<li>Quite a bit more</li>
</ul><p>One possible advantage of using Proxmox on OVH is that the Proxmox OVH install seems to use kernels from Proxmox instead of the OVH-customized, real time monitoring-enabled kernels present in the OVH-Control-Panel-installed versions of some other operating systems. On Proxmox, one thus gets newer kernels faster, while paying the price of losing OVH's real time monitoring in the OVH Control Panel. As of this writing, the Proxmox kernel version is SMP PVE 5.4.44-1 (Fri, 12 Jun 2020 08:18:46 +0200) x86_64, while the <a rel="nofollow" href="https://last-public-ovh-kernel.snap.mirrors.ovh.net/builds/">latest OVH version</a> is 4.19.128.</p>

<p><strong>Proxmox OS Install process</strong></p>

<p>We're now going to run through the Control Panel's Proxmox install process,. Note that installing Proxmox is quite similar to installing any of the other supported Operating Systems. So, for example, if you wanted to install Debian or Ubuntu or CentOS, the install process looks very much the same. Indeed, Proxmox runs on Debian, and so a Proxmox install basically is an extended Debian install.</p>

<p>What really does look quite different, however, and lies beyond today's scope, is installing an unsupported OS like OpenBSD by using the Rescue System or the IPMI. Suffice it to say that almost anything compatible with the hardware should be installable and should work just fine, though getting it installed and working sometimes can be quite tricky.</p>

<p><strong>Starting the Install</strong></p>

<p>On a newly rented server the first view of the Control Panel shows a pop-up flagging the Reinstall button along with a message saying something like, "Your server is ready to be installed." On a server which already has had an install, we begin by clicking the Reinstall button in the upper right:</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/dp/salela464qly.png" alt="" title="Starting the Install" /></p>

<p><strong>Default or Custom Install</strong></p>

<p>The Installer presents us with an opportunity to select the default install or a custom install. The default install simplifies the whole processes by bypassing the opportunity to change the disk partitioning. The defaults are fine for many people, but maybe we will want to make a change, so, let's check the box for "Custom Installation:"</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/4r/9exn9oda6b1e.png" alt="" title="Check box for Custom Installation" /></p>

<p><strong>OS Template selection</strong></p>

<p>Next we select the Proxmox VE 6 operating system template. Note that previous versions of Proxmox also are available further down the list. If we were installing another supported operating system besides Proxmox, this is the place where we would select it.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/mz/a9v23yxyydtk.png" alt="" title="Select Proxmox VE 6" /></p>

<p><strong>Disk RAID, partitioning, and formatting</strong></p>

<p>At the disk partitioning and formatting stage, we have the opportunity, on servers with more than one disk, to use the disks redundantly. When one disk constantly is mirroring another disk in a <a rel="nofollow" href="https://en.wikipedia.org/wiki/RAID"><em>Redundant Array of Independent Disks</em> (RAID)</a>, we always have two copies of all our data. When one disk fails, our data is safe on the mirror disk. The cost of RAID, with two disks total, is a 50% reduction in disk capacity.</p>

<p>For production, many people, including me, would enable RAID. Thus, the default of the OVH installer is to have RAID Level 1 mirroring enabled. RAID 1 mirroring requires two disks.</p>

<p>But, here, for our non-production, test server, not using RAID 1 will double our disk capacity and also might permit us to test, on the second disk, additional partition types, file systems, or operating systems not available through the OVH installer. So, here, let's disable RAID 1 by clicking the checkbox for "Install on the first disk only."</p>

<p>If you want to keep RAID 1 enabled, simply leave the "Install on the first disk only" checkbox unchecked.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/b7/0hcb7h301q8b.png" alt="" title="First disk only" /></p>

<p>Next, we review the default partitioning scheme and make any desired changes. With First Disk Only selected the default partitioning scheme is as follows:</p>

<table><thead><tr><th align="center">Order</th>
  <th align="center">Type</th>
  <th align="center">File system</th>
  <th align="center">Mount point</th>
  <th align="center">Size</th>
</tr></thead><tbody><tr><td align="center">1</td>
  <td align="center">primary</td>
  <td align="center">ext4</td>
  <td align="center">/</td>
  <td align="center">20000 MB</td>
</tr><tr><td align="center">2</td>
  <td align="center">primary</td>
  <td align="center">swap</td>
  <td align="center">swap</td>
  <td align="center">1024 MB</td>
</tr><tr><td align="center">3</td>
  <td align="center">lv</td>
  <td align="center">ext4</td>
  <td align="center">/var/lib/vz</td>
  <td align="center">Space remaining</td>
</tr></tbody></table><p>Here we consider two changes. First, changing the root partition ("/") to increase the size. The default 20,000 MB size is fine for the base system, and often, on production systems, one conservatively might want to avoid making any changes at all in the base system or its layout. But, for example, the base system does not include even the Proxmox manual pages. Since plenty of space is available, and since we might want to add a few things, let's increase the root partition size to 500,000 MB.</p>

<p>The 1024 MB swap space also might be fine, especially in a system, as here, with lots of RAM. Remember, we have 32 GB RAM in the host system. But probably we will not assign the VPSes that we will create with Proxmox access to the entire 32 GB memory. Therefore, a little more swap might help some of the smaller VPSes complete memory intensive projects without running out of memory. Let's set the swap to 16,384 MB, an amount about equal to half the total RAM.</p>

<table><thead><tr><th align="center">Order</th>
  <th align="center">Type</th>
  <th align="center">File system</th>
  <th align="center">Mount point</th>
  <th align="center">Size</th>
</tr></thead><tbody><tr><td align="center">1</td>
  <td align="center">primary</td>
  <td align="center">ext4</td>
  <td align="center">/</td>
  <td align="center"><strong>500000 MB</strong></td>
</tr><tr><td align="center">2</td>
  <td align="center">primary</td>
  <td align="center">swap</td>
  <td align="center">swap</td>
  <td align="center"><strong>16384 MB</strong></td>
</tr><tr><td align="center">3</td>
  <td align="center">lv</td>
  <td align="center">ext4</td>
  <td align="center">/var/lib/vz</td>
  <td align="center">Space remaining</td>
</tr></tbody></table><p>Here's an image of the installer at the moment before confirmation of the resized root and swap:</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/si/y63munaqdjgi.png" alt="" title="Root and swap resized" /></p>

<p><strong>Hostname,  SSH key, and Post-install script</strong></p>

<p>Next we tell the installer our fully qualified hostname. Also, we have an opportunity to select an ssh key from among the keys associated with our SoYouStart account. And, if we wish, we can link to a post-install script:</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/q1/0d4ez06u4g25.png" alt="" title="Hostname" /></p>

<p><strong>Confirmation</strong></p>

<p>Finally we get our last chance to cancel or else to go ahead and launch the install:</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/cj/mawibk9dmmhm.png" alt="" title="Confirmation dialog" /></p>

<p><strong>Success</strong></p>

<p>As soon as we confirm the install, all the magic begins to happen behind the scenes. On the Control Panel, the third entry in the left hand column, "OS," comes alive. It says something like "Initializing the install process," followed by "Hardware checks," followed by "Admin password."  The install process continues, through "Partitioning and formatting," "Deploying OS," and "Rebooting." By this time, approximately ten minutes have passed.</p>

<p>The next and last stage takes about ten additional minutes for a total of twenty minutes all together. During the last stage, the Panel says, "Waiting for services to be up." Finally, we see a green "Success" pop-up, and also our phone beeps to announce the arrival of OVH's email confirming the install:</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/px/vc1j15ao4iai.png" alt="" title="Success!" /></p>

<p><strong>What's next after a successful install?</strong></p>

<p>After our successful install we surely can congratulate ourselves, since now we're "(almost) ready" <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> to begin serving profiting <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> as full fledged Hosting Providers. <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> Let's now take a quick look at what else might be needed.</p>

<p>Regarding our newly installed test server there remain at least: updating, upgrading, setting up the firewall, setting up fail2ban, downloading VPS OS templates, and actually creating VPSes. The next post will cover how to do these remaining steps with both the Proxmox web GUI and the command line.</p>

<p>In addition to the test server, we need enough additional RAID enabled production servers to provide the capacity needed by our customer base.</p>

<p>On the business administration side, if not already done, we need to establish our hosting company as a formal business under the laws of the jurisdiction which will be our home base. We need to build a website for our hosting business, add a payment gateway, and go on a marketing campaign unless we're already drowning in customer requests. Finally, we need to ask for our Hosting Provider tag so we can advertise on LES if we have space for additional customers.</p>
]]>
        </description>
    </item>
    <item>
        <title>Debian unattended Installation using a preseed file</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1762/debian-unattended-installation-using-a-preseed-file</link>
        <pubDate>Sat, 12 Sep 2020 18:39:50 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>ehab</dc:creator>
        <guid isPermaLink="false">1762@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I find installing Debian via VNC a time consuming process. Luckily there is an option to install Debian "unattended". You can do so using a preseed file to feed the selections and able to include advanced script customizations. If you come from CentOs World, then think of it as a kickstart file.</p>

<p>This is not new information, I just wanted the wonderful LES community to be aware of this great time saver.</p>

<p>The official source is at <a href="https://wiki.debian.org/DebianInstaller/Preseed" rel="nofollow">https://wiki.debian.org/DebianInstaller/Preseed</a>  and a long file example at <a href="https://www.debian.org/releases/stable/example-preseed.txt" rel="nofollow">https://www.debian.org/releases/stable/example-preseed.txt</a></p>

<p><strong>Requirements</strong>:</p>

<ul><li>A VM with Debian iso mounted e.g:  <a rel="nofollow" href="https://www.debian.org/CD/netinst/" title="Network install from a minimal CD">Network install from a minimal CD</a></li>
<li>The preseed file is uploaded in some webserver and reachable by the VM.</li>
<li>The VM is online with vnc console support and is able to get an ip from your provider dhcp.</li>
<li>The VM is booted from the iso,  here are screen shots on how to get there:</li>
</ul><p><img src="https://talk.lowendspirit.com/uploads/editor/gs/4q8qm0v56gsx.png" alt="" title="" /><br /><img src="https://talk.lowendspirit.com/uploads/editor/0y/dfubzgxhrk2a.png" alt="" title="" /><br /><img src="https://talk.lowendspirit.com/uploads/editor/y5/whz5adf8r4n9.png" alt="" title="" /></p>

<p>Here is a working file "preseed-test.cfg" that partitions the entire first disk with lvm in auto mode.</p>

<pre spellcheck="false" tabindex="0">#####  save this file as preseed-test.cfg  and upload to your webserver

## locals and keys
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/xkb-keymap select fi
d-i keymap select fi

## detect network-hostname and auto setup
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain

## mirrors and proxy if needed
d-i mirror/country string manual
d-i mirror/http/hostname string deb.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

## time and zone
d-i time/zone string Europe/Helsinki
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string pool.ntp.org

 ## Partion ::: use first disk , entire disk as one with lvm
d-i partman/early_command string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
d-i partman-auto/method string lvm
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman-lvm/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/confirm boolean true

## add root and user with passwords, change later
d-i passwd/root-login boolean true
d-i passwd/root-password password startSimple20
d-i passwd/root-password-again password startSimple20
d-i passwd/user-fullname string anthonySmith
d-i passwd/username string ant
d-i passwd/user-password password startSimple20
d-i passwd/user-password-again password startSimple20
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false

## lets install a standard server with ssh
tasksel tasksel/first multiselect standard,ssh-server
# add your cool tools
d-i pkgsel/include string ntp ssh wget curl

## upgrades
unattended-upgrades unattended-upgrades/enable_auto_updates boolean false
d-i pkgsel/update-policy select none
popularity-contest popularity-contest/participate boolean false

## install grub
d-i grub-installer/bootdev  string default
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true

 ## eject and reboot
d-i cdrom-detect/eject boolean true
d-i finish-install/reboot_in_progress note
</pre>

<p>The installation will execute in auto mode and the result of the above file is shown next, ignore sdb I was testing with another disk.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/i7/a2c9neccfpyv.png" alt="" title="" /></p>

<p><strong>Notes</strong>:</p>

<ul><li>I advise to read each section in the above preseed file and change accordingly to you needs for example; <strong>timezone, keyboard layout, passwords.</strong>... refer to references and source page.</li>
<li>The partitioning can get tricky if you want to do a regular layout or exclude swap, but is doable.</li>
<li><p>You can add custom scripts before install upgrade section like this as an example:</p>

<h3 data-id="my-other-scripts">my other scripts</h3>

<p>d-i preseed/late_command string \<br />
   in-target sh -c 'sed -i "s/^#PermitRootLogin.*\$/PermitRootLogin yes/g" /etc/ssh/sshd_config'; \<br />
   in-target curl -sq <a href="http://othersite.fi/k8s/99-k8s.conf" rel="nofollow">http://othersite.fi/k8s/99-k8s.conf</a> -o /etc/sysctl.d/99-k8s.conf ;</p></li>
</ul><p>What else have fun.</p>

<p><strong>References</strong></p>

<ul><li><a href="https://www.debian.org/releases/buster/arm64/apbs02.en.html" rel="nofollow">https://www.debian.org/releases/buster/arm64/apbs02.en.html</a></li>
<li><a href="https://www.packer.io/guides/automatic-operating-system-installs/preseed_ubuntu" rel="nofollow">https://www.packer.io/guides/automatic-operating-system-installs/preseed_ubuntu</a></li>
<li><a href="https://gist.github.com/ofrzeta/afeb53590c538fbddace" rel="nofollow">https://gist.github.com/ofrzeta/afeb53590c538fbddace</a></li>
<li><a href="https://gist.github.com/lorin/5140029" rel="nofollow">https://gist.github.com/lorin/5140029</a></li>
<li><a href="https://github.com/delfer/debian-preseed-iso/blob/master/preseed.cfg" rel="nofollow">https://github.com/delfer/debian-preseed-iso/blob/master/preseed.cfg</a></li>
<li><a href="https://gist.github.com/boxrick/3a4022d003daa63b7d27cca7f0f99894" rel="nofollow">https://gist.github.com/boxrick/3a4022d003daa63b7d27cca7f0f99894</a></li>
<li><a href="https://gist.github.com/styblope/2cf93a41662608f924de71fd0e91e0d1" rel="nofollow">https://gist.github.com/styblope/2cf93a41662608f924de71fd0e91e0d1</a></li>
<li>others i might forgot to add.</li>
</ul>]]>
        </description>
    </item>
    <item>
        <title>Compilation of FREE LES Shared Web Hosting Offers</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3839/compilation-of-free-les-shared-web-hosting-offers</link>
        <pubDate>Tue, 26 May 2020 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>vyas</dc:creator>
        <guid isPermaLink="false">3839@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/vyas" rel="nofollow">@vyas</a>, 26 May 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<h1 data-id="free-shared-web-hosting-offers-galore">Free Shared Web Hosting: Offers Galore</h1>

<p><img src="https://talk.lowendspirit.com/uploads/editor/in/xoxgbz049ca1.png" alt="" title="" /></p>

<p>Over the past couple of months, providers on <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/92/les-hosting-provider-register">LES</a> have generously offered free shared hosting plans for the LES community. The goal or objective behind is simple: they want to give back to the community and help those who can benefit from these offers.</p>

<p>In the below section I have compiled the list of offers by Four providers who have posted such offers since March 2020. Relevant details such as location, bandwidth, number of websites, disk space, are also included. This information is already available in the <a rel="nofollow" href="https://talk.lowendspirit.com/">forums</a>. However, wouldn't it be cool if it was available in a single page? I wanted to keep it simple, and while a more comprehensive tabulation <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/16/ympkers-shared-reseller-hosting-comparison-chart">like the one mentioned in this post</a> might make sense for some, I opted for brevity and simplicity. With this thought, let us dive into these offers.</p>

<h3 data-id="presenting-the-offers-together">Presenting the offers Together</h3>

<table><thead><tr><th></th>
  <th>Nexusbytes  (Servedez)</th>
  <th>Teta Host</th>
  <th>HostingCubes</th>
  <th>Khan Web Hosting</th>
</tr></thead><tbody><tr><td>Location</td>
  <td>New York</td>
  <td>France and Germany</td>
  <td>Multiple**</td>
  <td>Romania</td>
</tr><tr><td>Panel</td>
  <td>DA</td>
  <td>DA</td>
  <td>DA</td>
  <td>DA</td>
</tr><tr><td>Disk Space</td>
  <td>Unlimited*</td>
  <td>1 GB NVMe</td>
  <td>1 GB</td>
  <td>500 MB NVMe</td>
</tr><tr><td>Bandwidth</td>
  <td>Unlimited*</td>
  <td>100 GB</td>
  <td>25 GB</td>
  <td>50 GB</td>
</tr><tr><td>Email Accounts</td>
  <td>10</td>
  <td></td>
  <td>5</td>
  <td>5</td>
</tr><tr><td>Databases</td>
  <td></td>
  <td>3</td>
  <td>5</td>
  <td>5</td>
</tr><tr><td>Number of Domains</td>
  <td>1</td>
  <td>3</td>
  <td>1</td>
  <td>1</td>
</tr><tr><td>Remarks</td>
  <td><a rel="nofollow" href="https://servedez.com/index.php?topic=4.0">Check terms and  conditions</a></td>
  <td>Daily Backups</td>
  <td>Renews after 1 yr</td>
  <td>5 FTP Accounts</td>
</tr><tr><td>Further Information</td>
  <td><a rel="nofollow" href="https://servedez.com/index.php">Visit Site for details</a></td>
  <td><a rel="nofollow" href="https://talk.lowendspirit.com/discussion/1047/tetahost-free-directadmin-nvme-shared-web-hosting-in-france-or-germany">Link to offer</a></td>
  <td><a rel="nofollow" href="https://talk.lowendspirit.com/discussion/636/lab-rats-required-to-test-new-free-hosting-service/p1">Link to offer</a></td>
  <td><a rel="nofollow" href="https://talk.lowendspirit.com/discussion/772/free-directadmin-nvme-shared-hosting">Link to offer</a></td>
</tr></tbody></table><hr /><p>Notes:</p>

<ol><li>DA stands for <a rel="nofollow" href="https://www.directadmin.com/">Direct Admin</a> control panel</li>
<li>Free shared hosting plans by Hostingcubes are available for a period of one year at 7 different locations. Visit the offer page by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Lee" rel="nofollow">@Lee</a> - <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/636/lab-rats-required-to-test-new-free-hosting-service/p1">for further details</a></li>
<li>Requirements for Free Shared Hosting by Khan Web: "All you would need to do is join <a rel="nofollow" href="https://discord.gg/TNg2bB">Discord Channel</a> &amp; send a PM to user <a rel="nofollow" href="https://talk.lowendspirit.com/profile/AK_KWH">@AK_KWH</a>, mentioning your discord username"</li>
</ol><p><img src="https://talk.lowendspirit.com/uploads/editor/jg/2r1vw72jlzz0.png" alt="" title="" /></p>

<h3 data-id="the-obvious-and-not-so-obvious">The Obvious and Not-So-Obvious</h3>

<p>There are several reasons to question the rationale behind such offers. For example, why would anybody offer a service for free? Then there is the suspicion that the providers might use the sign-ups as an opportunity to up-sell services. That may be true in some cases, but more than one provider in the above list has mentioned that these offers rarely result in paying customers. In the words of <a href="https://dev.lowendspirit.com/index.php?p=/profile/seriesn" rel="nofollow">@seriesn</a> from Nexusbytes,</p>

<blockquote><div>
  <p>"Usually if you are not paying for your project, you don't take it seriously logic applies here..... I guess it also depends because a lot of these use cases are for personal projects that never take off, or people just abandon them." - <a rel="nofollow" href="https://talk.lowendspirit.com/profile/seriesn">@seriesn</a></p>
</div></blockquote>

<h3 data-id="risk-of-abuse-by-users">Risk of abuse by Users</h3>

<p>The intention of this post is not to delve upon the pro's and cons of free shared web hosting. But I thought of mentioning that the providers can often face abuses from users and those looking to exploit the gratis service. This discussion from the forums, based on experiences of Lee with Hostingcubes, <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/23247">offers an interesting perspective</a>.</p>

<h3 data-id="free-service-during-beta-testing">Free service during beta testing</h3>

<p>Some providers can offer free accounts for a limited period when they are launching new products or services. A recent example is Hello Internet /<a href="https://dev.lowendspirit.com/index.php?p=/profile/hello" rel="nofollow">@hello</a>, who offered <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/797/free-cpanel-nvme-hosting-eu">free CPanel hosting in Germany</a>. In exchange, they sought feedback, testing from the users. A provider may choose to continue offering the 'free' service to the beta testers beyond the testing period. </p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/qi/8cws8atmvk0x.png" alt="" title="" /></p>

<h3 data-id="summing-it-all-up">Summing it all up</h3>

<p>The act of offering a service for free does not limit itself to shared hosting on this forum. Some users have posted their offers for a 'free' use of VPS. But I thought of limiting this post to shared web hosting offers. One reason was focus. The other reason is more personal: I have benefited over the past years from free web hosting services. This prompted me to compile the offers and write this post that would provide a handy resource the LES community.</p>

<p>The details in the table are compiled from the offer posts. In some cases, I have used the details by checking with the providers, or from my own account. In case of any updates, errors, or additions, do leave your feedback in the comments section below.</p>

<h4 data-id="links-to-free-shared-web-hosting-offers-by-providers">Links to free shared web hosting offers by providers:</h4>

<p>I have included them in the table above but for ready reference, here they are, in no particular order:</p>

<ol><li>Tetahost <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/1047">https://talk.lowendspirit.com/discussion/1047</a></li>
<li>Nexusbytes: <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/850/free-shared-hosting-servedez">https://talk.lowendspirit.com/discussion/850/free-shared-hosting-servedez</a></li>
<li>Khan Web Hosting: <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/772/free-directadmin-nvme-shared-hosting">https://talk.lowendspirit.com/discussion/772/free-directadmin-nvme-shared-hosting</a></li>
<li>Hostingcubes: <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/636/lab-rats-required-to-test-new-free-hosting-service/p1">https://talk.lowendspirit.com/discussion/636/lab-rats-required-to-test-new-free-hosting-service/p1</a></li>
</ol>]]>
        </description>
    </item>
    <item>
        <title>Postinstall Configuration of Proxmox VE 6.2</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1408/postinstall-configuration-of-proxmox-ve-6-2</link>
        <pubDate>Mon, 06 Jul 2020 18:55:55 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">1408@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><strong>Postinstall Configuration of Proxmox VE 6.2</strong></p>

<p>Contributed by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Not_Oles" rel="nofollow">@Not_Oles</a> -- July 6, 2020</p>

<p><strong>Introduction</strong></p>

<p>Our goal is to become a Low End Hosting Provider by selling virtual private servers (VPSes) created with <a rel="nofollow" href="https://proxmox.com/en/">Proxmox</a> on an inexpensive bare metal host server rented from <a rel="nofollow" href="https://www.soyoustart.com/us/">SoYouStart</a>.</p>

<p>In the <a rel="nofollow" href="https://lowendspirit.com/installing-proxmox-ve-6-2-at-soyoustart">first post in this series</a> we successfully installed <a rel="nofollow" href="https://proxmox.com/en/">Proxmox Virtual Environment ("PVE"), Version 6.2</a> on a Low End <a rel="nofollow" href="https://www.soyoustart.com/us/">SoYouStart</a> server.</p>

<p>In this post, using the Proxmox web Graphical User Interface (GUI), as well as the traditional command line environment, we will accomplish postinstall steps, including:</p>

<ul><li>Initial Login,</li>
<li>Obtaining a <a rel="nofollow" href="https://letsencrypt.org/">Let's Encrypt</a> Secure Sockets Layer (SSL) certificate,</li>
<li>Setting up the firewall,</li>
<li>Adding firewall rules,</li>
<li>Enabling firewall rules and also the firewall itself,</li>
<li>Checking the firewall for proper operation,</li>
<li>Updating and upgrading both Proxmox itself as well as the Debian GNU/Linux base system on which Proxmox 6.2 runs, and</li>
<li>Additional ssh and web GUI security considerations.</li>
</ul><p>The postinstall steps covered here are not specific to SoYouStart and, instead, are very much the same with other bare metal host server providers. So, this post could be used as a postinstall configuration guide for Proxmox installations on servers from other vendors besides SoYouStart.</p>

<p><strong>Initial Login</strong></p>

<p>Let's check the OVH email congratulating us on our successful install. Look within the email for "Application Access Parameters," which gives us a link to point our browser at the Proxmox web GUI and as well as our username, root, and root's password. Note that the link has "8006" in it because the web GUI runs on port 8006. If, using Chrome broswer, we click the link or paste it into our URL bar, the first thing we should see is the insecure connection block, which, looks like this:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ls/1kzs14926svd.png" alt="" title="Chrome connection block page" /></p>

<p>Note that the connection actually is encrypted. It isn't really "insecure," except in the sense that Chrome does not recognize our server's certificate as valid. To access the Control Panel the block needs to be overridden, so let's click "Advanced," and then "Proceed to [the link from the email] (unsafe):"</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/fp/nbt6u7dn2wkw.png" alt="" title="Proceed" /></p>

<p>We now should see the Proxmox web GUI login screen where we can enter root as our username and our password from the OVH emai and click "Login:"</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/lb/od9rni88h8n4.png" alt="" title="Login window" /></p>

<p>Next we should see the Proxmox Nag popup:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/an/6z4briviz2v4.png" alt="" title="Proxmox Nag" /></p>

<p>Let's please consider buying a subscription to support the Proxmox team. Then we'll click OK.</p>

<p>Finally, we are ready to use the Proxmox web GUI.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/cc/0jssiwebnxgr.png" alt="" title="Proxmox Web GUI Ready" /></p>

<p>The Control Panel layout features include:</p>

<ul><li>a Server View in the left hand column listing all the servers in the Datacenter. As this is our first server, it is the only server listed.</li>
<li>The Top Bar, which tells us the version of Proxmox Virtual Environment, here 6.2-6, and provides a searchbox plus buttons to create a KVM VPS, create an LXC VPS, and to access root user account functions (Settings, Password, Two Factor Authentication (TFA), Language, and Logout).</li>
<li>The main panel, which here contains information about the Datacenter, including a list of nodes (each server is called a "node") and a Help button in the upper right. The left hand column of the main panel contains a long list of categories, one of which is "Firewall," which we need to scroll down the menu in order to see.</li>
<li>Recent Log entries are shown at the bottom of the main panel. We see that the zero currently existing VPSes were started without any failure.</li>
</ul><p>We can click and drag the borders of the Control Panel layout sections to resize them as convenient.</p>

<p><strong>Obtaining a Let's Encrypt SSL certificate</strong></p>

<p>Ordinarily, the very first thing to do after installing a new server might be to secure the server by limiting access through the firewall, further adjusting ssh access, installing fail2ban, etc. However, these steps, as done below, do block <a rel="nofollow" href="https://letsencrypt.org/">Let's Encrypt's</a> ability to issue the server certificate. To make issuing the certificate easier, let's get the certificate issued before setting up the firewall. Getting the certificate will only take a moment.</p>

<p>In order to get the certificate, you need to have registered a domain name such as superspeedyvps-example.com, pointed the domain's DNS records at the server's numerical IP address given in OVH's access email, and set up whatever email you want to use to receive notices from Let's Encrypt.</p>

<p>There is one additional preliminary tip to make using our new certificate easier after we get it. Initially we logged in to the Control Panel using the OVH supplied URL from the access letter. If, prior to certificate issuance, we login to the Control Panel using our own superspeedyvps-example.com domain, then issue the certificate, then login again, it seems to take Chrome a few days to stop putting up the unsecured connection block despite that Chrome seems immediately to recognize the newly issued certificate's validity. Therefore, let's briefly continue using the OVH supplied URL and not point Chrome at our superspeedyvps-example.com domain until after the Let's Encrypt certificate is issued.</p>

<p>In the left hand Server View column, let's click on our server's name and, in the center panel's left column, scroll down if necessary, and also click on "Certificates." We should see this:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/8f/67t53ee0ea0s.png" alt="" title="Certificate Information" /></p>

<p>Next, we need to add our account in order to issue a certificate via the <a rel="nofollow" href="https://en.wikipedia.org/wiki/Automated_Certificate_Management_Environment">Automated Certificate Management Environment (ACME)</a> We click on "Add ACME Account."</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/6x/lp0wywdkipz6.png" alt="" title="Add ACME Account" /></p>

<p>Next, we add our email address, carefully review the Terms of Service (TOS), check the "Accept TOS" box, and click "Register."</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/as/yy0o24esg3nd.png" alt="" title="ACME Registration" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/i2/lo5gbhmtbea0.png" alt="" title="Register Account Zoomed" /></p>

<p>We see the account registration output and also that the registration task succeeded.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/pw/908edhagkodt.png" alt="" title="ACME Account Success" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/u6/qj64c4j2thb1.png" alt="" title="Register Task Success Zoomed" /></p>

<p>Next we close the account registration output window and click "Add" in order to add our certificate. The Create Domain dialog box appears.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/6z/g37cyne9vlz2.png" alt="" title="Create Domain" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/xk/nwkt21rrgf62.png" alt="" title="Create Domain Zoomed" /></p>

<p>After clicking "Create," we click on our domain now newly appearing in the main panel's ACME domain list. Then, to get our certificate issued, we click on "Order Certificate Now." A pop up window appears, showing the output of the certificate ordering process. The process takes a minute or so, and ends with "Task OK."</p>

<p>The Chrome security block soon reappears because the certificate has changed. We can just close our tab and then reload the web GUI in a new tab, this time entering our own registered domain, superspeedyvps-example.com, into the browser URL bar. We have to log in again and we have another opportunity to see the Nag. We can click the lock icon in Chrome's URL bar and then "Certificate" to see our new certificate's details.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/7y/70rh18vygjr6.png" alt="" title="Certificate Viewer" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/9v/18k7cupgieo7.png" alt="" title="Certificate Details" /></p>

<p><strong>Setting Up the Firewall</strong></p>

<p>The Proxmox firewall currently seems to use <a rel="nofollow" href="https://forum.proxmox.com/threads/v6-0-move-from-iptables-to-nftables.55924/">iptables-legacy</a>. We can check our server this way:</p>

<pre spellcheck="false" tabindex="0"># ls -al /etc/alternatives/iptables
lrwxrwxrwx 1 root root 25 Jul  2 19:40 /etc/alternatives/iptables -&gt; /usr/sbin/iptables-legacy
#
</pre>

<p>The Proxmox firewall is disabled on a new install. When the firewall is enabled, the default firewall configuration is to block all but ports 8006 and 22 on the <em>local</em> network, so if we are connecting from the internet, we shouldn't enable the firewall itself until after wide area internet access rules are added and enabled. The <a rel="nofollow" href="https://pve.proxmox.com/wiki/Firewall">Proxmox Firewall Instructions</a> emphasize this warning:</p>

<blockquote><div>
  <p>The firewall is completely disabled by default, so you need to set the enable option [ . . . ]<br />
  Important If you enable the firewall, traffic to all hosts is blocked by default. Only exceptions is WebGUI(8006) and ssh(22) from your local network.<br />
  If you want to administrate your Proxmox VE hosts from remote, you need to create rules to allow traffic from those remote IPs to the web GUI (port 8006). You may also want to allow ssh (port 22), and maybe SPICE (port 3128).</p>
</div></blockquote>

<p>Firewall changes do not affect connections previously made, so, as insurance, <a rel="nofollow" href="https://pve.proxmox.com/wiki/Firewall">Proxmox advises:</a></p>

<blockquote><div>
  <p>Tip: Please open a SSH connection to one of your Proxmox VE hosts before enabling the firewall. That way you still have access to the host if something goes wrong.</p>
</div></blockquote>

<p><strong>Adding Firewall Rules</strong></p>

<p>We are going to add firewall rules allowing web GUI and ssh access from our primary IP address and from a backup IP address so that our ability to use our primary IP address is not a single point of possible failure. We'll also add rules to allow the host to respond to ping and traceroute.</p>

<p>Here is how to add the rules using the Proxmox web GUI. First, we select our server in the Server View column. Second, we scroll down and select Firewall in the menu on the left side of the main panel:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/xc/aj91cvabx1rj.png" alt="" title="Select Firewall" /></p>

<p>Third, we click the "Add" button, and the Add Rule dialog appears:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/xx/gdclsoww4gkk.png" alt="" title="Add Firewall Rule" /></p>

<p>The first rule is to accept incoming connections from our primary IP address on port 8006 and using TCP protocol. Let's not check the enable box at this time because, lest we get locked out, we want to add additional access rules before enabling. After entering each rule, let's click Add in the Add Rule box, then click Add on the Firewall main panel to relaunch the Add Rule dialog to enter our next rule. A list of all the rules we are adding looks like this:</p>

<table><thead><tr><th align="left">Enabled</th>
  <th align="center">Type</th>
  <th align="left">Action</th>
  <th align="left">Source</th>
  <th align="center">Protocol</th>
  <th align="right">Destination Port</th>
  <th align="center">Log Level</th>
  <th align="left">Comment</th>
</tr></thead><tbody><tr><td align="left">No</td>
  <td align="center">in</td>
  <td align="left">ALLOW</td>
  <td align="left">Primary IP</td>
  <td align="center">tcp</td>
  <td align="right">8006</td>
  <td align="center">nolog</td>
  <td align="left">web GUI</td>
</tr><tr><td align="left">No</td>
  <td align="center">in</td>
  <td align="left">ALLOW</td>
  <td align="left">Primary IP</td>
  <td align="center">tcp</td>
  <td align="right">22</td>
  <td align="center">nolog</td>
  <td align="left">ssh</td>
</tr><tr><td align="left">No</td>
  <td align="center">in</td>
  <td align="left">ALLOW</td>
  <td align="left">Backup IP</td>
  <td align="center">tcp</td>
  <td align="right">8006</td>
  <td align="center">nolog</td>
  <td align="left">web GUI</td>
</tr><tr><td align="left">No</td>
  <td align="center">in</td>
  <td align="left">ALLOW</td>
  <td align="left">Backup IP</td>
  <td align="center">tcp</td>
  <td align="right">22</td>
  <td align="center">nolog</td>
  <td align="left">ssh</td>
</tr><tr><td align="left">No</td>
  <td align="center">in</td>
  <td align="left">ALLOW</td>
  <td align="left"></td>
  <td align="center">icmp</td>
  <td align="right"></td>
  <td align="center">nolog</td>
  <td align="left">ping</td>
</tr><tr><td align="left">No</td>
  <td align="center">in</td>
  <td align="left">ALLOW</td>
  <td align="left"></td>
  <td align="center">udp</td>
  <td align="right">33434:44534</td>
  <td align="center">nolog</td>
  <td align="left">traceroute</td>
</tr></tbody></table><p>If we are connecting from a dynamic IP, we can enter a rule allowing connections from a limited range of IP addresses using CIDR notation. For example, if only the last octet of our IP address changes, the source IP in the rule could be something like 123.123.123.0/24. An alternative to widening the connection rule is connecting from our dynamic IP through an intermediate fixed-IP VPS. Here, the IP of the intermediate VPS would entered into the rule.</p>

<p>After we have set all the rules, it's important for us carefully to triple check to make sure each rule is exactly, exactly, exactly right. <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> A typo can lock us out! So, let's check all the rules one more time.</p>

<p><strong>Enabling and disabling firewall rules and also the firewall itself</strong></p>

<p>Proxmox allows us, as sometimes might be very convenient, quickly and easily to <strong>dis</strong>able individual firewall rules, the entire firewall for an individual host server node, or even all the firewalls for the entire datacenter. Therefore, in order to <strong>en</strong>able our firewall rules, we need to enable each individual rule, the host server node firewall, and the Datacenter firewall.</p>

<p>First, we need to click the enable checkbox next to the beginning of each individual rule.</p>

<p>Second, we need to make sure that the host server node's firewall is on. Click on "Options," right under "Firewall" on the left column menu of the main panel. Verify that "Firewall," the first option shown on the list, is set to "Yes."</p>

<p>Third, to enable the firewall at the Datacenter level, we click on "Datacenter" in the far left Server View menu, then click on "Options" just under "Firewall" on the left column menu of the main panel. We need to change "Firewall," the first option shown on the list, from "No" to "Yes."</p>

<p>Now the firewall should be operational.</p>

<p><strong>Checking the firewall for proper operation</strong></p>

<p>Next, let's check to make sure the firewall actually is working as expected.</p>

<p>First, we can open a terminal on the host server node. Just being able to open the terminal shows that we are allowed access from our IP address. In the terminal, we can see whether each of our new rules appears when we run</p>

<pre spellcheck="false" tabindex="0"># iptables -L PVEFW-HOST-IN
</pre>

<p>Second, we should try connecting from various IPs which should be disallowed as well as from the IPs for which we set specific ALLOW rules.</p>

<p><strong>Updating and upgrading Proxmox and Debian</strong></p>

<p>Our next step is to update and upgrade both Proxmox Virtual Environment and also the underlying Debian GNU/Linux operating system so that our customers' VPSes can benefit from the latest bug fixes and feature upgrades.</p>

<p>Like many things in Proxmox, the update / upgrade process can be done in a command line terminal window equally excellently as via the web GUI. Just open a terminal on the bare metal host server node and execute:</p>

<pre spellcheck="false" tabindex="0"># apt-get update &amp;&amp; apt-get dist-upgrade -y
</pre>

<p>In the web GUI, update plus dist-upgrade is a four click process. We click on</p>

<ol><li>Our server's name in the extreme left Server View column,</li>
<li>"Updates" in the left column menu of the main panel,</li>
<li>"Refresh" on the top menu of the main panel, and</li>
<li>"Upgrade" on the top menu of the main panel.</li>
</ol><p>"Refresh" on the top menu of the main panel launches a Task Window which runs apt-get update</p>

<p>"Upgrade" on the top menu of the main panel launches a command line terminal window which runs apt-get dist-upgrade.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/95/4h2xe6z80ulv.png" alt="" title="Update and Upgrade" /></p>

<p>Sometimes, following an upgrade, we are told to run</p>

<pre spellcheck="false" tabindex="0"># apt autoremove
</pre>

<p>to take away a few old packages which no longer are needed. Also, I like to</p>

<pre spellcheck="false" tabindex="0"># reboot
</pre>

<p>Rebooting may not be necessary after every upgrade, but I enjoy knowing that my server <em>can</em> reboot successfully.</p>

<p><strong>Additional ssh and web GUI security considerations</strong></p>

<p>Here are some additional security steps which we might consider. All these additional security steps have advantages and disadvantages, so each of us has to decide how best to proceed on each of our individual servers.</p>

<p>The first additional suggestion is to  change the root password originally supplied by OVH. Most everyone would choose to do this. Additionally, we might consider disabling ssh password login entirely.</p>

<p>Another possibility is to change the ssh port from 22 to some high number. An alternative or further possible step is to use port knocking. An advantage of these is that the logs suddenly get very quiet, since most of script kiddie attackers do not pursue ssh after the port changes. A disadvantage is that many software packages and services assume ssh operates on port 22.</p>

<p>The ability to assume that ssh will be on port 22 is, after all, the purpose of having standard ports. Therefore, if we install port knocking or change the ssh port, some other things will break. For example, I no longer seem to be able to access my servers via the Intelligent Platform Management Interface (IPMI) console after changing the ssh port.  Running multiple Proxmox servers from one server's web GUI might also break.</p>

<p>Yet another possible postinstall security step could be installing fail2ban. The default Debian fail2ban install protects ssh but requires additional configuration to protect the Proxmox web GUI. The default install also may require additional configuration to work with the Proxmox firewall. Here, where access to our server is limited to single IP addresses by our firewall ACCESS rules, fail2ban may be less necessary or even unneeded.</p>

<p><strong>Conclusion</strong></p>

<p>Following our successful Proxmox install in part one of this series and our successful postinstall configuration here in part two,  we have reached the point where we can use Proxmox to create the VPSes for which our customers are eagerly waiting!</p>

<p>In the next post we will download an operating system template and then use the newly downloaded template to create our first VPS with Proxmox at SoYouStart!</p>
]]>
        </description>
    </item>
    <item>
        <title>Legal Advice and where to get it</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1591/legal-advice-and-where-to-get-it</link>
        <pubDate>Mon, 10 Aug 2020 21:11:19 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Ympker</dc:creator>
        <guid isPermaLink="false">1591@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Running a Web Hosting or Server Provider Business, or just a freelance gig can confront you with quite a lot of legal challenges. Laws are being changed daily and, lately, GDPR and Data Processing Agreements, as well as Cookie Policies are a frequently debated topic. When running a business and especially in the light of potential fines related to the misuse of client data legal consulting becomes something you'd not want to skip. In this thread, I want to present to you some ways to get legal advice on the internet at a rather "affordable" price. Naturally, there are different laws in place world-wide; this means the options to get legal advice presented in this topic will probably not be available or make sense to all of you guys.</p>

<p>Let's get started:</p>

<p><strong>Wonder.legal</strong></p>

<p><a rel="nofollow" href="https://www.wonder.legal/" title="Wonder.legal">Wonder.legal</a> is a great site to get legal documents drafted by lawyers and legal experts in your language/region relatively cheap. First off, you need to select your language/location:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/dh/ss3398g64nrx.png" alt="" title="" /></p>

<p>Then you are presented with a search box where you can look for any document you might need (Terms of Service, Privacy Policy, Cookie Policy, NDA..). Once you have chosen the document you are looking for you are presented with a brief description of the document template and the extent it covers before you need to answer some questions (in blank fields or tick y/n). At the end a document will be generated and you can download it as PDF or Word by paying a one-time fee (usually some 10€-50€ per document), or opt for their subscription of 40€/month which allows generating an unlimited number of documents (so might be worth if you are going for ToS+Privacy Policy + Cookie Policy). Subsequently, you can optionally (only available in some languages/regions like e.g. for the UK) opt to consult a lawyer if you are unsure about anything for an additional fee. I think the site is perfect to get essential documents at an affordable price <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/jx/e9hk9yjzyuzj.png" alt="" title="" /><br /><img src="https://talk.lowendspirit.com/uploads/editor/k7/3wlgqtau94vp.png" alt="" title="" /></p>

<p><strong>JustAnswer</strong></p>

<p><a rel="nofollow" href="https://www.justanswer.com/" title="JustAnswer">Justanswer</a>, is similar to the German equivalent <em><a rel="nofollow" href="https://www.frag-einen-anwalt.de/" title="frag-einen-anwalt.de">frag-einen-anwalt.de</a></em> (I'd prefer <em>frag-einen-anwalt.de</em> if you are from Germany). It is available worldwide, so most people here could probably use it. You can set your own price from like 20-25€ per question (avg. I paid was some 40€ish) and a lawyer/expert will answer your question in written form (which is cool because you have something in written form from a lawyer as "proof"). At least here in Germany, lawyers are held accountable for their statements/counselling. JustAnswer, however, also offers a flat rate for unlimited questions in written form per month (also first advice only, but still pretty cool). Costs about 40€/mo iirc. There is a one-week free trial (hopefully) no strings attached kinda offer, too. Can be cancelled monthly <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> So you could also just sub for a month, sit down, and sort all that legal stuff.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/82/aleuef9hb0dt.png" alt="" title="" /><br /><img src="https://talk.lowendspirit.com/uploads/editor/8y/6qfnz84wnmyl.png" alt="" title="" /></p>

<p><strong>Gaius.legal</strong></p>

<p><a rel="nofollow" href="https://gaius.legal/?lang=en" title="Gaius.legal">Gaius.legal</a> offers legal advice for a monthly fee.<br />
Included in the monthly fee is the first consultation/advice for any number of topics that come up during that month. Further legal work can be probably bought for an extra fee, too. One might not think that a "first advice" is worth a sub, but I have made a different experience (not with Gaius though). I have found that I often paid on frag-einen-anwalt.de for the first legal advice. You can set your own price there but it starts at 25€. Over the year I had asked like 4-5 questions on there and probably paid more than I would have had with Gaius for example. What's more, I could have used a couple of more "first advice" consultations but didn't want to pay up. That' s why I am happy to have found a few alternative solutions.<br />
Not sure if they are covering global law since they are advertising "lawyers licensed in Germany". I suppose they would be able to help with German and European Law.</p>

<p><img src="https://i.gyazo.com/b81447295cbb5050c3e645ad683e6bba.png" alt="" title="" /></p>

<p><strong>ETL Legal Consulting</strong></p>

<p><a rel="nofollow" href="https://www.etl.de/en/flat-rate-legal-services" title="ETL Group">ETL Group</a>, is a big group of law firms here in Germany, but apparently also with offices world-wide kinda.<br />
Some are supposedly in the UK, too. What you get for 16€/month (paid yearly, but any unused months are refunded if you cancel earlier) is 60 minutes of legal advice per month on basically any business-related topic. The cool thing here is that it seems it does not only cover the first advice on a certain topic but also further steps, or deeper discussion as long as it works via phone. Ordering the flatrate right now seems to only be available "per click" on the German website, but you can probably contact them to inquire about legal advice for your region given that they are present, globally.</p>

<p><img src="https://i.gyazo.com/f84a2907914a0cd474105ad5b157d4ff.png" alt="" title="" /></p>

<p><strong>Conclusion</strong>:</p>

<p>Out of the services mentioned, I have used <em>Frag-Einen-Anwalt.de</em>, <em>Justanswer.com</em> and plan on using <em>Wonder.legal,</em> soon. <em>Gaius.legal</em> and <em>ETL group</em> counselling are definitely something I am considering (among other german-only options) though for the future to get some stuff sorted on the phone or live chat that is not super in-depth but don't justify several 40€ish questions on <em>Justanswer</em> and <em>Frag-Einen-Anwalt</em>.</p>

<p>I hope I could give you guys some pointers for where to look for legal advice online.</p>

<p>Kind regards,<br /><a rel="nofollow" href="https://talk.lowendspirit.com/profile/Ympker" title="@Ympker">@Ympker</a></p>
]]>
        </description>
    </item>
    <item>
        <title>iptables-restore v1.8.4 (legacy): couldn't load match `limit':no such file or directory</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1559/iptables-restore-v1-8-4-legacy-couldnt-load-match-limit-no-such-file-or-directory</link>
        <pubDate>Tue, 04 Aug 2020 13:13:57 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>LES_Blog</dc:creator>
        <guid isPermaLink="false">1559@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by Anthony Smith, 4 Aug 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>If you are getting an iptables related issue generally or when trying to use an OpenVPN installer script or general VPN setup and the error is similar to:</p>

<blockquote><div>
  <p>iptables-restore v1.8.4 (legacy): couldn't load match `limit':no such file or directory</p>
</div></blockquote>

<p>or</p>

<blockquote><div>
  <p>iptables v1.8.2 (nf_tables): unknown option "--dport"</p>
</div></blockquote>

<p>or</p>

<blockquote><div>
  <p>iptables v1.8.4 (nf_tables): unknown option "--dport"</p>
</div></blockquote>

<p>or</p>

<blockquote><div>
  <p>error: couldn't determine iptables version</p>
</div></blockquote>

<p>The cause is likely to be as a result of you using an OpenVZ container without <a rel="nofollow" href="https://wiki.debian.org/nftables">nftable</a> support in the host node kernel or perhaps you have upgraded Debian from a previous version and don't have the modules loaded in the kernel or perhaps the installer script you are using simply expects iptables rather than nftables.</p>

<p>You can resolve this by switching back to iptables (now being called iptables legacy) simply running:</p>

<pre spellcheck="false" tabindex="0">update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
update-alternatives --set arptables /usr/sbin/arptables-legacy 
update-alternatives --set ebtables /usr/sbin/ebtables-legacy
</pre>

<p>For OpenVZ conatiners you may need to run the following instead:</p>

<pre spellcheck="false" tabindex="0">apt install iptables
update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
</pre>

<p>To revert if that was notthe issue then you need to run:</p>

<pre spellcheck="false" tabindex="0">update-alternatives --set iptables /usr/sbin/iptables-nft
update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
update-alternatives --set arptables /usr/sbin/arptables-nft
update-alternatives --set ebtables /usr/sbin/ebtables-nft
</pre>
]]>
        </description>
    </item>
    <item>
        <title>OpenVZ 7 (virtuozzo 7) Enable netfilter as standard</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1536/openvz-7-virtuozzo-7-enable-netfilter-as-standard</link>
        <pubDate>Sat, 01 Aug 2020 15:10:12 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>LES_Blog</dc:creator>
        <guid isPermaLink="false">1536@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by Anthony Smith, 1 Aug 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>This quick tips post is aimed at hosts that use SolusVM and OpenVZ 7 or Virtuozzo 7.</p>

<p>I have probably had to answer this question around 30 times now so I thought I would make a quick blog post about it so it can be referred too by those that need it.</p>

<p>To build container config files solsuvm uses the file: /etc/vz/conf/ve-vswap-solus.conf-sample</p>

<p>The standard looks like this:</p>

<pre spellcheck="false" tabindex="0">#  Copyright (C) 2000-2011, Parallels, Inc. All rights reserved.
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#

# This config is valid for VSwap-enabled kernel (which currently means
# any RHEL6-based kernel, i.e. 042test* or 042stab*).
ONBOOT="yes"
# UBC parameters (in form of barrier:limit)
PHYSPAGES="0:512M"
SWAPPAGES="0:1G"
KMEMSIZE="233M:256M"
LOCKEDPAGES="256M"
PRIVVMPAGES="unlimited"
SHMPAGES="unlimited"
NUMPROC="unlimited"
VMGUARPAGES="0:unlimited"
OOMGUARPAGES="0:unlimited"
NUMTCPSOCK="unlimited"
NUMFLOCK="unlimited"
NUMPTY="unlimited"
NUMSIGINFO="unlimited"
TCPSNDBUF="unlimited"
TCPRCVBUF="unlimited"
OTHERSOCKBUF="unlimited"
DGRAMRCVBUF="unlimited"
NUMOTHERSOCK="unlimited"
DCACHESIZE="unlimited"
NUMFILE="unlimited"
NUMIPTENT="unlimited"

# Disk quota parameters (in form of softlimit:hardlimit)
DISKSPACE="50G:50G"
DISKINODES="131072:144179"
QUOTATIME="0"

# CPU fair scheduler parameter
CPUUNITS="1000"
</pre>

<p>For end-user containers to get full netfilter access which in simple terms allows many iptables functions and VPNs to start working within containers <code spellcheck="false" tabindex="0">NETFILTER="full"</code> needs to be added to the containers config file and the container restarted.</p>

<p>To save that hassle simply add the following at the end of: /etc/vz/conf/ve-vswap-solus.conf-sample</p>

<pre spellcheck="false" tabindex="0">#Netfilter
NETFILTER="full"
</pre>

<p>That way they will get it as standard without any host intervention required, saving hassle for everyone and reducing tickets.</p>

<p>Users may report errors such as:</p>

<blockquote><div>
  <p>Error: iptables: No chain/target/match by that name</p>
</div></blockquote>

<p>or</p>

<blockquote><div>
  <p>Error: iptables v1.4.21: can't initialize iptables table `nat</p>
</div></blockquote>

<p>Not having netfilter=full in the container config is usually the cause, if you are a VPS user reading this and have found the errors above point your host to this article.</p>
]]>
        </description>
    </item>
    <item>
        <title>Creating our first LXC VPS with Proxmox VE 6.2 at SoYouStart</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1462/creating-our-first-lxc-vps-with-proxmox-ve-6-2-at-soyoustart</link>
        <pubDate>Thu, 16 Jul 2020 02:15:01 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">1462@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><strong>Creating our first LXC VPS with Proxmox VE 6.2 at SoYouStart</strong></p>

<p>Contributed by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Not_Oles" rel="nofollow">@Not_Oles</a> -- July 14, 2020</p>

<p><strong>Introduction</strong></p>

<p>Our goal is to become a Low End hosting provider by selling virtual private servers (VPSes) created with <a rel="nofollow" href="https://proxmox.com/en/">Proxmox Virtual Environment ("PVE")</a> on an inexpensive bare metal host server rented from <a rel="nofollow" href="https://www.soyoustart.com/us/">SoYouStart</a>.</p>

<p>In the <a rel="nofollow" href="https://lowendspirit.com/installing-proxmox-ve-6-2-at-soyoustart">first post in this series</a> we successfully installed <a rel="nofollow" href="https://proxmox.com/en/">PVE Version 6.2</a> on a Low End <a rel="nofollow" href="https://www.soyoustart.com/us/">SoYouStart</a> server.</p>

<p>The <a rel="nofollow" href="https://lowendspirit.com/postinstall-configuration-of-proxmox-ve-6-2">second post in this series</a> discussed postinstall configuration of Proxmox.</p>

<p>In this post, using the SoYouStart Control Panel, we will obtain for our server a  second IP address. Then, using the Proxmox web Graphical User Interface (GUI), we will create our first <a rel="nofollow" href="https://linuxcontainers.org/">LXC</a> VPS and configure its network with the newly obtained IP address.</p>

<p><strong>Contents</strong></p>

<ul><li>Add an IP to our SoYouStart Server</li>
<li>Download an Operating System Template</li>
<li>Launch the Create LXC Container Dialog</li>
<li>Container ID, Hostname, Password</li>
<li>Operating System Template</li>
<li>Root disk</li>
<li>CPU</li>
<li>Memory</li>
<li>Network and Firewall</li>
<li>DNS</li>
<li>Confirm and Start</li>
<li>Test</li>
<li>Update and Dist-upgrade</li>
<li>Firewall</li>
<li>Conclusion</li>
</ul><p><strong>Add an IP to our SoYouStart Server</strong></p>

<p>Log in to the SoYouStart Control Panel and select IP.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/5s/5293vt2juojc.png" alt="" title="Click &quot;IP&quot;" /></p>

<p>On the Manage IPs panel, we can click either (1) on "Order IPs," or, (2) if, as here, we already have extra IP addresses assigned to the server, on the "+" symbol to expand the list of IP addresses.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/jt/ohftg3ficuiz.png" alt="" title="Manage IPs Panel" /></p>

<p>When the list of <a rel="nofollow" href="https://en.wikipedia.org/wiki/IP_address">IP addresses</a> and their corresponding virtual <a rel="nofollow" href="https://en.wikipedia.org/wiki/MAC_address">MAC addresses</a> is exposed, we can take note of one pair which is not already in use. To assign them to the VPS we will be creating, we will enter this set (consisting of one IP address and its corresponding virtual MAC address) into the Proxmox Control Panel. In addition to our VPS' IP and its corresponding MAC address, we will need the IP address of our host server.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/l8/ut8jus3a1stf.png" alt="" title="Extra IPs and MACs" /></p>

<p><strong>Download an Operating System Template</strong></p>

<p>In the far left hand Server View column of the Proxmox web GUI, we make sure that Datacenter and  Node are expanded by clicking on the tiny "&gt;" so that it points down. We need to expose the "local" storage line entry and click on it. Then we head to the top menu of the main panel and click "Templates."</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/up/tkly168g6t99.png" alt="" title="&quot;Local&quot; storage and Template" /></p>

<p>The "Templates" dialog opens. We can see and select from quite a long list of possible <a rel="nofollow" href="https://www.gnu.org/gnu/linux-and-gnu.en.html">GNU/Linux</a> distributions and releases. In addition to the "usual" candidates, we can choose from many <a rel="nofollow" href="https://www.turnkeylinux.org/">Turnkey Linux</a> templates, which include GNU/Linux plus preinstalled software packages, such as <a rel="nofollow" href="https://wordpress.org/">Wordpress</a>. Let's click on Ubuntu 20.04 and then "Download" in the lower right hand corner of the dialog.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/vv/qp8bwxrj5j75.png" alt="" title="Templates Dialog" /></p>

<p>The Templates dialog is replaced by a "Task viewer: Download" window which shows the progress of the template download. We may have to scroll down to see the final "TASK OK" line.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/ui/uql7343k0z1j.png" alt="" title="Task Viewer" /></p>

<p><strong>Launch the Create LXC Container Dialog</strong></p>

<p>After closing the Task viewer window we are able to see (1) our newly downloaded Ubuntu 20.04 template. Let's now click on (2) the "Create CT" button to launch the "Create LXC Container" dialog. Within the Create LXC Container dialog we will configure our first container during the next few steps.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/to/2swsf9w09un8.png" alt="" title="Create LXC Container" /></p>

<p><strong>Container ID, Hostname, Password</strong></p>

<p>We begin in the "General" tab of the Create LXC Container dialog. A numerical Container ID is entered automatically with the container IDs beginning at 100. We enter the fully qualified hostname of our VPS, "superspeedyvps-example.com." Then we enter a password and confirm the password.</p>

<p>Note that the "Unprivileged container" type which we need is checked by default. Giving out privileged containers might create a significant security risk.</p>

<p>Now, we click "Next" to move on to the "Operating System Template" tab.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/g0/yem9um67dd3t.png" alt="" title="&quot;General&quot; tab close up" /></p>

<p><strong>Operating System Template</strong></p>

<p>In the operating system "Template" tab, we select the Ubuntu 20.04 template which we recently downloaded, then click "Next."</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/89/0pmkn5x1hy1e.png" alt="" title="Select Ubuntu template" /></p>

<p><strong>Root disk</strong></p>

<p>Next is the "Root Disk" tab. Here we can just go with the defaults, since our server has the default "local" storage configured and since we are satisfied with the default 8 GiB size for the root disk of our first VPS.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/4c/halsp2ohqgvd.png" alt="" title="Root disk size" /></p>

<p><strong>CPU</strong></p>

<p>The next tab is the "CPU" tab. Here we again go with the default of one core and no limit.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/fi/8va2g56tl1fe.png" alt="" title="CPU" /></p>

<p><strong>Memory</strong></p>

<p>Since we are Low End, we are making a very small VPS! So let's continue with the default size of 512 MiB for both main memory and swap.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/9t/hmfkfxvqrlsx.png" alt="" title="Memory" /></p>

<p><strong>Network and Firewall</strong></p>

<p>The next tab, "Network" can be a bit tricky with OVH failover IPs. Let's first take a look at the defaults and then discuss the changes we need to make. First, here are the defaults:</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/bc/o3ws0kpg18tf.png" alt="" title="Network" /></p>

<p>OVH extra IPs have the elegant advantage that the customer quickly and easily can move the IP from one server to another. OVH uses the term "failover" to refer to extra IPs, because, if the server or VPS assigned to an IP ever <em>fails</em> to work for any reason, the customer quickly and easily can move the extra IP <em>over</em> to another server. This works because the OVH failover IPs are "announced" but not  "routed."</p>

<p>To work with the failover IPs, the customer needs to use <a rel="nofollow" href="https://en.wikipedia.org/wiki/Network_layer">OSI model Layer 2 networking instead of Layer 3 networking</a>.  Using Layer 2 networking can be challenging for those new to it.</p>

<p>Notably, OVH's "gateway" IP addresses frequently are "out of band" with respect to failover IPs. Also, some  widely adopted networking autoconfiguration tools sometimes do not play nicely with out of band gateways and Layer 2.</p>

<p>Fortunately for us, however, Proxmox understands OVH's failover IP networking very well! All we need to do is to enter the MAC address, its paired IP address, and the gateway address, all of which we noted back at the beginning in the SoYouStart Control panel. Let's go!</p>

<p>First, we click in the MAC address box, which contains the default, "auto." We replace "auto" with the MAC address we obtained from the OVH Control Panel. The MAC address should be a series of numbers, letters, and colons, looking something like "a1:b2:c3:d4:e5:f6". Let's not enter the quotation marks and let's not enter the final period.</p>

<p>Next, we enter our VPS's IP address in the "IPv4/CIDR" box at the top of the right hand column. Since the IP address needs to be entered in <a rel="nofollow" href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing">CIDR format</a> we append "/32" to the IP address. So we'll be entering exactly the address the SoYouStart Control Panel gave us for the extra IP to be added, but with "/32" appended. Our entry should look something like "xxx.xxx.xxx.xxx/32", without the quotation marks.</p>

<p>Finally, we enter the gateway for our VPS, which is exactly the same as the primary network address of our <strong>host</strong> server (<strong>not</strong> the address of our VPS) but with the last three digits replaced by 254. So, if our host server is xxx.xxx.xxx.xxx, then the gateway for our VPS is xxx.xxx.xxx.254.</p>

<p><strong>DNS</strong></p>

<p>The "DNS" tab is easy because our VPS can use the settings configured for the host server. Thus, for DNS, we just accept the defaults.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/0t/y8439s9jzqyf.png" alt="" title="DNS" /></p>

<p><strong>Confirm and Start</strong></p>

<p>Now we arrive at the "Confirm" tab. We have the opportunity to review most of our previous entries. Also, if we wish, we can check the "Start after created" box in the lower left. Alternatively, we can manually start the container whenever we wish subsequent to its creation.</p>

<p>Let's click "Finish" in the lower right hand corner.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/c8/hg6dj0h27ecd.png" alt="" title="Confirm" /></p>

<p>A Task viewer pops up and shows the various tasks related to the creation of our container. Probably we'll have to scroll down to see the final "TASK OK" entry. Our first LXC VPS has been created!</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/dk/lh9dg2618s1y.png" alt="" title="TASK OK" /></p>

<p>Let's close the Task viewer and then click on (1) Container number 100 (superspeedyvps-example.com) in the far left hand Server View column; (2) the Summary in the left hand column of the main panel, and then (3) "Start" in the right hand corner.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/sn/9pypfijcmcjd.png" alt="" title="Start" /></p>

<p><strong>Test</strong></p>

<p>Next, we click "Console" in the left hand column of the main panel. We should get a login prompt. If not, we click inside the console and press the return key. The login prompt should appear. We enter "root" as our username and the password we specified when we created the VPS. The Message of the Day (MOTD) is presented. We can see "Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.44-1-pve x86_64)!"</p>

<p>Thanks to <a rel="nofollow" href="https://github.com/major">Major Hayden</a> we can read the <a rel="nofollow" href="https://major.io/icanhazip-com-faq/">FAQ for his free icanhazip website</a> and then use the site in our first shell command.</p>

<p>Yaaay! <a rel="nofollow" href="https://icanhazip.com">Icanhazip.com</a> returns our correct IP!! We now know <em>both</em> that DNS seems to be working and that our IP seems to be configured as expected!!</p>

<pre spellcheck="false" tabindex="0">root@superspeedyvps-example:~# wget -qO- icanhazip.com
149.56.xxx.xxx
root@superspeedyvps-example:~# 
</pre>

<p><img src="http://talk.lowendspirit.com/uploads/editor/e8/lpjaab99xmc9.png" alt="" title="Our first shell command!" /></p>

<p><strong>Update and Dist-upgrade</strong></p>

<p>It's probably a good idea to update and dist-upgrade our new VPS. Some of the container templates do not seem to be continuously integrated with the upstream so the templates sometimes can need quite a few updates. For example, as of July 2020:</p>

<pre spellcheck="false" tabindex="0"> root@superspeedyvps-example:~# apt-get update
  [ . . . ]
 root@superspeedyvps-example:~# apt-get dist-upgrade
Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  libllvm10
The following packages will be upgraded:
  accountsservice apparmor apt apt-utils bind9-dnsutils bind9-host bind9-libs busybox-static
  ca-certificates dbus gir1.2-glib-2.0 libaccountsservice0 libapparmor1 libapt-pkg6.0 libdbus-1-3
  libgirepository-1.0-1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 libglib2.0-data libglx-mesa0 libgnutls30
  libjson-c4 libnetplan0 libnss-systemd libpam-systemd libpython3.8-minimal libpython3.8-stdlib libseccomp2
  libsqlite3-0 libsystemd0 libudev1 login netplan.io openssh-client openssh-server openssh-sftp-server
  passwd postfix python3-distupgrade python3-update-manager python3.8 python3.8-minimal ssh strace systemd
  systemd-sysv systemd-timesyncd tzdata ubuntu-minimal ubuntu-release-upgrader-core ubuntu-standard udev
  update-manager-core
54 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 48.3 MB of archives.
After this operation, 73.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
  [ . . . ]
root@superspeedyvps-example:~#
</pre>

<p><strong>Firewall</strong></p>

<p>Our first VPS seems to come up unprotected by the firewall because ping works from outside the local network on a new install, but turning on the firewall in the VPS' panel of the Proxmox web GUI without first adding ALLOW rules breaks ping from the WAN.</p>

<p>Note that "Firewall" was checked by default in the Network tab of the Create LXC Container dialog. Note also that the default Proxmox firewall configuration is to drop everything from the WAN and pass only ssh (port 22) and the web GUI (port 8006) coming from the local network.</p>

<p>Here, we created our first VPS with Ubuntu, which is a Debian based distribution. Limited testing here suggests that Debian and Debian based VPSes come up with the VPS firewall set to off despite the default checkmark being set to "on" during VPS creation.</p>

<p>CentOS VPSes, however, seem to come up as should be expected, with the firewall enabled, unless the Firewall checkbox was <strong>un</strong>checked during creation. In other words, with CentOS and with the default check of the Firewall checkbox, the VPS seems to come up with the firewall working as expected, with <strong>all</strong> external WAN network connections dropped.</p>

<p>The VPS firewall configuration in the web GUI is very similar to the host server node configuration. For details, please check the Setting Up the Firewall and Firewall Rules sections of the previous post, <a rel="nofollow" href="https://lowendspirit.com/postinstall-configuration-of-proxmox-ve-6-2">part two of this series</a>.</p>

<p>Instead of or in addition to our using the Proxmox firewall, which works <em>outside</em> the container, our customer also seems to be able <a rel="nofollow" href="https://www.reddit.com/r/linuxadmin/comments/drii5k/host_independent_firewall_inside_lxc_container/">to run a firewall <em>inside</em> his container.</a></p>

<p><strong>Conclusion</strong></p>

<p>Hooray! We now have reached our goal of becoming a Low End hosting provider! All that remains is forwarding the container's IP address and root password to the first of our many anxiously waiting clients!</p>
]]>
        </description>
    </item>
    <item>
        <title>How to loop through a file and perform an action per line</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1494/how-to-loop-through-a-file-and-perform-an-action-per-line</link>
        <pubDate>Wed, 22 Jul 2020 09:18:53 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>LES_Blog</dc:creator>
        <guid isPermaLink="false">1494@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by Anthony Smith, 22 July 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>Sometimes you want to perform the same action multiple times with a single variable, that may be a vps ID, a process ID or some other unique identifier.</p>

<p>Here are a few examples of how you do that with a simple script, obviously there are other ways and probably better ways to do some of these things they are simply examples to work with.</p>

<h2 data-id="copy-files-of-a-certain-type-to-a-server">Copy files of a certain type to a server</h2>

<pre spellcheck="false" tabindex="0">#!/bin/sh
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin

#find img files
find /images -type f -name "*.img" -exec basename '{}' \; &gt; /tmp/imagelist

while read thing
do
scp /images/$thing root@remote.server.i.p:/backups
done &lt;/tmp/imagelist
</pre>

<p>The above example finds any files with the .img extension in the <code spellcheck="false" tabindex="0">/images</code> directory and lists them in the file <code spellcheck="false" tabindex="0">/tmp/imagelist</code> the script then sets a variable of <code spellcheck="false" tabindex="0">thing</code> and performs an action for each <code spellcheck="false" tabindex="0">thing</code> which in this example it uses scp to move the .img files to the <code spellcheck="false" tabindex="0">/backups</code> directory on a remote server (the assumption is that the pub key for the source is installed on the remote server).</p>

<p>The line <code spellcheck="false" tabindex="0">done &lt;/tmp/imagelist</code>is what the script goes through 1 item at a time.</p>

<p></p><hr /><h2 data-id="kill-tor-processes-on-a-server">kill tor processes on a server</h2>

<pre spellcheck="false" tabindex="0">#!/bin/sh
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin

#find tor processes/pids
top -bc -n1 | grep torrc | awk '{print $1}' &gt; /tmp/torpids

while read onion
do
kill -9 $onion
done &lt;/tmp/torpids
</pre>

<p>In the above example, the top command is used in batch mode and shows the full command line <code spellcheck="false" tabindex="0">-bc</code> and it runs only once <code spellcheck="false" tabindex="0">-n1</code> then grp is used to find lines that contain <code spellcheck="false" tabindex="0">torrc</code> the awk prints the process id's only and finally they are sent to <code spellcheck="false" tabindex="0">&gt; /tmp/torpids</code></p>

<p><code spellcheck="false" tabindex="0">onion</code> is used as the variable and then with extreme prejudice <code spellcheck="false" tabindex="0">kill -9 $onion</code> is used to nuke the tor processes, as before <code spellcheck="false" tabindex="0">done &lt;/tmp/torpids</code> is the list of process id's</p>

<p></p><hr /><h2 data-id="shutdown-all-kvm-guest-servers">shutdown all KVM guest servers</h2>

<pre spellcheck="false" tabindex="0">#!/bin/sh
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin

#get a list of all running kvm guests
virsh list | grep kvm | awk '{print $2}' &gt;/tmp/guests

while read vm
do
virsh shutdown $vm
done &lt; /tmp/guests
</pre>

<p>In the above example we use <code spellcheck="false" tabindex="0">virsh list</code> to get a list of all running guests | we grep for kvm to only get kvm guest id's/names (assuming your kvm guest servers use a naming convention with kvm at the start e.g. kvm12345) then use awk to print just the guest name and not the status and pass it through to <code spellcheck="false" tabindex="0">/tmp/guests</code> as a list</p>

<p><code spellcheck="false" tabindex="0">vm</code> is the variable and while looping through <code spellcheck="false" tabindex="0">/tmp/guests</code> the action <code spellcheck="false" tabindex="0">virsh shutdown</code> is performed for each line.</p>

<p>The <code spellcheck="false" tabindex="0">/tmp/guests</code> file will look something like:</p>

<pre spellcheck="false" tabindex="0">kvm123
kvm124
kvm125
kvm126
</pre>

<hr /><p>If you already have a list that you want to perform an action on you should be able to adapt any of the above to work with what you want to achieve.</p>

<p>Line by line for simplicity:</p>

<p>Line: <code spellcheck="false" tabindex="0">while read set-a-variable-name-here</code><br />
Explanation: This is where you decide what common variable you want to assign to the items in your list.</p>

<p>Line: <code spellcheck="false" tabindex="0">do</code><br />
Explanation: This is simply saying 'do the following'</p>

<p>Line: <code spellcheck="false" tabindex="0">commands go here $some-variable</code><br />
Explanation: You give the specific command and be sure to put the variable in the right place and use a $ to indicate that it is a variable, this must match the variable name you set on the first line.</p>

<p>Line: <code spellcheck="false" tabindex="0">done &lt; /tmp/list-of-stuff</code><br />
Explanation: This reads the list of items into the script.</p>

<p>Any questions or comments are welcome.</p>
]]>
        </description>
    </item>
    <item>
        <title>A full 24 hour long benchmark and server tests - Server.it and Hostodo</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1430/a-full-24-hour-long-benchmark-and-server-tests-server-it-and-hostodo</link>
        <pubDate>Thu, 09 Jul 2020 15:39:30 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>LES_Blog</dc:creator>
        <guid isPermaLink="false">1430@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by Anthony Smith, 14 July 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>Following the <a rel="nofollow" href="https://lowendspirit.com/pq-hosting-moldova-netherlands-russia-latvia-ukraine-and-hong-kong-unmetered-bw" title="last benchmark and service test I ran on pq.hosting">last benchmark and service test I ran on pq.hosting</a> <a rel="nofollow" href="https://talk.lowendspirit.com/profile/Iroshan464" title="@Iroshan464">@Iroshan464</a> reached out and offered full access to a couple of idle servers he has with <a rel="nofollow" href="https://www.server.it" title="Server.it">Server.it </a> and <a rel="nofollow" href="https://hostodo.com" title="Hostodo">Hostodo</a>.</p>

<p>I took him up on the offer to test a couple more out after <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/33716/#Comment_33716" title="discussion">discussion</a> with informed members of the community the disk test has been more refined to run mixed read/write at 50/50 to better emulate real-world performance and will be tested against 4k and 512k chunks rather than 64k.</p>

<p><strong>Please</strong> note this is not intended to pit 1 host against another, I just did them both at the same time as that is the way they were offered and I am trying to hone in on a good method of doing none intrusive tests that can be charted over a full 24 hour period to find consistency over raw point in time performance.</p>

<p>Eventually over time if I have enough data to use I will chart the averages and deviations per region for as many hosts as possible.</p>

<hr /><p>Initially, I jumped on the <strong>server.it</strong> account to be pleasantly surprised by a custom control panel, while it is fairly basic it is very user friendly and everything you need seems to be there.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/f8/1fzddieoa19h.png" alt="" title="" /></p>

<h2 data-id="server-it">Server.it</h2>

<p>The initial <a rel="nofollow" href="https://github.com/masonr/yet-another-bench-script" title="YABS">YABS</a> for the impatient, This is a €0.99 /month plan with 2GB Ram so don't expect too much <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<pre spellcheck="false" tabindex="0"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2020-06-20                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Thu 09 Jul 2020 02:40:44 PM UTC

Basic System Information:
---------------------------------
Processor  : Westmere E56xx/L56xx/X56xx (Nehalem-C)
CPU cores  : 1 @ 2699.998 MHz
AES-NI     : â Enabled
VM-x/AMD-V : â Disabled
RAM        : 2.0Gi
Swap       : 0B
Disk       : 20G

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 38.27 MB/s    (9.5k) | 348.78 MB/s   (5.4k)
Write      | 38.35 MB/s    (9.5k) | 350.61 MB/s   (5.4k)
Total      | 76.63 MB/s   (19.1k) | 699.39 MB/s  (10.9k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 620.55 MB/s   (1.2k) | 576.41 MB/s    (562)
Write      | 653.53 MB/s   (1.2k) | 614.80 MB/s    (600)
Total      | 1.27 GB/s     (2.4k) | 1.19 GB/s     (1.1k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider                  | Location (Link)           | Send Speed      | Recv Speed
                          |                           |                 |                                                                                                                                                                    
Bouygues Telecom          | Paris, FR (10G)           | 103 Mbits/sec   | 99.9 Mbits/sec
Online.net                | Paris, FR (10G)           | 103 Mbits/sec   | 100 Mb                                                                                                                                                             its/sec
WorldStream               | The Netherlands (10G)     | 103 Mbits/sec   | 100 Mb                                                                                                                                                             its/sec
wilhelm.tel               | Hamburg, DE (10G)         | 103 Mbits/sec   | 100 Mb                                                                                                                                                             its/sec
Biznet                    | Bogor, Indonesia (1G)     | 78.7 Mbits/sec  | 79.1 M                                                                                                                                                             bits/sec
Hostkey                   | Moscow, RU (1G)           | 101 Mbits/sec   | 99.3 M                                                                                                                                                             bits/sec
Velocity Online           | Tallahassee, FL, US (10G) | 89.0 Mbits/sec  | 97.0 M                                                                                                                                                             bits/sec
Performing IPv4 iperf3 send test to Airstream Communications (Attempt #1 of 10).                                                                                                                                                             Performing IPv4 iperf3 send test to Airstream Communications (Attempt #2 of 10).                                                                                                                                                             Performing IPv4 iperf3 recv test from Airstream Communications (Attempt #1 of 10                                                                                                                                                             Performing IPv4 iperf3 recv test from Airstream Communications (Attempt #2 of 10                                                                                                                                                             Airstream Communications  | Eau Claire, WI, US (10G)  | 92.1 Mbits/sec  | 93.3 M                                                                                                                                                             bits/sec
Hurricane Electric        | Fremont, CA, US (10G)     | 83.7 Mbits/sec  | 95.3 M                                                                                                                                                             bits/sec

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 552
Multi Core      | 548
Full Test       | https://browser.geekbench.com/v5/cpu/2864880
</pre>

<p>What stands out initially is that it seems to be restricted to 100mbit, performance is likely hit by the lack of full CPU passthrough, but not terrible, from the info available I would think it is probably a 3+ generations old cpu.</p>

<h3 data-id="dd-tests-for-the-ladies">dd tests for the ladies:</h3>

<pre spellcheck="false" tabindex="0">root@it:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.96743 s, 271 MB/s
root@it:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.3001 s, 325 MB/s
root@it:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.65895 s, 404 MB/s
root@it:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.05151 s, 352 MB/s
root@it:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.17049 s, 495 MB/s
root@it:~#
</pre>

<hr /><h2 data-id="hostodo">Hostodo</h2>

<p>This is a 3GB KVM plan for $39.99 /year, the control panel is SolusVM so I will save the screenshots as it is well known and fairly standard.</p>

<p>Again the initial <a rel="nofollow" href="https://github.com/masonr/yet-another-bench-script" title="YABS">YABS</a> for the impatient:</p>

<pre spellcheck="false" tabindex="0"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2020-06-20                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Fri 10 Jul 2020 05:29:51 AM EDT

Basic System Information:
---------------------------------
Processor  : QEMU Virtual CPU version 2.5+
CPU cores  : 2 @ 2599.998 MHz
AES-NI     : â Disabled
VM-x/AMD-V : â Disabled
RAM        : 2.9Gi
Swap       : 1.0Gi
Disk       : 30G

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 124.59 MB/s  (31.1k) | 763.93 MB/s  (11.9k)
Write      | 124.92 MB/s  (31.2k) | 767.95 MB/s  (11.9k)
Total      | 249.51 MB/s  (62.3k) | 1.53 GB/s    (23.9k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 826.74 MB/s   (1.6k) | 831.10 MB/s    (811)
Write      | 870.66 MB/s   (1.7k) | 886.46 MB/s    (865)
Total      | 1.69 GB/s     (3.3k) | 1.71 GB/s     (1.6k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider                  | Location (Link)           | Send Speed      | Recv Speed
                          |                           |                 |
Bouygues Telecom          | Paris, FR (10G)           | 763 Mbits/sec   | 491 Mbits/sec
Online.net                | Paris, FR (10G)           | 715 Mbits/sec   | 441 Mbits/sec
WorldStream               | The Netherlands (10G)     | 783 Mbits/sec   | 470 Mbits/sec
wilhelm.tel               | Hamburg, DE (10G)         | 753 Mbits/sec   | 510 Mbits/sec
Biznet                    | Bogor, Indonesia (1G)     | 523 Mbits/sec   | 84.6 Mbits/sec
Hostkey                   | Moscow, RU (1G)           | 749 Mbits/sec   | 413 Mbits/sec
Velocity Online           | Tallahassee, FL, US (10G) | 871 Mbits/sec   | 282 Mbits/sec
Airstream Communications  | Eau Claire, WI, US (10G)  | 837 Mbits/sec   | 461 Mbits/sec
Hurricane Electric        | Fremont, CA, US (10G)     | 814 Mbits/sec   | 111 Mbits/sec

iperf3 Network Speed Tests (IPv6):
---------------------------------
Provider                  | Location (Link)           | Send Speed      | Recv Speed
                          |                           |                 |
Bouygues Telecom          | Paris, FR (10G)           | 761 Mbits/sec   | 232 Mbits/sec
Online.net                | Paris, FR (10G)           | 660 Mbits/sec   | 209 Mbits/sec
WorldStream               | The Netherlands (10G)     | 691 Mbits/sec   | 174 Mbits/sec
wilhelm.tel               | Hamburg, DE (10G)         | 724 Mbits/sec   | 198 Mbits/sec
Airstream Communications  | Eau Claire, WI, US (10G)  | 820 Mbits/sec   | 129 Mbits/sec
Hurricane Electric        | Fremont, CA, US (10G)     | 801 Mbits/sec   | 89.5 Mbits/sec

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 455
Multi Core      | 845
Full Test       | https://browser.geekbench.com/v5/cpu/2873674
</pre>

<p>Agan no CPU passthrough, in this case literally none, just QEMU emulation so performance is probably needlessly hindered.</p>

<h3 data-id="dd-tests-for-the-ladies-1">dd tests for the ladies</h3>

<pre spellcheck="false" tabindex="0">root@mia:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.13661 s, 342 MB/s
root@mia:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.58055 s, 679 MB/s
root@mia:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.2906 s, 469 MB/s
root@mia:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.26818 s, 847 MB/s
root@mia:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.8562 s, 578 MB/s
</pre>

<h2 data-id="24-hour-benchmarks">24-Hour Benchmarks</h2>

<p>I set off a series of disk and network tests over 24 hours, both started at 11am (UK/London) and manually stopped them by killing the cron jobs the same time the next day.</p>

<p>The disk tests are 50/50 mixed read and write, further to a discussion on the <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/33716#Comment_33716" title="LowEndSpirit forum">LowEndSpirit forum</a> I decided to run the tests at 4k, 64k, 512k and 1m</p>

<h3 data-id="server-it-extended-disk-test-results">Server.it Extended disk test results.</h3>

<p><strong>IOPS</strong> (numbers on the left are in thousands/k)</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ip/abime43ojm46.png" alt="" title="" /></p>

<ul><li>4k Average IOPS: 25.04k</li>
<li>4k Fastest IOPS: 28.9k</li>
<li><p>4k Slowest IOPS: 18.5k</p></li>
<li><p>64k Average IOPS: 32.83k</p></li>
<li>64k Fastest IOPS: 52.6k</li>
<li><p>64k Slowest IOPS: 13k</p></li>
<li><p>512k Average IOPS: 9.11k</p></li>
<li>512k Fastest IOPS: 10.9k</li>
<li><p>512k Slowest IOPS: 3.6k</p></li>
<li><p>1m Average IOPS: 3.84k</p></li>
<li>1m Fastest IOPS: 9.9k</li>
<li>1m Slowest IOPS: 2k</li>
</ul><p><strong>Speeds MiB/s</strong></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/r9/7rxe10otvx32.png" alt="" title="" /></p>

<ul><li>4k Average MiB/s: 97.9</li>
<li>4k Fastest MiB/s: 113</li>
<li><p>4k Slowest MiB/s: 72.2</p></li>
<li><p>64k Average MiB/s: 2056</p></li>
<li>64k Fastest MiB/s: 3289</li>
<li><p>64k Slowest MiB/s: 814</p></li>
<li><p>512k Average MiB/s: 4572</p></li>
<li>512k Fastest MiB/s: 5435</li>
<li><p>512k Slowest MiB/s: 1825</p></li>
<li><p>1m Average MiB/s: 4545</p></li>
<li>1m Fastest MiB/s: 3879</li>
<li>1m Slowest MiB/s: 2000</li>
</ul><p>Given the speeds and massive range of speeds you would have to assume some sort of hardware cache is actually responsible for the majority of the results, perhaps intel optane or possibly a software solution such as dm-cache or bcache backed by an NVMe array or a ramdisk.</p>

<p>This is not a bad thing especially not for €0.99 /month! (regular price seems to be €2.99) there is some info regarding their SSD performance on the website, I do not know much Italian though and it translates badly.</p>

<h3 data-id="server-it-extended-network-test-results">Server.it Extended network test results.</h3>

<p>Over 24 hours and once every minute I had the VPS pull lowendspirit.com (so Cloudflare essentially) with curl for a TCP test.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/sr/bae33ti1vtg7.png" alt="" title="" /></p>

<ul><li>The average load time was 0.665831 seconds.</li>
<li>The slowest was 5.406029 seconds</li>
<li>The fastest was: 0.315025 seconds</li>
</ul><p>To give a bit more context out of just under 1500 tests only 124 took more than 1 second and only 5 results were over 5 seconds however this does not impact the average of 0.665831 seconds much.</p>

<p>The Server.it VPS is in Ravenna Italy</p>

<hr /><h3 data-id="hostodo-extended-disk-test-results">Hostodo Extended disk test results.</h3>

<p><strong>IOPS</strong> (numbers on the left are in thousands/k)</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/gm/jb2a11xylvw7.png" alt="" title="" /></p>

<ul><li>4k Average IOPS: 46.11k</li>
<li>4k Fastest IOPS: 52.2k</li>
<li><p>4k Slowest IOPS: 36.1k</p></li>
<li><p>64k Average IOPS: 33.42k</p></li>
<li>64k Fastest IOPS: 37.4k</li>
<li><p>64k Slowest IOPS: 24.4k</p></li>
<li><p>512k Average IOPS: 3.6k</p></li>
<li>512k Fastest IOPS: 4k</li>
<li><p>512k Slowest IOPS: 2.6k</p></li>
<li><p>1m Average IOPS: 1.7k</p></li>
<li>1m Fastest IOPS: 1.9k</li>
<li>1m Slowest IOPS: 1.4k</li>
</ul><p><strong>Speeds MiB/s</strong></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ua/enrvjqcku7g4.png" alt="" title="" /></p>

<ul><li>4k Average MiB/s: 180.2</li>
<li>4k Fastest MiB/s: 204</li>
<li><p>4k Slowest MiB/s: 141</p></li>
<li><p>64k Average MiB/s: 2089</p></li>
<li>64k Fastest MiB/s: 2336</li>
<li><p>64k Slowest MiB/s: 1524</p></li>
<li><p>512k Average MiB/s: 1862</p></li>
<li>512k Fastest MiB/s: 2000</li>
<li><p>512k Slowest MiB/s: 1344</p></li>
<li><p>1m Average MiB/s: 1761</p></li>
<li>1m Fastest MiB/s: 1969</li>
<li>1m Slowest MiB/s: 1404</li>
</ul><p>Again with the wide range of results you have to assume there is some sort of hardware cache at play here however it should be noted that the speeds at hostodo are much more consistent throughout the whole 24 hour period than at server.it especially at 512k and 1m.</p>

<h3 data-id="hostodo-extended-network-test-results">Hostodo Extended network test results.</h3>

<p><img src="https://talk.lowendspirit.com/uploads/editor/gf/z1n3rbbu1999.png" alt="" title="" /></p>

<ul><li>The average load time was 0.767673 seconds.</li>
<li>The slowest was 7.442716 seconds</li>
<li>The fastest was: 0.411746 seconds</li>
</ul><p>To give a bit more context out of just under 1500 tests only 174 took more than 1 second and only 5 results were over 8 seconds however this does not impact the average of 0.767673 seconds much.</p>

<p>The Hostodo VPS is in Miami Florida USA.</p>

<hr /><h2 data-id="the-method">The Method</h2>

<p>disk.sh script</p>

<pre spellcheck="false" tabindex="0">#!/bin/bash
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=250M --readwrite=randread | grep IOPS &gt;&gt; readsandwrites4
sleep 5
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=64k --iodepth=64 --size=250M --readwrite=randread | grep IOPS &gt;&gt; readsandwrites64
sleep 5
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=512k --iodepth=64 --size=250M --readwrite=randread | grep IOPS &gt;&gt; readsandwrites512
sleep 5
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=1m --iodepth=64 --size=250M --readwrite=randread | grep IOPS &gt;&gt; readsandwrites1m
</pre>

<p>net.sh script</p>

<pre spellcheck="false" tabindex="0">#!/bin/bash
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
curl 'https://lowendspirit.com' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ja;q=0.6' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36' -H 'Connection: keep-alive' --compressed -s -o /dev/null -w "%{time_starttransfer}\n" &gt;&gt;netstats
</pre>

<p>Create a few cronjobs with <code spellcheck="false" tabindex="0">crontab -e</code> and insert the following lines after creating the above scripts in /root</p>

<pre spellcheck="false" tabindex="0">#* * * * * /root/net.sh
#*/5 * * * * /root/disk.sh
</pre>

<p>Dont forget to make them exectutable <code spellcheck="false" tabindex="0">chmod +x net.sh disk.sh</code></p>

<p>Debain 10 64bit was used for both servers.</p>

<p>For ease of charting IOPS are rounded down to the nearest 100.</p>

<hr /><h2 data-id="raw-data">Raw data</h2>

<p>I have put the raw data in a none expiring public Pastebin, again IOPS are in thousands</p>

<ul><li>Server.it Disk: <a href="https://pastebin.com/27DwnVUa" rel="nofollow">https://pastebin.com/27DwnVUa</a></li>
<li>Server.it network: <a href="https://pastebin.com/7sU0d4uy" rel="nofollow">https://pastebin.com/7sU0d4uy</a></li>
<li>Hostodo network: <a href="https://pastebin.com/XaXZMfD3" rel="nofollow">https://pastebin.com/XaXZMfD3</a></li>
<li>Hostodo Disk: <a href="https://pastebin.com/prH0nNvM" rel="nofollow">https://pastebin.com/prH0nNvM</a></li>
</ul>]]>
        </description>
    </item>
    <item>
        <title>quick tips - awk grep pipe xargs</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1411/quick-tips-awk-grep-pipe-xargs</link>
        <pubDate>Tue, 07 Jul 2020 07:43:58 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>LES_Blog</dc:creator>
        <guid isPermaLink="false">1411@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by Anthony Smith, 7 July 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>In this post we will be looking at running top in batch mode, looking for a string with grep, grabbing the process id's with awk and sending the process id's to be processed by another command with xargs.</p>

<p>For speed, I have just set up a quick VPS and installed apache.</p>

<h2 data-id="top-in-batch-mode">top in batch mode</h2>

<p><code spellcheck="false" tabindex="0">top -b -n1</code></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/vl/z73qoq2dsuhc.png" alt="" title="" /></p>

<p>This command with do as it suggests run top in batch mode with the <code spellcheck="false" tabindex="0">-b</code> switch, the <code spellcheck="false" tabindex="0">-n1</code> tells it to run 1 time, <code spellcheck="false" tabindex="0">-n5</code> would be 5 times.</p>

<h2 data-id="looking-for-a-string-with-grep">Looking for a string with grep</h2>

<p>We can pipe the output of top in batch mode to grep to search for a string, in this case I will look for the apache2 processes.</p>

<p><code spellcheck="false" tabindex="0">top -b -n1 | grep apache</code></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/kq/3mzte30twm6s.png" alt="" title="" /></p>

<p>If we want to monitor these, for example, to see how much cpu time they are using we can up the number of times the batch mode in top runs:</p>

<p><code spellcheck="false" tabindex="0">top -b -n5 | grep apache</code></p>

<p>This will run 5 times because of the <code spellcheck="false" tabindex="0">-n5</code></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/h9/cvurd0vg3d2i.png" alt="" title="" /></p>

<p>This would be useful over the more commonly used <code spellcheck="false" tabindex="0">watch</code> command if you wanted to log the output to a file, for example:</p>

<p><code spellcheck="false" tabindex="0">top -b -n5 | grep apache2 &gt;logfile</code></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/75/6t5bcfj3xsga.png" alt="" title="" /></p>

<h2 data-id="adding-awk-into-the-mix">Adding awk into the mix</h2>

<p>Now how about if we want to grab just the process id's from the output? for that we add awk into the mix:</p>

<p><code spellcheck="false" tabindex="0">top -b -n1 | grep apache2 | awk '{print $1}'</code></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/21/evi9lpl5c9ya.png" alt="" title="" /></p>

<p>This gives us just the pids of the apache2 processes, the <code spellcheck="false" tabindex="0">$1</code> in the awk print command prints the first column only, obviously if you want more columns you can add more, for example:</p>

<p><code spellcheck="false" tabindex="0">top -b -n1 | grep apache2 | awk '{print $1, $12}'</code></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/nw/2mg9e0i6u8we.png" alt="" title="" /></p>

<h2 data-id="taking-an-action-with-xargs">Taking an action with xargs</h2>

<p>Ok so what if we want to add some sort of action to all of this, for example, we may want to kill all apache2 processes. (obviously you can use the <code spellcheck="false" tabindex="0">killall</code> command however this is just for the sake of the example) for this we can add <code spellcheck="false" tabindex="0">xargs</code> into the mix</p>

<p><code spellcheck="false" tabindex="0">top -b -n1 | grep apache2 | awk '{print $1}' | xargs kill</code></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/xr/8lfea4cbktpk.png" alt="" title="" /></p>

<p>As we can see in the image above, <code spellcheck="false" tabindex="0">top</code> has been run in batch mode once, the output piped to <code spellcheck="false" tabindex="0">grep</code> to search for the apache2 string that output is then piped into <code spellcheck="false" tabindex="0">awk</code> which has printed only the process id's which have then been piped to <code spellcheck="false" tabindex="0">xargs</code> which has then ran the <code spellcheck="false" tabindex="0">kill</code> command on them 1 by 1, then searching for apache2 processes again they are gone confirming they were killed.</p>

<p>The kill command can be substituted for any other command for example if you are running containers on an OpenVZ server and spot a bunch of suspect processes you can run them through <code spellcheck="false" tabindex="0">vzpid</code> to get the container id's of processes under a particular name to find the owner of those processes.</p>
]]>
        </description>
    </item>
    <item>
        <title>Part VI- Everything You Wanted To Know About Pagebuilders : Conclusion</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1234/part-vi-everything-you-wanted-to-know-about-pagebuilders-conclusion</link>
        <pubDate>Thu, 11 Jun 2020 11:43:48 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>vyas</dc:creator>
        <guid isPermaLink="false">1234@/index.php?p=/discussions</guid>
        <description><![CDATA[<h3 data-id="introduction">Introduction</h3>

<p><img src="https://talk.lowendspirit.com/uploads/editor/6m/uifmxqk5tl7g.png" alt="Cover Image for post on Pagebuilders" width="500" /></p>

<p>Welcome to the sixth and the concluding part of this six part series on Pagebuilders.</p>

<p><strong>Before we proceed, a quick recap of the previous five posts</strong></p>

<p><strong>Part I</strong> : <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/1135/everything-you-always-wanted-to-know-about-pagebuilders-but-were-afraid-to-ask">Introduction to Pagebuilders</a><br />
In this post, I ( <a href="https://dev.lowendspirit.com/index.php?p=/profile/vyas%29" rel="nofollow">@vyas)</a> gave an overview of the types of pagebuidlers, their utility, as well as limitations. My co author <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> shared his thoughts and motivation for participating in this rather exhaustive (and exhausting!) series.</p>

<p><strong>Part II</strong> : <a rel="nofollow" href="https://lowendspirit.com/everything-you-wanted-to-know-about-pagebuilders-part-ii">Pagebuilders: The Rising Stars</a> <br />
This post, I covered three webhosting + pagebuilder options: Carrd, Brizy, and Bookmark.</p>

<p><strong>Part III</strong> : <a rel="nofollow" href="https://lowendspirit.com/everything-you-wanted-to-know-about-pagebuilders-part-iii-desktop-apps">Pagebuilders: Desktop Apps</a><br />
In this post, <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> gave in depth reviews of two desktop apps : Mobirise and Pinegrow.</p>

<p><strong>Part IV</strong> : <a rel="nofollow" href="https://lowendspirit.com/everything-you-wanted-to-know-about-pagebuilders-part-iv">Pagebuilders for WordPress - Part I</a><br />
In this section, I gave an overview of the types of pagebuilders (Free, Freemiuma nd Premium) and some features and pricing for over 10 pagebuilders. <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> gave detailed review of a Premium pagebuilder- Divi and a passing review of Thrive Architect.</p>

<p><strong>Part V</strong> : <a rel="nofollow" href="https://lowendspirit.com/everything-you-wanted-to-know-about-pagebuilders-part-v-more-pagebuilders-for-wordpress">Pagebuilders for WordPress- part II</a><br />
In this part, I gave a brief overview of two Freemium Pagebuilders - Elementor and Brizy, as well as two Free types - Gutenberg and Generateblocks. I also mentioned a brief note on WordPress, Pagebuilders, and security.</p>

<p>Now that we have revisited the previous five posts, let us get on with the sixth and the final segment of this series. We will talk briefly about Landing pages and Forms for websites.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/jk/fiqk3ls48qjp.png" alt="Image showing an aircraft landing, representing landing pages for websites" width="500" /></p>

<h2 data-id="landing-pages">Landing Pages</h2>

<p>Have you every seen a page that goes on and on talking about a product or a service? You have probably encountered a landing page.<br /><img src="https://talk.lowendspirit.com/uploads/editor/ka/vvr5fwa05eq8.png" alt="meaning of landing page" width="350" /> image: <a rel="nofollow" href="https://dictionary.com">dictionary.com</a></p>

<p>A landing page by its very nature is meant to excite the customer about a product or a service, ultimately driving them to click the "Buy Now" button. The landing page will list out key features of the product or service. Also included are minor details that may otherwise get overlooked (e.g. our chefs use organic mushrooms only or something similar). The below image illustrates the different integrations for <a rel="nofollow" href="https://optimizepress.com">Optimize Press</a>, one of the landing page builders. <br /><img src="https://talk.lowendspirit.com/uploads/editor/tl/idt5ucq3bb7b.png" alt="Integrations of Optimize Press" width="500" /></p>

<p>My research for this article led to multiple lists of "Top Landing page builders". This was the case with Pagebuilders for WordPress in Part IV of this series as well. I am posting below a screenshot from a noon by Zapier that lists the Top 10 landing Page Builders they recommend.</p>

<p><strong><a rel="nofollow" href="https://zapier.com/blog/best-landing-page-builders/">Zapier: Top 10 Landing Page Builders</a></strong><br /><img src="https://talk.lowendspirit.com/uploads/editor/au/e7a2edh1db57.png" alt="Top 10 Landing Page builders- Zapier Blog" width="450" /></p>

<p>If you are looking for a deal for Page builders, I am leaving a couple of mentions below. You can look these up on your <a rel="nofollow" href="https://en.wikipedia.org/wiki/Comparison_of_web_search_engines">favourite search engine</a> and find sites that offer "lifetime deals". Note that I have not used either of these sites, personally I would recommend <a rel="nofollow" href="https://carrd.co">Carrd</a>, which we covered in Part II of this series.<br />
-<a rel="nofollow" href="https://themesgrove.com/wp-onepager/">WP One Pager</a><br /><strong>Page templates of WP One Page</strong></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/ln/mc5itzax1dey.png" alt="Page templates of WP One Pager" width="450" /></p>

<p>In addition to the above, web hosting platforms like <a rel="nofollow" href="https://wix.com">Wix</a>, <a rel="nofollow" href="https://squarespace.com">Squarespace</a>, <a rel="nofollow" href="https://weebly.com">Weebly</a>, etc. also offer features that will help you create landing pages. In this post, our goal is to provide an overview of this category of pagebuilders. Probably in a subsequent post, I will write in detail about the anatomy, design elements and integrations for landing pages.</p>

<blockquote><div>
  <p>If you are really strapped for cash, or you want to strech the "low end" philosophy to the greatest extent: use the <a rel="nofollow" href="https://sitepad.com">Sitepad webpage builder</a> from a standard <a rel="nofollow" href="https://softaculous.com">Softaculous install</a>, and create a landing page. You will of course need integrations with a CRM, a payment processor, account management system and email/ subscription service.</p>
</div></blockquote>

<h4 data-id="popup-pages-are-a-sub-segment-of-pagebuilders">Popup pages are a sub segment of pagebuilders</h4>

<p>Example of a popup page<br /><img src="https://talk.lowendspirit.com/uploads/editor/49/iyduj1eeqmvq.png" width="400" alt="example of a popup from visualcomposer" /></p>

<h2 data-id="form-creators">Form Creators</h2>

<p>Forms can take several avatars- Newsletter sign up forms, event registration, surveys, request for features, or even feedback. <a rel="nofollow" href="https://surveymonkey.com">Surveymonkey</a>, <a rel="nofollow" href="https://www.google.com/forms/about/">Google Forms</a> and <a rel="nofollow" href="https://typeform.com">Typeform</a> are some of the most popular form creators. Another is <a rel="nofollow" href="https://www.zoho.com/survey">Zoho Survey</a>. All of these have embed plugins or codes that can be integrated into your website.<br /><a rel="nofollow" href="https://www.webiny.com/serverless-app/page-builder">Webiny</a> is a new service - self hosted, headless and runs on node.js. It has a pagebuilder and a formbuilder as well. I am attching a screenshot of its formbuilder feature below.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/8a/mpiadhf7bbr1.png" alt="screenshot of formbuilder by Weniny" width="450" /></p>

<p><strong>Some more examples of form builders</strong></p>

<p>-<a rel="nofollow" href="https://stacksocial.com/sales/123formbuilder-lifetime-subscription">123 Form Builder</a><br />
-<a rel="nofollow" href="https://appsumo.com/happyforms/">Happyforms</a></p>

<p><strong>HappyForms Formbuilder</strong><br /><img src="https://talk.lowendspirit.com/uploads/editor/2g/k6uxew3i0xj6.png" alt="screenshot of HappyForms Form Builder" width="500" /></p>

<hr /><p><strong>Concluding Remarks</strong>:<br />
When the blog feature for LES was opened up, my original goal was to write a short introduction to the world of Pagebuilders. Around a month ago, that is, Mid-May 2020, I had an outline ready for this purpose. But then a conversation with <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> led to a series of discussions- his enthusiasm and long ,detailed reviews proved very helpful and played a key role in giving a structure to this series. Of course, the remarks and feedback  from LES community were also very helpful.</p>

<p>Hope that you found this series useful. I am including a list of resources and references for you to take a look at should you want to peek deeper into the world of Pagebuilders. Thanks again!</p>

<hr /><h4 data-id="further-resources">Further Resources</h4>

<p>-<a rel="nofollow" href="https://www.codeinwp.com/blog/wordpress-page-builders-expectations">Expectations from WordPress Pagebuilers</a></p>

<p>-<a rel="nofollow" href="https://motopress.com/products/content-editor/">MotoPress Content Editor</a></p>

<p>-<a rel="nofollow" href="https://visualcomposer.com/pricing/">Visual Composer</a></p>

<p>-<a rel="nofollow" href="http://ascendpages.com/fe/trial.html">Ascend Pages</a></p>

<p>-<a rel="nofollow" href="https://www.appbyte.website/Home/index.html">Appbyte</a></p>

<p>-<a rel="nofollow" href="https://livecanvas.com/#pricing">Livecanvas</a></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/1x/s1q0nvifyc8b.jpg" alt="Types of Pagebuilders for Websites. Image by AVyas." width="400" /><br />
Types of pagebuilders for websites.</p>
]]>
        </description>
    </item>
    <item>
        <title>Everything You Wanted To Know About Pagebuilders:  Part V More Pagebuilders For WordPress</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1205/everything-you-wanted-to-know-about-pagebuilders-part-v-more-pagebuilders-for-wordpress</link>
        <pubDate>Sat, 06 Jun 2020 11:02:59 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>vyas</dc:creator>
        <guid isPermaLink="false">1205@/index.php?p=/discussions</guid>
        <description><![CDATA[<h2 data-id="introduction">Introduction:</h2>

<p>Welcome to the fifth part of this <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/1135/everything-you-always-wanted-to-know-about-pagebuilders-but-were-afraid-to-ask">six part series on pagebuilders.</a>. In the previous post we covered the different types and names of some popular pagebuilders for WordPress. <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> also included a details review of Divi, and a brief overview of Thrive Architect.</p>

<p>In this post, we will focus on breadth over depth. That is, we will cover a larger pool of pagebuilders rather than a detailed review as was the case in the previous post. We will also talk about about the advantages and limitations of pagebuilders for WordPress.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/59/j2dz91wfagif.png" alt="Image showing pagebuilders for WordPress. LowEndSpirit Blog" width="500" /></p>

<h3 data-id="what-we-will-cover-in-this-post">What we will cover in this post</h3>

<p>There are three types of pagebuilders: Free, Freemium and Premium. Free are the ones that are open sourced or come at no cost. Freemium are the ones that have two versions: a lower spec/ less feature laden gratis version; and a full blown, paid version. The payment can be one time or a recurring subscription. Finally, a premium pagebuilder is one that requires you to pay up front before you can use them. The table below gives examples of the three types:</p>

<table><thead><tr><th align="left">Type of Pagebuilder</th>
  <th align="left">Example(s)</th>
</tr></thead><tbody><tr><td align="left">Free</td>
  <td align="left">Live Composer, Site Origin, Gutenburg, GenerateBlocks</td>
</tr><tr><td align="left">Freemium</td>
  <td align="left">Visual Composer, Themify, Elementor, Brizy</td>
</tr><tr><td align="left">Premium or Paid</td>
  <td align="left">Divi, Beaver Builder</td>
</tr></tbody></table><p>This post covers three types of pagebuilders: Free,  and Freemium. The premium Versions were covered in the previous post.</p>

<blockquote><div>
  <p>Before we dive into more reviews, Lets' do a sanity check</p>
</div></blockquote>

<h4 data-id="question-are-pagebuilders-for-wordpress-really-useful">Question: Are pagebuilders for Wordpress really useful?</h4>

<p>One of the biggest advantages of Wordpress is the large selection ot themes and plugins. In that case, why would one require <a rel="nofollow" href="https://www.codeinwp.com/blog/wordpress-page-builders-expectations/" title="Blog post on needed features from WordPress Pagebuilders">Pagebuilders for WordPress?</a> . This becomes even more important question to answer, considering that <a rel="nofollow" href="https://wordpress.org/gutenberg/" title="gutenberg editor from Wordpress">Gutenburg, the pagebuilder</a>  is a core part of Wordpress version 5 and onwards. In recent times, there have been many discussions about the future of <a rel="nofollow" href="https://duckduckgo.com/?q=death+of+pagebuilders+wordpres+gutenberg">pagebuilders with the arrival of Gutenburg.</a>. You can read some posts about this topic <a rel="nofollow" href="https://www.wpcrafter.com/gutenberg-death-wordpress-page-builders/">on this blog</a> and <a rel="nofollow" href="https://www.quora.com/Does-the-imminent-arrival-of-Gutenberg-mean-the-death-of-WordPress-page-builders?share=1">Quora</a></p>

<p>Some pagebuilders offer a base theme on which you can build the rest of the site. Screenshot from LiveComposer pagebuilder shown here. <img src="https://talk.lowendspirit.com/uploads/editor/s3/im0yo79qh5yr.png" alt="Basic themes offered by Livecomposer pagebuilder" width="500" /></p>

<h4 data-id="merits-and-disadvantages-of-pagebuilders">Merits and disadvantages of Pagebuilders</h4>

<p>Pagebuilders do offer certain advantages: they reduce the need for installing some plugins, they are easy to use, offer drag and drop functionality, and so on. They are cheaper (some are free). For agencies, they become a productivity tool!</p>

<p>Among the disadvantages,  not all pagebuilders are created equal. Quality of code, complexity, and most importantly any security issues. Pagebuilders can slow the performance of the site, or can limit the number of pages for the site. Finally, many pagebuilders do not have a blog functionality. They focus on features like image gallery or portfolio, appointment scheduled, or one page websites. (ironic, considering <a rel="nofollow" href="https://en.wikipedia.org/wiki/WordPress#History">WordPress began its life as a blogging platform</a>.</p>

<blockquote><div>
  <p>A point to note: a pagebuilder for WordPress is different from a WordPress theme. This <a rel="nofollow" href="https://www.quora.com/What-is-the-difference-between-a-page-builder-and-a-theme-framework-for-WordPress">discussion on Quora covers</a> this point well, so I will leave it at that.</p>
</div></blockquote>

<p>Another point to note that there are services that use the WordPress platform for catering to specific audiences.<br />
-<a rel="nofollow" href="https://themesgrove.com/wp-onepager/">WP One Pager</a> for example exclusively provide one page templates for WordPress. These useful for creating sales funnels or landing pages.<br />
-<a rel="nofollow" href="https://happyforms.me">Happyforms</a> provides form builders for Wordpress. You can use these forms for customer feedback, newsletter sign ups, or for surveys.</p>

<hr /><h3 data-id="let-s-get-on-with-the-mini-reviews">Let's Get on with the mini-reviews</h3>

<p>As mentioned in the introduction section, our focus will be on breadth and not depth. That is, my reviews in the below section  will not be as comprehensive as the review for Divi that was published in Part V of this series.</p>

<h4 data-id="elementor">Elementor</h4>

<p>Elementor is arguably the most popular pagebuilder for WordPress. (Sorry, <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a>! ) It is available as a free plugin in the base version, and also has premium plugins like <a rel="nofollow" href="https://essential-addons.com/elementor/">Essential Addons for Elementor</a> the features of Elementor are quite similar to Divi, which was covered extensively in Part IV of this series. I have included a couple of screenshots in the section below<br />
to give you an idea about the drag and drop functionality.  One of the advantages of Elementor is that it doesn’t require any HTML/CSS/PHP/coding skills — everything can be done through a handy user-facing interface.<br />
It has a 'live preview' that is, it shows you the outcomes of your work right away. Elementor has a large established based. According to this post on bloggers passion](<a href="https://bloggerspassion.com/elementor-review/#Elementor_Review_Is_It_Really_the_Best_WordPress_Page_Builder)" rel="nofollow">https://bloggerspassion.com/elementor-review/#Elementor_Review_Is_It_Really_the_Best_WordPress_Page_Builder)</a><br />
Because of its "freemium" nature, Elementor has a larger ecosystem of plugin developers, theme creators, and services that are built on top of Elementor. Example include:<br />
-<strong>Theme</strong> Hello Elementor<br /><img src="http://talk.lowendspirit.com/uploads/editor/xb/h99hpfu6pvax.png" alt="Screenshot of Hello Elementor Theme" width="400" /><br /><br />
-<strong>Plugins</strong> Essential Addons - Premium, <a rel="nofollow" href="https://wordpress.org/plugins/anywhere-elementor/">Anywhere Elementor</a>- Freemium <br /><br />
-<strong>Services</strong> that are built on top of Elementor:<br /><a rel="nofollow" href="https://elements.envato.com/saasy-saas-app-landing-page-template-kit-NH8GVAZ">Sassy Landing Pages</a><br /><img src="https://talk.lowendspirit.com/uploads/editor/g4/th8ruop4ak4s.png" width="500" alt="image" /></p>

<p>One of the main advantages of using Elementor is that you can create page layouts or designs with ease. Even novices who have little design experience can use it with aplomb.</p>

<h4 data-id="brizy">Brizy</h4>

<p>I wrote about <a rel="nofollow" href="https://brizy.io">Brizy</a>  in <a rel="nofollow" href="https://lowendspirit.com/everything-you-wanted-to-know-about-pagebuilders-part-ii">part II of this series</a>. There, we covered Brizy cloud In this section, I will provide a brief overview of the WordPress plugin pagebuiilder. The basic building blocks and interface is quite similar, except that the pages created become a part of the WordPress site. <br />
Note that Brizy does have a basic, 'free' plugin, but in order to use the <a rel="nofollow" href="https://www.brizy.io/brizy-pro-pricing/">Brizy Pro</a> Plugin, you will need to use the free plugin as well. This feature is similar to Elementor, where plugins like Essential addons require you to install the Elementor plugin first.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/oh/f4wzzoa5ljoh.png" alt="Features of Brizy WordPress pagebuilder" width="500" /><br /><img src="https://talk.lowendspirit.com/uploads/editor/x8/d5v4sg6xuuvo.png" alt="Brizy Pro Plugin needs the Free version" width="300" /></p>

<p>Creation of a page is quite easy. Using the drag and drop builder, you can create blocks of text. images, maps, and so on; or use one of the pre built templates. In terms of ease of use and short learning curve, Brizy scores very high. Its is slower in page loads and overall speed compared to Elementor though.<br /><img src="https://talk.lowendspirit.com/uploads/editor/hm/ynxch39o0bzr.png" alt="Creation of a page using Brizy" width="400" /></p>

<h4 data-id="free-pagebuilders">'Free' Pagebuilders</h4>

<blockquote><div>
  <p>Some good things in life come for free.</p>
</div></blockquote>

<p>Some pagebuilders for WordPress fall in that category. In spite of the pricepoint and the perception associated with it, they have received good reviews. Some are more in depth and appreciative than some paid ones! <a rel="nofollow" href="https://wordpress.org/plugins/siteorigin-panels/">Siteorigin</a> and <a rel="nofollow" href="https://livecomposerplugin.com">Live Composer</a>are two such Free Pagebuilders for WordPress.</p>

<table><thead><tr><th align="left"><strong>SiteOrigin Panels</strong></th>
  <th align="left"><strong>Live Composer</strong></th>
</tr></thead><tbody><tr><td align="left"><img src="https://talk.lowendspirit.com/uploads/editor/ir/eunn1mydy9k6.png" alt="Ratings for Site Origin Panels on WordPress" width="200" /></td>
  <td align="left"><img src="https://talk.lowendspirit.com/uploads/editor/jr/61vmey60e0xa.png" alt="Reviews for Livecomposer Pagebuilder for WordPress" width="200" /></td>
</tr></tbody></table><h4 data-id="gutenburg">Gutenburg</h4>

<p>When you log on to the admin panel of a fresh WordPress install these days, you are greeted by images similar to the ones below</p>

<table><thead><tr><th align="left"><strong>Page Formatting in Gutenberg Builder</strong></th>
  <th align="left"><strong>Blocks in Gutenberg</strong></th>
</tr></thead><tbody><tr><td align="left"><img src="https://talk.lowendspirit.com/uploads/editor/tr/umkdxqbs1e76.png" alt="Gutenberg pagebuilder for wordpress" width="200" /></td>
  <td align="left"><img src="https://talk.lowendspirit.com/uploads/editor/pl/wpyg5jbdfl7l.png" alt="screenshot of Gutenberg Block layout" width="200" /></td>
</tr></tbody></table><p>These images are from the <a rel="nofollow" href="https://wordpress.org/gutenberg/">Gutenberg Pagebuilder</a> and editor. Gutenberg uses a series of blocks for content in a page, including images, text, video, galleries, audio, quotes, tables and much more. <br />
As per the <a rel="nofollow" href="https://wordpress.org/gutenberg/">Wordpress site</a>,</p>

<blockquote><div>
  <p>Blocks are a great new tool for building engaging content. With blocks, you can insert, rearrange, and style multimedia content with very little technical knowledge. Instead of using custom code, you can add a block and focus on your content.</p>
</div></blockquote>

<p>Below  is a  screenshot I took when I was creating a new post for my blog.<br /><img src="http://talk.lowendspirit.com/uploads/editor/81/mp5d59kg8o6l.png" width="400" alt="image" /></p>

<p>Gutenburg Blocks have a variety of features. Better yet, the list of integrations with third party sites like <a rel="nofollow" href="https://youtube.com">YouTube</a>, <a rel="nofollow" href="https://dailymotion.com">Dailymotion</a>, and <a rel="nofollow" href="https://imgur.com">imgur</a> makes it extremely convenient. Simply add the link to a video, no need to copy the link to the embed player and past it into the blog post. For example, here is a video I had made about fast.io a CDN service.<br />
In most content management systems, one would have to past the HTML code as iframes.<br />
(note: Vanilla Forums also has this feature).</p>

<p></p><details><br /><summary>Embedding YouTube Video in WordPress</summary><p><code spellcheck="false" tabindex="0">&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/evbFBUjkADU" frameborder="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;</code></p>

<p>In case of WordPress, you can simply paste the link and the player will automatically load once you click the embed button.<br /><img src="http://talk.lowendspirit.com/uploads/editor/wl/qeoylzuxwzkx.png" alt="YouTube block in Gutenburg" /><img src="https://talk.lowendspirit.com/uploads/editor/tr/fjy4fdblkqgq.png" alt="HTML code generated from YouTube video embed in WordPress" /></p>

<p></p></details><p>Gutenberg is free and it comes default with a new install of WordPress version 5 and above. It is gaining acceptance among the developer community. You should give Gutenberg a try - it may be too simple for some persons' tastes, but that could be its strength.</p>

<h3 data-id="generateblocks">Generateblocks</h3>

<p>Generateblocks is another free pagebuilder that is extremely simple and fast to use. It is a plugin for WordPress, similar to other pagebuilders, but the installation is simple and easy to use. As it is a free version, there is no need to install the 'base' and 'pro' versions of the plugin. It is under active development by the creator, <a rel="nofollow" href="https://tomusborne.com">Tom Usborne</a>. He is the person behind the popular <a rel="nofollow" href="https://wordpress.org/themes/generatepress/">GeneratePress</a> theme.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/zi/6y63fmzg0zwo.png" alt="screenshot of generatepress pagebuilder" width="400" /></p>

<p>This video illustrates how convenient it is to create a page using this plugin.</p>

<p></p>

<p>Other Free pagebuilders such as Livecomposer also have a good user base and a following. Below is a screenshot for <a rel="nofollow" href="https://wordpress.org/plugins/live-composer-page-builder/">Livecomposer pagebuilder page on WordPress site</a>.<br /><img src="https://talk.lowendspirit.com/uploads/editor/ao/ywosazyb1l8n.png" alt="Livecomposer pagebuilder" width="400" /></p>

<hr /><p>WordPress is the <a rel="nofollow" href="https://whatcms.org/c/WordPress">most commonly used content management system (CMS)</a>.It is natural that the ecosystem of developers, plugins and them builders, and pagebuilders will be the largest for this platform. Since it is practically difficult to cover every pagebuilder that exists for WordPress, we decided to focus on some of the known ones. Keeping in ming the LES audience and their preference for frugal options, I also included the free or freemium options that are available, such as Generateblocks. Hope that this introduction to the world of Pagebuilders for WordPress will help you in deciding whether you would want to use a Pagebuilder for your next project or not.</p>

<p>Finally, let me conclude this section of the post by mentioning briefly about security.</p>

<h3 data-id="a-note-on-wordpress-pagebuilders-and-security">A Note on Wordpress, Pagebuilders, and security</h3>

<blockquote><div>
  <p>Due to popularity of WordPress, and its inherent design structure (dependence on plugins) there are many attacks and vulnerabilities on Wordpress sites. Many Pagebuilders are essentially plugins, and the pagebuilders themselves can sometimes have vulnerabilities. For example, <a rel="nofollow" href="https://elementor.com">Elementor</a>, which is supposed to be the most popular pagebuilder, <a rel="nofollow" href="https://wpvulndb.com/vulnerabilities/10256">recently had a security issue</a>. While it was addressed quickly, be careful while choosing a pagebuilder. In particular, avoid the lesser known brands or ones that have not been updated in recent months.</p>
</div></blockquote>

<h4 data-id="concluding-remarks">Concluding Remarks</h4>

<p>This concludes the fifth or the penultimate part of this <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/1135/everything-you-always-wanted-to-know-about-pagebuilders-but-were-afraid-to-ask">six part series</a>. In the next part, we will talk about Landing pages. These are specialist pagebuilders such as lead pages or forms for email subscription, surveys, etc.</p>

<hr /><p></p><details><br /><summary> Links that may be of interest</summary><ul><li><a rel="nofollow" href="https://pagely.com/blog/wordpress-page-builders/">Pagely blog- comparison of pagebuilders for WordPress</a></li>
<li><a rel="nofollow" href="https://www.format.com/themes">Format.com</a> offers themes for photographers.</li>
<li><a rel="nofollow" href="https://appsumo.com/brizy-design-kit/">Brizy Toolkit</a> Appsumo has a free offer for Brizy pagebuilder toolkit. You can import the pages into your WordPress installation as a Static HTML site.</li>
<li>Results from <a rel="nofollow" href="https://duckduckgo.com/?q=list+of+pagebuilders+for+wordpress&amp;t=hk&amp;ia=web">search on Duckduckgo - pagebuilders for WordPress</a>. Almost every result in the top 10 list provided information of some value to me.</li>
<li>Review of <a rel="nofollow" href="https://www.wpbeginner.com/beginners-guide/best-drag-and-drop-page-builders-for-wordpress/">Drag and Drop pagebuilders</a> on WPBeginner. I liked the mix of Free, Freemium and Premium services in this post. <br /></li></ul></details>]]>
        </description>
    </item>
    <item>
        <title>Everything You Wanted to Know About Pagebuilders - Part IV</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/1194/everything-you-wanted-to-know-about-pagebuilders-part-iv</link>
        <pubDate>Fri, 05 Jun 2020 06:59:09 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>vyas</dc:creator>
        <guid isPermaLink="false">1194@/index.php?p=/discussions</guid>
        <description><![CDATA[<h1 data-id="pagebuilders-for-wordpress">Pagebuilders for WordPress</h1>

<h4 data-id="introduction">Introduction</h4>

<p>Welcome to the fourth part of this <a rel="nofollow" href="https://lowendspirit.com/everything-you-always-wanted-to-know-about-pagebuilders-but-were-afraid-to-ask" title="six part blog series on Pagebuilders on Lowendspirit.com">six part blog series on Pagebuilders</a>. In this section, we will talk about pagebuilders for the most popular Content Mangement System - WordPress.</p>

<h4 data-id="types-of-wordpress-pagebuilders">Types of WordPress Pagebuilders</h4>

<p>We will classify them into two categories- the mainstream pagebuidlers, and the specialist pagebuilders.  The former cater to general purpose websites, the latter are in fact a subset that cater to a specific functionailty. Landing pages, sign-up forms, etc. are some of these specialist functions. We will cover this category of pagebuilders in the next part of this series.</p>

<h3 data-id="what-are-the-common-pagebuilders-for-wordpress">What are the common pagebuilders for WordPress?</h3>

<p>Wordpress is the most widely used content management system, and not surprisingly, the pool of pagebuilders for Wordpress is very large. I reviewed several lists as a part of my research while writing this post. The starting point, not surprisingly, was a simple search on a search engine. In this post, I am adding the results from a <a rel="nofollow" href="https://www.bing.com/search?q=what+are+pagebuilders+for+WordPress">search conducted on Bing.</a></p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/ip/29bk441ahxsf.png" alt="screenshot of Beaver Builder - Pagebuilder for WordPress" width="300" /><br />
Beaver Builder is one of the more popular WordPress pagebuilders</p>

<p>To save you the trouble of having to go through the multitude of posts, below is a selection of posts that I reviewed.</p>

<h4 data-id="mainstream-pagebuilders">Mainstream pagebuilders</h4>

<p>There are several names in this segment, some are more known than others. For example,</p>

<ul><li><a rel="nofollow" href="https://colorlib.com/wp/page-builder-wordpress-plugins/">Colorlib lists 21 pagebuilders</a></li>
<li><a rel="nofollow" href="https://templatic.com/wp/best-page-builders-for-wordpress/">Templatic blog - 7 pagebuilers</a></li>
<li><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/">Kinsta Blog - 13 pagebuilders</a></li>
<li><p><a rel="nofollow" href="https://athemes.com/reviews/best-wordpress-page-builder-plugins-compared/">Athemes - 10 best pagebuilders</a><br />
and finally,</p></li>
<li><p><a rel="nofollow" href="https://www.wpbeginner.com/beginners-guide/best-drag-and-drop-page-builders-for-wordpress/">WP Beginner Blog lists 6 drag and drop pagebuilders</a></p></li>
</ul><h3 data-id="the-les-list-of-pagebuilders-for-wordpress">The "LES List" of pagebuilders for WordPress</h3>

<p>In no particular order, I am listing the different pagebuilders for wordpress. This list is derived form the <a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/">Kinsta Blog on Pagebuilders</a> but with my comments and notes.</p>

<ol><li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#elementor">Elementor</a> (free plugin, paid plans available, paid plans start at $ 49/ site)</p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#generatepress">GeneratePress with Sections</a> (free WordPress theme, paid plans available)</p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#beaver-builder">Beaver Builder</a></p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#divi">Divi</a> (read this post for a detailed review  and pricing information by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> )</p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#wp-page-builder">WP Page Builder</a> (free)</p></li>
<li><p><a rel="nofollow" href="https://wordpress.org/plugins/siteorigin-panels/">Siteorigin</a> (Free)</p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#visual-composer">Visual Composer</a> (WP Bakery)</p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#page-builder-sandwich">Page Builder Sandwich</a> (free Plugin)</p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#oxygen">Oxygen</a></p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#live-composer">Live Composer</a>(free, open source pagebuilder)</p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#visual-page-builder">Visual Page Builder from MotoPress</a> (base plan starts at $29)</p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#brizy">Brizy</a>  ( In Part II of this series, <a rel="nofollow" href="https://www.brizy.io/free-vs-pro/">I have covered Brizy Web Builder</a> )</p></li>
<li><p><a rel="nofollow" href="https://kinsta.com/blog/wordpress-page-builders/#themify-builder">Themify Builder</a>(free, $ 39 addon)</p></li>
<li><p><a rel="nofollow" href="https://wordpress.org/plugins/kingcomposer/">KingComposer</a> (free and premium)</p></li>
<li><p><a rel="nofollow" href="https://wordpress.org/plugins/pootle-page-builder/">Pootle Pagebuilder</a> (free and premium)</p></li>
<li><p><a rel="nofollow" href="https://thrivethemes.com/architect/">Thrive Architect</a> from Thrive Themes (continue reading this post for review and pricing information by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> )</p></li>
<li><p><a rel="nofollow" href="https://www.optimizepress.com/">OptimizePress</a> (premium plugin)</p></li>
</ol><p><img src="http://talk.lowendspirit.com/uploads/editor/h5/xqaegxq0xn7u.png" alt="Pagebuilders for WordPress-compiled by AVyas. Blog on Lowendspirit, June 2020" width="450" /><br />
Popular pagebuilders for Wordpress. <a rel="nofollow" href="https://amarvyas.in">Image by Vyas</a></p>

<h4 data-id="how-much-to-pagebuilders-for-wordpress-typically-cost">How much to pagebuilders for wordpress typically cost?</h4>

<p>There is an interesting comparison of Wordpress pagebuilders in the blog by AThemes. In particular, there is a chart that lists the pricing for these softwares, which I have captured as a screenshot below.</p>

<p><img src="http://talk.lowendspirit.com/uploads/editor/y8/fswijtxm2apq.png" alt="" title="Blog by Athemes comparing pricing for Wordpress pagebuidlers. LowEndSpirit Blog" /><br />
Table comparing pricing for WordPress Pagebuilders. Note that these prices are current as on April 2020. Source:<a rel="nofollow" href="https://athemes.com/reviews/best-wordpress-page-builder-plugins-compared/#comparison">Athemes Blog</a>.</p>

<hr /><h3 data-id="review-of-pagebuilders">Review of Pagebuilders</h3>

<p>In the below section, we will cover two of the above pagebuilders: <a rel="nofollow" href="https://www.elegantthemes.com/gallery/divi/">Divi</a> and <a rel="nofollow" href="https://thrivethemes.com/architect/">Thrive Architect</a>. These reviews have been written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a></p>

<hr /><p><strong>Divi - ElegantThemes</strong></p>

<p><strong>Short note</strong> : My review of Divi will probably end up more thoroughly than on the other Pagebuilders because there is just so much more to say and also because I use it the most.</p>

<p><strong>Introduction: Why do Pagebuilders for WordPress exist in the first place?</strong></p>

<p>Probably everyone that has had to do with WordPress websites within the last years and has only remotely read about the diverse Pagebuilders available has most likely <a rel="nofollow" href="https://trends.builtwith.com/framework/Divi">heard</a> the name "Divi" before.</p>

<p>Pagebuilders like Divi, Elementor, Beaver Builder, Brizy, AstraWP, HestiaPro and others were brought to life out of the need to offer the user an enhanced feature set and more intuitive workflow to building pages or blog posts as opposed to the WordPress Standard Page Editor (that unfortunately right now is "Gutenberg" which is even more uncomfortable to use than the Classic WP Editor).</p>

<p>In the future - and with further development of Gutenberg - it could very well be that Premium Pagebuilders won't be that necessary anymore but even if that was the case I can still imagine them to have a bright future as a part of WordPress since they could very well focus on certain niches or just add certain (long-awaited) features faster than the regular WordPress Builder.</p>

<p><strong>So what good does Divi do then?</strong></p>

<p><strong><a rel="nofollow" href="https://www.elegantthemes.com/gallery/divi/">Features</a>:</strong></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/69/oge0aae5uzlw.gif" alt="" title="Image of Divi Themebuilder. LowEndSpirit Blog" /></p>

<p>Of all the 4 Pagebuilders I will review in this thread, Divi offers probably by far the biggest feature set. There are just too many features to list them all which is why I have linked the "Features" to the official page from Divi so you can see most of Divi's features in more detail. One of the cool things of having available to you a premium Pagebuilder like Divi with so many features is that you probably won't have to pay for any WordPress Themes or Plugins to enhance your page design.</p>

<p>Divi is like an All in One (AIO) solution in that regard. I very well remember the first version of my mother's website I created with WordPress years back. I started out with various free themes only to always hit a paywall if I wanted to optimize the looks of my website. Want full-width and freedom about sidebars &amp; more? Pay up. Want to customize Footer/Header? Pay up. Same with page content: Want a slider? "Hey, here is a basic one... but if you really want one that can be used in production please pay up". "Want an image gallery? Sure, here you are. Oh, you wanted to show a description below the images or show their title? You wanted to have a black box? Please pay up in that case".</p>

<p>Quickly enough my mother had to pay for a (still shitty compared to Divi) image gallery plugin at 40€/year, some slider plugin, a theme and whatnot. Literally every time I thought I found a free solution that worked, I hit another paywall when it came to customizing it the way I want. Now, I am not saying premium features should be free or Devs don't deserve their money but after years adding one premium plugin/theme to the "paid yearly" I decided this couldn't go on. It was then when I found out about Pagebuilders and read a bit into them. "Divi" was what one of them was called...and it looked great...and it included a gallery by default...and various sliders...and so much more [modules]<br />
(<a href="https://www.elegantthemes.com/documentation/divi/modules/)...and" rel="nofollow">https://www.elegantthemes.com/documentation/divi/modules/)...and</a> it had a <strong>lifetime unlimited site sub</strong> , was actively maintained and being updated, a huge <a rel="nofollow" href="https://www.elegantthemes.com/documentation/divi/">knowledgebase</a> also including video articles and a huuuge community <a rel="nofollow" href="https://www.facebook.com/groups/DiviThemeUsers/">(and this nice Facebook group with the Devs being part of it)</a> behind it.</p>

<p>The discounted price on some CM/BF sale was 199$ for lifetime and we didn't have to do the math for long to find out we could save quite some coin going with this AIO solution that bundled everything we ever had to pay for and so much more in one Theme/Plugin.</p>

<p><strong>Why do I say Theme/Plugin? Isn't Divi a Plugin like other Pagebuilders?</strong><br />
Well, not really. Divi is actually a whole Theme that offers all the customization options of a premium theme you'd usually have to pay for and includes a Pagebuilder by default to fill your website with content the way you want (gallery, images, sliders, layouts, videos, google maps..see "modules" a bit further up). The Pagebuilder ("Divi Builder") also exists as a standalone plugin (like other Pagebuilders) to allow for usage of Divi Builder with any other WordPress theme (in case you wouldn't want to use the Divi Theme). Personally, I can't think of a free theme out there that I'd prefer using over Divi Theme since Divi Theme is already fully "unlocked" and does not bear further paywalls. I already paid for that one.</p>

<p>There are, of course, other great Premium themes out there with other/advanced customization options that someone at some point may prefer. Or your client's website runs on a whole different theme and he doesn't want to change the theme. You can then still install Divi Builder Plugin and create super cool pages/content with all the features of the <a rel="nofollow" href="https://www.elegantthemes.com/documentation/divi/visual-builder/">Divi Visual Page Builder</a>.</p>

<p>ElegantThemes also recently added the <a rel="nofollow" href="https://www.elegantthemes.com/documentation/divi/the-divi-theme-builder/">Divi Theme Builder</a> so you can now create a premade custom theme and use it as a starting base for a new project (which speeds up your workflow tremendously). Another great way of easing your workflow with Divi is its' option to use premade layouts. You can either save a <a rel="nofollow" href="https://www.elegantthemes.com/documentation/divi/premade-layouts/">page layout</a> you made yourself to simply 1-click import it to a new page which is supposed to have a similar structure or use one of <a rel="nofollow" href="https://www.elegantthemes.com/layouts/">110+ premade layouts</a> (more being added weekly) for various categories (Business, Restaurant, Health&amp;Fitness, Online Store, Services, Technology, Simple..) live preview them and 1-click import them to your page:</p>

<p><img src="https://i.gyazo.com/9f12dff63ef8c1a437ed9b0223bf7060.png" alt="" title="Screenshot showing layouts for Divi. LowEndSpirit Blog" /></p>

<p><img src="https://i.gyazo.com/950cf1a811bff27ad9ac95b27f122473.png" alt="" title="Screenshot of Divi Pagebuilder. LowEndSpirit Blog" /></p>

<p>Here are some more insights of the Divi Visual Page Builder:</p>

<p><img src="https://i.gyazo.com/3a90163b6e2a10aa075e0f31445b96e4.png" alt="" title="Screenshot from Divi Pagebuidler- 1" /></p>

<p><img src="https://i.gyazo.com/6f6875f2bc56146d827652a653c88bc0.png" alt="" title="Screenshot from Divi Pagebuidler- 2" /></p>

<p><img src="https://i.gyazo.com/8ca069805ede7e65dd83099131b21fad.png" alt="" title="Screenshot from Divi Pagebuidler- 3" /></p>

<p>I also love the kinda hidden "Wireframe View" through which I usually first plan my site's layout in the "Background" before actually adding content:</p>

<p><img src="https://i.gyazo.com/e1641843e5387afdb61b7f609e6588ff.png" alt="" title="Wireframe view of Divi" /></p>

<p>There is so much more to say about Divi and so many more features I probably forgot mentioning but I hope this could give you an idea about what you can expect feature-wise <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p><strong>Pricing:</strong></p>

<p><img src="https://i.gyazo.com/4f2ce040c6858b0330dae753df4b43d5.png" alt="" title="Pricing plans for Divi" /></p>

<p>The pricing from Divi is pretty straight forward with a yearly plan available and a lifetime license. Both plans allow for unlimited site usage (also for client's sites). It's 89$ per year or 249$ a one-time fee. You can also start with the 89$/year and if you like it later upgrade to lifetime by paying the difference iirc.</p>

<p>I straight out bought the lifetime license though, so I don't know for sure. There is also a money-back guarantee. While 249$ (or 200$ on sale) might sound a bit steep, it is really an AIO toolkit you get as far as page building and design is concerned. You also - I didn't mention this before - not only get access to the Divi Theme and Divi Builder, but also the EXTRA Magazine Theme (especially focused on blogging) and Bloom&amp;Monarch as powerful Social Media and E-Mail Opt-in plugins on top:</p>

<p><img src="https://i.gyazo.com/c1a23e37c84e5f031cf3fab6a8f71b1b.png" alt="" title="Plugins for Divi" /></p>

<p>At that price point one really can't complain. Especially in regard of the lifetime license. With Elementor and other builders, you are paying a yearly fee which quickly adds up and will end up higher than the Divi Lifetime deal. This is not to say Divi is the best Pagebuilder out there, but to say it is definitely worth your money if you are looking for a WordPress Pagebuilder.</p>

<p><strong>My experience using Divi:</strong></p>

<p>There is not so much left to say this time since I have already told you about how I ended up with Divi and what it allows me to do, but there's still something I can say about how I experienced Divi over the years: Overall, I thought Divi has developed greatly over the years I have used it, continuously adding more features and content. I have yet to figure out all ins&amp;outs of Divi because I have only used a fraction of the tools and features available. Just like any page builder (of course also here performance varies), it will add some more load time to your WordPress site but it will also make your life so much easier.</p>

<p>My pages have, however, not become super slow like the ones you can read about online when you google something like "Divi slow". I can only talk about my experience, I while I don't want to point the finger I'd guess that at least some of these pages that load slowly with Divi also perform poorly because of user error (bunch of not optimized extra plugins, potato web host, poor resource allocation..).</p>

<p>I really grew fond of the Divi workflow and one of the things I love is that using the Divi Theme I never have to worry about plugin/theme compatibility when upgrading WordPress or the Divi Theme because I don't have any other content-related plugins installed that might break. Everything is included in Divi Theme. That's the advantage of an AIO kit. When I think back to the times some Gallery Pro plugin, a slider or some other plugin I purchased broke upon updating...ouch.</p>

<p><strong>Conclusion:</strong></p>

<p>Ultimately, I can only recommend you go and check Divi out. It is definitely worth the money.</p>

<p>It has served me well over the years and also works great for building client sites from scratch or enhance them with Divi Builder. You can enable and disable API keys so you can even charge your clients a yearly "Divi" fee if they want to keep getting updates for it (with some cheapo clients I do that, with local clients that pay a whole different price for their website I don't charge them and include lifetime Divi theme/builder updates as a nice extra <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/wink.png" title=";)" alt=";)" height="18" /></p>

<p>Oh? Not a fan of WordPress? Build your website with the Divi Builder and export it as a static HTML&amp;CSS site using something like <a rel="nofollow" href="https://wordpress.org/plugins/static-html-output-plugin/">WP2Static</a>. Speeds up performance and adds security to your website. Especially nice for non-dynamic websites that only require an update in a while. That's it! Hope I could help you get an insight about Divi <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p>I am sure <a rel="nofollow" href="https://talk.lowendspirit.com/profile/Unixfy">@Unixfy</a> can also share a bit more Divi Love if that was not enough :P</p>

<p><strong>Architect HTML&amp;CSS Pagebuilder</strong>:</p>

<p>I will not go into detail on this one. This is just an honorable mention:<br />
Architect HTML&amp;CSS Site Builder <a rel="nofollow" href="https://codecanyon.net/item/architect-html-and-site-builder/9957269">from Codecanyon</a> (59$) comes with some basic WYSWIG editing features. It's not the best of the best feature-wise and it is not the most comfortable to use either. Its' feature to have a user frontend (basically people can register and use the page builder to build their website) is pretty cool. Users can create and then publish their website to a subdirectory of public_html, or a subdomain of your domain. They can also download the code. There are a bunch of templates, too. Depending on the license you buy, you can also charge them (subscription system included) for certain features.</p>

<h4 data-id="basic-interface-of-the-page-builder-when-in-editing-mode">Basic interface of the page builder when in editing mode</h4>

<p><img src="https://i.gyazo.com/c2fcb04d5a63752dd331aab79d5172b1.png" alt="" title="Screenshot of Thrive Architect. LowEndSpirit Blog" /></p>

<p><strong>TL;DR:</strong> <br />
It could be interesting if you want a SaaS page builder setup facing towards your customers (and possibly charge them for this). Only basic features though. Not the best of the best. I bought it, though. I still have a live instance running if you wanna give it a try. A while back, several LE members tested it (can't find the thread though) and the final verdict was that it was "okay to use" iirc.</p>

<hr /><p>This concludes the fourth part of the series. We gave an overview of Pagebuilders for WordPress, with a list of sites that have covered this topic in detail. In the next part, we will cover two more pagebuilders: <a rel="nofollow" href="https://brizy.io">Brizy</a> and <a rel="nofollow" href="https://elementor.com">Elementor</a>, with a passing mention of two or three more alternatives in this segment.</p>

<p><strong>About the series on Pagebuidlers</strong><br />
This six part series on pagebuilders has been authored by me, <a href="https://dev.lowendspirit.com/index.php?p=/profile/Vyas" rel="nofollow">@Vyas</a> and <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> for the Low End Spirit Blog. The topics covered in the previous posts are as follows:</p>

<ul><li>Part I: <a rel="nofollow" href="https://lowendspirit.com/everything-you-always-wanted-to-know-about-pagebuilders-but-were-afraid-to-ask" title="six part blog series on Pagebuilders on Lowendspirit.com">Introduction to series on Pagebuilders</a></li>
<li>Part II : <a rel="nofollow" href="https://lowendspirit.com/everything-you-wanted-to-know-about-pagebuilders-part-ii" title="Blog post on web hosting offered by pagebuilders">Pagebuilders offered by web hosting services</a></li>
<li>Part III:  <a rel="nofollow" href="https://lowendspirit.com/everything-you-wanted-to-know-about-pagebuilders-part-iii-desktop-apps" title="Part III of 6 part blog series on LowEndspirit.com">Desktop apps for pagebuilders</a></li>
</ul><p>Thank you for reading, and we welcome your comments in the section below.</p>
]]>
        </description>
    </item>
    <item>
        <title>Everything You Wanted to Know About Pagebuilders - Part III Desktop Apps</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3884/everything-you-wanted-to-know-about-pagebuilders-part-iii-desktop-apps</link>
        <pubDate>Wed, 03 Jun 2020 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>vyas</dc:creator>
        <guid isPermaLink="false">3884@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> and <a href="https://dev.lowendspirit.com/index.php?p=/profile/vyas" rel="nofollow">@vyas</a>, 29 May 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022; Some images are now lost/defunct</small></p>

<p>Introduction:</p>

<p>In <a rel="nofollow" href="https://lowendspirit.com/everything-you-wanted-to-know-about-pagebuilders-part-ii">Part II of this series</a>, we covered services that offer a custom pagebuilder as a part of their web hosting. In part III, we will discuss pagebuilders that are in the form of desktop apps. This is an interesting category in itself.</p>

<p>Most of the apps are for Windows or Mac. In particular, we will cover two of these: <a rel="nofollow" href="https&quot;//mobirise.com">Mobirise</a> and <a rel="nofollow" href="https://pinegrow.com">Pinegrow</a>.</p>

<blockquote><div>
  <p>The below reviews for Mobirise and Pinegrow have been written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a>, with inputs from me, <a href="https://dev.lowendspirit.com/index.php?p=/profile/vyas" rel="nofollow">@vyas</a>, as applicable.</p>
</div></blockquote>

<p>In addition there are pagebuilders like <a rel="nofollow" href="https://getpublii.com/">Publii</a> and <a rel="nofollow" href="https://www.osradar.com/how-to-install-pagekit-cms-ubuntu-18-04/">Pagekit</a> which can be <a rel="nofollow" href="https://websiteforstudents.com/install-publii-flat-file-cms-on-ubuntu-16-04-18-04-18-10/">installed on Linux as well</a>. And one particular "pagebuilder with a twist" that I use: and <a rel="nofollow" href="https://reboo.io">Reboo</a>. In a subsequent post, we may cover these rather interesting apps. But for now, let us dive into the desktop apps.</p>

<hr /><h3 data-id="mobirise">Mobirise</h3>

<p><strong>Mobirise - HTML&amp;CSS + Bootstrap Page Builder Software</strong></p>

<p><strong>What, now, is Mobirise?</strong></p>

<p>Mobirise is actually a piece of software, or a desktop app. This is in contrast to themes or pagebuilders like Divi that are web browser-based. It requires the <a rel="nofollow" href="https://mobirise.com/">installation of a Desktop client either for Windows or Mac</a>. Furthermore Mobirise is not a WordPress pagebuilder but instead a Drag&amp;Drop Pagebuilder GUI Software that outputs pure HTML&amp;CSS Code and comes with templates &amp; blocks based on <a rel="nofollow" href="https://getbootstrap.com/docs/4.0/getting-started/introduction/">Bootstrap 4</a>. The content it outputs is super mobile friendly and you can publish your project locally, to FTP, Github Pages and other solutions which is super convenient <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p><img src="https://i.gyazo.com/7bcd562efc4f27391e1eabb2f7ca7b1a.png" alt="" title="Screenshot from Mobirise- features" /></p>

<h5 data-id="features-of-mobirise">Features of Mobirise</h5>

<p>Here is a short preview of the blocks you can choose from and the respective block categories covered (see list to the right on the image below the GIF). Once you dragged the block of choice to the canvas it's just exchanging the sample content with your own (media/text) and adjust some styling parameters:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/yl/kd1m7ku926rp.gif" alt="" title="GIF Image showing mobirise desktop app" /></p>

<h6 data-id="blocks-in-mobirise">Blocks in Mobirise</h6>

<p><img src="https://i.gyazo.com/37cca6b7d2e9bf6b441a84bf45e92d96.png" alt="" title="screenshot showing blocks in mobirise" /></p>

<p>It is worth mentioning that it is really convenient that Mobirise integrates flawlessly with royalty-free stock image site "<a rel="nofollow" href="https://pixabay.com">Pixabay</a>" making it easy to import required media for your projects <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p></p><details><br /><summary> Click to view screenshot images from Mobirise</summary><h6 data-id="integrating-images-from-pixabay">Integrating images from Pixabay</h6>

<p><img src="https://i.gyazo.com/433ac1155097011218a7cb83ecff034b.png" alt="" title="Integrating images from pixabay" /></p>

<p><img src="https://i.gyazo.com/547733f399043fbc705cec714d8e2685.jpg" alt="" title="themes in Mobirise" /></p>

<h6 data-id="toggle-the-mobirise-credit-on-or-off">Toggle the Mobirise credit "On" or "off"</h6>

<p><img src="https://i.gyazo.com/95957f4b0c5fb3043820a9d372e37f20.png" alt="" title="toggle options in Mobirise" /></p>

<h6 data-id="blocks-in-mobirise-1">blocks in Mobirise</h6>

<p><img src="https://i.gyazo.com/39a0f78e8823d63e15e21776a4a59f17.png" alt="" title="blocks in mobirise" /><br /></p></details><p>There is some other gimmicks worth mentioning making for a useful addition:</p>

<p><img src="https://i.gyazo.com/03b8b8bd8b4044fae0e439aa880d1091.png" alt="" title="addition of blocks like maps and calendar- mobirise" /></p>

<h6 data-id="addition-of-blocks-like-calendar-and-maps">addition of blocks like calendar and maps</h6>

<p><strong>Pricing:</strong></p>

<p>As for the pricing, you can the Mobirise core functions entirely for free. Personally, I haven't paid a dime for Mobirise (so far). You can, however, browse through several plugins and HTML Templates that could make life even easier (it is already easy enough, believe me). Usually when you look at the prices of single templates (some 40-50$ usually) you will quickly realize that it may be more profitable to purchase the AIO kit (all templates&amp;plugins) for some 100-200$ (depending on the sale). There are a lot of cool templates and plugins and you could very well find some worth for your money there.</p>

<p>What I didn't like in particular about buying Mobirise AIO kit, is that it only entitles for updates for 1 year before you need to pay again. With the pricing being at 150-200$ most of the times I can't compare it to other Lifetime Deal pagebuilders though and Divi and Hestia Pro (Theme Isle), as well as AstraWP sell on similar pricing on sale and that's on a license with lifetime updates (ofc these are all WP page builders/themes but still..).</p>

<p>While I don't mind if after one year I won't get any template updates or new templates, things become a bit more problematic with some plugins: The <em>"HTML/CSS Editor"</em> plugin (69$ plugin only or included in AIO Kit) takes care of one of the features I am missing the most in the free core builder and I'd almost consider it essential: Editing the HTML/CSS code live in the program (by simply selecting a block). It also removes all "Mobirise" backlinking in the HTML code (this is not so important for me tbh).</p>

<p><img src="https://i.gyazo.com/b556d843383169f4a9f0d3793fd6c5ba.png" alt="" title="HTML editor in Mobirise" /></p>

<h6 data-id="html-editor-im-mobirise">HTML Editor im Mobirise</h6>

<p>I wouldn't mind paying for that plugin but if after 1 year they change Mobirise software in a way that requires an update for the plugin to properly work again, I'd have to purchase it again. Same with some other plugins.</p>

<p><strong>My experience using Mobirise:</strong></p>

<p>I will keep this one short. Overall, Mobirise does a great job in allowing you to quickly build a mockup HTML+CSS Bootstrap powered website in little to no time. The code it outputs and the website's performance appears to be clean and the "automagic" in terms of mobile compatibility for websites created with Mobirise is great. The tools available to you (such as Pixabay integration and Cookies alert) are a nice addition to ease your workflow. The little shortcomings it has don't really justify for being called "Cons". Go, give it a shot. The following image shows a mockup webhost one-page site I created in a "build a website in 20 minutes" challenge using Mobirise. While I didn't get as much done as I would have wanted I am still very happy with the result in this time frame:</p>

<p><img src="https://i.gyazo.com/4730eff210a89ab2168656289d969ca0.png" alt="" title="potato Hosting site created by @Ympker" /></p>

<h6 data-id="potato-hosting-theme-site-created-by-ympker">Potato Hosting Theme/ Site created by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a></h6>

<p><strong>Conclusion:</strong></p>

<p>Ultimately, the "Cons" (if they can even be considered Cons at all) for this freely available software gem that is Mobirise are just some nit-picking on my part I believe. Go, give it a try. Pay to support the developers if you love it. It won't be your worst purchase either <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p>As far as I am concerned I make up for the lack of a live Code Editor in the free version of Mobirise by just editing code in Sublime Text and push the update to Mobirise. While this is a little inconvenient it's still doable.</p>

<h3 data-id="pinegrow-web-editor-html-css-website-builder">Pinegrow Web Editor - HTML &amp; CSS Website Builder</h3>

<h4 data-id="what-now-is-pinegrow">What, now, is Pinegrow?</h4>

<p><a rel="nofollow" href="https://pinegrow.com">Pinegrow</a> is a bit different than your average Pagebuilder in the sense that it isn't really a pagebuilder. Let me explain below. Because it is that different and maybe kind of hard to grasp by just explaining it shortly, I'll leave the following video here as a starting point. It's up to you to decide if you want to continue reading without it or not. For the sake of getting a better idea of what Pinegrow is, I recommend doing so.</p>

<h4 data-id="video-introduction-to-pinegrow">Video: Introduction to Pinegrow</h4>

<p><span data-youtube="youtube-ITSMOYJ6usA?autoplay=1"><a rel="nofollow" href="https://www.youtube.com/watch?v=ITSMOYJ6usA"><img src="https://img.youtube.com/vi/ITSMOYJ6usA/0.jpg" width="640" height="385" border="0" alt="image" /></a></span></p>

<p>You may or may not have seen the above video. But it can probably be said that Pinegrow is targeting a rather "advanced" audience. That audience is Developers, so to speak. Pinegrow is built for Frontend usage, and it focuses on <a rel="nofollow" href="https://www.w3schools.com/html/default.asp">HTML</a> and <a rel="nofollow" href="https://en.wikipedia.org/wiki/Cascading_Style_Sheets">CSS</a>. Oh, and you can also quite easily create <a rel="nofollow" href="https://wordpress.org/themes/">WordPress themes</a> with Pinegrow, define editable areas etc... (I won't go into detail here).</p>

<h4 data-id="getting-started-with-pinegrow">Getting started with Pinegrow</h4>

<h5 data-id="three-ways-to-use-pinegrow-website-builder">Three ways to use Pinegrow Website builder</h5>

<p>Basically, when you start up Pinegrow, there are 3 main ways you can proceed. I will explain these, mention some features along the way, and then continue with the Pricing.</p>

<h5 data-id="a-starting-a-new-project-from-scratch">a) Starting a new project from scratch</h5>

<h5 data-id="b-editing-an-existing-website-project">b) Editing an existing website/project</h5>

<h5 data-id="c-importing-a-site">c) Importing a site</h5>

<p>Let us take a look at each of these options in detail</p>

<h5 data-id="a-starting-a-new-project-from-scratch-1">a) Starting a new project from scratch</h5>

<p>If you choose this option, you will be presented with the following prompt:</p>

<p><img src="https://i.gyazo.com/b58f599d411473420b753741fa259de4.png" alt="" title="screenshot of Pinegrow webpage builder" /></p>

<p>Once you have picked your poison, you can then proceed to "building" your website. Again, however, Pinegrow is different than other Pagebuilders in the following way: The pre-built components/items it offers for Pagebuilding are not made to look fancy or anything. Everything looks rather "professional" and "efficient". This, however, is one of Pinegrow's biggest PROs imho. For a Web Developer that knows his ways around the items/components available are just easy to find and use. I'd even go as far as saying Pinegrow is meant to be used to simplify your coding workflow, not to replace it. It's a back and forth between using the prebuilt items/blocks, hacking your own (Pinegrow live syncs with <a rel="nofollow" href="https://atom.io">Atom.io</a> and other Code editors so all edits become immediately visible), and using Pinegrow's powerful toolset to quickly style/edit certain page elements.</p>

<p>Here are some examples of the "List"/"Components" tab when building/editing a website with Pinegrow:</p>

<p><span data-youtube="youtube-rM6_PB-52sU?autoplay=1"><a rel="nofollow" href="https://www.youtube.com/watch?v=rM6_PB-52sU"><img src="https://img.youtube.com/vi/rM6_PB-52sU/0.jpg" width="640" height="385" border="0" alt="image" /></a></span></p>

<p>You can always jump right into coding in Pinegrow (if you want to do some small edits you don't need your code editor of choice for). Just click on the are on your website and the respective code will be highlighted in the code box below. This is super convenient. On the right panel, you can also see how you can jump straight to styling.</p>

<p><img src="https://i.gyazo.com/47f61dcaca5ecf4868e04b2e5dc78a8c.png" alt="" title="Styling options in Pinegrow pagebuilder" /></p>

<p>Styling options in Pinegrow</p>

<blockquote><div>
  <p>So, you can definitely quickly build new mockup pages from scratch with Pinegrow if you know your ways around in coding.</p>
</div></blockquote>

<h5 data-id="b-edit-an-existing-website-project">b) Edit an existing website/project</h5>

<p>You can also open &amp; edit any existing project. Naturally, coding offers way more possibilities than your average Pagebuilder and it wouldn't be fair to compare. That's why I said, Pinegrow is a bit different in the sense that your coding skill and understanding of certain parameters/syntax/properties is highly decisive for the kind of result you can expect with Pinegrow. If you don't fear the code though, Pinegrow makes your workflow much easier (once you get used to it). Obviously I'd rather quickly code a list item than go to components and drag a list, but when it comes to styling or other stuff Pinegrows built-in padding/margin/background/RGB selector/gradients.. are hella fun to play around with!</p>

<p>Here's an example of how an overly crowded Pinegrow panel can look like (I know, I am crazy). Oh, and I don't know if you noticed in the top left, but Pinegrow integrates with <a rel="nofollow" href="https://unsplash.com/">Unsplash stock images</a>.</p>

<p><img src="https://i.gyazo.com/a406454f56a3a5b085a9a9780f005446.png" alt="" title="screenshot showing integration of Unsplash images with Pinegrow" /></p>

<p>Search and find images directly in Pinegrow.</p>

<h5 data-id="c-importing-a-site-1">c) Importing a site</h5>

<p>This is one of my favourite features in Pinegrow</p>

<p><img src="https://i.gyazo.com/cba69701fa66b81efd08b7834843f450.png" alt="" title="Importing a site into pinegrow" /></p>

<p>Open/import any HTML/CSS based website's frontend via URL. Choose any website you like and learn how it is set up. I had a look at Vultr's website a while ago for example. Of course, you can view the code in chrome dev tools or copy it into any code editor. The thing that makes Pinegrow so great (especially for people learning to code but also advanced users alike) is that it directly shows the connection between a certain website element or area to the code. Click anywhere and the relevant part of the code will be highlighted and relevant modification Parameter/settings will also be shown. Play around, have fun (for example Pinegrow's website).</p>

<p><img src="https://i.gyazo.com/6de00ddebd7b0b2a5dcb843c4c7ebf34.png" alt="" title="Pinegrow Interface is very busy" /></p>

<h4 data-id="pricing">Pricing</h4>

<p><img src="https://i.gyazo.com/94af72d25e181cc4d1069bb7187de81f.png" alt="" title="pricing plans for pinegrow" /></p>

<p>Pinegrow offers three different pricing models</p>

<h5 data-id="1-monthly-pricing">1) Monthly pricing</h5>

<h5 data-id="2-one-time-payment-without-interactions">2) One Time Payment - without interactions</h5>

<h5 data-id="3-annual-subscription-with-interactions">3) Annual subscription - with interactions</h5>

<p>We will discuss the pricing options below.</p>

<h4 data-id="monthly-pricing">Monthly Pricing</h4>

<p>Pricing for monthly plans starts from 11€/month (cheaper on sale). I won't dive much more into this one.</p>

<h4 data-id="one-time-payment-without-interactions">One Time Payment- Without Interactions</h4>

<p>This is the plan I am on. Depending on current discounts and license type you will pay between 40-150€. In my opinion, it's your best bet and very affordable at the same time.</p>

<p>The "Pro" version is basically the Pinegrow Core software without the "WordPress theme creator" toolset. If you don't want to have anything to do with WordPress theme creating you can just get that one. If, on the other hand, you'd like to convert your HTML&amp;CSS into a working WordPress theme (it still takes work; this is not a 1-click converter but still eases the workflow tremendously; you can e.g. assign areas wp-tags like "editable", "login", "blog" etc) get "Pro with WordPress". I have "Pro with WordPress".</p>

<blockquote><div>
  <p>With the purchase of any of the two plans, you get 1 year of updates by default.</p>
</div></blockquote>

<p>The big PLUS of this pricing plan: You own the software. It is yours to keep. I can’t stress this enough but since Pinegrow doesn’t rely on Pinegrow infrastructure or an online infrastructure like many other tools. the advantage is that if the company was to shut down one day the software would keep working for you forever.</p>

<p>Only recently, I renewed my owned (one-time) Pinegrow license for another year of updates. My last update had been in 2017 and while it still was working perfectly, I’ve seen some new features in the new versions that I’m really looking forward to such as Stock photo integrations and <a rel="nofollow" href="https://getbootstrap.com/">Bootstrap 4</a>.<br />
I could have just kept using the old version as well, though.</p>

<p>Oh, and one more thing: The "interactions" part you apparently miss out on (notice how it says "Interactions are not included" refers to this new addition to Pinegrow that was added a couple of months ago. This one is not included in the one-time payment plan. Apparently, it can be added as a 50€/year subscription apparently, though.</p>

<h4 data-id="annual-subscription-with-interactions">Annual subscription with interactions</h4>

<p>This is the annual subscription which is also ranging from 40€-140€. Although that is, obviously, per year. It includes interactions (see above) by default and here you can also choose between the Regular Pro version and the one with WordPress.</p>

<p>I never used this one but to me, it sounds like if you don't renew the sub you can't use Pinegrow anymore at all (not even the version of the last update you were entitled to).</p>

<blockquote><div>
  <p>Verdict on pricing: Since the one-time payment plan and annual subscription is priced the same but the one-time payment allows for continued use only missing out on Interactions, I will choose the one-time payment any day.</p>
</div></blockquote>

<p><img src="https://i.gyazo.com/dfe0af208f7a9ecd63e430e5cced1cf6.png" alt="" title="annual subscription for Pinegrow" /></p>

<h4 data-id="my-experience-using-pinegrow">My experience using Pinegrow</h4>

<p>Remember how in my Mobirise review I mentioned Code Edits are a pita without the paid plugin? I usually create a quick mockup site with Mobirise then open it in Pinegrow and tweak it the way I like ;)I also use Pinegrow to convert WordPress sites to static HTML&amp;CSS (especially one-pagers).</p>

<p>Overall, I don't think I have even grasped all the features Pinegrow has to offer and I'm not that advanced of a coder to make full use of all of its' possibilities but it has been a tremendous help so far and I'll happily continue using it. If I feel like new features that I absolutely want have been added, I'll renew for a year of updates to support the developers and get the features I want.<br />
Last time I renewed for 18€ (since there was a discount going on + I was given a personal discount which kinda stacked with the public one lol).</p>

<h4 data-id="conclusion">Conclusion</h4>

<p>The learning curve is steep and although I love it I don’t use it frequently enough (mainly because 80% websites I deal with are <a rel="nofollow" href="https://wordpress.org">Wordpress</a> based and I use <a rel="nofollow" href="https://www.elegantthemes.com/gallery/divi/">Divi</a> for that) to consider myself a Pinegrow expert. But when I work with it, I get into it. And every time I do that. I love it. I recommend you check it out, especially if you are an advanced Web Developer/Coder this will be a great tool at your disposal!</p>

<hr /><p>This wraps up part III of this <a rel="nofollow" href="https://lowendspirit.com/everything-you-always-wanted-to-know-about-pagebuilders-but-were-afraid-to-ask">6 part series on Pagebuilders</a>. In the next two parts, we will cover the most popular format: pagebuilders for Wordpress.</p>
]]>
        </description>
    </item>
    <item>
        <title>Everything You Always Wanted To Know About PageBuilders (But Were Afraid to Ask)</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3842/everything-you-always-wanted-to-know-about-pagebuilders-but-were-afraid-to-ask</link>
        <pubDate>Fri, 11 Mar 2022 18:37:31 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>vyas</dc:creator>
        <guid isPermaLink="false">3842@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> and <a href="https://dev.lowendspirit.com/index.php?p=/profile/vyas" rel="nofollow">@vyas</a>, 28 May 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/jn/0d9c39c8iqod.png" alt="image" /></p>

<p>This is the first in the PageBuilder series guest-written by <a rel="nofollow" href="https://talk.lowendspirit.com/">Forum</a> members <a rel="nofollow" href="https://talk.lowendspirit.com/profile/ympker">@ympker</a> and <a rel="nofollow" href="https://talk.lowendspirit.com/profile/vyas">@vyas</a></p>

<p>Please be sure to leave a comment thanking them for the time they have put into this series, I have had the pleasure of previewing the whole series and it is very large and comprehensive.</p>

<h2 data-id="part-i-introduction">Part I: Introduction</h2>

<p>The title, in case you were wondering, is a play on words on a <a rel="nofollow" href="https://en.wikipedia.org/wiki/Everything_You_Always_Wanted_to_Know_About_Sex*_(*But_Were_Afraid_to_Ask)_(film)">movie by Woody Allen</a>. And as the title suggests, this post is an introduction to the world of Pagebuilders. It is also the first of a multi-part series on pagebuilders that I have written in collaboration with <a rel="nofollow" href="https://talk.lowendspirit.com/profile/Ympker">@Ympker</a>. The idea behind this initiative is to pool our experiences together and create a reference of sorts for the <a rel="nofollow" href="https://talk.lowendspirit.com/">LowEndSpirit community</a>. Lets' call this an original content for LES. </p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/p4/mv53mj0z5qcq.png" alt="" title="" /><br />
Image: Pixabay</p>

<p>Some of the posts in this series will focus on one or more available tools for a given category of pagebuilders. Others would be more generic in nature, and provide an overview of a particular tool or category. Without further delay, lets' dive into the topic right away.</p>

<h3 data-id="so-you-are-interested-in-knowing-more-about-pagebuilders-eh">So you are interested in knowing more about Pagebuilders, Eh?</h3>

<p>If you look up <a rel="nofollow" href="https://www.quora.com/What-is-the-difference-between-a-page-builder-and-a-theme-framework-for-WordPress">discussions on sites like Quora</a>, you would be inclined to believe that page builders exist for one type of Content Management System: <a rel="nofollow" href="https://wordpress.org/">Wordpress</a>. This perception might be mostly true. Indeed, the majority of page builders exist for this <a rel="nofollow" href="https://www.isitwp.com/popular-cms-market-share/">most commonly used content management platform</a>. But if we look at the Universe of web hosting, or its subset, <a rel="nofollow" href="https://en.wikipedia.org/wiki/List_of_content_management_systems">Content Management Systems</a>, you will realize that page builders cover a much wider territory.</p>

<h3 data-id="what-is-a-pagebuilder-anyway">What is a Pagebuilder Anyway?</h3>

<p>In a nutshell, a page builder is a visual tool, which will help in creating web pages. The most common names that come to mind are:</p>

<ul><li>Site builders offered by <a rel="nofollow" href="https://squarespace.com/">Squarespace</a> or <a rel="nofollow" href="https://wix.com/">Wix</a> or</li>
<li>add-ons or plugins for WordPress, such as elementor, Divi and <a rel="nofollow" href="https://brizy.io/">Brizy</a>.</li>
</ul><p>But the story does not end there. Over the years, I have even used some pagebuilders, without realizing what I was using. Here's an example:</p>

<h3 data-id="remember-this-logo">Remember this Logo?</h3>

<p><img src="https://upload.wikimedia.org/wikipedia/commons/c/c5/Microsoft_Office_FrontPage_%282000%E2%80%9302%29.svg" alt="logo of Microsoft Front-page. Image: Wikipedia" /></p>

<p></p><details><summary>Hint</summary><br /><pre spellcheck="false" tabindex="0"><br /></pre><img src="https://i.pinimg.com/474x/a3/a2/31/a3a23126c32fdef0685de17c94709b80.jpg" alt="logo of Microsoft Frontpage 2000. Image : Pinterest" /> Image: Pinterest<br /><br /></details><p><br /> or<br /></p><details><summary>Another Hint</summary><pre spellcheck="false" tabindex="0">
</pre><img src="https://www.betaarchive.com/imageupload/2015-02/1423437414.or.16672.png" alt="image of Microsoft Front-page 1997, source: betaarchive.org" />Image: Betaarchive

<p></p></details><p>if you are not prone to getting too nostalgic, <a rel="nofollow" href="https://en.wikipedia.org/wiki/Comparison_of_HTML_editors">Wikipedia has a great list of HTML editors</a> that I believe were the pre-cursors to today's website creation tools. You may be familiar with some of them: <a rel="nofollow" href="https://copywritely.com/tools/copywritely/task/bluefish.openoffice.nl">Bluefish</a>, <a rel="nofollow" href="https://www.google.com/webdesigner/index.html">Google Web Designer</a>, <a rel="nofollow" href="https://www.adobe.com/products/dreamweaver.html">Dreamweaver</a>, and <a rel="nofollow" href="https://www.seamonkey-project.org/">Seamonkey</a>.</p>

<h3 data-id="okay-but-who-uses-pagebuilders-anyway">Okay, but...who uses Pagebuilders Anyway?</h3>

<p>This category of web design tools caters to two sets of audience. One category is people who are not comfortable with or familiar with coding. Particularly with the rise in the <a rel="nofollow" href="https://en.wikipedia.org/wiki/No-code_development_platform">no-code movement</a>, the usage of such drag and drop tools has gained popularity.</p>

<p>The second is website designers and digital agencies, who would rather focus on customizing the websites for speed, security, efficiency, and so on. For them, the ability to utilize existing tools helps them utilize their time more efficiently, which ultimately has a bearing on the cost.</p>

<h3 data-id="what-are-the-advantages-and-limitations-of-pagebuilders">What are the advantages and limitations of Pagebuilders?</h3>

<h4 data-id="advantages">Advantages</h4>

<p>One of the biggest advantages of using pagebuilders is they speed up the creation of pages. Flexibility, responsive. Many pagebuilders come with inbuilt image search, codes for embed players, etc. This really adds to their appeal. In addition, there are features for greater user engagement, such as surveys, forms, etc.</p>

<h4 data-id="disadvantages-or-limitations">Disadvantages or Limitations</h4>

<p>Now we move to the disadvantages. First of all, you're relying on third-party systems, many of which involve creating an account and entering payment information. For poorly designed or maintained systems, this could lead to security issues. Next, depending on the pricing plan, the scope of customization may be limited. A lot of providers offer free subscription plans, but they come with many limitations.</p>

<p>The level of control a user may have on the layout, features, etc. may be limited. In addition, many of these applications use closed source or proprietary software. This makes the user dependent on the provider for updates, security patches, and so on. Which is exactly the game some providers play.</p>

<blockquote><div>
  <p>As you will read in some of our subsequent posts, many of the Freemium models offer paid annual subscriptions. In other words, if you end the subscription, you are no longer able to use the service. Worse, you might be stuck with an older, unpatched version of the software.</p>
</div></blockquote>

<h3 data-id="are-all-pagebuilders-created-equal">Are All Pagebuilders Created Equal?</h3>

<p>The short answer is no.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/rc/h2bl2wal7aje.png" alt="" title="" /><br />
Image: <a rel="nofollow" href="https://amarvyas.in/">A VYas</a></p>

<p>For the sake of simplicity, I would like to classify pagebuilders into six categories:</p>

<p>1.The Big Boys These services are commercially available to a very wide group of audience, and have a large user base. These large web hosts offer web hosting and have custom web builders. Examples include <a rel="nofollow" href="https://squarespace.com/">Squarespace</a>, <a rel="nofollow" href="https://wix.com/">Wix</a>, Weebly, Jimdo.</p>

<ol start="2"><li>The Rising Stars These cater to a smaller audience base. Examples of such service providers include (<a rel="nofollow" href="https://carrd.co/">Carrd.co</a>, <a rel="nofollow" href="https://tilda.cc/">Tilda.cc</a>, <a rel="nofollow" href="https://www.bookmark.com/">Bookmark</a>, <a rel="nofollow" href="https://www.epicpxls.com/">Epicpixls</a>, <a rel="nofollow" href="https://www.voog.com/">Voog</a>).</li>
<li>Page builders offered by hosting companies such as <a rel="nofollow" href="https://www.godaddy.com/">GoDaddy</a>, <a rel="nofollow" href="https://www.namecheap.com/hosting/website-builder/">Namechaep</a>, Dynadot, etc. are also included in this list. The pagebuilder offered by Softaculous (Sitepad) also features in this list. Installtron or Cloudron might also offer similar applications.</li>
</ol><p>4.Desktop apps such as Mobirise, 8b.</p>

<p>5.Pagebuilders for Wordpress As mentioned in the first half of this post, there are numerous options for <a rel="nofollow" href="https://www.wpbeginner.com/beginners-guide/best-drag-and-drop-page-builders-for-wordpress/">pagebuilders for Wordpress</a> . Examples include Elementor, Divi, Brizy. We will cover some of these in detail in a subsequent post.</p>

<p>6.Landing page creators This is the broadest category in our list, and can include mailing list; video hosting; and CRM services. Some of the examples in this list include Mailchimp, Hippovideo, Hubspot, and builder.io.</p>

<p>Bookmark.com <img src="images/Bookmark%20website-%20Desktop%20view.png" alt="Bookmark.com- Desktop View" /></p>

<h3 data-id="intrigued-or-confused-enough">Intrigued (or confused) enough?</h3>

<p>Don't worry, we will cover the above categories in sufficient detail in the following posts. We hope this will help you clear the air on the topic of pagebuilders.</p>

<h2 data-id="how-this-series-is-structured">How This Series is Structured</h2>

<p>Most blogs, tutorials, and review sites cover the "Big Boys" in sufficient depth, therefore we will not talk about them in this series. We will also not cover the pagebuilders offered by hosting companies for similar reasons. We may, however, include a short review of Softaculous in the last part of this series.</p>

<p>The subsequent posts will be as follows:</p>

<p>Part II : Pagebuilders: The Rising Stars</p>

<p>Part III : Pagebuilders: Desktop App</p>

<p>Part IV: Pagebuilders for WordPress - Part I</p>

<p>Part V: Pagebuilders for WordPress- part II</p>

<p>Part VI: Landing Page Creators (This will also be the concluding part of this series)</p>

<hr /><h4 data-id="note-from-ympker-about-this-project">Note from <a rel="nofollow" href="https://talk.lowendspirit.com/profile/Ympker">@ympker</a> about this project</h4>

<blockquote><div>
  <p>So, the other day <a rel="nofollow" href="https://talk.lowendspirit.com/profile/vyas">@vyas</a> asked me if I wanted to collaborate on a joint-post about various Page Builders with him. Given that I have used a bunch of different page builders already, I thought this might be a nice little addition to our forum.</p>
  
  <p>I will give you guys a short summary of my experience with:</p>
  
  <p>-Divi (ElegantThemes; WordPress),</p>
  
  <p>-Mobirise (HTML&amp;CSS + Bootstrap Pagebuilder),</p>
  
  <p>-Architect (HTML&amp;CSS Pagebuilder) and</p>
  
  <p>-Pinegrow (HTML&amp;CSS + Bootstrap, Foundation and WordPress Theme Maker Addon).</p>
  
  <p>All of these are great Pagebuilders and I appreciate them for what they are. Like with many things in life, I wouldn't call any of them perfect. I'm still waiting for the Ultimate Pagebuilder that unites all of my favourite features of these in one Pagebuilder but I guess that's not gonna happen. Anyway, I will try to give you an insight on what you can expect from each of the Pagebuilders I mentioned and perhaps get a better idea of which Pagebuilder might be suitable for your project.</p>
</div></blockquote>

<p><img src="images/Brizy-Website-Screenshot.png" alt="Brizy Webpage builder for WordPress" /></p>

<p>Screenshot of Brizy Pagebuilder by A Vyas</p>
]]>
        </description>
    </item>
    <item>
        <title>Everything you wanted to know about Pagebuilders…Part II</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3880/everything-you-wanted-to-know-about-pagebuilders-part-ii</link>
        <pubDate>Fri, 29 May 2020 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>vyas</dc:creator>
        <guid isPermaLink="false">3880@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://dev.lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> and <a href="https://dev.lowendspirit.com/index.php?p=/profile/vyas" rel="nofollow">@vyas</a>, 29 May 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022; Some images are now lost/defunct</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/jn/0d9c39c8iqod.png" alt="image" /></p>

<h1 data-id="introduction-to-part-ii-of-this-series">Introduction to part II of this series</h1>

<p>In this post, we will briefly mention the leading web hosting companies who also have their custom pagebuilders. But the main focus of this post will be on the "Younger Siblings" as we had described in <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/1135/everything-you-always-wanted-to-know-about-pagebuilders-but-were-afraid-to-ask">Part I of this series</a>. Specifically, we will talk about <a rel="nofollow" href="https://carrd.co">Carrd.co</a>, <a rel="nofollow" href="https://brizy.io">Brizy</a>, and <a rel="nofollow" href="https://bookmarkcom">Bookmark</a> pagebuilders. I have used each of these services quite regularly over the years, and am quite confident that you will find them useful.</p>

<h3 data-id="the-big-boys-webhosts-with-pagebuilders">The Big Boys : Webhosts with Pagebuilders</h3>

<p></p><details><br /><summary>Optional reading (Click arrow to expand)</summary><br />
There have been many posts about the large hosting companies that offer drag and drop functionality for creating websites. <a rel="nofollow" href="https://shopify.com">Shopify</a>, <a rel="nofollow" href="https://wix.com">Wix</a>, <a rel="nofollow" href="https://squarespace.com">Squarespace</a>, <a rel="nofollow" href="https://weebly.com">Weebly</a>, <a rel="nofollow" href="https://jimdo.com">Jimdo</a> are some such  popular services. These services have a widespread use,  many of them feature in the <a rel="nofollow" href="https://www.isitwp.com/popular-cms-market-share/">Top 10 lists for Content Magagement Sytems</a>. In particulay Squarespace, Shopify, Wix and Weebly can be considered as  mass market products. The advantage of these services is that they offer a 'plug and play' model, that is, sign up, choose an existing template, and customize it to suit needs. They offers speed, convenience, and are beginner friendly How Tos. The tutorials or How Tos are <a rel="nofollow" href="https://support.squarespace.com/hc/en-us">offered by the providers themselves</a>, or <a rel="nofollow" href="https://www.websitebuilderexpert.com/website-builders/squarespace/how-to-use-squarespace/">third party sites</a>.On the flip side, they tend to be expensive, and might not be a good fit for everyone.

<blockquote><div>
  <p>The audience for LES might not be interested in such off the shelf hosting solutions. Therefore, we will move on to the next type of pagebuilders. We will affectionately call them the younger siblings of the Big Boys.</p>
</div></blockquote>

<p></p></details><h2 data-id="the-younger-siblings">The Younger Siblings</h2>

<p>Younger siblings are companies that cater to a smaller audience, or a niche market. Some of these services include:</p>

<p>-Carrd<br />
-Bookmark<br />
-EpicPixls<br />
-Tilda<br />
-Voog<br />
-Weblium<br />
-Sitepad</p>

<p>Stacksocial has a list of many new and relatively unknown page builders. You may <a rel="nofollow" href="https://stacksocial.com/search?utf8=✓&amp;query=website+builder">check it out here</a>.</p>

<blockquote><div>
  <p>A rough estimate shows that are over 100 different types of pagebuidlers.</p>
</div></blockquote>

<p>We will cover three of these services in detail in the sections below.</p>

<hr /><h3 data-id="carrd-co">Carrd.co</h3>

<p><a rel="nofollow" href="https://carrd.co">Carrd.co</a> is a page builder, as well as a web hosting platform. It is great for designers. freelancers, and professionals looking to create their portfolio or personal sites. It is a fairly popular service among those who are familiar with the world of pagebuilders. Its servers are in the United States, which has caused a headache or two for me due to low network speeds. More on that later. <br /></p>

<p><img src="https://cdnus.imfast.io/WebHosting/carrd/Carrd-co-Homepage-AVyas-May2020.png" alt="Homepage of Carrd" /></p>

<p>I came to know about this service through one of the mailers. Initially, I was rather skeptical but when I looked it up, I was actually impressed and I signed up for it.</p>

<h4 data-id="kicking-the-tyres">Kicking the Tyres</h4>

<p>Carrd.co offers a freemium service. You can start with the free model to try this service out. In order to do so, you can choose one of their pre built themes or pre built templates. There are  templates for a Landing Page, a signup or a feedback form, a portfolio page or a personal page. <br /><img src="https://cdnus.imfast.io/WebHosting/carrd/carrd-Co-Instructions-AVyas-May2020.png" alt="instructions offered by carrd.co" /></p>

<p>Once the layout is selected, you are taken to a page where you get the basic instructions where you can change the text, the font size etc. You can simply edit the fields and you will be good to go in minutes! Note that the fields are customizable.</p>

<p></p><details><br /><summary>Optional : Watch the video</summary><p>In the accompanying video, you will find a screenshot tour 'walkthrough'. My intent is to show how you can create a very simple webpage. I have opted for a very simple Card layout. In other words, the website would be one pager with a picture, name and social media contact details.</p>


  
  
Your browser does not support the video tag.


<h4 data-id="alternate-link-to-video">Alternate link to video</h4>

<p>In case the above link to the video does not work, I am posting an alternate link to the screenshot tour of carrd.co <br /><a href="https://gaathastory.hippovideo.io/video/play/LKM_e5sxpijAnnUJKMcoX6bcQrY3OC39aBoDqlpl9vM?utm_source=hv-campaigns&amp;hreferer=private&amp;_=1589721867651&amp;amp" rel="nofollow">https://gaathastory.hippovideo.io/video/play/LKM_e5sxpijAnnUJKMcoX6bcQrY3OC39aBoDqlpl9vM?utm_source=hv-campaigns&amp;hreferer=private&amp;_=1589721867651&amp;amp</a>;</p>

<h2></h2></details><h4 data-id="customizing-the-fields">Customizing the fields</h4>

<p>From "Alex Smith", I change that to my name. Next I changed my image-I put my same image as my avatar on LES. You can change the font size and also change the pattern by adding a drag and drop shadow.</p>

<p>You can preview the draft site in desktop mode and mobile more. Once you are ready to publish, you only have to enter your contact details.<br /></p><details><br /><summary>Click to see the test site</summary><br /><img src="https://cdnus.imfast.io/WebHosting/carrd/Carrd-Co-MobileView-AVyas-May2020.png" alt="test page created with carrd.co" /><p></p></details><br />
 I already have a Pro Standard account with carrd.co, and this does offer some additional features like using a custom domain, and pro templates. You can add your own stock images own images or use one of the pre-built stock images from unsplash, etc.

<blockquote><div>
  <p>Information on the tiers, features, for the pricing plans, is available here: <a href="https://carrd.co/pro" rel="nofollow">https://carrd.co/pro</a></p>
</div></blockquote>

<p>Carrd.co is under active development- most recently it was updated about three weeks ago the time of posting this message.  <a rel="nofollow" href="https://twitter.com/ajkln">AJ</a>, the founder and creator of Carrd.co, is the person behind <a rel="nofollow" href="https://html5up.com">html5up</a>.</p>

<p><strong>Give carrd.co a try, you will be pleasantly surprised!</strong></p>

<blockquote><div>
  <p>Tip: If you are considering a paid plan, <strong>lookout for the deals around Black Friday</strong>. You get a 50% discount on the pro plan which typically cost, 20, US dollars, will end up costing you less than 10. For that amount, you can get 10 one-page websites.</p>
</div></blockquote>

<p>####What is this service best for<br />
  1. Carrd is great for making a portfolio page, a landing page, and you can also have your resume up there. Or you can just create quick one-page site for your friends, your family, your girlfriend, boyfriend, as the case may be.<br />
  2. You can clone a site, that it, create a staging site and a production site if you wish. that gives an advantage of creating multiple options inc are you want to seek approval from the client or the person(s) you are creating the site for.</p>

<h4 data-id="quirks-and-limitations">Quirks and limitations</h4>

<p>I have two problems with this service: <br />
1. In India, I get low speeds. This makes the creation and loading of the site very slow. I had reached out to AJ back in December 2018, and he had suggested that I use Cloudflare or any other CDN. I did try that, but to no avail. In Europe and North America, speeds might be better. <br />
2. Sometimes, the sites go into something called as 'initialising' mode. This happens probably for 5 minutes every month. For that period, the sites are inaccessible. Recently, I received a mailer from AJ that required me to change the servers for my sites. Maybe with the new server(s) this problem will go away.<br />
3. You can export the site in the higher price tiers only (Pro Plus and Pro Max)</p>

<h4 data-id="summing-it-all-up">Summing it all up</h4>

<p>I am a very happy user of carrd.co, and would recommend it if you are looking for a no-frills site that is quick to set up. <br />
In spite of the minor quirks, I give it a thumbs up.</p>

<p>Carrd.co also has good documentation, I am adding the link to their support page for reference. <img src="https://cdnus.imfast.io/WebHosting/carrd/Carrd-Co-Pro-Support-AVyas-May2020.png" alt="support page of carrd.co" /></p>

<hr /><h3 data-id="bookmark-com">Bookmark.com</h3>

<h4 data-id="introduction">Introduction</h4>

<p>Let us take a look at <a rel="nofollow" href="bookmark.com">bookmark.com</a>. I learnt about this page builder + web host through <a rel="nofollow" href="https://facebook.com">a Facebook group</a>. The specifications they offered did not impress me much initially. But upon closer look, there was one feature about bookmark made me sign up: the AI-backed website builder (AIDA).</p>

<h4 data-id="signing-up-and-pricing-plans">Signing up and pricing plans</h4>

<p>Bookmark also follows the freemium model. Like other services, in order to use a custom domain, one has to sign up for the paid plans, which start at 12 US dollars a month on an annual subscription. This tier puts you in the 'unlimited bandwidth and unlimited storage' category. Like many members of LES, I am also sceptical about anything 'unlimited'. Inspire of my reservations, I had purchased the 2 website plan. It made the pricing attractive.</p>

<h4 data-id="creating-a-website">Creating a website</h4>

<p>Initially, I found AIDA to be gimmicky! But creating a website is fast and super easy with AIDA. In the included video, you can see how I have created a sample website in a very short time.</p>


  
  
Your browser does not support the video tag.


<h4 data-id="customizing-the-fields-1">Customizing the fields</h4>

<p>Once the website is created, you can change the fields to your liking: fonts, colours, images and more. This can be done manually or using AIDA, again. It is difficult to change the type of website- for example, from a blog to a photo gallery. Also, the layout cannot be changed easily once it has been chosen. You might be better off re-creating the website. You can save as many sites as you like, until you publish them. The upper limit to the number of published sites is the number of sites included in your plan.</p>

<p>![Website created using Bookmark-Desktop View](<a href="https://res.cloudinary.com/gaathastory/image/upload/w_500,c_fill,ar_1:1,g_auto,r_max,bo_5px_solid_red,b_rgb:262c35/v1589755767/blogpost/bookmark/Bookmark" rel="nofollow">https://res.cloudinary.com/gaathastory/image/upload/w_500,c_fill,ar_1:1,g_auto,r_max,bo_5px_solid_red,b_rgb:262c35/v1589755767/blogpost/bookmark/Bookmark</a> website- Desktop view.png)</p>

<p><img src="https://res.cloudinary.com/gaathastory/image/upload/c_thumb,w_300,g_face/v1589755769/blogpost/bookmark/Mobile-View-Bookmark-May2020.png" alt="Website created using Bookmark - mobile view" /></p>

<p></p><details><br /><summary>Optional reading</summary><h4 data-id="websites-in-draft-folder">Websites in Draft Folder</h4>

<p>I liked the option of a drafts folder- where you can save layouts before choosing one for the actual site. This is useful if you are creating a website for a client or stakeholders, and you would need approval for doing the same. You can store multiple draft websites, and delete the ones you no longer need.</p>

<p><img src="https://res.cloudinary.com/gaathastory/image/upload/c_thumb,w_400,g_face/v1589755762/blogpost/bookmark/Websites-Draft-Bookmark.png" alt="Websites in the draft folder - Bookmark" /></p>

<p></p></details><h4 data-id="images-and-videos">Images and videos</h4>

<p>Bookmark offers integration with stock image websites, and you can replace the images that come with the stock website. You can also upload your own images, or save them from google drive onto your bookmark.com folder. The site claims there is no upper limit on the number of images or their size. I have not stress-tested the system, so I cannot comment on the actual limits if any.</p>

<h4 data-id="e-learning-courses">e-Learning Courses</h4>

<p>Bookmark.com offers some e-learning courses as a part of their paid packages, or you can subscribe to them independently. <br /><img src="https://res.cloudinary.com/gaathastory/image/upload/c_thumb,w_500,g_face/v1589755699/blogpost/bookmark/e-Learning-Courses-Bookmark.jpg" alt="screenshot showing e-learning courses bookmark.com" /></p>

<h4 data-id="concluding-remarks">Concluding remarks</h4>

<p>Bookmark is largely catered towards web designers and agencies who want to use the white label service for their clients. But the ease of creating a website using AIDA may make it an attractive option for the non-technically-inclined user. Pricing wise, it becomes quite expensive for the causal user beyond the $12 a month plan.</p>

<hr /><h3 data-id="brizy">Brizy</h3>

<p>Brizy is an interesting beast, I mean it in a good way. This service can be called a hybrid. It is a pagebuidler and a web host. In that sense, it falls under the "younger siblings" category. They also offer cloud hosting, which uses their custom page builder.</p>

<p>a. You can download the .zip file that has the readymade site, simply upload it on your server, unpack it, and you are good to go. This is a great option if you are not planning to update the site regularly. That is, you are looking to create a static site. This is the "Export HTML" option.<br />
b. The other option is to use your website as a 'front' face, but the page creation, image hosting, etc. happens from brizy. You can update the pages or the data on the webpages, and the content will be synced dynamically with your website. This is the "Server Sync" Option.</p>

<p>The other two options- allow you to host on brizy using your own custom domain, or use a subdomain with a "subdomain.brizy.io" extension. This option is the default for the free tier. Brizy also offers a WordPress plugin, which we might cover in a subsequent part of this series.</p>

<blockquote><div>
  <p>The real interesting option is the way in which you can host a website on your own server.</p>
</div></blockquote>

<p><img src="https://res.cloudinary.com/gaathastory/image/upload/w_600,c_fill,ar_1:1,g_auto,r_max,bo_5px_solid_red,b_rgb:262c35/v1589765661/blogpost/brizy/Brizy-Website-Screenshot.png" alt="Screenshot from brizy website" /></p>

<p>You can read the page <a rel="nofollow" href="https://support.brizy.io/hc/en-us/articles/360025757712-Publishing-options-in-Brizy-Cloud">Publishing options for Brizy</a><br />
for more details.</p>

<h4 data-id="pricing-plans">Pricing plans</h4>

<p>Brizy has three pricing tiers: Free account, Pro Personal Plan, and Pro Studio Plan. The pricing is at the mid-segment : US $ 49 / year for Personal Pro and $ 99 for Pro Studio.<br />
Here is the interesting part: under the free account, you can link 1 custom domain or subdomain. That is, you get one website hosted for free.</p>

<p>Similarly, under the Pro Personal Plan, you can link up to 3 custom domains or subdomains. In the Pro Studio plan, there is no upper limit. You can visit the <a rel="nofollow" href="https://www.brizy.io/free-vs-pro/">pricing page</a> on their website for details.</p>

<blockquote><div>
  <p>Brizy currently has a 'lifetime' deal running, something you can notice in bold at the top of their website.</p>
</div></blockquote>

<p></p><details><br /><summary>Click to see the test site</summary><p><img src="https://res.cloudinary.com/gaathastory/image/upload/w_800,ar_1:1,c_fill,g_auto,e_art:hokusai/v1589765660/blogpost/brizy/Screenshot-of-Brizy-Pagebuilder.png" alt="Screenshot of page builder by brizy. May 2020" /><br /></p></details><h4 data-id="ssl">SSL</h4>

<p>Both Custom Domain and Brizy Subdomain publishing options come with free SSL included. According to their website, SSL "Takes up to 24 hours to be installed." In my experience, it DOES take 24 hours for the ssl to be set up.</p>

<p><img src="https://support.brizy.io/hc/article_attachments/360041736831/hosted-by-you.jpg" alt="site hosting options-brizy Cloud" /></p>

<h4 data-id="cdn">CDN</h4>

<p>Brizy has a list of POPs on their website, which they use for free and paid tiers. Particularly under the paid plan, the CDN locations in Asia Pacific region is quite extensive. This makes it an attractive proposition.</p>

<p>Hosting is on <a rel="nofollow" href="https://aws.amazon.com/ec2/">amazon EC2</a>, image processing by <a rel="nofollow" href="https://fastly.com">Fastly</a>, and their CDN provider may be a name familiar to most readers in the ES community: <a rel="nofollow" href="https://bunnycdn.com">BunnyCDN</a>.</p>

<p>Overall, they seem to have chosen some good Infrastructure providers, which means that eh performance is expected to be above par. One concern I have about such services is the price they have to pay to the providers. Amazon' s AWS in particular can get expensive. This aspect is best-illustrated in the below video.</p>

<p>Video: AWS fees can quickly turn expensive! <br /><span data-youtube="youtube-uyIlAO390v4?autoplay=1"><a rel="nofollow" href="https://www.youtube.com/watch?v=uyIlAO390v4"><img src="https://img.youtube.com/vi/uyIlAO390v4/0.jpg" width="640" height="385" border="0" alt="image" /></a></span></p>

<p>Further reading: <br />
1. <a rel="nofollow" href="https://support.brizy.io/hc/en-us/articles/360041844872-What-is-the-difference-between-Basic-CDN-and-Global-CDN">Basic and Global CDN for Brizy</a></p>

<ol start="2"><li><a rel="nofollow" href="https://support.brizy.io/hc/en-us/articles/360026953112-What-are-the-specs-for-the-cloud-hosting-">Specifications for cloud hosting</a></li>
</ol><h4 data-id="brizy-cloud">Brizy Cloud</h4>

<p>I really like this option. For this review, I have included a video made from screen captures. I created a test site on Brizy cloud, and hosted it on the shared hosting site. I thought this was a good way to put to use the Black Friday offer from 2019 by <a rel="nofollow" href="https://gullo.me">Gullo's Hosting</a>.<br /><img src="https://res.cloudinary.com/gaathastory/image/upload/c_thumb,w_600,g_face/v1589765657/blogpost/brizy/Publishing-Options-Brizy-Cloud.png" alt="publishing options for brizy cloud" /></p>

<h4 data-id="watch-the-video">Watch the video</h4>

<p><a href="https://gaathastory.hippovideo.io/video/play/idjtxkG6bFT3nJxJKbfNUcFlmwywclicW25lWKIwLk0" rel="nofollow">https://gaathastory.hippovideo.io/video/play/idjtxkG6bFT3nJxJKbfNUcFlmwywclicW25lWKIwLk0</a></p>

<h4 data-id="summing-it-all-up-1">Summing it all up</h4>

<p>I really like Brizy and the simplicity and options it offers. In particular, you can create a rather complex page (or series of pages) and publish them in a variety of ways. This product is under active development. On the flip side, there are bugs, and the Wordpress plugin had a security incident a couple of months ago.Brizy is worth a try- heck, they offer free of 1 website.</p>

<h2 data-id="conclusion-part-ii">Conclusion: Part II</h2>

<p>This wraps up part II of this 6 part series. Hope you found the site builder options discussed in this post useful. The list I have posted at the beginning of this article is by no means exhaustive. But I thought the best way to create value for the readers was by writing about services that I have used first hand. With that logic, I should have even covered Sitepad, but that is a post for another day. Hope you find the mini-reviews useful. As always, looking forward to your comments, feedback and recommendations if any.</p>
]]>
        </description>
    </item>
    <item>
        <title>Migrate a KVM VPS from one host to another – Easy Mode.</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3840/migrate-a-kvm-vps-from-one-host-to-another-easy-mode</link>
        <pubDate>Wed, 27 May 2020 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>LES_Blog</dc:creator>
        <guid isPermaLink="false">3840@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by Anthony Smith, 27 May 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/d7/jyyx3ynmtdki.png" alt="image" /></p>

<p>This is the first in a series of posts in the "Easy Mode" series</p>

<p>I thought I would write this up as a super easy basic guide to an almost no-effort method of migrating a KVM VPS from one host to another without having to worry about any minor changes in software stacks that could cause your backup and restore to fail or not restore as expected.</p>

<p>As a host one of the unfortunate realities is that sometimes it is just necessary to have migrations either due to end of life of an OS major version or impending hardware failure etc and on the rare occasion you need people to migrate their own server, this usually results in a 10% panic rate and a desperate cry for help.</p>

<p>With all that in mind I thought I would illustrate possibly one of the most simple server migration methods possible, I have done this based on KVM to KVM as that is likely to be the most common method however this method should also work for Xen HVM to Xen HVM or KVM to Xen HVM or Xen HVM to KVM and finally VMware to VMware should also work fine.</p>

<p>I can't cover the huge amount of different control panels and access methods out there but all that I have used either have access to an ISO mount or a rescue mode so it should be easy for you to use this guide as long as your host's control panel provides at least an ISO mount option or a rescue mode.</p>

<p>In this example, I have used a KVM VPS on a host that uses SolusVM and migrated it to a host that uses Virtualizor.</p>

<p>Requirements and additional info before we get started.</p>

<ul><li>The <strong>destination</strong> VPS should have the same size hard disk (bigger is fine).</li>
<li>This will only go as fast as the link between the 2 locations, latency is a huge factor, moving a 50GB Disk image from India to New York is no fun.</li>
<li>Some attention to detail is required, it is possible to lose your data if you mess up the commands.</li>
<li>If the destination control panel does not provide a 'reconfigure networking' button or a serial console/VNC option you can use to reconfigure networking yourself you may want to consider configuring but not activating the network settings for the destination VPS on the source prior to shutdown, SolusVM, however, will do this for you and in some cases depending on the Hosts configuration options in Virtualizor it will also.</li>
<li>Source VPS, in this case, was at Inception Hosting - London, the destination VPS was with Nexus Bytes - New York</li>
</ul><hr /><p>First of all, I created a quick KVM VPS as the source on the SolusVM based host, installed apache2 and slightly modified the test page which you can see loading on the source IP:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/2l/zniyu73dxmiz.png" alt="" title="" /></p>

<p>Then I shut down the Source VPS and put both the source and destination VPS into rescue mode.</p>

<p>For SolusVM (Source):</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/k3/8croozaarz9i.png" alt="" title="" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/hy/862j55bwxlgd.png" alt="" title="" /></p>

<p>For Virtualizor (Destination):</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/n9/xz54kkp15j1d.png" alt="" title="" /></p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/xm/g9js7othui9n.png" alt="" title="" /></p>

<p><em>note: I noticed virtualizer has a tendency to just lock out all options even those for coming out of rescue mode when you do this which is resolved by simply refreshing the page, don't worry it does not resubmit the action</em></p>

<p>Now you should have both the source and destination in rescue mode and you should be able to login to both over ssh:</p>

<p>SolusVM VPS (Source)</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/51/woe0o6h22h5n.png" alt="" title="" /></p>

<p>Virtualizor VPS (Destination)</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/7j/wvotolqgra4z.png" alt="" title="" /></p>

<p>Next, you need to examine your disks to make sure you get the right one, the rescue modes will create a ramdisk so what was vda or sda on your VPS when it was running may not be now, this is the part you need to be sure you get correct, I have shown a side by side below using <code spellcheck="false" tabindex="0">fdisk -l</code> to check which disk I want to migrate to which disk on the other end.</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/hf/iwojrxcezml7.png" alt="" title="" /></p>

<p>From the image above we can see that the 5GiB disk is the one I want <code spellcheck="false" tabindex="0">/dev/vda</code> because I know my source disk is 5GiB and on the destination side I can see that it is actually <code spellcheck="false" tabindex="0">/dev/vdb</code> I want to copy the disk to, the 10 GiB disk. It is <strong>very</strong> important that you check this before going any further as it could well be different.</p>

<p>Because we now know I want to copy <code spellcheck="false" tabindex="0">vda</code> on the source to <code spellcheck="false" tabindex="0">vdb</code> on the destination we can structure the command to do this.</p>

<pre spellcheck="false" tabindex="0">dd if=/dev/vda bs=32M status=progress | ssh root@45.61.123.123 "dd of=/dev/vdb"
</pre>

<p>let us break this down so it is better understood as there is nothing worse than knowing which buttons to press to achieve a goal, but having no idea why they work, or what they actually do:</p>

<ul><li>dd - Short for "data duplicator" a common commend used for copying or duplicating data.</li>
<li>if=/dev/vda - The input or what we are reading, in this case, the entire virtual hard disk image</li>
<li>bs=32M - BYTES, the number of BYTES to read per block when copying, you can set this yourself, I have found 32M is a good average.</li>
<li>status=progress - This shows the progress of the copy, it has a very small overhead but without it you get nothing in terms of a progress indicator</li>
<li>| - The pipe, in very simple terms, lets you pass the result of one command or set of commands to the next</li>
<li>ssh root@45.61.123.123 - Because this is after the pipe | it takes what was done before and sends it over an ssh session as root to the destination IP 45.61.123.123 (fake)</li>
<li>"dd of=/dev/vdb" - Finally the instruction on what to do at the other side which is to use dd "data duplicator" to write the blocks it is receiving over ssh to <code spellcheck="false" tabindex="0">/dev/vdb</code></li>
</ul><p>Once that command is issued you will see something like this:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/p7/7n4y6jib6bcv.png" alt="" title="" /></p>

<p>And when it completes you will see:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/9h/s05ejnapmj0e.png" alt="" title="" /></p>

<p>As we can see that took 634 seconds or a little over 10 minutes to complete and now the disk image on the destination should be identical to the source.</p>

<p>The next step is to cancel rescue mode on the destination via the control panel and then boot the destination VPS, going to the new IP address once it is finished booting shows that it was a success as the same page loads on the new IP:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/lc/uetq2jiio6f9.png" alt="" title="" /></p>

<p>If your destination VPS has a bigger disk size than the source you will not instantly gain the extra space by following the above process, you will need to either expand your partitions or extend your logical volume if using LVM, that however is beyond the scope of this particular tutorial but if you are also looking for easy mode for that then just boot the VPS with a GParted ISO or a rescue cd that contains GParted which will give you a simple UI to expand your partitions or look up vgextend and lvextend if using LVM.</p>

<p>If having read this you discover that your host does not have a built-in rescue mode then I would suggest requesting they supply a SystemRescueCd ISO (Also contains GParted) <a rel="nofollow" href="https://www.system-rescue-cd.org/">https://www.system-rescue-cd.org/</a> so you can mount it and boot into rescue mode.</p>
]]>
        </description>
    </item>
    <item>
        <title>The nuts and bolts</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3836/the-nuts-and-bolts</link>
        <pubDate>Thu, 21 May 2020 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>LES_Blog</dc:creator>
        <guid isPermaLink="false">3836@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by Anthony Smith, 21 May 2020</em><br /><small>Article was migrated from WordPress to Vanilla in March 2022 (images were lost during migration)</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/np/etuuavh0ye1y.png" alt="image" /></p>

<p>I thought it might be good to let people know what it is that runs this place both server specs-wise and the platform(s).</p>

<p>Note: There are a few affiliate links in here for <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a>, you don't have to use them but obviously it helps out if you do. direct link: <a rel="nofollow" href="https://runcloud.io/">https://runcloud.io</a></p>

<p>The quick and very simple overview is that it runs on an Inception Hosting SSD KVM VPS with 2GB Ram, 2 cores (burst) within Clouvider DC, running Runcloud with vanilla for the forum and Grav for the blog.</p>

<h2 data-id="server">Server</h2>

<ul><li>SSD based KVM VPS.</li>
<li>2 GB Ram</li>
<li>20 GB Disk</li>
<li>UK/London (Clouvider DC - Telehouse Two North)</li>
</ul><pre spellcheck="false" tabindex="0">$ lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           2
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               94
Model name:          Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz
Stepping:            3
CPU MHz:             3600.008
BogoMIPS:            7200.01
Hypervisor vendor:   KVM
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            4096K
L3 cache:            16384K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear
</pre>

<pre spellcheck="false" tabindex="0">$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1992         532         826          90         634        1215
Swap:           255         127         128
</pre>

<p>Now I know 2GB Ram is not exactly lowEnd, although recent discussions did suggest that it is the plan of choice for many, on the other hand, it is not exactly a cluster of dedicated servers either, initially the forum alone was running on a 512mb ram VPS with 5GB Disk, during standard operation this was fine however during the backup cycles and busy period there were some noticeable slowdowns, knowing the future plans to also host the main LES site (this one) on the same server as well as some future plans I decided to upgrade the server to cover current and future needs, the plan base rate should I be charging myself would be €5 per month and 50% off sales are not unheard of so certainly a low-end price tag.</p>

<h2 data-id="runcloud">Runcloud</h2>

<p>I went with <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a> because I had heard good things about it and really I just wanted to get on with doing instead of messing around getting everything just right, while vanilla is fairly straight forward to set up and install the documentation does not really reflect reality and I assume that is in part because they want you to use their paid version, using <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a> allowed me to get a good config/base setup within 3 minutes, it has a really good intuitive dash and adding a server is super simple.</p>

<p>Once you sign up at <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a> you need to add a server, unless the host is specifically mentioned just pick other, in my experience any KVM based server works, I have not tried OpenVZ 7 yet but I am not aware of anything specifically that would prevent it from working.</p>

<p><small>[image missing]</small></p>

<p>Once you add a server you have the option of simply providing the IP and root account password or generating a self-install script, the latter is the option I took, you can then actually see the install completion percentage on the <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a> dashboard as it progresses.</p>

<p>I have on a few occasions noticed on faster servers it gets stuck at 98% and it is due to waiting for redis to start because best guess a service action happens to quick so it is not in an expected state, if you get this simply running: <code spellcheck="false" tabindex="0">systemctl restart redis-server</code> and it should spring back to life and complete seconds later.</p>

<p>Then you just need to add a web application:</p>

<p><small>[image missing]</small></p>

<p>Unless you actually want Wordpress, select 'Custom Web Application' you will then be given all the general configurable options, the defaults in most cases are going to be fine, you can change and tweak them later, a screenshot of that for illustrative purposes:</p>

<p><small>[image missing]</small></p>

<p>Once you have created the Web Application stack you can then create databases as required on the left, that part is ridiculously simple so I will save you the enter username/password here screenshots, then you are ready to go, Runcloud does not have an automated installer for vanilla so that was a manual install, the included vanilla .htaccess was not quite perfect so required some tweaks but nothing major.</p>

<p>If you want to install something else then you can refer to the script instructions or you can choose one of the ready to roll <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a> scripts, first select your newly created web application then click on the Script Installer:</p>

<p><small>[image missing]</small></p>

<p>For this site I added another web application and manually deployed Grav rather than use the script installer because it is so simple and I wanted a specific version, <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a> has a TON of great features from automatic ssl deployment, hourly backups, snapshots, 1 click restores, Git integration, file management, cron management, Services management and app portability, you can use it to push your entire site to another server in minutes.</p>

<p>If you are like me and you just want to get on with the end product instead of spending a week preparing the groundwork but still want a solid base to work from then <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a> really is a great option.</p>

<p>Some of the dashboard shots for those that like them:</p>

<p><small>[image missing]</small></p>

<p><small>[image missing]</small></p>

<p>It is worth mentioning that up to a few days ago I was using the basic version of <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a>, I recently switched to pro because I wanted the multi-server features for a staging environment for another little project, it also allowed me to do a few things again so I could grab some clean screenshots for this post, I did, however, start LES (the forum) on the free version of <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a>.</p>

<h2 data-id="grav">Grav</h2>

<p>Grav <a rel="nofollow" href="http://getgrav.org/">http://getgrav.org</a> runs this site, what I have started referring to as LESB the lowendspirit blog as people are generally referring to the forum now as just LES, I wanted to use Grav because it is super lightweight, I have always found myself deploying WordPress and then regretting it when things grow later down the line and you need plugin after plugin after plugin to achieve what should be a fairly simple goal, some people love WordPress, I don't hate it, I just wanted something much lighter weight.</p>

<p>A better description from Wikipedia:</p>

<blockquote><div>
  <p>Grav is a free software, self-hosted content management system (CMS) written in the PHP programming language and based on the Symfony web application framework. It uses a flat-file database for both backend and frontend.</p>
  
  <p>Grav is designed to have a shallow learning curve, and to be easy to set up. The focus of Grav is speed and simplicity, rather than an abundance of built-in features that come at the expense of complexity.</p>
  
  <p>The name Grav is just a shortened version of the word "gravity."</p>
  
  <p>Grav is the most starred PHP CMS on GitHub, with over 11,000 stars</p>
</div></blockquote>

<p>Grav does not use MySQL or similar, it is probably the better free CMS without a full-blown database, it took me under 24 hours to get comfortable with although I have to admit I decided I it was not the right option to achieve my goals halfway through and deleted it and then later decided to give it another chance, it is a shallow learning curve it is just different enough to give you a headache initially if like me you have little patience for developers not having a crystal ball and interpreting your every need before you have them <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p>Because of the way it has been designed it is ridiculously fast, required almost zero resources to run and the caching is super simple to handle.</p>

<p>Despite its lightweight design, Grav has a huge amount of tweakable option and more advanced options like proxy/reverse proxy, HTTP header control and hundreds more build directly into the UI.</p>

<p>One of the big things I like about Grav is that it uses markdown, one of the elements of Wordpress I never liked was the formatting could get messy, what you see in the post creation page often has no resemblance to how it looks when published, I know plugins exist to make that better than the default but plugin, plugin, plugin, with Grav however that is not an issue.</p>

<p>If you want to go very very lightweight you can simply do away with the admin part of Grav and just directly edit and create the pages in a super simple structure using markdown files.</p>

<p>Example:</p>

<pre spellcheck="false" tabindex="0"># ls usr/pages/
01.home  about-contact  root.md
</pre>

<pre spellcheck="false" tabindex="0"># ls 01.home/
01.hello-world  blog_list.md  extravm-30-off-recurring-sydney-australia-kvm  the-nuts-and-bolts
</pre>

<pre spellcheck="false" tabindex="0">$ ls 01.home/01.hello-world/
blog_item.md  helloworld.png
</pre>

<p>If you don't use the Grav installer on <a rel="nofollow" href="https://runcloud.io/r/7ADW077OeRbN">Runcloud</a>, and are testing it on one of your other servers, getting started really is as simple as grabbing the zip and unzipping it in your webroot or where ever you want to run it from then creating your admin user.</p>

<p>Some screenshots the 90 seconds of effort including screenshots Grav site I set up on a little 512mb <a rel="nofollow" href="https://nexusbytes.com/">nexusbytes</a> KVM VPS:</p>

<p><small>[image missing]</small></p>

<p>Pick your theme, all integrated into the dash:</p>

<p><small>[image missing]</small></p>

<p>Add your plugins as required, although what it comes with is enough for most cases:</p>

<p><small>[image missing]</small></p>

<p>Then you can start adding pages, I just put a super simple theme on it but some of them are really nice:</p>

<p><small>[image missing]</small></p>

<p>With the base theme it looks more like this:</p>

<p><small>[image missing]</small></p>

<p>You can see it live at <a rel="nofollow" href="https://nexusbytes.lowendspirit.com/">https://nexusbytes.lowendspirit.com</a> although that link will not work for very long (sorry people of the future)</p>

<p>Depending on your server setup and permissions and security hardening you may not be able to install the plugins or themes directly from the web UI as I found as it requires (exec) which makes me a little bit nervous so I killed that off, the plugins are super simple to install through the command line though and every plugin or theme on the <a rel="nofollow" href="https://getgrav.org/">https://getgrav.org</a> website (there are a lot) can be installed with gpm (Grav package manager) from the installation root of your Grav site much like a package distro manager you simple run:</p>

<p><code spellcheck="false" tabindex="0">bin/gpm install packagename</code></p>

<p>Example:</p>

<p><small>[image missing]</small></p>

<p>That is the overview of the nuts and bolts of this place and the forum, I do plan on doing a more in-depth look at Grav in the future if there is any interest as I think it would be a great platform for the super tiny servers out there, some 64mb VPS plans do exist and it would be very interesting to see what people could produce with Grav</p>

<p>I am not the worlds best writer I am sure there is room for improvement which will come in time.</p>

<p>Thanks for reading, happy to answer any questions.</p>

<p>Ant.</p>
]]>
        </description>
    </item>
    <item>
        <title>Hello World</title>
        <link>https://dev.lowendspirit.com/index.php?p=/discussion/3825/hello-world</link>
        <pubDate>Mon, 18 May 2020 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>LES_Blog</dc:creator>
        <guid isPermaLink="false">3825@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by Anthony Smith, 18 May 2020</em><br /><small>Article was migrated from Wordpress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/c2/d6mtz0ytiqxc.png" alt="image" /></p>

<p>Welcome to LowEndSpirit.com, a place to discuss running very low end (and these days not so low end) virtual private servers, I will be listing VPS plans I have found on the web that cost less than USD$7 / month (and occasionally above that figure) and how to run various services on them.</p>

<p>For those that are new to the whole 'Low End' scene the above paragraph is actually a tribute to LowEndBox as it was back when it launched in 2008, link to archive post: <a rel="nofollow" href="https://web.archive.org/web/20080424094819/http://www.lowendbox.com/blog/hello-world/">https://web.archive.org/web/20080424094819/http://www.lowendbox.com/blog/hello-world/</a></p>

<p>This was the origin of the whole $7 VPS idea and the idea of being able to do more with less.</p>

<p>Obviously things have evolved since then yet many people still have the spirit of the Low End. Sadly the original site/hub (LET/LEB) has become a muddy water where you likely to be throwing money away on scams and schemes. Those that have had the misfortune <img src="https://dev.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> of communicating with me over the past 10 or less years that I have been involved in the industry will know my feelings about all this so I will not go in to any further detail here.</p>

<p>Originally LowEndSpirit was a hub for some of the first NAT (shared IP) virtual servers and containers available, it was an at cost community project (usually a loss in reality), this allowed people access to very cheap services with native IP6 and NAT IP4 usually with 128MB or 256MB of ram.</p>

<p>A number of hosts got involved in this early on, to this day some great hosts are still providing directly or providing the back end support for these services around the world such as <a rel="nofollow" href="https://mrvm.net/">MrVm</a>, <a rel="nofollow" href="https://www.ransomit.com.au/">RansomIT</a> services and <a rel="nofollow" href="https://gullo.me/">Gullo Net</a></p>

<p>The LES NAT project exploded quickly and a few of the original hosts trying to offer it on a more commercial basis failed, these days a NAT VPS is a fairly common product offering, people took the idea and made it a better experience all around even offering end-user support in some instances.</p>

<p>The word LES became synonymous with a NAT or shared IP server which was creating some confusion and frustration but the community was still active to some degree so the original site and forum have been removed and replaced with this site and the new forum, the real motivator behind this was due to the ever-increasing scams and deliberate misdirections going on over at lowendbox/talk I took the decision to fork the community and give a safer option/place to exist in on a recognised name.</p>

<p>Now LowEndSpirit is open to all hosts (with some checks and verification) to post in a more open market place, the majority will happen over on the forums, link in the top bar, but i will post offers here occasionally from hosts offering something worth paying attention too.</p>

<p>The community here grew quickly but the old lowendspirit site still being up is creating some understandable confusion so this is the replacement.</p>

<p>That is the overview as to why this place exists and a brief history, feel free to take part in the discussions.</p>

<p>Hosts/Service providers if you want offers listed, please see the <strong>About/FAQ/Contact</strong> link on the right.</p>
]]>
        </description>
    </item>
   </channel>
</rss>
