<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.helionet.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Unknown025</id>
	<title>HelioHost Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.helionet.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Unknown025"/>
	<link rel="alternate" type="text/html" href="https://wiki.helionet.org/Special:Contributions/Unknown025"/>
	<updated>2026-04-27T09:47:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.helionet.org/index.php?title=Charlie&amp;diff=2180</id>
		<title>Charlie</title>
		<link rel="alternate" type="text/html" href="https://wiki.helionet.org/index.php?title=Charlie&amp;diff=2180"/>
		<updated>2025-12-31T03:30:09Z</updated>

		<summary type="html">&lt;p&gt;Unknown025: Minor grammar change.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Charlie == &lt;br /&gt;
&lt;br /&gt;
Charlie is a physical server that was purchased in December 2010 and originally hosted [[:Cody|Cody]] and [[:Johnny|Johnny]]. In 2016 when [[:Eddie|Eddie]] was purchased [[:Cody|Cody]] was moved to [[:Eddie|Eddie]] so [[:Johnny|Johnny]] could have all of the resources of Charlie to himself. When [[:Sparkie|Sparkie]] was purchased in 2019 [[:Johnny|Johnny]] was moved off of Charlie as well. He is equipped with a Core 2 Quad Q9550 CPU, 8 GB of memory, and runs [https://en.wikipedia.org/wiki/VMware_ESXi VMware ESXi]. Charlie has been empty since December 2025, and is next in line to be retired.&lt;/div&gt;</summary>
		<author><name>Unknown025</name></author>
	</entry>
	<entry>
		<id>https://wiki.helionet.org/index.php?title=VPS_Nodejs&amp;diff=2139</id>
		<title>VPS Nodejs</title>
		<link rel="alternate" type="text/html" href="https://wiki.helionet.org/index.php?title=VPS_Nodejs&amp;diff=2139"/>
		<updated>2025-10-07T20:47:57Z</updated>

		<summary type="html">&lt;p&gt;Unknown025: Minor formatting and grammar changes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
[[File:vpsnode1.jpg|500px|right]]&lt;br /&gt;
&lt;br /&gt;
In https://heliohost.org/chat/, say you are getting a VPS and would like it to come with Hestia installed on it. Hestia is the control panel we will be using.  If you don&#039;t want to pay with PayPal, you may also ask for an alternate payment link.&lt;br /&gt;
&lt;br /&gt;
You should get an email listing your dedicated IP, port, and other info for logging in. You will need an SFTP client such as [https://filezilla-project.org/ FileZilla] to upload files, as well as an SSH client. I personally use and prefer https://termius.com/, because I like the terminal and it doesn&#039;t weirdly close for no reason. I also use NMM File Manager from the [https://play.google.com/store/apps/details?id=in.mfile&amp;amp;pli=1 Google Play Store] for editing the files of the server, since Termius can&#039;t do that.&lt;br /&gt;
&lt;br /&gt;
== In to Hestia ==&lt;br /&gt;
&lt;br /&gt;
Before we log in to the apps, let&#039;s try logging in to Hestia.  In your email see where it says your domain is &amp;lt;code&amp;gt;vps###.heliohost.us&amp;lt;/code&amp;gt;? ### refers to your specific number in the email.  Add a &amp;lt;code&amp;gt;:8083&amp;lt;/code&amp;gt; so the link is &amp;lt;code&amp;gt;vps###.heliohost.us:8083&amp;lt;/code&amp;gt; and go to it in your browser.  You should find a login page with the username being &#039;admin&#039; and password being your password.  Enter those and you are in the Hestia Control Panel.  Explore around it a bit.&lt;br /&gt;
&lt;br /&gt;
Now lets change account setting from nologin to bash, and link our first domain.&lt;br /&gt;
&lt;br /&gt;
To change from nologin to bash, touch the three bars below the top three bars, go to users, and touch the admin user.  Go to the bottom where it says Advanced Options, and change nologin to bash.&lt;br /&gt;
&lt;br /&gt;
[[File:vpsnode2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now lets add a domain so u can have the node site online somewhere.  If you ask in support chat they can give you a free heliohost domain to build with.&lt;br /&gt;
&lt;br /&gt;
Touch the 3 bars again and go to Web.  Add a new domain with the address and ip.  Enable SSL in advanced options.  Mine looks like this.&lt;br /&gt;
&lt;br /&gt;
[[File:vpsnode3.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Terminal Stuff ==&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s open Termius and log in.&lt;br /&gt;
I would take screenshots but Termius doesn&#039;t let me.  Skip the logging in and ai stuff of termius and go straight to Hosts and make a new host.  Set the ip to either of the ips from your email.  I use the ipv6 one and no idea if there are limitations using the ipv4 one or not. :)&lt;br /&gt;
&lt;br /&gt;
port should already be on 22 correctly and enter username &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and your password.&lt;br /&gt;
&lt;br /&gt;
[[File:vpsnode4.jpg]]&lt;br /&gt;
&lt;br /&gt;
You will find terminal stuff is filled with Permissions issues and nearly any command will have to be prefaced with &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;... OR you could just log in as root; so let&#039;s do that now.  Type and enter &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;.  It will ask for your password.  Enter it and afterward you should see you are logged in as root.&lt;br /&gt;
&lt;br /&gt;
Now lets make sure these files are created and give them the correct permissions.  These files are used to create a node.js template in Hestia.  Enter each of these lines in terminal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;touch /usr/local/hestia/data/templates/web/nginx/nodejs3000.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;touch /usr/local/hestia/data/templates/web/nginx/nodejs3000.tpl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;touch /usr/local/hestia/data/templates/web/nginx/nodejs3000.stpl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 777 /usr/local/hestia/data/templates/web/nginx/nodejs3000.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 777 /usr/local/hestia/data/templates/web/nginx/nodejs3000.tpl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 777 /usr/local/hestia/data/templates/web/nginx/nodejs3000.stpl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chmod 755 is supposed to work and give only the owner of the file permission to mess with it.  But the /src folder is deep in the server and owned by root instead of normal accounts and I couldn&#039;t log in as root on nmm that I know of.  So I used 777, but feel free to do it correctly instead (if you know how).&lt;br /&gt;
&lt;br /&gt;
== sftp file editing ==&lt;br /&gt;
&lt;br /&gt;
Now lets add in what is supposed to go in each of these files.  Start the NMM app and log in with the same info you used with Termius.  Then touch your files and go to the lowest level and you should see:&lt;br /&gt;
[[File:vpsnode5.png]]&lt;br /&gt;
&lt;br /&gt;
If you can&#039;t get to the files, you may need to enter in terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sed -i &#039;s/internal-sftp-server.*/internal-sftp/&#039; /etc/ssh/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl restart ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Navigate to the files you touched; they are at &amp;lt;code&amp;gt;/usr/local/hestia/data/templates/web/nginx/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Copy and paste these in to each file and save.  Also, to even see files, you will probably have to deal with permissions.  It may be handy to know that &amp;lt;code&amp;gt;sudo chmod 777 -R directory&amp;lt;/code&amp;gt;, with directory being your target directory, applies the permission to everything in that folder.  Tho beware doing that to deeper folders than just your node project.  i just did it to /etc and it blew up my whole vps.&lt;br /&gt;
&lt;br /&gt;
Here is the text for nodejs3000.sh:&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/bash&lt;br /&gt;
user=$1&lt;br /&gt;
domain=$2&lt;br /&gt;
ip=$3&lt;br /&gt;
home=$4&lt;br /&gt;
docroot=$5&lt;br /&gt;
mkdir &amp;quot;$home/$user/web/$domain/nodeapp&amp;quot;&lt;br /&gt;
chown -R $user:$user &amp;quot;$home/$user/web/$domain/nodeapp&amp;quot;&lt;br /&gt;
rm &amp;quot;$home/$user/web/$domain/nodeapp/app.sock&amp;quot;&lt;br /&gt;
runuser -l $user -c &amp;quot;pm2 start $home/$user/web/$domain/nodeapp/app.js&amp;quot;&lt;br /&gt;
sleep 5&lt;br /&gt;
chmod 777 &amp;quot;$home/$user/web/$domain/nodeapp/app.sock&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Info|You could edit this file to change the entrypoint from app.js to something else like server.js}}&lt;br /&gt;
&lt;br /&gt;
Here is the text for nodejs3000.tpl:&lt;br /&gt;
&amp;lt;pre&amp;gt;server {&lt;br /&gt;
    listen %ip%:%proxy_port%;&lt;br /&gt;
    server_name %domain_idn% %alias_idn%;&lt;br /&gt;
    error_log /var/log/%web_system%/domains/%domain%.error.log error;&lt;br /&gt;
&lt;br /&gt;
    location / {&lt;br /&gt;
        proxy_pass http://127.0.0.1:3000;&lt;br /&gt;
        proxy_http_version 1.1;&lt;br /&gt;
        proxy_set_header Upgrade $http_upgrade;&lt;br /&gt;
        proxy_set_header Connection &#039;upgrade&#039;;&lt;br /&gt;
        proxy_set_header Host $host;&lt;br /&gt;
        proxy_cache_bypass $http_upgrade;&lt;br /&gt;
    }&lt;br /&gt;
    location /error/ {&lt;br /&gt;
        alias %home%/%user%/web/%domain%/document_errors/;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    location @fallback {&lt;br /&gt;
        proxy_pass http://127.0.0.1:3000:/$1;&lt;br /&gt;
    }&lt;br /&gt;
    location ~ /\.ht {return 404;}&lt;br /&gt;
    location ~ /\.svn/ {return 404;}&lt;br /&gt;
    location ~ /\.git/ {return 404;}&lt;br /&gt;
    location ~ /\.hg/ {return 404;}&lt;br /&gt;
    location ~ /\.bzr/ {return 404;}&lt;br /&gt;
    &lt;br /&gt;
    include %home%/%user%/conf/web/nginx.%domain%.conf*;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the text for nodejs3000.stpl:&lt;br /&gt;
&amp;lt;pre&amp;gt;server {&lt;br /&gt;
    listen %ip%:%proxy_port%;&lt;br /&gt;
    server_name %domain_idn% %alias_idn%;&lt;br /&gt;
    return 301 https://%domain_idn%$request_uri;&lt;br /&gt;
}&lt;br /&gt;
server {&lt;br /&gt;
    listen %ip%:%proxy_ssl_port% http2 ssl;&lt;br /&gt;
    server_name %domain_idn% %alias_idn%;&lt;br /&gt;
    ssl_certificate %ssl_pem%;&lt;br /&gt;
    ssl_certificate_key %ssl_key%;&lt;br /&gt;
    error_log /var/log/%web_system%/domains/%domain%.error.log error;&lt;br /&gt;
    gzip on;&lt;br /&gt;
    gzip_min_length 1100;&lt;br /&gt;
    gzip_buffers 4 32k;&lt;br /&gt;
    gzip_types image/svg+xml svg svgz text/plain application/x-javascript text/xml text/css;&lt;br /&gt;
    gzip_vary on;&lt;br /&gt;
    location / {&lt;br /&gt;
        proxy_pass http://127.0.0.1:3000;&lt;br /&gt;
        proxy_http_version 1.1;&lt;br /&gt;
        proxy_set_header Upgrade $http_upgrade;&lt;br /&gt;
        proxy_set_header Connection &#039;upgrade&#039;;&lt;br /&gt;
        proxy_set_header Host $host;&lt;br /&gt;
        proxy_cache_bypass $http_upgrade;&lt;br /&gt;
    }&lt;br /&gt;
    location /error/ {&lt;br /&gt;
        alias %home%/%user%/web/%domain%/document_errors/;&lt;br /&gt;
    }&lt;br /&gt;
    location @fallback {&lt;br /&gt;
    proxy_pass https://127.0.0.1:3000:/$1;&lt;br /&gt;
    }&lt;br /&gt;
    location ~ /\.ht {return 404;}&lt;br /&gt;
    location ~ /\.svn/ {return 404;}&lt;br /&gt;
    location ~ /\.git/ {return 404;}&lt;br /&gt;
    location ~ /\.hg/ {return 404;}&lt;br /&gt;
    location ~ /\.bzr/ {return 404;}&lt;br /&gt;
&lt;br /&gt;
    include %home%/%user%/conf/web/%domain%/nginx.ssl.conf_*;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== finally node stuff ==&lt;br /&gt;
&lt;br /&gt;
At this point you should probably install npm and also pm2 to start the app correctly.  i had eaddrinuse errors when starting not using pm2.&lt;br /&gt;
so do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt update &amp;amp;&amp;amp; apt install npm -y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;npm install pm2 -g&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
finally we are almost there.  Now that those three files are correct, go back in to the hestia control panel, to web, to the domain, to advanced options, and under proxy template select nodejs3000.&lt;br /&gt;
[[File:vpsnode6.jpg]]&lt;br /&gt;
finally we are to the simple node stuff&lt;br /&gt;
&lt;br /&gt;
in termius use cd to navigate to the directory referenced by the template:&lt;br /&gt;
&amp;lt;code&amp;gt;cd /home/admin/web/allo.helioho.st/nodeapp&amp;lt;/code&amp;gt;&lt;br /&gt;
Use your domain instead of allo.helioho.st.&lt;br /&gt;
{{Caution|also people will tell you to make a new user account instead of do it under admin.  I didn&#039;t tho.  I just wanted to complete the process of getting a node site fully online; not delve in to accounts.}}&lt;br /&gt;
{{Info|Making my first real site after this tutorial; I started with making a dedicated account for it.}}&lt;br /&gt;
&lt;br /&gt;
now we npm init in that folder to start a node project:&lt;br /&gt;
&amp;lt;code&amp;gt;npm init -y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now here is a starter hello world node file.&lt;br /&gt;
&amp;lt;pre&amp;gt;const http = require(&#039;http&#039;); // Import the built-in http module&lt;br /&gt;
&lt;br /&gt;
    const hostname = &amp;quot;127.0.0.1&amp;quot;&lt;br /&gt;
    const port = 3000; // Port to listen on&lt;br /&gt;
&lt;br /&gt;
    // Create a server instance&lt;br /&gt;
    const server = http.createServer((req, res) =&amp;gt; {&lt;br /&gt;
      // Set the response header&lt;br /&gt;
      res.writeHead(200, { &#039;Content-Type&#039;: &#039;text/plain&#039; });&lt;br /&gt;
&lt;br /&gt;
      // Send the response body&lt;br /&gt;
      res.end(&#039;Hello, World!\n&#039;);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
server.on(&#039;listening&#039;,function(){&lt;br /&gt;
    console.log(&#039;ok, server is running&#039;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
    // Start the server and listen for incoming requests&lt;br /&gt;
    server.listen(port, hostname, () =&amp;gt; {&lt;br /&gt;
      console.log(`Server running at http://${hostname}:${port}/`);&lt;br /&gt;
    });&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Danger|All these places in files that say ip 127.0.0.1 keep them like that.  Don&#039;t use your own ip.  It&#039;s supposed to say 127.0.0.1.}}&lt;br /&gt;
&lt;br /&gt;
Open up nmm again and navigate to &amp;lt;code&amp;gt;/home/admin/web/allo.helioho.st/nodeapp&amp;lt;/code&amp;gt; and create a file named app.js and paste in the code.&lt;br /&gt;
&lt;br /&gt;
In termius terminal be cd&#039;d in to that folder and type:&lt;br /&gt;
&amp;lt;code&amp;gt;pm2 start app.js&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now go to your domain and it should say hello world :)&lt;br /&gt;
&lt;br /&gt;
{{Info|to run multiple domains, make a template for each.  Have your second node project use port 3001 instead of 3000.  You would then repeat the steps of touching, chmodding, and editing the three node3000 files, but this time call them node3001 and change the ports mentioned in them from 3000 to 3001.  Then, as the template on your second node project, you would select node3001 instead of node3000.}}&lt;br /&gt;
&lt;br /&gt;
[https://wiki.helionet.org/VPS_Domain here]&#039;s what i did next; setting up custom domains.&lt;/div&gt;</summary>
		<author><name>Unknown025</name></author>
	</entry>
	<entry>
		<id>https://wiki.helionet.org/index.php?title=VPS_Domain&amp;diff=2133</id>
		<title>VPS Domain</title>
		<link rel="alternate" type="text/html" href="https://wiki.helionet.org/index.php?title=VPS_Domain&amp;diff=2133"/>
		<updated>2025-10-07T03:30:36Z</updated>

		<summary type="html">&lt;p&gt;Unknown025: /* Setting up Custom Domain via Cloudflare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are two options for domains.&lt;br /&gt;
&lt;br /&gt;
== Setting up Custom Domain via Namecheap ==&lt;br /&gt;
Essentially, for Namecheap, just follow [https://wiki.helionet.org/Namecheap_DNS_Records this] tutorial and be sure to ask an administrator (tell them your domain) to set up your DNS if you are using HelioHost&#039;s nameservers.  That&#039;s really all you need to do.&lt;br /&gt;
&lt;br /&gt;
== Setting up Custom Domain via Cloudflare ==&lt;br /&gt;
[[File:customdomain3.jpg|500px|right]]&lt;br /&gt;
First, let&#039;s configure DNS.  Go to the DNS option on the dashboard and then to Records.&lt;br /&gt;
[[File:customdomain5.jpg|500px|right]]&lt;br /&gt;
Grab the IPv4 address from your HelioHost email and create an &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; record. Do the same with the IPv6 address and &amp;lt;code&amp;gt;AAAA&amp;lt;/code&amp;gt; record. Also, feel free to make a CNAME record (which will allow &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; to redirect to your main site).&lt;br /&gt;
[[File:customdomain4.jpg|500px|right]]&lt;br /&gt;
Now, on to the Hestia control panel. Go to Users, find the user which is the owner of this domain, and click &amp;lt;code&amp;gt;edit settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[File:customdomain6.jpg|500px|right]]&lt;br /&gt;
Go to Advanced Settings and change the nameservers to the ones provided by Cloudflare (like I did here).&lt;br /&gt;
[[File:customdomain1.jpg|500px|right]]&lt;br /&gt;
Now, back to Cloudflare, find the SSL settings.&lt;br /&gt;
[[File:customdomain2.jpg|500px|right]]&lt;br /&gt;
Set SSL to &amp;lt;code&amp;gt;Full (Strict)&amp;lt;/code&amp;gt;, which is Cloudflare&#039;s recommendation for security.&lt;br /&gt;
Back in your Hestia control panel, you can go to the user that owns the site, to the site, to the site options, and check SSL and Obtain Your Own.&lt;br /&gt;
[[File:Vpsnode3.jpg|500px|right]]&lt;br /&gt;
And with that, your domain should be connected and secure.&lt;br /&gt;
{{Info|It may show a warning next to the URL for the Namecheap site because you are self-creating your SSL.  At least it isn&#039;t a real security risk.}}&lt;/div&gt;</summary>
		<author><name>Unknown025</name></author>
	</entry>
	<entry>
		<id>https://wiki.helionet.org/index.php?title=VPS_Domain&amp;diff=2132</id>
		<title>VPS Domain</title>
		<link rel="alternate" type="text/html" href="https://wiki.helionet.org/index.php?title=VPS_Domain&amp;diff=2132"/>
		<updated>2025-10-07T03:20:35Z</updated>

		<summary type="html">&lt;p&gt;Unknown025: /* Setting up Custom Domain via Cloudflare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are two options for domains.&lt;br /&gt;
&lt;br /&gt;
== Setting up Custom Domain via Namecheap ==&lt;br /&gt;
Essentially, for Namecheap, just follow [https://wiki.helionet.org/Namecheap_DNS_Records this] tutorial and be sure to ask an administrator (tell them your domain) to set up your DNS if you are using HelioHost&#039;s nameservers.  That&#039;s really all you need to do.&lt;br /&gt;
&lt;br /&gt;
== Setting up Custom Domain via Cloudflare ==&lt;br /&gt;
[[File:customdomain3.jpg]]&lt;br /&gt;
First, let&#039;s configure DNS.  Go to the DNS option on the dashboard and then to Records.&lt;br /&gt;
[[File:customdomain5.jpg]]&lt;br /&gt;
Grab the IPv4 address from your HelioHost email and create an &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; record. Do the same with the IPv6 address and &amp;lt;code&amp;gt;AAAA&amp;lt;/code&amp;gt; record. Also, feel free to make a CNAME record (which will allow &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; to redirect to your main site).&lt;br /&gt;
[[File:customdomain4.jpg]]&lt;br /&gt;
Now, on to the Hestia control panel. Go to Users, find the user which is the owner of this domain, and click &amp;lt;code&amp;gt;edit settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[File:customdomain6.jpg]]&lt;br /&gt;
Go to Advanced Settings and change the nameservers to the ones provided by Cloudflare (like I did here).&lt;br /&gt;
[[File:customdomain1.jpg]]&lt;br /&gt;
Now, back to Cloudflare, find the SSL settings.&lt;br /&gt;
[[File:customdomain2.jpg]]&lt;br /&gt;
Set SSL to &amp;lt;code&amp;gt;Full (Strict)&amp;lt;/code&amp;gt;, which is Cloudflare&#039;s recommendation for security.&lt;br /&gt;
Back in your Hestia control panel, you can go to the user that owns the site, to the site, to the site options, and check SSL and Obtain Your Own.&lt;br /&gt;
[[File:Vpsnode3.jpg]]&lt;br /&gt;
And with that, your domain should be connected and secure.&lt;br /&gt;
{{Info|It may show a warning next to the URL for the Namecheap site because you are self-creating your SSL.  At least it isn&#039;t a real security risk.}}&lt;/div&gt;</summary>
		<author><name>Unknown025</name></author>
	</entry>
	<entry>
		<id>https://wiki.helionet.org/index.php?title=VPS_Domain&amp;diff=2131</id>
		<title>VPS Domain</title>
		<link rel="alternate" type="text/html" href="https://wiki.helionet.org/index.php?title=VPS_Domain&amp;diff=2131"/>
		<updated>2025-10-07T03:12:35Z</updated>

		<summary type="html">&lt;p&gt;Unknown025: /* Setting up Custom Domain via Namecheap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are two options for domains.&lt;br /&gt;
&lt;br /&gt;
== Setting up Custom Domain via Namecheap ==&lt;br /&gt;
Essentially, for Namecheap, just follow [https://wiki.helionet.org/Namecheap_DNS_Records this] tutorial and be sure to ask an administrator (tell them your domain) to set up your DNS if you are using HelioHost&#039;s nameservers.  That&#039;s really all you need to do.&lt;br /&gt;
&lt;br /&gt;
== Setting up Custom Domain via Cloudflare ==&lt;br /&gt;
[[File:customdomain3.jpg]]&lt;br /&gt;
First lets set the DNS.  Go to the DNS option on the dashboard and then to Records.&lt;br /&gt;
[[File:customdomain5.jpg]]&lt;br /&gt;
Grab that ipv4 ip from your heliohost email and make an &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; set to it.  Do the same with the ipv6 and &amp;lt;code&amp;gt;aaaa&amp;lt;/code&amp;gt;.  Also feel free to make a cname telling the internets that the www form of your site also links to it.&lt;br /&gt;
[[File:customdomain4.jpg]]&lt;br /&gt;
Now in to the hestia control panel go to users, find the user which you have as owner of this domain and hit &amp;lt;code&amp;gt;edit settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[File:customdomain6.jpg]]&lt;br /&gt;
Go to advanced settings and change the nameservers to the ones provided by cloudflare like I did here.&lt;br /&gt;
[[File:customdomain1.jpg]]&lt;br /&gt;
Now back to cloudflare to SSL.&lt;br /&gt;
[[File:customdomain2.jpg]]&lt;br /&gt;
Set it to Full(Strict) which is apparently the supersecure way.&lt;br /&gt;
Now in your hestia control panel, you can go to the user that owns the site, to the site, to the site options, and check SSL and Obtain Your Own.&lt;br /&gt;
[[File:Vpsnode3.jpg]]&lt;br /&gt;
And with that, your domain should be connected and secure.&lt;br /&gt;
{{Info|it may show a warning next to the url for the namecheap site because you are selfcreating your SSL.  At least it isn&#039;t a real security risk}}&lt;/div&gt;</summary>
		<author><name>Unknown025</name></author>
	</entry>
	<entry>
		<id>https://wiki.helionet.org/index.php?title=NGINX&amp;diff=956</id>
		<title>NGINX</title>
		<link rel="alternate" type="text/html" href="https://wiki.helionet.org/index.php?title=NGINX&amp;diff=956"/>
		<updated>2024-10-31T01:20:23Z</updated>

		<summary type="html">&lt;p&gt;Unknown025: /* Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NGINX =&lt;br /&gt;
&lt;br /&gt;
= Preface =&lt;br /&gt;
&lt;br /&gt;
NGINX is described as a &amp;quot;web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache&amp;quot;.&lt;br /&gt;
In practice, it&#039;s a powerful alternative to Apache, as it&#039;s more memory efficient. While configuring NGINX may seem a&lt;br /&gt;
little foreign if coming from Apache&#039;s &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; override based system, there&#039;s a lot to enjoy.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
While NGINX can be installed on a variety of systems, we&#039;ll focus on Ubuntu. As with most installations, it&#039;s highly&lt;br /&gt;
recommended to update your system beforehand, using &amp;lt;code&amp;gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Danger|&lt;br /&gt;
Using &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; is equivalent to running a command with root/administrative privileges! While&lt;br /&gt;
this tutorial relies heavily on its usage, most normal commands &#039;&#039;&#039;should not&#039;&#039;&#039; be run with the &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; prefix, as that&#039;s&lt;br /&gt;
a surefire way to potentially cause irreversible damage to your system configuration.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
With our system up-to-date, we can now run &amp;lt;code&amp;gt;sudo apt install nginx&amp;lt;/code&amp;gt;. This command will install and configure a default&lt;br /&gt;
installation of NGINX, which means we should be able to access our VPS from a web browser...as soon as we configure our&lt;br /&gt;
firewall.&lt;br /&gt;
&lt;br /&gt;
Using &amp;quot;UFW&amp;quot; (Universal Fire Wall), we can see using &amp;lt;code&amp;gt;sudo ufw app list&amp;lt;/code&amp;gt; that NGINX has added three new profiles for us&lt;br /&gt;
to choose from (&#039;Nginx Full&#039;, &#039;Nginx HTTP&#039;, &#039;Nginx HTTPS&#039;). For our purposes, we&#039;ll enable &#039;Nginx Full&#039;&lt;br /&gt;
using &amp;lt;code&amp;gt;sudo ufw allow &#039;Nginx Full&#039;&amp;lt;/code&amp;gt;. *Now* we should be able to see our VPS from a web browser, using&lt;br /&gt;
either &amp;lt;code&amp;gt;http://[Dedicated IPv4]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;http://vps#.heliohost.us&amp;lt;/code&amp;gt;, and see the default NGINX landing page.&lt;br /&gt;
&lt;br /&gt;
= Configuring NGINX =&lt;br /&gt;
&lt;br /&gt;
= Creating a new content directory =&lt;br /&gt;
&lt;br /&gt;
While being able to see the default NGINX page is great, it&#039;s time to configure NGINX&#039;s &amp;quot;server blocks&amp;quot;, which will&lt;br /&gt;
allow us to define how NGINX behaves on a &amp;quot;per-domain&amp;quot; basis. Let&#039;s start by creating a new directory for our web&lt;br /&gt;
content, using `sudo mkdir -p /var/www/[domain name]/html` (replace &amp;quot;[domain name]&amp;quot; with your own). In this case, `-p`&lt;br /&gt;
is used to create any missing parent directories, while `sudo` is used as the `/var` directory is system-protected.&lt;br /&gt;
&lt;br /&gt;
Now, we can make our life easier by changing the owner and permissions of our new folder, so we won&#039;t have to repeatedly&lt;br /&gt;
use `sudo` permissions to access our own content. Using `sudo chown -R $USER:$USER /var/www/[domain name]/html`, we&lt;br /&gt;
can &amp;quot;change owner&amp;quot; to our current user (`-R` applies the command recursively to all the contents, if applicable). We&lt;br /&gt;
also need to set the directory&#039;s permissions, using `sudo chmod -R 755 /var/www/[domain name]` (chmod means &amp;quot;change&lt;br /&gt;
mode&amp;quot;, while 755 is the numerical representation of &amp;quot;read and execute access for everyone, write access for the owner&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Any file we save in this new directory will be served using NGINX. As a simple test, we&#039;ll create a simple HTML file as&lt;br /&gt;
follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Home&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;My NGINX Config is Working!&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pat yourself on the back, for a job well done.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Creating a server block =&lt;br /&gt;
&lt;br /&gt;
For every domain that is associated with your VPS, you&#039;ll want to create an NGINX configuration file, known as a &amp;quot;server&lt;br /&gt;
block&amp;quot;, located in `/etc/nginx/sites-available`. For example, we&#039;ll create one for our VPS&lt;br /&gt;
with `sudo vi /etc/nginx/sites-available/[domain name]` (no file ending like &amp;quot;.txt&amp;quot; or &amp;quot;.json&amp;quot;, only your domain name).&lt;br /&gt;
For a brief Vim tutorial, see [here](#using-vim). Enter &amp;quot;insert&amp;quot; mode using &amp;quot;i&amp;quot;, and paste the following default code&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
        listen 80;&lt;br /&gt;
        listen [::]:80;&lt;br /&gt;
&lt;br /&gt;
        root /var/www/[domain name]/html;&lt;br /&gt;
        index index.html index.htm index.nginx-debian.html;&lt;br /&gt;
&lt;br /&gt;
        server_name yourdomain.com;&lt;br /&gt;
&lt;br /&gt;
        location / {&lt;br /&gt;
                try_files $uri $uri/ =404;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once again, __make sure to edit all the references to match your own domain name__. Once you&#039;re finished, press &amp;quot;ESC&amp;quot;,&lt;br /&gt;
followed by `:wq`. If you get an error saying &amp;quot;This file is readonly&amp;quot;, make sure you are editing the file with `sudo`&lt;br /&gt;
permissions.&lt;br /&gt;
&lt;br /&gt;
Now you may have noticed we created this configuration file in `sites-available`, &#039;&#039;&#039;not&#039;&#039;&#039; `sites-enabled`. Let&#039;s rectify&lt;br /&gt;
that, using a symbolic link (which is, in layman&#039;s terms, a shortcut for the system to find the original file in another&lt;br /&gt;
path). Using `sudo ln -s /etc/nginx/sites-available/[domain name] /etc/nginx/sites-enabled/`, we can accomplish that&lt;br /&gt;
task.&lt;br /&gt;
&lt;br /&gt;
An easy way to check if everything&#039;s configured correctly, is to use `sudo nginx -t`, which will validate your NGINX&lt;br /&gt;
configuration.&lt;br /&gt;
&lt;br /&gt;
To update our changes, we can use `sudo systemctl nginx restart`, which will restart NGINX.&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now see your HTML page served from your VPS to your browser!&lt;br /&gt;
&lt;br /&gt;
= Adding SSL =&lt;br /&gt;
&lt;br /&gt;
No website is complete (or secure) without SSL! As everyone else, we&#039;ll use [https://letsencrypt.org/ Let&#039;s Encrypt] to achieve this.&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll need to install Certbot, which is a commandline utility for automating the process.&lt;br /&gt;
Run `sudo apt install certbot python3-certbot-nginx` (&#039;&#039;&#039;not the same as the Apache version&#039;&#039;&#039;), which will install Certbot and its dependencies.&lt;br /&gt;
&lt;br /&gt;
Now we can get a certificate. Run `sudo certbot --nginx -d yourdomain.com`, and follow the on-screen instructions to complete the process. Make sure you enabled SSL using UFW!&lt;br /&gt;
&lt;br /&gt;
Your website will now be secure with SSL, and your SSL certificate will be automatically renewed every three months.&lt;br /&gt;
&lt;br /&gt;
= Using Vim =&lt;br /&gt;
&lt;br /&gt;
Vim is the default text editor for most Unix based systems. While it&#039;s a ubiquitous program, it&#039;s infamous for being&lt;br /&gt;
hard to learn, especially since saving or exiting is not as intuitive as other comparable programs. However, using it&lt;br /&gt;
may not be as hard as it seems.&lt;br /&gt;
&lt;br /&gt;
To edit a file, use `vi file.txt`, which will open the Vim interface. If you supply a nonexistent filename, Vim will&lt;br /&gt;
create a file instead.&lt;br /&gt;
&lt;br /&gt;
To enter &amp;quot;insert&amp;quot; mode, press &amp;quot;i&amp;quot;. This will allow you to edit the current file, instead of running commands inside Vim.&lt;br /&gt;
To exit &amp;quot;insert&amp;quot; mode, press &amp;quot;ESC&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To save a file, make sure you are not in &amp;quot;insert&amp;quot; mode, before entering `:wq` (which will &#039;&#039;&#039;write&#039;&#039;&#039;, &#039;&#039;&#039;quit&#039;&#039;&#039;). If you&lt;br /&gt;
want to exit without saving your changes, enter `:q!`, which will &#039;&#039;&#039;force quit&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Unknown025</name></author>
	</entry>
	<entry>
		<id>https://wiki.helionet.org/index.php?title=NGINX&amp;diff=955</id>
		<title>NGINX</title>
		<link rel="alternate" type="text/html" href="https://wiki.helionet.org/index.php?title=NGINX&amp;diff=955"/>
		<updated>2024-10-31T01:18:36Z</updated>

		<summary type="html">&lt;p&gt;Unknown025: /* Preface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NGINX =&lt;br /&gt;
&lt;br /&gt;
= Preface =&lt;br /&gt;
&lt;br /&gt;
NGINX is described as a &amp;quot;web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache&amp;quot;.&lt;br /&gt;
In practice, it&#039;s a powerful alternative to Apache, as it&#039;s more memory efficient. While configuring NGINX may seem a&lt;br /&gt;
little foreign if coming from Apache&#039;s &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; override based system, there&#039;s a lot to enjoy.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
While NGINX can be installed on a variety of systems, we&#039;ll focus on Ubuntu. As with most installations, it&#039;s highly&lt;br /&gt;
recommended to update your system beforehand, using `sudo apt update &amp;amp;&amp;amp; sudo apt upgrade`.&lt;br /&gt;
&lt;br /&gt;
{{Danger|&lt;br /&gt;
Using `sudo` is equivalent to running a command with root/administrative privileges! While&lt;br /&gt;
this tutorial relies heavily on its usage, most normal commands &#039;&#039;&#039;should not&#039;&#039;&#039; be run with the `sudo` prefix, as that&#039;s&lt;br /&gt;
a surefire way to potentially cause irreversible damage to your system configuration.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
With our system up-to-date, we can now run `sudo apt install nginx`. This command will install and configure a default&lt;br /&gt;
installation of NGINX, which means we should be able to access our VPS from a web browser...as soon as we configure our&lt;br /&gt;
firewall.&lt;br /&gt;
&lt;br /&gt;
Using &amp;quot;UFW&amp;quot; (Universal Fire Wall), we can see using `sudo ufw app list` that NGINX has added three new profiles for us&lt;br /&gt;
to choose from (&#039;Nginx Full&#039;, &#039;Nginx HTTP&#039;, &#039;Nginx HTTPS&#039;). For our purposes, we&#039;ll enable &#039;Nginx Full&#039;&lt;br /&gt;
using `sudo ufw allow &#039;Nginx Full&#039;`. *Now* we should be able to see our VPS from a web browser, using&lt;br /&gt;
either `http://[Dedicated IPv4]` or `http://vps#.heliohost.us`, and see the default NGINX landing page.&lt;br /&gt;
&lt;br /&gt;
= Configuring NGINX =&lt;br /&gt;
&lt;br /&gt;
= Creating a new content directory =&lt;br /&gt;
&lt;br /&gt;
While being able to see the default NGINX page is great, it&#039;s time to configure NGINX&#039;s &amp;quot;server blocks&amp;quot;, which will&lt;br /&gt;
allow us to define how NGINX behaves on a &amp;quot;per-domain&amp;quot; basis. Let&#039;s start by creating a new directory for our web&lt;br /&gt;
content, using `sudo mkdir -p /var/www/[domain name]/html` (replace &amp;quot;[domain name]&amp;quot; with your own). In this case, `-p`&lt;br /&gt;
is used to create any missing parent directories, while `sudo` is used as the `/var` directory is system-protected.&lt;br /&gt;
&lt;br /&gt;
Now, we can make our life easier by changing the owner and permissions of our new folder, so we won&#039;t have to repeatedly&lt;br /&gt;
use `sudo` permissions to access our own content. Using `sudo chown -R $USER:$USER /var/www/[domain name]/html`, we&lt;br /&gt;
can &amp;quot;change owner&amp;quot; to our current user (`-R` applies the command recursively to all the contents, if applicable). We&lt;br /&gt;
also need to set the directory&#039;s permissions, using `sudo chmod -R 755 /var/www/[domain name]` (chmod means &amp;quot;change&lt;br /&gt;
mode&amp;quot;, while 755 is the numerical representation of &amp;quot;read and execute access for everyone, write access for the owner&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Any file we save in this new directory will be served using NGINX. As a simple test, we&#039;ll create a simple HTML file as&lt;br /&gt;
follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Home&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;My NGINX Config is Working!&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pat yourself on the back, for a job well done.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Creating a server block =&lt;br /&gt;
&lt;br /&gt;
For every domain that is associated with your VPS, you&#039;ll want to create an NGINX configuration file, known as a &amp;quot;server&lt;br /&gt;
block&amp;quot;, located in `/etc/nginx/sites-available`. For example, we&#039;ll create one for our VPS&lt;br /&gt;
with `sudo vi /etc/nginx/sites-available/[domain name]` (no file ending like &amp;quot;.txt&amp;quot; or &amp;quot;.json&amp;quot;, only your domain name).&lt;br /&gt;
For a brief Vim tutorial, see [here](#using-vim). Enter &amp;quot;insert&amp;quot; mode using &amp;quot;i&amp;quot;, and paste the following default code&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
        listen 80;&lt;br /&gt;
        listen [::]:80;&lt;br /&gt;
&lt;br /&gt;
        root /var/www/[domain name]/html;&lt;br /&gt;
        index index.html index.htm index.nginx-debian.html;&lt;br /&gt;
&lt;br /&gt;
        server_name yourdomain.com;&lt;br /&gt;
&lt;br /&gt;
        location / {&lt;br /&gt;
                try_files $uri $uri/ =404;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once again, __make sure to edit all the references to match your own domain name__. Once you&#039;re finished, press &amp;quot;ESC&amp;quot;,&lt;br /&gt;
followed by `:wq`. If you get an error saying &amp;quot;This file is readonly&amp;quot;, make sure you are editing the file with `sudo`&lt;br /&gt;
permissions.&lt;br /&gt;
&lt;br /&gt;
Now you may have noticed we created this configuration file in `sites-available`, &#039;&#039;&#039;not&#039;&#039;&#039; `sites-enabled`. Let&#039;s rectify&lt;br /&gt;
that, using a symbolic link (which is, in layman&#039;s terms, a shortcut for the system to find the original file in another&lt;br /&gt;
path). Using `sudo ln -s /etc/nginx/sites-available/[domain name] /etc/nginx/sites-enabled/`, we can accomplish that&lt;br /&gt;
task.&lt;br /&gt;
&lt;br /&gt;
An easy way to check if everything&#039;s configured correctly, is to use `sudo nginx -t`, which will validate your NGINX&lt;br /&gt;
configuration.&lt;br /&gt;
&lt;br /&gt;
To update our changes, we can use `sudo systemctl nginx restart`, which will restart NGINX.&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now see your HTML page served from your VPS to your browser!&lt;br /&gt;
&lt;br /&gt;
= Adding SSL =&lt;br /&gt;
&lt;br /&gt;
No website is complete (or secure) without SSL! As everyone else, we&#039;ll use [https://letsencrypt.org/ Let&#039;s Encrypt] to achieve this.&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll need to install Certbot, which is a commandline utility for automating the process.&lt;br /&gt;
Run `sudo apt install certbot python3-certbot-nginx` (&#039;&#039;&#039;not the same as the Apache version&#039;&#039;&#039;), which will install Certbot and its dependencies.&lt;br /&gt;
&lt;br /&gt;
Now we can get a certificate. Run `sudo certbot --nginx -d yourdomain.com`, and follow the on-screen instructions to complete the process. Make sure you enabled SSL using UFW!&lt;br /&gt;
&lt;br /&gt;
Your website will now be secure with SSL, and your SSL certificate will be automatically renewed every three months.&lt;br /&gt;
&lt;br /&gt;
= Using Vim =&lt;br /&gt;
&lt;br /&gt;
Vim is the default text editor for most Unix based systems. While it&#039;s a ubiquitous program, it&#039;s infamous for being&lt;br /&gt;
hard to learn, especially since saving or exiting is not as intuitive as other comparable programs. However, using it&lt;br /&gt;
may not be as hard as it seems.&lt;br /&gt;
&lt;br /&gt;
To edit a file, use `vi file.txt`, which will open the Vim interface. If you supply a nonexistent filename, Vim will&lt;br /&gt;
create a file instead.&lt;br /&gt;
&lt;br /&gt;
To enter &amp;quot;insert&amp;quot; mode, press &amp;quot;i&amp;quot;. This will allow you to edit the current file, instead of running commands inside Vim.&lt;br /&gt;
To exit &amp;quot;insert&amp;quot; mode, press &amp;quot;ESC&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To save a file, make sure you are not in &amp;quot;insert&amp;quot; mode, before entering `:wq` (which will &#039;&#039;&#039;write&#039;&#039;&#039;, &#039;&#039;&#039;quit&#039;&#039;&#039;). If you&lt;br /&gt;
want to exit without saving your changes, enter `:q!`, which will &#039;&#039;&#039;force quit&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Unknown025</name></author>
	</entry>
</feed>