Self Hosting – Mastering Efiecy Tips and Tricks

Share:

TABLE OF CONTENTS

Creating DNS Records

purchased domain from Namecheap , and using Cloudfare as DNS server…need to add an A record in the DNS record management part in Cloudfare dashboard…

  • use @ for root
  • put the ip of your server in the IPv$ address section
  • disable proxy status (we’re setup in our server later)
  • and set TTL (time to leave) as low as possible to avoid cache
  • finally click save

Markdown Monster icon

Query DNS Records with Dig

from your linux system run

dig softpipertesting.xyz A
dig +trace softpipertesting.xyz A

subdomain, CNAME, TEXT Records

doc link: https://wizardzines.com/zines/dns/ https://messwithdns.net/

SSH to your VPS with a domain name

 ssh [email protected]

lsof -i :80

This will show the process ID (PID) of the service using port 80.

lsof -i :80

nc -l 80

listen to requests coming to port 80

nc -l 80

we can respond to the requests from netcat

HTTP/1.1 200 OK
Content-type: text/html

<body style = "background:black;color:white">
<h1>hello world</h1>
</body>

Install Caddy web server (alternative of Nginx)

doc link: https://caddyserver.com/docs/install#debian-ubuntu-raspbian

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

check if caddy is running

sudo service caddy status

add https

sudo nano /etc/caddy/Caddyfile

then replace :80 with domain name , say softpipertesting.xyz

restart the caddy service

service caddy restart

redirect ip to the root domain

213.210.21.240:80 {
        redir https://softpipertesting.xyz{uri}
}

add this to the /etc/caddy/Caddyfile file.

Multiple Caddyfile Setup

navigate to /ctc/caddy

then

mkdir sites-available 
mkdir sites-enabled
cp Caddyfile sites-available/Caddyfile
nano sites-available/Caddyfile

keep only , remove the rest

213.210.21.240:80 {
        redir https://softpipertesting.xyz{uri}
}

then

cd sites-available
mv Caddyfile http-redirects

file name is changed to http-redirects

navigate back to /etc/caddy

nano Caddyfile

modify the file to

softpipertesting.xyz {
        # Set this path to your site's directory.
        root * /usr/share/caddy

        # Enable the static file server.
        file_server

        # Another common task is to set up a reverse proxy:
        # reverse_proxy localhost:8080

        # Or serve a PHP site through php-fpm:
        # php_fastcgi localhost:9000
}

import sites-enabled/*

create a symbolic link for http-redirects file from sites-available to sites-enabled

ln -s /etc/caddy/sites-available/http-redirects /etc/caddy/sites-enabled/http-redirects

check if the link is created, from /etc/caddy/sites-enabled

ls -l

it will show , http-redirects -> /etc/caddy/sites-available/http-redirects

restart the caddy service

caddy service restart

redirect www subdomain to root domain

edit the http-redirects file in sites-available folder and add www.softpipertesting.xyz as space separated

213.210.21.240:80 www.softpipertesting.xyz {
        redir https://softpipertesting.xyz{uri}
}

setup /var/www folder

navigate to the var folder and

mkdir www
mkdir softpipertesting.xyz 

time 37 min , see to folder security

create an index file ,

cd softpipertesting.xyz
nano index.html

navigate to the Caddy file in /etc/caddy and change the root

root * /var/www/softpipertesting.xyz

Transfer files to the server with scp

scp index.html [email protected]:/var/www/softpipertesting.xyz

clone a git repository (public) to server

go to the directory and then clone the repository

git clone https://github.com/Al-ArafatSiddique/testing.git . 

Hide files from Caddy File server

anyone can access https://softpipertesting.xyz/.git/HEAD we need to hide it… go to the Caddyfile…modify it

softpipertesting.xyz {
        # Set this path to your site's directory.
        root * /var/www/softpipertesting.xyz

        # Enable the static file server.
        file_server {
                hide .git
        }

handle errors in Caddyfile

softpipertesting.xyz {
        # Set this path to your site's directory.
        root * /var/www/softpipertesting.xyz

        # Enable the static file server.
        file_server { 
                hide .git 
        } 
        handle_errors {
                respond "{err.status_code} {err.status_text}"
        }

Clone Private git repository with and SSH deploy key

generate and add ssh key to VPS

ssh-keygen -t ed25519 -C "[email protected]"

enter a unique filename like

/root/.ssh/id_ed15519_softpipertesting.xyz

adding ssh key to the ssh-agent

exec ssh-agent bash
ssh-add ~/.ssh/id_ed15519_softpipertesting.xyz

view the key

cat id_ed15519_softpipertesting.xyz.pub

add the to the deploy key section in the github repository

install node js

https://github.com/nvm-sh/nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source /root/.bashrc //for root
source ~/.bashrc //for other user
nvm install --lts 
node -v

Create a reverse proxy with caddy

edit the Caddyfile and add the line doc link: https://caddyserver.com/docs/caddyfile/directives/reverse_proxy

reverse_proxy :3000

as our application is running on port 3000

Manage long running processes with pm2

npm i -g pm2
pm2 start --name "softpiper"
pm2 list
pm2 stop "softpiper"
pm3 delete "softpiper"

  • Welcome to our blog details page, your gateway to in-depth captivating narratives. Dive into thought-provoking articles,and engaging content that goes beyond the surface

    View all posts

Send Us A Message

Connect with Softeko

Please fill out the form and a representative from our team will be in touch with you shortly. We strive to respond to all inquiries within 24 hours during business days. Also, you can reach us directly via social media. We are available on Facebook, YouTube, & LinkedIn.

Your Success Starts Here!

Please enable JavaScript in your browser to complete this form.
Name