First commit.

This commit is contained in:
Anuj K 2023-10-31 14:51:46 +05:30
parent eb293b7b0d
commit 931e4aa43d
27 changed files with 3096 additions and 0 deletions

9
LICENSE Normal file
View file

@ -0,0 +1,9 @@
MIT License
Copyright (c) 2023 aiquiral
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

55
animation.html Normal file
View file

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en-IN">
<head>
<title>Category - Animation | Aiquiral's Blog</title>
<meta name="description" content="With clear and concise writing, the aim of this blog is to help others solve problems, and learn the ropes of self-hosting, using Linux, becoming a privacy enthusiast and more.">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<link rel="icon" type="image/x-icon" href=/assets/logo/favicon.svg />
<link rel="stylesheet" href=/assets/css/style.css />
</head>
<body>
<div class="head">
<div class="line-top"></div>
<nav>
<ul class='nav-bar'>
<li class='logo'><a href=/index.html><img src=/assets/logo/favicon.svg /></a></li>
<input type='checkbox' id='check' />
<span class="menu">
<li><a href="https://blog.aiquiral.me">Home</a></li>
<li><a href="https://portfolio.aiquiral.me">Portfolio</a></li>
<li><a href="https://aiquiral.me/contact">Contact</a></li>
<li><a href="https://aiquiral.me/about">About</a></li>
<label for="check" class="close-menu">X</label>
</span>
<label for="check" class="open-menu"></label>
</ul>
</nav>
</div>
<div class="main">
<style>
.category-page{
padding: 5vw 30%;
}
@media (max-width: 1203px) {
.category-page {
padding: 70px 10%;
margin-top: 100px;
}
}
</style>
<div class="category-page">
<h1>Category - Animation</h1>
</div>
</div>
<div class="foot"><p style="text-align: center;"><a href="https://soundcloud.com/aiquiral">Music</a> <a href="https://git.aiquiral.me/aiquiral">Other Projects</a> <img src=/assets/logo/inline-logo.svg style="position:relative;bottom:-3px" width=28 height=32></img> <a href="https://aiquiral.me/privacy-policy.html">Privacy Policy</a> <a href="https://aiquiral.me/about.html">About</a></p></div>
<div class="line-bottom"></div>
</body>
</html>

365
assets/css/style.css Normal file
View file

@ -0,0 +1,365 @@
body {
margin: 0;
padding: 0;
font-family: "DejaVu Sans", sans-serif;
display: flex;
min-height: 100vh;
flex-flow: column;
color: #25252D;
line-height: 1.5;
}
h1, h2 {line-height: 1.25;}
.line-top{
height: 22px;
background-image: linear-gradient(145deg, #4c4dfb , #706efb);
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 30px;
}
.line-bottom {
height: 22px;
background-image: linear-gradient(145deg, #706efb, #4c4dfb);
bottom: 0px;
width: 100%;
box-shadow: rgba(0, 0, 0, 0.35) 5px 0px 30px;
}
.foot {
position:relative;
bottom: 22px;
width: 100%;
text-align: center;
}
.foot a{text-decoration: none !important;color: #25252D;}
*{
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
--color1: #FFF ;
--color2: #000 ;
}
.nav-bar {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
list-style: none;
position: fixed;
padding: 25px 30px;
}
.logo img {width: 100px;}
.menu {display: flex;}
.menu li {padding-left: 30px;}
.menu li a {
display: inline-block;
text-decoration: none;
color: #b4b4bb;
text-align: center;
transition: 0.15s ease-in-out;
position: relative;
text-transform: uppercase;
}
.menu li a::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 0;
height: 1px;
background-color: #25252d;
transition: 0.15s ease-in-out;
}
.menu li a:hover:after {width: 100%;}
.open-menu , .close-menu {
position: absolute;
cursor: pointer;
font-size: 50px;
display: none;
}
.open-menu {
top: 50%;
right: 20px;
padding: 15px 20px;
transform: translateY(-50%);
background-color: #25252d;
color: #fff;
}
.close-menu {
top: 75px;
right: 75px;
color: #b4b4bb;
}
#check {display: none;}
.menu {
flex-direction: column;
align-items: center;
justify-content: center;
width: 30%;
height: 100vh;
position: fixed;
top: 0;
right: -100%;
z-index: 100;
background-color: #000;
transition: all 0.2s ease-in-out;
}
.menu li {margin-top: 40px;}
.menu li a {padding: 10px;}
.open-menu , .close-menu {display: block;}
#check:checked ~ .menu {right: 0;}
@media (max-width: 1080px) {
.menu {
width: 60%;
}
}
.main, .blog-post {
flex-grow: 1;
display: flex;
flex-flow: column;
}
.blog-post{
padding: 5vw 25%;
}
.featured {
display: block;
margin-left: auto;
margin-right: auto;
width: 100%;
}
.inline-img{
max-width: max-content;
width: 100%;
}
.latest {
display: block;
margin-left: auto;
margin-right: auto;
width: 100%;
}
code, pre {
background-color: #eee;
}
pre {
padding: 10px;
margin: 10px 10px 10px 0px;
color: #555;
border-left: 2px solid !important;
overflow-x: auto;
}
.hero {
display: flex;
padding: 5vw 20%;
gap: 50px;
}
.latest-post{flex:67%;}
.search-and-categories{flex:33%}
@media (max-width: 1203px) {
.hero {
flex-wrap: wrap;
}
}
@media (max-width: 1080px) {
.latest-post {
margin-top: 80px;
}
.blog-post{
padding: 5vw 10%;
margin-top: 80px;
}
}
h1 {
margin: 30px 0px 30px 0px;
}
h2{
margin: 30px 0px 20px 0px;
}
h3{
margin: 20px 0px 10px 0px;
}
h4 {
margin-top: 20px;
}
input#search-bar {
margin-top: 100px;
width: 100%;
height: 45px;
padding: 0 20px;
font-size: 1rem;
border: 1px solid #b4b4bb;
outline: none;
&:focus {
border: 1px solid #4C4DFB;
transition: 0.35s ease;
}
}
.categories {display: flex; flex-wrap: wrap;}
.category-button-div {
background-color: #4C4DFB;
padding: 15px 20px;
border-radius: 10px;
margin: 0px 10px 10px 0px;
border: solid 3px #4C4DFB;
transition: 0.2s ease-in-out;
&:hover{
background-color: #333;
transition: 0.2s ease-in-out;
}
}
.category-button {
text-decoration: none;
color:#FFF;
}
a {
text-decoration: none;
color: #2ea3f2;
}
.author {
display: flex;
background-color: #eee;
padding: 5vw 20%;
}
.meri-photo-div{
width: 50%;
padding: 20px;
display: flex;
flex-direction: column;
justify-content: center;
}
.meri-photo {
width: 100%;
}
.meri-bio{
width: 50%;
padding: 20px;
display: flex;
flex-direction: column;
justify-content: center;
text-align: justify;
}
@media (max-width: 1203px) {
.author {
flex-direction: column;
}
.meri-photo-div{width: auto;}
.meri-bio{width: auto;}
}
p{
color: #555;
margin: 10px 0px 10px 0px;
text-align: justify;
}
.post-date{
margin-bottom: 30px;
}
.post-heading {
margin-bottom: 10px;
}
.all-posts{
padding: 1vw 20% 2vw 20%;
}
.all-posts-table{
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.allposts-post{
min-width: auto;
max-width: 300px;
display: flex;
flex-direction: column;
padding: 15px;
border: 1px solid #ccc;
border-radius: 10px;
}
.comments{
padding: 1vw 25%;
}
/*
@media (max-width: 1080px) {
.all-posts-table {
flex-direction: column;
}
.comments{
padding: 1vw 10%;
}
} */
li {
margin: 5px 20px;
color: #555;
}
.important-note{
border-left: 5px solid rgb(250, 200, 110) !important;
border-radius: 10px;
padding: 10px;
margin: 20px 10px 20px 0px;
background-color: rgb(250, 250, 210);
}
#search-results a {
display: block;
padding: 10px 0px;
}
thead {
text-align: left;
background-color: #eee;
}
table {
border-collapse: separate;
border-spacing: 0;
border: 1px solid #eee;
margin: 10px 0px;
}
td, th {
border-bottom: 1px solid #eee;
padding: 12px;
}

BIN
assets/logo/aiquiral.avif Normal file

Binary file not shown.

39
assets/logo/favicon.svg Normal file
View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1080"
height="1080"
viewBox="0 0 1080 1080"
version="1.1"
id="svg36"
sodipodi:docname="inline-logo-b.svg"
inkscape:export-filename="favicon.svg"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<defs
id="defs33" />
<circle
style="fill:#b4b4bb;fill-opacity:1;stroke-width:1.13161"
id="path1"
cx="540"
cy="540"
r="540" />
<path
d="m 227.5568,147.51963 52.89552,179.80791 -81.46691,-100.41185 88.81771,139.74754 -119.76875,-4.2453 127.94546,37.164 128.87729,98.65017 146.06056,73.80615 1.8637,16.56333 h -11.28222 l -11.6981,-11.9041 -72.2544,-33.33263 22.04847,90.57548 50.72383,6.10898 c 0,0 -81.72979,157.08576 -86.85004,168.52295 -5.12025,11.4372 107.34675,-134.46641 107.34675,-134.46641 l -9.93839,-43.89096 -48.6522,-5.07316 -19.97878,-66.87126 64.48965,40.16552 13.97574,1.24181 61.69608,15.62952 1.65574,-11.69614 -22.56637,-3.51944 -2.69156,-8.59261 29.50127,-4.13936 41.92525,-1.86369 21.01264,27.63758 22.98031,11.38815 20.08276,18.52903 32.4008,21.94449 55.27712,22.77432 2.17366,15.42353 -2.17366,20.60068 -72.15042,6.10702 -41.50933,16.25141 -40.57947,-11.80013 -34.1605,20.59872 -35.5063,10.14437 57.76271,167.38512 17.18325,-162.00199 61.28214,2.89952 28.98337,-15.73546 64.07769,-12.42201 0.72389,-16.14742 9.42048,-7.45477 -6.9349,-39.33569 -93.88892,-44.71882 -15.11357,-18.21906 -26.91565,-15.83747 -21.32261,-26.18979 c 0,0 5.29093,-12.94776 9.10856,-20.39272 3.81763,-7.44497 37.472,-7.55679 37.472,-7.55679 l 70.28869,-19.66686 27.63758,-44.8228 -13.1459,-59.31447 -2.06969,42.54516 -22.56638,43.06308 -54.13929,9.73044 12.21405,-37.67995 25.15397,-53.4154 -7.03888,-80.12113 -7.65879,75.56783 -19.97879,38.60984 -9.73044,-26.60373 -6.00502,46.68649 -24.844,27.9495 -24.32608,7.34884 -14.38772,-14.38771 23.39425,-46.0646 28.25946,-85.40029 -24.63604,-74.11808 -33.74658,-53.10349 15.42352,35.92024 25.87983,79.81116 -29.0893,68.21705 -30.95103,26.49975 -15.73349,-75.98177 -11.38619,-18.1151 -1.86369,12.73197 7.6588,27.01766 -9.5225,29.39926 -19.25488,-40.47548 -7.55678,-80.22315 -7.97073,-32.71271 -28.46546,-60.55629 -15.63147,-10.35035 21.63453,48.85817 10.24835,47.30642 -0.30996,51.75964 -43.27103,-35.19632 -18.1151,-34.26449 -34.98837,-48.44424 16.76932,36.12621 17.1852,41.61332 -44.92676,-47.41039 -25.77586,-39.95757 -29.70923,-34.78043 10.35233,23.6022 23.49822,42.23324 -49.06613,-27.63758 -33.22866,-23.80818 13.24987,24.11814 34.57444,26.49976 60.76425,43.16704 -51.44773,-8.38466 -40.68147,-19.87481 -39.64762,-34.36846 28.36344,43.58099 43.06308,25.77585 77.84351,17.49321 73.49619,61.48813 57.14083,99.27205 3.51943,40.78545 -26.70573,11.07623 -54.76118,-28.25948 -31.67494,-56.52089 -37.99186,-60.76228 -16.97531,-60.04034 2.58759,66.97524 15.21754,59.52242 -28.67536,-2.27763 -88.50579,-75.35989 -50.41191,-207.13573 17.49321,157.03378 z m 275.8697,426.79625 19.97879,41.61332 31.57095,4.55525 -8.90257,-21.22059 z m 186.43206,46.89248 21.73851,17.08123 14.49168,15.94144 10.76625,-0.41394 -13.14786,-10.76625 z m -25.05196,16.2514 -21.63453,8.0747 22.46437,14.49167 13.66381,-6.313 8.48862,9.10854 -2.79553,-12.62798 z m -69.45885,5.28112 40.99339,25.35995 17.80318,2.17365 -22.4624,-18.63299 z m -27.84553,46.58054 c 0,0 17.41473,76.24662 21.11662,74.22206 3.70385,-2.02455 65.21552,-26.18978 65.21552,-26.18978 l -48.75617,-1.55374 z m 230.01304,2.79555 -8.07468,4.14132 9.8344,7.76277 6.83093,12.422 17.18521,-7.86674 -3.72739,-9.00654 z"
opacity="1"
fill="#000000"
id="path12"
style="clip-rule:evenodd;fill:#25252d;fill-opacity:1;fill-rule:evenodd;stroke-width:1.96178;stroke-linecap:round;stroke-linejoin:round" />
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1080"
height="1080"
viewBox="0 0 1080 1080"
version="1.1"
id="svg36"
sodipodi:docname="inline-logo.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="0.74537037"
inkscape:cx="539.32919"
inkscape:cy="540"
inkscape:window-width="1852"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg36" />
<defs
id="defs33" />
<g
id="layer1"
style="fill:#25252d;fill-opacity:1">
<g
id="g46"
transform="matrix(2.1521033,0,0,2.1521033,-789.41341,45.763631)"
style="fill:#25252d;fill-opacity:1">
<path
d="m 463.072,71.9726 26.963,91.6554 -41.527,-51.184 45.274,71.235 -61.051,-2.164 65.219,18.944 65.694,50.286 74.453,37.622 0.95,8.443 h -5.751 l -5.963,-6.068 -36.831,-16.991 11.239,46.17 25.856,3.114 c 0,0 -41.661,80.073 -44.271,85.903 -2.61,5.83 54.719,-68.543 54.719,-68.543 l -5.066,-22.373 -24.8,-2.586 -10.184,-34.087 32.873,20.474 7.124,0.633 31.449,7.967 0.844,-5.962 -11.503,-1.794 -1.372,-4.38 15.038,-2.11 21.371,-0.95 10.711,14.088 11.714,5.805 10.237,9.445 16.516,11.186 28.177,11.609 1.108,7.862 -1.108,10.501 -36.778,3.113 -21.159,8.284 -20.685,-6.015 -17.413,10.5 -18.099,5.171 29.444,85.323 8.759,-82.579 31.238,1.478 14.774,-8.021 32.663,-6.332 0.369,-8.231 4.802,-3.8 -3.535,-20.051 -47.859,-22.795 -7.704,-9.287 -13.72,-8.073 -10.869,-13.35 c 0,0 2.697,-6.6 4.643,-10.395 1.946,-3.795 19.101,-3.852 19.101,-3.852 l 35.829,-10.025 14.088,-22.848 -6.701,-30.235 -1.055,21.687 -11.503,21.951 -27.597,4.96 6.226,-19.207 12.822,-27.228 -3.588,-40.841 -3.904,38.52 -10.184,19.681 -4.96,-13.561 -3.061,23.798 -12.664,14.247 -12.4,3.746 -7.334,-7.334 11.925,-23.481 14.405,-43.532 -12.558,-37.781 -17.202,-27.069 7.862,18.31 13.192,40.683 -14.828,34.773 -15.777,13.508 -8.02,-38.731 -5.804,-9.234 -0.95,6.49 3.904,13.772 -4.854,14.986 -9.815,-20.632 -3.852,-40.893 -4.063,-16.675 -14.51,-30.868 -7.968,-5.276 11.028,24.905 5.224,24.114 -0.158,26.384 -22.057,-17.941 -9.234,-17.466 -17.835,-24.694 8.548,18.415 8.76,21.212 -22.901,-24.167 -13.139,-20.368 -15.144,-17.729 5.277,12.031 11.978,21.528 -25.011,-14.088 -16.938,-12.136 6.754,12.294 17.624,13.508 30.974,22.004 -26.225,-4.274 -20.737,-10.131 -20.21,-17.519 14.458,22.215 21.951,13.139 39.68,8.917 37.464,31.343 29.127,50.603 1.794,20.79 -13.613,5.646 -27.914,-14.405 -16.146,-28.811 -19.366,-30.973 -8.653,-30.605 1.319,34.14 7.757,30.341 -14.617,-1.161 -45.115,-38.414 -25.697,-105.5855 8.917,80.0465 z m 140.622,217.5554 10.184,21.212 16.093,2.322 -4.538,-10.817 z m 95.032,23.903 11.081,8.707 7.387,8.126 5.488,-0.211 -6.702,-5.488 z m -12.77,8.284 -11.028,4.116 11.451,7.387 6.965,-3.218 4.327,4.643 -1.425,-6.437 z m -35.406,2.692 20.896,12.927 9.075,1.108 -11.45,-9.498 z m -14.194,23.744 c 0,0 8.877,38.866 10.764,37.834 1.888,-1.032 33.243,-13.35 33.243,-13.35 l -24.853,-0.792 z m 117.247,1.425 -4.116,2.111 5.013,3.957 3.482,6.332 8.76,-4.01 -1.9,-4.591 z"
opacity="1"
fill="#000000"
id="path12"
style="clip-rule:evenodd;fill:#25252d;fill-opacity:1;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1920" height="1080" viewBox="0 0 508 285.75"><defs><linearGradient id="A" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#706efb"/><stop offset="1" stop-color="#4c4dfb"/></linearGradient><linearGradient xlink:href="#A" id="B" x1="184.988" y1="-171.538" x2="456.739" y2="-171.538"/><linearGradient xlink:href="#A" id="C" x1="115.065" y1="294.553" x2="394.539" y2="294.553"/><filter id="D" x="-.221" y="-.366" width="1.442" height="1.732" color-interpolation-filters="sRGB"><feFlood flood-opacity=".498" flood-color="#000"/><feComposite in2="SourceGraphic" operator="in"/><feGaussianBlur stdDeviation="25"/><feOffset dx="-2.77556e-17" dy="-2.77556e-17"/><feComposite in="SourceGraphic"/></filter><filter id="E" x="-.215" y="-.357" width="1.429" height="1.714" color-interpolation-filters="sRGB"><feFlood flood-opacity=".498" flood-color="#000"/><feComposite in2="SourceGraphic" operator="in"/><feGaussianBlur stdDeviation="25"/><feOffset dx="-2.77556e-17" dy="-2.77556e-17"/><feComposite in="SourceGraphic"/></filter></defs><path d="M0 0h508v285.75H0z" fill="#25252d"/><path transform="matrix(.832275 .554363 -.763635 .645648 26.458334 -26.458334)" d="M184.988-335.47h271.751v163.932H184.988z" fill="url(#B)" filter="url(#D)"/><path transform="matrix(.840636 .541601 -.774097 .633067 -26.458334 26.458334)" d="M115.065 126.57h279.475v167.983H115.065z" fill="url(#C)" filter="url(#E)"/><path d="M338.412 109.021l-43.289-39.709-6.085 6.64 36.072 33.061H182.918l36.072-33.096-6.085-6.633-43.289 39.737h-.028v26.168c0 11.839 11.396 21.476 25.394 21.476h26.695c13.998 0 25.394-9.637 25.394-21.462v-17.206h13.858v17.206c0 11.818 11.396 21.462 25.394 21.462h26.688c13.998 0 25.394-9.637 25.394-21.462v-26.175zm-212.635 70.392v2.269h-2.269v13.617h4.539v-4.539h4.539v4.539h4.539v-13.617h-2.269v-2.269zm2.269 2.269h4.539v6.808h-4.539zm13.617-2.269v13.617h2.269v2.269h4.539v-2.269h4.539v2.269h4.539v-2.269h2.269v-13.617h-4.539v11.347h-2.269v-6.808h-4.539v6.808h-2.269v-11.347zm22.694 0v15.886h13.617v-2.269h-9.078v-4.539h6.808v-2.269h-6.808v-4.539h9.078v-2.269zm20.425 0v2.269h-2.269v4.539h2.269v2.269h6.808v4.539h-4.539v-2.269h-4.539v2.269h2.269v2.269h9.078v-2.269h2.269v-4.539h-2.269v-2.269h-6.808v-4.539h4.539v2.269h4.539v-2.269h-2.269v-2.269zm18.155 0v2.269h-2.269v11.347h2.269v2.269h9.078v-2.269h2.269v-11.347h-2.269v-2.269zm2.269 2.269h4.539v11.347h-4.539zm13.617-2.269v15.886h4.539v-6.808h6.808v6.808h4.539v-15.886h-4.539v4.539h-2.269v2.269h-2.269v-2.269h-2.269v-4.539zm20.425 0v15.886h13.617v-2.269h-9.078v-4.539h6.808v-2.269h-6.808v-4.539h9.078v-2.269zm27.233 0v15.886h4.539v-6.808h6.808v-2.269h2.269v-4.539h-2.269v-2.269zm4.539 2.269h4.539v4.539h-4.539zm13.617-2.269v15.886h4.539v-6.808h2.269v2.269h2.269v4.539h4.539v-4.539h-2.269v-4.539h2.269v-4.539h-2.269v-2.269zm4.539 2.269h4.539v4.539h-4.539zm13.617-2.269v2.269h2.269v11.347h-2.269v2.269h9.078v-2.269h-2.269v-11.347h2.269v-2.269zm13.617 0v9.078h2.269v4.539h2.269v2.269h4.539v-2.269h2.269v-4.539h2.269v-9.078h-4.539v9.078h-4.539v-9.078zm20.425 0v2.269h-2.269v13.617h4.539v-4.539h4.539v4.539h4.539v-13.617h-2.269v-2.269zm2.269 2.269h4.539v6.808h-4.539zm15.886-2.269v2.269h-2.269v11.347h2.269v2.269h9.078v-2.269h2.269v-2.269h-4.539v2.269h-4.539v-11.347h4.539v2.269h4.539v-2.269h-2.269v-2.269zm15.886 0v6.808h2.269v2.269h2.269v6.808h4.539v-6.808h2.269v-2.269h2.269v-6.808h-4.539v6.808h-4.539v-6.808z" fill="#b4b4bb"/></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 717 KiB

923
awesome-privacy.html Normal file
View file

@ -0,0 +1,923 @@
<!DOCTYPE html>
<html lang="en-IN">
<head>
<title>Awesome Privacy | Aiquiral's Blog</title>
<meta name="description" content="(UNDER CONSTRUCTION) A list dedicated to providing the best tools and services to protect your online privacy.">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<link rel="icon" type="image/x-icon" href=/assets/logo/favicon.svg />
<link rel="stylesheet" href=/assets/css/style.css />
</head>
<body>
<div class="head">
<div class="line-top"></div>
<nav>
<ul class='nav-bar'>
<li class='logo'><a href=/index.html><img src=/assets/logo/favicon.svg /></a></li>
<input type='checkbox' id='check' />
<span class="menu">
<li><a href="https://blog.aiquiral.me">Home</a></li>
<li><a href="https://portfolio.aiquiral.me">Portfolio</a></li>
<li><a href="https://aiquiral.me/contact">Contact</a></li>
<li><a href="https://aiquiral.me/about">About</a></li>
<label for="check" class="close-menu">X</label>
</span>
<label for="check" class="open-menu"></label>
</ul>
</nav>
</div>
<div class="blog-post">
<h1 class="post-heading">Awesome Privacy</h1>
<p class="post-date">26 April 2023 | Privacy, Self-hosting</p>
<img src="/assets/posts/2023-04-26-awesome-privacy/awesome.svg" class="featured" alt="Sunglasses. Awesome Privacy." title="Awesome Privacy"/>
<p>A list dedicated to providing the best tools and services to protect your online privacy. [UPDATED 05 May 2023]</p>
<h2 id="disclaimer">Disclaimer</h2>
<p>Please keep in mind that the software programs and services listed below are based on my personal knowledge and experience. I have not received any payment to include any specific software program or service in this list, and there are no affiliate links. However, its important to do your own research and make your own informed decisions based on your unique needs and circumstances.</p>
<p>This Awesome Privacy list has been inspired by <a href="https://privacytools.io/">privacytools.io</a>, <a href="https://awesome-privacy.xyz/">awesome-privacy.xyz</a>, <a href="https://github.com/pluja/awesome-privacy">awesome-privacy by pluja</a> and many others.</p>
<h2 id="content">Content</h2>
<ol start="0">
<li><a href="#introduction">Introduction</a>
<ul>
<li><a href="#difference-between-privacy-anonymity-and-security">Difference Privacy, Anonymity and Security?</a></li>
<li><a href="#open-source">What is Open Source?</a></li>
<li><a href="#why-should-you-care">Why should you care?</a></li>
</ul>
</li>
<li><a href="#1-privacy-essentials">Privacy Essentials</a>
<ul>
<li><a href="#basic-android-apps">Basic Android Apps</a></li>
<li><a href="#operating-systems">Operating Systems</a></li>
<li><a href="#password-managers">Password Managers</a></li>
<li><a href="#privacy-analysers">Privacy Analysers</a></li>
<li><a href="#search-engines">Search Engines</a></li>
<li><a href="#two-factor-authentication">Two-Factor Authentication</a></li>
<li><a href="#virtual-private-networks-vpns">Virtual Private Networks (VPNs)</a></li>
<li><a href="#web-browsers">Web Browsers</a></li>
</ul>
</li>
<li><a href="#2-communication-and-social">Communication and Social</a>
<ul>
<li><a href="#dating-apps">Dating Apps</a></li>
<li><a href="#instant-messaging">Instant Messaging</a></li>
<li><a href="#e-mail-services">E-Mail Services</a></li>
<li><a href="#social-networks-and-platforms">Social Networks and Platforms</a></li>
</ul>
</li>
<li><a href="#personal">Personal</a>
<ul>
<li><a href="#fitness-and-health">Fitness and Health</a></li>
<li><a href="#home-assistants">Home Assistants</a></li>
<li><a href="#location-tracking">Location Tracking</a></li>
<li><a href="#finance-management">Finance Management</a></li>
<li><a href="#photo-storage">Photo Storage</a></li>
</ul>
</li>
<li><a href="#productivity-tools">Productivity Tools</a>
<ul>
<li><a href="#analytics">Analytics</a></li>
<li><a href="#bookmarking">Bookmarking</a></li>
<li><a href="#captchas">Captchas</a></li>
<li><a href="#commenting-engines">Commenting Engines</a></li>
<li><a href="#cloud-storage">Cloud Storage</a></li>
<li><a href="#file-management-and-sharing">File Management and Sharing</a></li>
<li><a href="#fonts">Fonts</a></li>
<li><a href="#forms">Forms</a></li>
<li><a href="#language-and-grammar">Language and Grammar</a></li>
<li><a href="#link-in-bio-tools">Link In Bio Tools</a></li>
<li><a href="#link-shorteners">Link Shorteners</a></li>
<li><a href="#maps-and-navigation">Maps and Navigation</a></li>
<li><a href="#notes-and-tasks">Notes and Tasks</a></li>
<li><a href="#office-suite">Office Suite</a></li>
<li><a href="#pastebin-and-secret-sharing">Pastebin and Secret Sharing</a></li>
<li><a href="#photo-editing-andmanagement">Photo Editing and Management</a></li>
<li><a href="#remote-access-and-control">Remote Access and Control</a></li>
<li><a href="#team-working-tools">Team-working Tools</a></li>
<li><a href="#translation-and-speech-to-text">Translation and Speech-to-Text</a></li>
<li><a href="#video-and-audio-conferencing">Video and Audio Conferencing</a></li>
<li><a href="#video-editing">Video Editing</a></li>
</ul>
</li>
<li><a href="#entertainment">Entertainment</a>
<ul>
<li><a href="#games">Games</a></li>
<li><a href="#media-streaming-platforms">Media Streaming Platforms</a></li>
<li><a href="#music-recognition">Music Recognition</a></li>
</ul>
</li>
<li><a href="#security">Security</a>
<ul>
<li><a href="#cloaking">Cloaking</a></li>
<li><a href="#encryption">Encryption</a></li>
<li><a href="#intrusion-prevention">Intrusion Prevention</a></li>
</ul>
</li>
<li><a href="#advanced">Advanced</a>
<ul>
<li><a href="#databases">Databases</a></li>
<li><a href="#developer-tools">Developer Tools</a></li>
<li><a href="#domain-registrar">Domain Registrar</a></li>
<li><a href="#online-phone-number-providers">Online Phone Number Providers</a></li>
<li><a href="#payments">Payments</a></li>
</ul>
</li>
</ol>
<hr />
<h1 id="introduction">Introduction</h1>
<h2 id="difference-between-privacy-anonymity-and-security">Difference between Privacy, Anonymity and Security.</h2>
<p>People often mix the concepts of privacy and anonymity, and sometimes security too. Here is a table that provides a comparison of privacy, anonymity, and security to help clarify the distinctions between these related concepts.</p>
<table>
<thead>
<tr>
<th>Concept</th>
<th>Definition</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td>Privacy</td>
<td>The ability to control access to personal information or actions. {:/}</td>
<td>Using a VPN to browse the internet to prevent your ISP from spying on you. {:/}</td>
</tr>
<tr>
<td>Anonymity</td>
<td>The state of being unknown or unidentifiable. {:/}</td>
<td>Using a disposable email address when signing up for online services. {:/}</td>
</tr>
<tr>
<td>Security</td>
<td>The protection of assets or resources from unauthorized access, use, disclosure, disruption, modification, or destruction. {:/}</td>
<td>Using a firewall to prevent unauthorized access to a computer network. {:/}</td>
</tr>
</tbody>
</table>
<div class=important-note style="padding-top: 0px">
<h3 id="explain-like-i-am-a-5-year-old-eli5">Explain like I am a 5-year-old. (ELI5)</h3>
<p>Suppose you have a diary that you keep locked in a drawer in your bedroom. The diary is your personal possession, and you have the right to keep it private. The lock on the drawer provides a level of security that prevents others from accessing your diary without your permission. If you were to write in the diary using a pseudonym, you would be maintaining anonymity.</p>
<p>So, in this example, privacy refers to the ability to keep personal information or possessions away from others. Security refers to the protection of personal possessions from unauthorized access or theft. Anonymity refers to the state of being unknown or unidentifiable.</p>
</div>
<p>With this article, I hope to achieve the goal of helping you maintain all three of these.</p>
<h2 id="open-source">Open Source.</h2>
<p>All the pieces of software and services mentioned in this article are open-source.</p>
<p>Open source software is important for privacy because it enables greater transparency and accountability in the development of software. Since the source code is freely available for anyone to view, it can be inspected by security experts to identify any potential security vulnerabilities or backdoors that could be exploited by malicious actors. This means that security vulnerabilities can be identified and patched more quickly, reducing the risk of data breaches and other security incidents that could compromise personal information.</p>
<h2 id="why-you-should-care">Why you should care.</h2>
<p>Do you have curtains in your home? This is because you want to keep certain activities private and dont want strangers to know what you do. But why would you want large companies such as Google, Apple, Microsoft, Oracle, and even smaller companies to collect your personal information? Your answer may be, “I like targeted ads as they help me find new products,” or, “I want those companies to improve their products to help me serve better.” But that is not all they use your data for. Take a look at these articles:</p>
<ul>
<li>Google <a href="https://www.mercurynews.com/2021/05/07/google-selling-users-personal-data-despite-promise-federal-court-lawsuit-claims/">https://www.mercurynews.com/2021/05/07/google-selling-users-personal-data-despite-promise-federal-court-lawsuit-claims/</a></li>
<li>Menstrual Cycle Apps <a href="https://www.vice.com/en/article/8xe4yz/menstrual-app-period-tracker-data-cyber-security">https://www.vice.com/en/article/8xe4yz/menstrual-app-period-tracker-data-cyber-security</a></li>
<li>Police and social media <a href="https://www.businessinsider.com/police-getting-help-social-media-to-prosecute-people-seeking-abortions-2023-2">https://www.businessinsider.com/police-getting-help-social-media-to-prosecute-people-seeking-abortions-2023-2</a></li>
<li>Tinder <a href="https://www.theguardian.com/technology/2017/sep/26/tinder-personal-data-dating-app-messages-hacked-sold">https://www.theguardian.com/technology/2017/sep/26/tinder-personal-data-dating-app-messages-hacked-sold</a></li>
<li>YouTube is a radicalisation tool <a href="https://www.pcmag.com/news/does-youtubes-algorithm-lead-to-radicalization">https://www.pcmag.com/news/does-youtubes-algorithm-lead-to-radicalization</a></li>
<li>Home Assistants <a href="https://www.theguardian.com/technology/2019/oct/09/alexa-are-you-invading-my-privacy-the-dark-side-of-our-voice-assistants">https://www.theguardian.com/technology/2019/oct/09/alexa-are-you-invading-my-privacy-the-dark-side-of-our-voice-assistants</a></li>
</ul>
<div class=important-note style="padding-top: 0px">
<h3 id="but-i-have-nothing-to-hide">“But I have nothing to hide.”</h3>
<p>Read this <a href="https://thenextweb.com/news/read-this-if-youve-got-nothing-to-hide">https://thenextweb.com/news/read-this-if-youve-got-nothing-to-hide</a></p>
</div>
<p>I can cite over a hundred articles like these, but it is up to you to understand why privacy matters.</p>
<h1 id="1-privacy-essentials">1. Privacy Essentials</h1>
<h2 id="basic-android-apps">Basic Android Apps</h2>
<p>Apps that come preinstalled on phones, as well as those on the Google Play Store, often contain advertisements and tracking mechanisms. They may also request access to unnecessary information. Using open-source alternatives for basic apps can provide a more private and secure experience for users.</p>
<h3 id="app-stores">App Stores</h3>
<p>Stay away from app stores like Google Play Store, Amazon App Store, Samsung App Store, GetApps etc., as they are known to collect user data, such as app usage and location information.</p>
<p>Although, the best course of action is to download the source code and compile the application yourself, but the following alternates can also be helpful.</p>
<table>
<thead>
<tr>
<th>Alternates</th>
<th>Prospective Advantages</th>
<th>Conservative Disadvantages</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://blog.aiquiral.me/awesome-privacy/f-droid.org">F-Droid</a></td>
<td><li>All apps are open-source.<li>Has a strict inclusion policy, which means all apps are checked for security and privacy before being included in the app store.<li>Direct APK downloads also available on the website.<li>Supports 3rd-party repositories.</td>
<td><li>Not the best UI/UX.<li>Updates may get delayed as they cannot be triggered by the developer directly.</td>
</tr>
<tr>
<td><a href="https://gitlab.com/AuroraOSS/auroradroid">Aurora Droid</a></td>
<td><li>Fork of F-Droid.<li> Better UI.</td>
<td><li>Updates may get delayed.</td>
</tr>
<tr>
<td><a href="https://skydroid.app/">SkyDroid</a></td>
<td><li>Decentralised app store.<li>Only open-source apps.<li>Fast updates. </td>
<td><li>Does not have a strict inclusion policy.</td>
</tr>
<tr>
<td><a href="https://gitlab.com/AuroraOSS/AuroraStore">Aurora Store</a></td>
<td><li> Open-source frontend to download Google Play Store apps without an account.<li> Can spoof model and region of the device.</td>
<td><li>Relies on Googles proprietary service.<li> Most apps will still contain trackers.</td>
</tr>
</tbody>
</table>
<p>Other alternates are <a href="https://github.com/ImranR98/Obtainium">Obtanium</a> and <a href="https://fossdroid.com/">FossDroid</a>.</p>
<h3 id="cameras">Cameras</h3>
<p>Stay away from preinstalled and third-party proprietary camera apps as they are known to collect user data.</p>
<p>Following are some better alternates:</p>
<table>
<thead>
<tr>
<th>Alternates</th>
<th>Prospective Advantages</th>
<th>Conservative Disadvantages</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/iakmds/librecamera">Libre Camera</a></td>
<td><li>Simple UI with automatic and manual controls.<li> Does not save EXIF by default. </td>
<td><li> Cannot customise resolution, frame rate.</td>
</tr>
<tr>
<td><a href="https://github.com/prime-slam/OpenCamera-Sensors/">OpenCamera Sensors</a></td>
<td><li> Geared towards advanced users.<li> Highly customisable with a lot of options. </td>
<td><li> Complex UI. </td>
</tr>
</tbody>
</table>
<p>Another good alternate is <a href="https://bitbucket.org/chlun/aicamera/src/master/">AiCamera</a>.</p>
<h3 id="keyboards">Keyboards</h3>
<p>Stay away from preinstalled and third-party proprietary keyboards like GBoard, SwiftKey Keyboard, Samsung Keyboard, Mint Keyboard etc., as they are known to collect user data, including usage and clipboard data.</p>
<p>Following are some better alternates:</p>
<table>
<thead>
<tr>
<th>Alternates</th>
<th>Prospective Advantages</th>
<th>Conservative Disadvantages</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/openboard-team/openboard">OpenBoard</a></td>
<td><li>Based on Android Open-Source Program.<li>Supports basic customisations. </td>
<td><li> No swipe typing.<li> Advanced customisations not available.</td>
</tr>
<tr>
<td><a href="https://florisboard.org/">FlorisBoard</a></td>
<td><li> Modern and user-friendly.<li>Highly customisable. </td>
<td><li> Currently, in early beta. </td>
</tr>
</tbody>
</table>
<p>Other alternates are <a href="https://gitlab.com/indicproject/indic-keyboard">Indic Keyboard</a> and <a href="https://github.com/AnySoftKeyboard/AnySoftKeyboard">AnySoftKeyboard</a>.</p>
<h3 id="file-manager">File Manager</h3>
<p>Stay away from preinstalled and third-party proprietary File Manager apps like EZ Explorer, FK Commander etc., as they are known to collect user data, including usage data and metadata.</p>
<p>Following are some better alternates:</p>
<table>
<thead>
<tr>
<th>Alternates</th>
<th>Features</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/zhanghai/MaterialFiles"><strong>Material Files</strong></a></td>
<td><li>Follows Material Design guidelines, with attention into details.<li> View, extract and create common compressed files.<li> View and manage files on FTP, SFTP and SMB servers.</td>
</tr>
<tr>
<td><a href="https://sourceforge.net/projects/ghostcommander/"><strong>Ghost Commander</strong></a></td>
<td><li>Ability to copy and move files between its two panels.<li> Full-featured app manager able to access extra info and share APKs.<li> Transfer files via FTP/SFTP/SMB.</td>
</tr>
</tbody>
</table>
<p>Other alternates are <a href="https://github.com/SimpleMobileTools/Simple-File-Manager">Simple File Manager</a> and <a href="https://github.com/TeamAmaze/AmazeFileManager">Amaze File Manager</a>.</p>
<h3 id="operating-systems">Operating Systems</h3>
<p>The choice of your operating system is very important as it is the most important piece of software on your device. And since it pretty much controls all your devices hardware and software, it can have a significant impact on your privacy.</p>
<p>Choosing operating systems like Stock Android, iOS, Windows, and macOS can compromise privacy as these systems often come with pre-installed apps and services that collect user data. These systems also often rely on cloud-based services that store user data, increasing the risk of data breaches and privacy violations. In addition, these systems are closed-source, which means that their source code is not available to the public, making it difficult to identify potential security vulnerabilities. Finally, these systems are typically designed to work with proprietary hardware, which can limit the users ability to control their data and their device.</p>
<div class=important-note style="padding-top: 0px">
<h4 id="eli5">ELI5</h4>
<p>Imagine you have a secret toy that you do not want anyone else to know about. Your toy is hidden in a special place in your room where nobody can see it or touch it. Now, imagine that your parents can see everything you do in your room, even your secret hiding place. They can also tell your friends and other people about your toy.</p>
<p>Just like your secret toy, your personal information on your device is also private, and you do not want anyone else to know about it. If you choose a privacy-oriented operating system, it will help you keep your personal information safe and hidden from others, just like your secret toy. But if you pick an operating system that does not prioritise privacy, it might share your personal information with others, just like your parents sharing about your toy with your friends.</p>
</div>
<h4 id="mobile-operating-systems">Mobile Operating Systems</h4>
<p>It is important to recognise that when it comes to iOS, privacy may not be a top priority for Apple as a company. Read these articles: <a href="https://gizmodo.com/apple-iphone-france-ads-fine-illegal-data-1849950163">1</a>, <a href="https://mashable.com/article/apple-data-privacy-collection-lawsuit">2</a>, <a href="https://www.forbes.com/sites/gordonkelly/2021/08/24/apple-iphone-warning-ios-15-csam-privacy-upggrade-ios-macos-ipados-security/">3</a>.</p>
<p>Similar to Apple, Google also collects and tracks your data on Android devices. When using an Android device, Googles apps and services are integrated deeply within the system, allowing them to collect a vast amount of user data. Read these articles: <a href="https://arstechnica.com/tech-policy/2021/04/google-of-illegally-tracking-android-users-according-to-new-complaint/">1</a>, <a href="https://qz.com/1131515/google-collects-android-users-locations-even-when-location-services-are-disabled">2</a>, <a href="https://www.reuters.com/legal/texas-sues-google-allegedly-capturing-biometric-data-millions-without-consent-2022-10-20/">3</a>.</p>
<p>However, there are several custom ROMs available that remove Googles presence, and provide additional security and privacy features for users. Following are some options:</p>
<table>
<thead>
<tr>
<th>ROMs</th>
<th>Proactive Advantages</th>
<th>Conservative Disadvantages</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://lineageos.org/">LineageOS</a></td>
<td><li> Large number of supported devices and huge community support.<li> Highly customisable.<li>Regular monthly updates.<li> No bloatware but comes with a suite of basic FOSS apps. </td>
<td><li> Not all devices support bootloader relocking.<li> Buggy on some devices.<li> Only a few devices support LineageOS 20.</td>
</tr>
<tr>
<td><a href="https://grapheneos.org/">GrapheneOS</a></td>
<td><li>Hardened kernel for extra security.<li> Long term support.<li> Easy WebUSB-based installer. </td>
<td><li> Supports only Google Pixel devices. </td>
</tr>
<tr>
<td><a href="https://e.foundation/e-os/">/e/OS</a></td>
<td><li> Pre-installed tracker finder.<li> Includes an app store.<li> Inbuilt support for /e/Foundation cloud services (also self-hostable with complete integration).</td>
<td><li> Unstable on some devices.<li>Lack of huge community support as it is not well-known or widely adopted.</td>
</tr>
</tbody>
</table>
<p>Please note that it is advisable to avoid rooting or flashing a custom ROM onto your device unless you possess advanced technical knowledge. If you still need an alternate, you may follow this Lemmy post <a href="https://lemmy.ml/post/128667">100% FOSS Smartphone Hardening non-root Guide 4.0</a>.</p>
<h4 id="desktop-operating-systems">Desktop Operating Systems</h4>
<p>Avoid using proprietary operating systems like Windows and macOS. They are known to be closed-source, which means that their source code is not open to the public. This makes it difficult to know what kind of data is being collected and how it is being used. In addition, they are also known to have several security vulnerabilities that can be exploited by hackers to gain access to your personal information.<br />
Read these articles: <a href="https://www.techspot.com/news/97535-windows-11-spyware-machine-out-users-control.html">1</a>, 2, 3, 4, 5.</p>
<p>Following are some good, beginner-friendly alternates:</p>
<table>
<thead>
<tr>
<th>Operating Systems</th>
<th>Proactive Advantages</th>
<th>Conservative Disadvantages</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://linuxmint.com/">Linux Mint</a></td>
<td><li>Geared towards beginners. <li>Adopts KISS (Keep It Simple, Stupid) principles. <li>Based on Ubuntu. Regular, stable updates.<li>Offers various desktop environments Cinnamon, MATE, Xfce. </td>
<td><li> Fewer packages in official repositories compared to other popular Linux distributions.<li>Not suitable for advanced users who prefer more control and customisation options. </td>
</tr>
<tr>
<td><a href="https://manjaro.org/">Manjaro </a></td>
<td><li> Based on Arch. Rolling release model.<li>Supports a lot of desktop environments.<li>Good for both beginner and advanced users. </td>
<td><li>Delayed updates to ensure stability.<li>AUR can destabilise the system. </td>
</tr>
<tr>
<td><a href="https://www.edubuntu.org/">Edubuntu</a></td>
<td><li>Made for schools and students.<li>Huge ecosystem of free education software.<li>Better administration tools. </td>
<td><li>Recent update came after 9 years.<li>Not very customisable. </td>
</tr>
</tbody>
</table>
<p>Following are some good alternative for advanced users:</p>
<table>
<thead>
<tr>
<th>Operating Systems</th>
<th>Proactive Advantages</th>
<th>Conservative Disadvantages</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://www.openbsd.org/">OpenBSD</a></td>
<td><li>Strong focus of stability and security.<li>Only essential components included by default.<li>Clean and well-documented code. </td>
<td><li>Limited software and hardware support.<li>Steep learning curve. </td>
</tr>
<tr>
<td><a href="https://archlinux.org/">Arch Linux</a></td>
<td><li>Arch Wiki provides comprehensive documentation.<li>Highly customisable.<li>Build your own system.<li>AUR support. </td>
<td><li>Can be complicated to install.<li>AUR can destabilise the system. </td>
</tr>
<tr>
<td><a href="https://tails.boum.org/">Tails</a></td>
<td><li>Boots only in live environment, leaving no trace in the computer.<li>Integrated with Tor.<li>Recommended for journalists and activists. </td>
<td><li>Limited functionality.<li>Slow performance. </td>
</tr>
<tr>
<td><a href="https://www.qubes-os.org/">Qubes OS</a></td>
<td><li>Security-oriented operating system.<li>Easily create disposable VMs.<li>Whonix integration. </td>
<td><li>High system requirements.<li>Limited hardware compatibility.<li>Time-consuming setup process. </td>
</tr>
</tbody>
</table>
<p>There are a lot more options to choose from. If you need help picking a Linux-based operating system, <a href="https://distrochooser.de/">Distrochooser</a> is a very helpful tool.<br />
If, for any reason, you have to rely on Microsoft Windows, you can debloat it and remove most of the telemetry using either <a href="https://atlasos.net/">AtlasOS</a> or creating your own Tiny11 ISO using <a href="https://christitus.com/tiny11-has-problems/">this guide</a>, for a relatively safer experience.</p>
<h4 id="smart-tv-operating-systems">Smart TV Operating Systems</h4>
<p>Staying away from pre-installed OS on your Smart TV, like Google TV, WebOS etc., is a good idea. You can use the following for a safer experience:</p>
<ul>
<li>An external Android Box with <a href="https://lineageos.org/">LineageOS</a>.</li>
<li>A Raspberry Pi or another PC with your choice of desktop OS.</li>
<li><a href="https://kodi.tv/">Kodi</a>.</li>
<li><a href="https://jellyfin.org/">Jellyfin</a>.</li>
</ul>
<h4 id="smartwatch-operating-systems">Smartwatch Operating Systems</h4>
<p>Health related data is the considered to be the most sensitive of all. Staying away from pre-installed OS on your smartwatches is a good idea. You can use the following for a safer experience:</p>
<ul>
<li>Using <a href="https://asteroidos.org/">AsteroidOS</a> if your smartwatch supports it.</li>
<li><a href="https://pine64.com/product-category/pinetime-smartwatch/">PineTime</a> Smartwatch.</li>
</ul>
<p>Download the operating systems from official sources only.</p>
<h2 id="password-managers">Password Managers</h2>
<p>A password manager is a tool that securely stores your login information for websites and applications. With the prevalence of online accounts, its common for individuals to have dozens or even hundreds of different usernames and passwords to remember. Password managers alleviate the need to memorise multiple login credentials by providing a secure digital vault for storing them. This not only makes it easier to manage passwords, but it also improves security by allowing users to generate and store strong, unique passwords for each account.</p>
<p>Although, most password managers offer built-in 2FA features, it is not recommended to use it because it, kind of, defeats the purpose of “two-factors” as both, passwords and 2FA codes are available in one app.</p>
<p>People should avoid closed-source password managers, like 1Password, Dashlane, LastPass etc., because they cannot be audited or verified by the public, leaving users to rely on the companys word that their passwords are being stored and managed securely. Closed-source password managers may also have backdoors or vulnerabilities that can be exploited by hackers or government agencies. Additionally, closed-source password managers may collect and sell user data without their knowledge or consent. Read these articles <a href="https://blog.lastpass.com/2023/03/security-incident-update-recommended-actions/">1</a>, <a href="https://arstechnica.com/information-technology/2023/02/lastpass-hackers-infected-employees-home-computer-and-stole-corporate-vault/">2</a>.</p>
<p>Following are some good alternates:</p>
<table>
<thead>
<tr>
<th>Password Manager</th>
<th>Proactive Advantages</th>
<th>Conservative Disadvantages</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://bitwarden.com/">Bitwarden</a></td>
<td><li>Use companys servers or self-host on your machine.<li>Supports FIDO U2F and YubiKey.<li>Multi-device support.<li>Additional features like Bitwarden Send. </td>
<td><li>Limited free support.<li>Self-hosted version is resource heavy. </td>
</tr>
<tr>
<td><a href="https://github.com/dani-garcia/vaultwarden">Vaultwarden</a></td>
<td><li>Unofficial Bitwarden compatible server written in Rust<li>Works with all Bitwarden apps.<li>Self-hosting can be done on even a Raspberry Pi. </td>
<td><li>Only self-hosting option available.<li>Critical updates may be delayed. </td>
</tr>
<tr>
<td><a href="https://keepassxc.org/">KeePassXC</a> (Linux/Windows/macOS) <br /><br /><a href="https://www.keepassdx.com/">KeePassDX</a> (Android) <br /><br /><a href="https://strongboxsafe.com/">StrongBox</a> (macOS/iOS) <br /><br /><a href="https://keeweb.info/">KeeWeb</a> (WebApp)</td>
<td><li>Hardened, secure and offline password manager.<li>Highly customisable and configurable.<li>No reliance on third-party service or cloud storage.<li>Import from and export to various formats.<li>Active community of users and developers. </td>
<td><li>No built-in synchronisation.<li>Less user-friendly. </td>
</tr>
<tr>
<td><a href="https://www.lesspass.com/">LessPass</a> (Android/iOS/Browser Add-On/CLI)</td>
<td><li>Generates a password using a site, login, and a master password.<li>No synchronisation required.<li>Works offline. </td>
<td><li>New users may get intimidated.<li>Limited integration and customisability. </td>
</tr>
</tbody>
</table>
<p>Some other good options are <a href="https://padloc.app/">Padloc</a> and <a href="https://www.passbolt.com/">Passbolt</a>. For some users <a href="https://proton.me/pass">Proton Pass (Beta)</a> may be a good option, but dont keep all your apples in one basket.</p>
<h2 id="privacy-analysers">Privacy Analysers</h2>
<p>Privacy analysers are tools that scan applications on your device and identify privacy and security risks. They can help you identify apps that collect unnecessary data or have security vulnerabilities, giving you greater control over your online privacy. These tools are particularly important in todays world, where many apps and services collect large amounts of user data without clear disclosure or user consent. By using a privacy analyser, you can identify problematic apps and take steps to protect your personal information.</p>
<p>Following are some good analysers that you can use to aid your privacy:</p>
<table>
<thead>
<tr>
<th>Application</th>
<th>Features</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://exodus-privacy.eu.org/">Exodus</a></td>
<td><li>The privacy audit platform for Android applications.<li>Provides a detailed report on the permission requirements and trackers found in apps on Google Play Store. </td>
</tr>
<tr>
<td><a href="https://pi-hole.net/">Pi-hole</a></td>
<td><li>Self-hosted, network-wide ad-blocking program.<li>Easy to install and configure, with a web interface for management.<li>Provides detailed logs and statistics on network traffic and blocked domains. </td>
</tr>
<tr>
<td><a href="https://github.com/openwpm/OpenWPM">OpenWPM</a></td>
<td><li>Web privacy measurement framework which makes it easy to collect data for privacy studies.<li>Built on top of Firefox, with automation provided by Selenium. </td>
</tr>
</tbody>
</table>
<h2 id="search-engines">Search Engines</h2>
<p>Stay away from search engines made by Big Tech companies who do not respect your privacy, like Google, Microsoft Bing etc.<br />
Read these articles <a href="https://www.theregister.com/2020/09/23/microsoft_leaks_over_65tb_bing/">1</a>, <a href="https://www.washingtonexaminer.com/news/fed-govt-secretly-orders-google-track-anyone-searched-certain-names-addresses-phone-numbers">2</a>.</p>
<p>Consider using the following alternates:</p>
<table>
<thead>
<tr>
<th>Application</th>
<th>Features</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://docs.searxng.org/">SearxNG</a></td>
<td><li>Aggregates results from various search services and databases.<li>Self-hostable, but not recommended for single user.<li>Many public instances to choose from. </td>
</tr>
<tr>
<td><a href="https://duckduckgo.com/">DuckDuckGo</a></td>
<td><li>Privacy respecting search engine and the company has good reputation.<li>No JavaScript version and onion link for Tor are also available.<li style="color: red;">Closed source backend. </td>
</tr>
</tbody>
</table>
<p>There are many other good options you may want to look into, like <a href="https://www.startpage.com/">Startpage</a>, <a href="https://www.qwant.com/">Qwant</a> and <a href="https://github.com/benbusby/whoogle-search">Whoogle</a>.</p>
<h2 id="two-factor-authentication">Two-Factor Authentication</h2>
<p>You should always turn on 2FA whenever it is possible. Stay from SMS based 2FA and authenticator apps like Authy and Google Authenticator, that do not give the utmost importance to your privacy.</p>
<p>Instead, consider using any of the following as your preferred 2FA app:</p>
<table>
<thead>
<tr>
<th>Application</th>
<th>Features</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://getaegis.app/">Aegis</a> (Android)</td>
<td><li>Simple UI with customisability.<li>Easily import from and export to various formats. </td>
</tr>
<tr>
<td><a href="https://www.tofuauth.com/">Tofu</a> (iOS)</td>
<td><li>Designed specifically for iOS.<li>Apple Keychain integration. </td>
</tr>
<tr>
<td><a href="https://apps.gnome.org/app/com.belmoussaoui.Authenticator/">Gnome Authenticator</a> (Linux)</td>
<td><li>User-friendly and secure.<li>Easily import from and export to various formats. </td>
</tr>
</tbody>
</table>
<p>Some other good alternates are <a href="https://ente.io/blog/auth/">ente Auth</a>, <a href="https://winauth.github.io/winauth/">WinAuth</a>, <a href="https://authenticatorpro.jmh.me/">Authenticator Pro</a> and <a href="https://owky.xyz/">Owky</a>. Most password managers support generating 2FA codes, but it is not recommended to use a single app as both a password manager and a 2FA code generator.</p>
<h2 id="virtual-private-networks-vpns">Virtual Private Networks (VPNs)</h2>
<p>While many people think of VPNs as tools for hiding their IP address and encrypting internet traffic, VPNs can also serve a variety of other purposes. For instance, businesses often use VPNs to connect remote employees to their companys network securely. This allows employees to access important files and resources from anywhere in the world without compromising security. In addition, VPNs can be used to create mesh networks that allow multiple devices to connect and communicate directly with each other. This is especially useful in disaster relief scenarios, where traditional communication infrastructure may be damaged or destroyed. By using VPN technology to establish a mesh network, first responders are able to coordinate more effectively and respond to emergencies more efficiently.</p>
<p>To put it simply, a VPN is much more than just an IP hiding app. Its a powerful tool that can be used in a variety of settings to solve a wide range of problems. Whether youre a remote worker who needs to connect to your companys network securely, or a first responder who needs to communicate effectively in a disaster zone, a VPN can help you stay connected and protected.</p>
<p>If you are using applications and protocols like Hamachi, NetCloud by Cradlepoint, Ciscos L2F and L2TP, Apples SSTP etc., in your business environment or even at home, then shifting to an open source alternative is a good idea. Following are some good options:</p>
<table>
<thead>
<tr>
<th>Application</th>
<th>Features</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://tailscale.com/">Tailscale</a></td>
<td><li>Based on WireGuard.<li>Incredibly easy to set up and use.<li>Free plan available.<li>Closed source coordination server. </td>
</tr>
<tr>
<td><a href="https://headscale.net/">Headscale</a></td>
<td><li>Open source implementation of Tailscales coordination/control server.<li>Requires setting up of a server. </td>
</tr>
<tr>
<td><a href="https://strongswan.org/">strongSwan</a></td>
<td><li>Open-source, modular and portable IPsec-based VPN solution.<li>Requires setting up your own server. </td>
</tr>
<tr>
<td><a href="about:blank">PiVPN</a></td>
<td><li>Can use OpenVPN and WireGuard.<li>Designed for Raspberry Pi, but can be used on multiple types of hardware.<li>The simplest and fastest way to install and set up a VPN server. </td>
</tr>
</tbody>
</table>
<p>Some other solutions that you may want to look at are <a href="https://www.softether.org/">SoftEtherVPN</a> and <a href="https://www.zerotier.com/">ZeroTier</a>.</p>
<p>As you already know, a VPN can also provide some form of online privacy and can help with geo-blocked content on the internet, but choosing a bad VPN provider can make things worse. For example, the free VPN apps on Google Play Store are a bad idea, as they make money by <a href="https://thenextweb.com/news/be-cautious-free-vpns-are-selling-your-data-to-3rd-parties">selling your data to third-parties</a>.</p>
<p>Following are some reputed VPN providers in the privacy community:</p>
<table>
<thead>
<tr>
<th>Application</th>
<th>Features</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://mullvad.net/">Mullvad</a></td>
<td><li>Flat rate of €5/month.<li>About 667 severs in 43 countries.<li>Accepts cryptocurrencies, including Monero. </td>
</tr>
<tr>
<td><a href="https://protonvpn.com/">ProtonVPN</a></td>
<td><li>Multiple plans, including a free plan with limited features.<li>About 2,978 servers (65 free) in 68 countries.<li>Accepts Bitcoin. </td>
</tr>
<tr>
<td><a href="https://ivpn.net/">IVPN</a></td>
<td><li>About 86 servers in 36 countries.<li>Cash, Monero and Bitcoin payment options for better anonymity. </td>
</tr>
<tr>
<td><a href="https://xeovo.com/">Xeovo VPN</a></td>
<td><li>16 locations, 31 servers, and growing.<li>Accepts Monero and Bitcoin. </td>
</tr>
</tbody>
</table>
<p>Some other privacy focused VPN providers are <a href="https://riseup.net/en/vpn">RiseupVPN</a>, <a href="https://alternativeto.net/outgoing/software/airvpn">AirVPN</a> and <a href="https://www.azirevpn.com/">AzireVPN</a>.</p>
<p class="important-note">Please note, that setting up your own VPN <em>may not</em> be a very good idea, especially if you are the only individual using it. A personal VPN server on a VPS can prevent your ISP from tracking and logging the sites you visit, and is a better option than using an untrustworthy VPN provider. But online service providers will be able to track you and make a detailed profile about you since you are the only one connecting to their servers using your VPSs IP address.</p>
<h2 id="web-browsers">Web Browsers</h2>
<p>It is a good idea to avoid closed source, proprietary browsers, like Google Chrome, Microsoft Edge, Opera etc., as they tend to collect a lot of user data. <a href="https://www.eff.org/deeplinks/2021/12/chrome-users-beware-manifest-v3-deceitful-and-threatening"></a>Read <a href="https://www.scss.tcd.ie/Doug.Leith/pubs/browser_privacy.pdf">this study</a>. There are many good, privacy focused alternatives, that will provide you with a much better experience.</p>
<h3 id="desktop-web-browsers">Desktop Web Browsers</h3>
<table>
<thead>
<tr>
<th>Web Browsers</th>
<th>Proactive Advantages</th>
<th>Conservative Disadvantages</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://www.mozilla.org/en-GB/firefox/new/">Mozilla Firefox</a></td>
<td><li>Free and open-source, backed by a not-for-profit organisation.<li>Highly customisable.<li>Large number of available add-ons. </td>
<td><li>Little to no privacy with default settings. Requires hardening. (More info below the table.)<li>Sends telemetry by default.<li>Bad company reputation due to high salary of the CEO. </td>
</tr>
<tr>
<td><a href="https://librewolf.net/">LibreWolf</a></td>
<td><li>A fork of Firefox, which is FOSS.<li>Hardened by default. </td>
<td><li>Updates can get delayed, as it is based on Firefox.<li>Hardening can break some websites. </td>
</tr>
<tr>
<td><a href="https://brave.com/">Brave</a></td>
<td><li>Privacy-focused browser.<li>Blocks most ads and trackers by default. </td>
<td><li>Based on Chromium, which is developed mainly by Google.<li>Bad reputation among many privacy-enthusiasts. </td>
</tr>
<tr>
<td><a href="https://www.torproject.org/">Tor Browser</a></td>
<td><li>Based on Firefox.<li>Routes all the traffic through Tor.<li>Can access .onion domains. </td>
<td><li>Many websites block Tor servers, which may affect your browsing experience. </td>
</tr>
</tbody>
</table>
<p>Other good options are <a href="https://github.com/ungoogled-software/ungoogled-chromium">Un-googled Chromium</a>, <a href="https://mullvad.net/en/browser/">Mullvad Browser</a> and <a href="https://www.stoutner.com/privacy-browser-pc/">Privacy Browser</a>.</p>
<p>To harden Firefox and its forks, you can check out <a href="https://github.com/arkenfox/user.js/">arkenfox/user.js</a>, <a href="https://ffprofile.com/">Firefox Profile Maker</a> or <a href="https://wiki.archlinux.org/title/Firefox/Privacy">ArchWiki Guide</a>. There are plenty of other tutorials/guides as well.</p>
<h3 id="mobile-web-browsers">Mobile Web Browsers</h3>
<p>All third-party web browsers on iOS are just Safari in disguise. The following list contains browser suggestions for Android devices only.</p>
<table>
<thead>
<tr>
<th>Web Browsers</th>
<th>Features</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://gitlab.com/divested-mobile/mull-fenix">Mull</a></td>
<td><li>Based on Firefox.<li>Hardened and telemetry is removed.<li>Many add-ons are available. </td>
</tr>
<tr>
<td><a href="https://www.bromite.org/">Bromite</a></td>
<td><li>Based on Chromium.<li>Hardened by default.<li style="color: red;">Possibly, an abandoned project. (Last updated in January 2023.)</td>
</tr>
<tr>
<td><a href="https://brave.com/">Brave</a></td>
<td><li>Based on Chromium.<li>Blocks most ads and trackers by default. </td>
</tr>
<tr>
<td><a href="https://www.torproject.org/">Tor Browser</a></td>
<td><li>Based on Firefox.<li>Routes all the traffic through Tor.<li>Can access .onion domains. </td>
</tr>
</tbody>
</table>
<p>Another good option is <a href="https://www.stoutner.com/privacy-browser-android/">Privacy Browser</a>.</p>
<p class="important-note">It is a good idea to keep JavaScript turned off in your browser, unless you really, really need it. <a href="https://noscript.net/">NoScript</a> is a browser add-on that lets you control it easily.</p>
<h1 id="2-communication-and-social">2. Communication and Social</h1>
<p>Using proprietary apps and protocols for social media and communication/messaging can potentially harm users privacy in several ways. Data collection, lack of transparency, third-party sharing, invasive permissions, backdoors and vulnerabilities, lack of end-to-end encryption, vendor lock-in, monetisation of user data, limited user control, lack of accountability etc. are a few concerns.</p>
<h2 id="dating-apps">Dating Apps</h2>
<p>Dating apps often collect a wide range of personal information, including your location, age, gender, sexual orientation, and even your preferences. This data can be used to build detailed profiles of users, potentially revealing sensitive and private information. They share user data with third-party companies for advertising and marketing purposes. This can lead to the creation of comprehensive user profiles, which are then used for targeted ads or sold to other companies. They typically use location data to match users with potential partners. While this is essential for their functionality, it also means that your movements and routines can be tracked, potentially compromising your privacy. Dating apps use complex algorithms to recommend potential matches. These algorithms may take into account your behaviour on the app, preferences, and interactions. While they aim to improve user experiences, they can also be used to predict user behaviour and target them with specific content or ads.</p>
<p>Like any online platform, dating apps are vulnerable to data breaches and cyberattacks. If these companies do not have robust security measures in place, user data could be exposed to hackers. In some cases, dating apps have faced legal action and investigations over their data practices. Users may not always be aware of how their data is being used or shared.</p>
<p>Read these articles <a href="https://foundation.mozilla.org/en/blog/new-research-tinders-opaque-unfair-pricing-algorithm-can-charge-users-up-to-five-times-more-for-same-service/">1</a>, <a href="https://www.theguardian.com/technology/2017/sep/26/tinder-personal-data-dating-app-messages-hacked-sold">2</a>, <a href="https://foundation.mozilla.org/en/blog/mozilla-explains-how-dating-apps-might-be-keeping-you-single/">3</a>.</p>
<p>Consider avoiding proprietary apps like Tinder, OKCupid etc.</p>
<p><a href="https://alovoa.com/">Alovoa</a> is a privacy respecting, free and open-source alternate to these services. As sensitive data is heavily encrypted, it will be safe even if a data breach were to occur.</p>
<h2 id="instant-messaging">Instant Messaging</h2>
<h2 id="mail-services">Mail Services</h2>
<h2 id="social-networks-and-platforms">Social Networks and Platforms</h2>
<h1 id="3-productivity-tools">3. Productivity Tools</h1>
<h2 id="analytics">Analytics</h2>
<h2 id="animation">Animation</h2>
<h2 id="bookmarking">Bookmarking</h2>
<h2 id="commenting-engines">Commenting Engines</h2>
<h2 id="cloud-storage">Cloud Storage</h2>
<h2 id="file-management-and-sharing">File Management and Sharing</h2>
<h2 id="fonts">Fonts</h2>
<h2 id="forms">Forms</h2>
<h2 id="link-in-bio-tools">Link In Bio Tools</h2>
<h2 id="link-shorteners">Link Shorteners</h2>
<h2 id="maps-and-navigation">Maps and Navigation</h2>
<h2 id="notes-and-tasks">Notes and Tasks</h2>
<h2 id="office-suite">Office Suite</h2>
<h2 id="pastebin-and-secret-sharing">Pastebin and Secret Sharing</h2>
<h2 id="photo-editing-and-management">Photo Editing and Management</h2>
<h2 id="remote-access-and-control">Remote Access and Control</h2>
<h2 id="team-working-tools">Team-working Tools</h2>
<h2 id="translation-and-speech-to-text">Translation and Speech-to-Text</h2>
<h2 id="video-and-audio-conferencing">Video and Audio Conferencing</h2>
<h2 id="video-editing">Video Editing</h2>
<h1 id="4-security">4. Security</h1>
<h2 id="cloaking">Cloaking</h2>
<h2 id="encryption">Encryption</h2>
<h2 id="intrusion-prevention">Intrusion Prevention</h2>
<h1 id="5-entertainment">5. Entertainment</h1>
<h2 id="games">Games</h2>
<h2 id="media-streaming-platforms">Media Streaming Platforms</h2>
<h2 id="music-recognition">Music Recognition</h2>
<h1 id="6-personal">6. Personal</h1>
<h2 id="fitness-and-health">Fitness and Health</h2>
<h2 id="home-assistants">Home Assistants</h2>
<h2 id="location-tracking">Location Tracking</h2>
<h2 id="finance-management">Finance Management</h2>
<h2 id="photo-storage">Photo Storage</h2>
<h1 id="7-advanced">7. Advanced</h1>
<h2 id="captchas">Captchas</h2>
<h2 id="databases">Databases</h2>
<h2 id="developer-tools">Developer Tools</h2>
<h2 id="online-phone-number-providers">Online Phone Number Providers</h2>
<h2 id="payments">Payments</h2>
<p>Bobby must be madd.</p>
</div>
<div class="comments">
<hr>
<h2>Comments</h2>
<script>
var remark_config = {
host: 'https://comments.aiquiral.me',
site_id: 'blog',
}
</script>
<script>!function(e,n){for(var o=0;o<e.length;o++){var r=n.createElement("script"),c=".js",d=n.head||n.body;"noModule"in r?(r.type="module",c=".mjs"):r.async=!0,r.defer=!0,r.src=remark_config.host+"/web/"+e[o]+c,d.appendChild(r)}}(remark_config.components||["embed"],document);</script>
<div id="remark42"></div>
</div>
<div class="comments">
<h2>Recent Posts</h2>
<div class="all-posts-table"><div class="allposts-post">
<a href="/bypass-cgnat">
<img src="/assets/posts/2023-10-07-bypass-cgnat/bypass-cgnat.avif" class="latest" />
<h3 style="color: #25252d;">How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through</h3>
<p>07 October 2023 | Linux Guide, Privacy, Self-hosting</p>
<p>You've set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/remap-keyboard-keys-using-evremap">
<img src="/assets/posts/2023-05-21-remap-keyboard-keys-using-evremap/evremap.avif" class="latest" />
<h3 style="color: #25252d;">Remap keyboard keys using evremap</h3>
<p>21 May 2023 | Linux Guide</p>
<p>Sometimes a key on your keyboard stops working, and you may not have the time or motivation to fix it or get it fixed. Or...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/proton-vpn-linux-guide">
<img src="/assets/posts/2023-05-19-proton-vpn-linux-guide/proton.svg" class="latest" />
<h3 style="color: #25252d;">Proton VPN Linux Guide How to install, configure, use and auto-connect?</h3>
<p>19 May 2023 | Linux Guide, Privacy</p>
<p>The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div></div>
</div>
<div class="foot"><p style="text-align: center;"><a href="https://soundcloud.com/aiquiral">Music</a> <a href="https://git.aiquiral.me/aiquiral">Other Projects</a> <img src=/assets/logo/inline-logo.svg style="position:relative;bottom:-3px" width=28 height=32></img> <a href="https://aiquiral.me/privacy-policy.html">Privacy Policy</a> <a href="https://aiquiral.me/about.html">About</a></p></div>
<div class="line-bottom"></div>
</body>
</html>

443
bypass-cgnat.html Normal file
View file

@ -0,0 +1,443 @@
<!DOCTYPE html>
<html lang="en-IN">
<head>
<title>How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through | Aiquiral's Blog</title>
<meta name="description" content="You've set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it with friends and family, or maybe you just need the ability to access it remotely. So, you decided to expose it to the internet, but your ISP does not let you do that. Issues like dynamic IP can be resolved using a service like Duck DNS or No-IP, but if your ISP does not let you forward your ports, then you have to rely on third-parties to forward your traffic.">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<link rel="icon" type="image/x-icon" href=/assets/logo/favicon.svg />
<link rel="stylesheet" href=/assets/css/style.css />
</head>
<body>
<div class="head">
<div class="line-top"></div>
<nav>
<ul class='nav-bar'>
<li class='logo'><a href=/index.html><img src=/assets/logo/favicon.svg /></a></li>
<input type='checkbox' id='check' />
<span class="menu">
<li><a href="https://blog.aiquiral.me">Home</a></li>
<li><a href="https://portfolio.aiquiral.me">Portfolio</a></li>
<li><a href="https://aiquiral.me/contact">Contact</a></li>
<li><a href="https://aiquiral.me/about">About</a></li>
<label for="check" class="close-menu">X</label>
</span>
<label for="check" class="open-menu"></label>
</ul>
</nav>
</div>
<div class="blog-post">
<h1 class="post-heading">How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through</h1>
<p class="post-date">07 October 2023 | Linux Guide, Privacy, Self-hosting</p>
<img src="/assets/posts/2023-10-07-bypass-cgnat/bypass-cgnat.avif" class="featured" alt="A view of server racks with a text overlay reading “Bpass CGNAT - Privactely Expose Services Hosted on Your Homeserver”." title="How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through"/>
<h2 id="disclaimer">Disclaimer</h2>
<p>Exposing your home server to the internet can be dangerous. Look up some online guides about securing your servers before you do anything stupid. You have been warned. Also, I have not included any instructions related to SELinux.</p>
<h2 id="contents">Contents</h2>
<ol start="0">
<li><a href="#introduction">Introduction</a>
<ul>
<li><a href="#easy-solutions">Easy solutions</a></li>
<li><a href="#my-solution">My solution</a></li>
</ul>
</li>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#preparing-the-servers">Preparing the servers</a>
<ul>
<li><a href="#setting-up-the-vps">VPS</a></li>
<li><a href="#setting-up-your-home-server">Home server</a></li>
</ul>
</li>
<li><a href="#testing-and-finalising-the-wireguard-connection">Testing and finalising the WireGuard connection</a></li>
<li><a href="#optional-configuration-of-home-server">Optional configuration of home server</a>
<ul>
<li><a href="#haproxy">HAProxy</a></li>
<li><a href="#certbot">Certbot</a></li>
</ul>
</li>
<li><a href="#references">References</a></li>
</ol>
<h2 id="introduction">Introduction</h2>
<p>Youve set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it with friends and family, or maybe you just need the ability to access it remotely. So, you decided to expose it to the internet, but your ISP does not let you do that. Issues like dynamic IP can be resolved using a service like Duck DNS or No-IP, but if your ISP does not let you forward your ports, then you have to rely on third-parties to forward your traffic.</p>
<h3 id="easy-solutions">Easy Solutions</h3>
<p>There are many easy solutions to this problem. Cloudflare Tunnel is a free and popular solution. And if you just want remote access, Tailscale is another good option. If Tailscales backend servers are not being open-source is an issue, people can rely on Headscale.</p>
<p>But there is something you must know before considering these solutions. All these rely on TLS/SSL termination, which means your data is decrypted in the servers owned by these third parties.</p>
<p>Let me explain this in detail with taking Cloudflare Tunnel as an example.</p>
<p>One of the reasons we use SSL certificates on our websites to ensure that when the client requests data from the servers, or sends any data back to us, nobody else can look at that it, ensuring the clients privacy. When we use Cloudflare Tunnel, the data may be encrypted on our server, but it is decrypted on Cloudflares servers, then re-encrypted and sent to the client. And when client enters any data like passwords, or upload any image, that data is, again, decrypted on Cloudflares servers (e2ee services are different, discussed below), then re-encrypted and sent back to us.</p>
<p>If you set up a Lets Encrypt certificate on your server and route your traffic through a Cloudflare Tunnel, your clients will see a Cloudflare certificate. If you want them to see your Lets Encrypt certificate, you will have to subscribe to their Business or Enterprise plan.</p>
<p>Take a look at this diagram for better understanding:</p>
<p>Diag</p>
<div class=important-note style="padding-top: 0px">
<h4 id="eli5">ELI5</h4>
<p>Lets say you want to send your friend a message, but you dont want anyone else to read it while in transit. So, you put the message in a locked box. So, if the box gets stolen on the way others wont be able to read the message. That is what SSL certificates do.</p>
<p>But, lets say you cannot go out of your house to deliver the box yourself, because your parents, that is, your ISP, wont let you. So, you hire someone else, say, Cloudflare. But what Cloudflare says, is that they will look inside the box before if you want them to deliver it for free, If you want the box locked, you will have to pay them money.</p>
<p>There are some applications, like Vaultwarden, and Nextcloud with end-to-end encryption plugin, that are not affected with this because they encrypt the data themselves in the clients devices, using their own algorithms.</p>
</div>
<h3 id="my-solution">My solution</h3>
<p>Earlier, I used to do the same thing, but manually. I rented a VPS on Hetzner and connected it to my home server using WireGuard. But since, the certificate management was handled by the VPS using Nginx Proxy Manager my VPS provider, Hetzner, could look at the data. So, I decided to learn about implementing TLS passthrough.</p>
<p>Now, my current setup is I host services on my home server, manage certificates locally, and use the VPS to pass the data to the client without terminating the TLS/SSL connection.</p>
<p>Here is a diagram to explain my setup:</p>
<p>Diag</p>
<h2 id="prerequisites">Prerequisites</h2>
<p>If you have looked at the diagram above, you may have already understood what you need to replicate my setup. Here are the details:</p>
<ul>
<li>A home server.</li>
<li>A VPS to route your traffic.
<ul>
<li><a href="https://developer.oracle.com/free.html">Oracle Cloud</a>s and <a href="https://cloud.google.com/free">Google Cloud</a>s free tier is an option if you are not willing to spend any money. But they are neither performant as they have weak vCPUs and limited bandwidth speed, nor reliable as there have been many reports of Oracle randomly shutting down free tier VPS allotments. Another reason I do not use them is because I would like to stay away from them as much as possible due to their privacy invading history. (Read <a href="https://wikiless.northboot.xyz/wiki/Privacy_concerns_regarding_Google">Google</a>, <a href="https://techhq.com/2022/08/oracle-facing-data-backlash-for-violating-the-privacy-of-billions/">Oracle</a>)</li>
<li>Personally, I use Hetzner (here is my <a href="https://hetzner.cloud/?ref=axsjWq6L448M">referral link</a>, which will give you €20 credit for 3 months). I have been using their services for a long time and never had any issue. Also, their privacy policy is far better than others. Their cheapest ARM servers cost €3.29/mo which have 2 vCPUs and 4 GB RAM.</li>
<li>Other options are Digital Ocean, Vultr, or any VPS provider who will give you root access.</li>
</ul>
</li>
<li>Basic command line knowledge.</li>
<li>WireGuard on both, your home server and the VPS, and iptables on the VPS. Instructions are provided below.</li>
<li>Optionally, HAProxy and Certbot on your home server.</li>
</ul>
<h2 id="preparing-the-servers">Preparing the servers</h2>
<p>I am assuming you have already updated and secured both of your machines and have access to both using <code class="language-plaintext highlighter-rouge">ssh</code> or <code class="language-plaintext highlighter-rouge">dropbear</code>.</p>
<p>First, lets install WireGuard on both.</p>
<h4 id="debianubuntu">Debian/Ubuntu</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt install wireguard
</code></pre></div></div>
<h4 id="fedora">Fedora</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo dnf install wireguard-tools
</code></pre></div></div>
<h4 id="arch">Arch</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo pacman -S wireguard-tools
</code></pre></div></div>
<p>For instructions to install WireGuard on other distributions, visit the <a href="https://www.wireguard.com/install/">official documentation</a>.</p>
<p>On both servers, make sure forwarding is enabled.
Run</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/sysctl.conf
</code></pre></div></div>
<p>Make sure <code class="language-plaintext highlighter-rouge">net.ipv4.ip_forward=1</code> is present. If it is not, type it at the end of the file. It might also be the case that it is present but has a pound sign (#) at the start of the line. This means that it is commented, and not enabled. Removing the sign will enable it.</p>
<p>Tip If the file is too big, and you cannot find this line, you can press <code class="language-plaintext highlighter-rouge">ctrl + w</code> to find it.</p>
<p>Save and close the file by pressing <code class="language-plaintext highlighter-rouge">ctrl + x</code>, then <code class="language-plaintext highlighter-rouge">y</code>, and then <code class="language-plaintext highlighter-rouge">enter</code>. If you have not made any changes to the file, pressing <code class="language-plaintext highlighter-rouge">ctrl + x</code> will simply close the file.</p>
<p>If you made any changes to the file, run the following command:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo sysctl -p
</code></pre></div></div>
<h3 id="setting-up-the-vps">Setting up the VPS</h3>
<p>On most distributions, iptables comes pre-installed. But if, for any reason, it is not, install it using your systems default package manager.</p>
<h5 id="debianubuntu-1">Debian/Ubuntu</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt install iptables
</code></pre></div></div>
<h5 id="fedora-1">Fedora</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo dnf install iptables-services
</code></pre></div></div>
<h5 id="arch-1">Arch</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo pacman -S iptables
</code></pre></div></div>
<p>For other distributions, a quick search on your favourite search engine will fetch you the instructions.</p>
<p>You may have to start the iptables service.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo systemctl enable iptables.service
sudo systemctl start iptables.service
</code></pre></div></div>
<p>Now, let us set up WireGuard. The basic idea is, the both servers will generate a pair of private and public keys. The WireGuard configuration files on both servers will contain their own private key and each others public key. There are many ways of doing it, but I find this way to be the easiest.</p>
<p>Run the following commands:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wg genkey | sudo tee /etc/wireguard/private.key
sudo chmod go= /etc/wireguard/private.key
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
</code></pre></div></div>
<p>The first command generates the private key of the VPS, and it will be saved in a specific location. The second command removes any permissions on the file for users and groups other than the root user to ensure that only it can access the private key. And the third command generates the public key of the VPS, and it will be saved in the same location as the private key.</p>
<p>Now, create a new wireguard configuration file using</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/wireguard/wg0.conf
</code></pre></div></div>
<p>Insert these lines:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey =
PostUp = iptables -t nat -A PREROUTING -p tcp -i eth0 '!' --dport 22 -j DNAT --to-destination 10.0.0.2; iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source SERVER-IP
PostUp = iptables -t nat -A PREROUTING -p udp -i eth0 '!' --dport 55107 -j DNAT --to-destination 10.0.0.2;
PostDown = iptables -t nat -D PREROUTING -p tcp -i eth0 '!' --dport 22 -j DNAT --to-destination 10.0.0.2; iptables -t nat -D POSTROUTING -o eth0 -j SNAT --to-source SERVER-IP
PostDown = iptables -t nat -D PREROUTING -p udp -i eth0 '!' --dport 55107 -j DNAT --to-destination 10.0.0.2;
[Peer]
PublicKey =
AllowedIPs = 10.0.0.2/32
</code></pre></div></div>
<p>Replace the <code class="language-plaintext highlighter-rouge">SERVER-IP</code>, at the end of those lines, with the public IP address of your VPS. For now, we will keep the PrivateKey and PublicKey empty.</p>
<p>Press <code class="language-plaintext highlighter-rouge">ctrl +x</code>, then <code class="language-plaintext highlighter-rouge">y</code>, and then <code class="language-plaintext highlighter-rouge">enter</code>, to save the configuration file.</p>
<h3 id="setting-up-your-home-server">Setting up your home server</h3>
<p>Run the same commands as we did on the VPS to generate public and private keys.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wg genkey | sudo tee /etc/wireguard/private.key
sudo chmod go= /etc/wireguard/private.key
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
</code></pre></div></div>
<p>Create a new wireguard configuration file using</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/wireguard/wg0.conf
</code></pre></div></div>
<p>Insert these lines:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Interface]
Address = 10.0.0.2/24
PrivateKey =
[Peer]
PublicKey =
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Endpoint = X.X.X.X:51820
</code></pre></div></div>
<p>Replace X.X.X.X with the public IP address of your VPS. So, the last line should look like this:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Endpoint = 42.11.109.1:51820
</code></pre></div></div>
<p>Press <code class="language-plaintext highlighter-rouge">ctrl +x</code>, then <code class="language-plaintext highlighter-rouge">y</code>, and then <code class="language-plaintext highlighter-rouge">enter</code>, to save the configuration file.</p>
<p>Now, we will insert the public and private keys in the config files. We will have to go back and forth in your home server and the VPS to print keys and change the configuration files.</p>
<p>On your home server, run</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo cat /etc/wireguard/private.key
</code></pre></div></div>
<p>This will print out the private key. Copy it. Now open the config file using</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/wireguard/wg0.conf
</code></pre></div></div>
<p>Paste the copied key in front of the <code class="language-plaintext highlighter-rouge">PrivateKey =</code>.
The line should look like this:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>PrivateKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
</code></pre></div></div>
<p>Save and exit.</p>
<p>Now, run</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo cat /etc/wireguard/public.key
</code></pre></div></div>
<p>This will print the public key of your home server. Copy it.</p>
<p>Return to the VPS and run</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/wireguard/wg0.conf
</code></pre></div></div>
<p>Paste the copied key in front of the <code class="language-plaintext highlighter-rouge">PublicKey =</code>. Then, save and exit.</p>
<p>Run</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo cat /etc/wireguard/private.key
</code></pre></div></div>
<p>This will print out the private key. Copy it. Now open the config file using</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/wireguard/wg0.conf
</code></pre></div></div>
<p>Paste the copied key in front of the <code class="language-plaintext highlighter-rouge">PrivateKey =</code>. Now, save and exit.</p>
<p>Run</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo cat /etc/wireguard/public.key
</code></pre></div></div>
<p>This will print the public key of the VPS. Copy it.</p>
<p>Go back to your home server and run</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/wireguard/wg0.conf
</code></pre></div></div>
<p>Paste the copied key in front of the <code class="language-plaintext highlighter-rouge">PublicKey =</code>. Then, save and exit.</p>
<p>Finally, run the following command on both of the server to start WireGuard:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo wg-quick up wg0
</code></pre></div></div>
<h2 id="testing-and-finalising-the-wireguard-connection">Testing and finalising the WireGuard connection</h2>
<p>You can test the connection by pinging the WireGuard IP from either of the servers.</p>
<p>On your VPS, run</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ping 10.0.0.2
</code></pre></div></div>
<p>Press <code class="language-plaintext highlighter-rouge">ctrl + c</code> to stop.
If what you see is something like in the following screenshot, then your configuration is okay and everything should be routed through the VPS.</p>
<p>screenshot</p>
<p>If you have any issues, feel free to post a comment, below.</p>
<p>To make sure that WireGuard is turned on automatically after reboot, run the following command on both the systems:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo systemctl enable wg-quick@wg0
</code></pre></div></div>
<p>Now, you can point your domain(s) and/or subdomains to the public IP address of your VPS.</p>
<h2 id="optional-configuration-of-home-server">Optional configuration of home server</h2>
<h3 id="haproxy">HAProxy</h3>
<p>For a reverse proxy, any solution would work. But personally, I shifted from Nginx Proxy Manager to HAProxy because, In my opinion, it is faster, lightweight and provides more control.</p>
<p>To install HAProxy, use your default package manager.</p>
<h4 id="debianubuntu-2">Debian/Ubuntu</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt install haproxy
</code></pre></div></div>
<h4 id="fedora-2">Fedora</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo dnf install haproxy
</code></pre></div></div>
<h4 id="arch-2">Arch</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo pacman -S haproxy
</code></pre></div></div>
<p>For instructions to install a more recent version, or to install on other distributions, use your favourite search engine.</p>
<p>Start the HAProxy service, and enable it to ensure it is started after every boot, using the following command:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo systemctl start haproxy
sudo systemctl enable haproxy
</code></pre></div></div>
<p>To configure haproxy. Use</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/haproxy/haproxy.cfg
</code></pre></div></div>
<p><a href="https://git.aiquiral.me/aiquiral/Bypass-CGNAT/src/branch/main/homeserver-haproxy.cfg">Here</a> is what my configuration looks like.</p>
<p>To enable the changes after editing the configuration file, we must restart the HAProxy service.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo systemctl restart haproxy
</code></pre></div></div>
<p>If you are using my config file, you will see that I have added a location for an SSL certificate. If you restart the service without providing a valid SSL certificate, it will throw an error and the service will stop.</p>
<p>Now, let us jump to generating an SSL certificate.</p>
<h3 id="certbot">Certbot</h3>
<p>The official documentation states that you must install certbot using Snap package manager. I do not like it at all due to its back-end being proprietary. I used my distibutions (Fedoras) package manager to install certbot and it works fine. So, I leave the installtion of certbot to you.</p>
<p>There are many ways to generate a certbot certificate, depending upon your requirements. I recommend setting up a wildcard certificate. You will need your domain providers API key. A simple search on your search engine will help you find a decent guide. Generate a certificate using <code class="language-plaintext highlighter-rouge">certbot certonly</code> command, as we are going to set up HAProxy with the certificate ourselves.</p>
<p>Certbot will generate a private key and a public key certificate in <code class="language-plaintext highlighter-rouge">/etc/letsencrypt/live/YOURDOMAIN.COM</code> folder. We will have to pipe both of them into a single file.</p>
<p>Run the following commands, after replacing <code class="language-plaintext highlighter-rouge">YOURDOMAIN.COM</code> with your actual domain and providing a proper path to certificate:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo cat /etc/letsencrypt/live/YOURDOMAIN.COM/fullchain.pem /etc/letsencrypt/live/YOURDOMAIN.COM/privkey.pem | sudo tee /path/to/certificate.pem
</code></pre></div></div>
<p>After making sure that certbot will be autorenewing your certificate, you can add this command in your root users crontab. Run the following to create a new cronjob:
sudo crontab -e</p>
<p>Add the above command with proper syntax. Add</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>0 22 * * * sudo cat /etc/letsencrypt/live/YOURDOMAIN.COM/fullchain.pem /etc/letsencrypt/live/YOURDOMAIN.COM/privkey.pem | sudo tee /path/to/certificate.pem
</code></pre></div></div>
<p>This will copy the generated keys into your single certificate file, everyday at 10 PM.</p>
<p>Save the file and exit the editor.</p>
<p>Confirm the certificate path in your haproxy.cfg, and restart HAProxy using</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo systemctl restart haproxy
</code></pre></div></div>
<p>That is it. You are done. Whenever you create new services, make sure you update your HAProxy configuration file and restart the HAProxy service.</p>
<p>Although, you do not have to touch your VPS anymore, I still recommend loging into the machine updating and rebooting it regularly.</p>
<p>If you have any questions, or suggestions, leave a comment down below, or reach out to me <a href="https://aiquiral.me/contact">directly</a>.</p>
<h2 id="references">References</h2>
<ul>
<li><a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-20-04">https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-20-04</a></li>
<li><a href="https://github.com/mochman/Bypass_CGNAT">https://github.com/mochman/Bypass_CGNAT</a></li>
<li><a href="https://certbot.eff.org/instructions">https://www.digitalocean.com/community/tutorials/how-to-create-let-s-encrypt-wildcard-certificates-with-certbot</a></li>
<li><a href="https://certbot.eff.org/instructions">https://skarlso.github.io/2017/02/15/how-to-https-with-hugo-letsencrypt-haproxy/</a></li>
<li><a href="https://certbot.eff.org/instructions">https://certbot.eff.org/instructions</a></li>
</ul>
</div>
<div class="comments">
<hr>
<h2>Comments</h2>
<script>
var remark_config = {
host: 'https://comments.aiquiral.me',
site_id: 'blog',
}
</script>
<script>!function(e,n){for(var o=0;o<e.length;o++){var r=n.createElement("script"),c=".js",d=n.head||n.body;"noModule"in r?(r.type="module",c=".mjs"):r.async=!0,r.defer=!0,r.src=remark_config.host+"/web/"+e[o]+c,d.appendChild(r)}}(remark_config.components||["embed"],document);</script>
<div id="remark42"></div>
</div>
<div class="comments">
<h2>Recent Posts</h2>
<div class="all-posts-table"><div class="allposts-post">
<a href="/bypass-cgnat">
<img src="/assets/posts/2023-10-07-bypass-cgnat/bypass-cgnat.avif" class="latest" />
<h3 style="color: #25252d;">How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through</h3>
<p>07 October 2023 | Linux Guide, Privacy, Self-hosting</p>
<p>You've set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/remap-keyboard-keys-using-evremap">
<img src="/assets/posts/2023-05-21-remap-keyboard-keys-using-evremap/evremap.avif" class="latest" />
<h3 style="color: #25252d;">Remap keyboard keys using evremap</h3>
<p>21 May 2023 | Linux Guide</p>
<p>Sometimes a key on your keyboard stops working, and you may not have the time or motivation to fix it or get it fixed. Or...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/proton-vpn-linux-guide">
<img src="/assets/posts/2023-05-19-proton-vpn-linux-guide/proton.svg" class="latest" />
<h3 style="color: #25252d;">Proton VPN Linux Guide How to install, configure, use and auto-connect?</h3>
<p>19 May 2023 | Linux Guide, Privacy</p>
<p>The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div></div>
</div>
<div class="foot"><p style="text-align: center;"><a href="https://soundcloud.com/aiquiral">Music</a> <a href="https://git.aiquiral.me/aiquiral">Other Projects</a> <img src=/assets/logo/inline-logo.svg style="position:relative;bottom:-3px" width=28 height=32></img> <a href="https://aiquiral.me/privacy-policy.html">Privacy Policy</a> <a href="https://aiquiral.me/about.html">About</a></p></div>
<div class="line-bottom"></div>
</body>
</html>

146
index.html Normal file
View file

@ -0,0 +1,146 @@
<!DOCTYPE html>
<html lang="en-IN">
<head>
<title>Aiquiral's Blog | Posting What I Learn</title>
<meta name="description" content="With clear and concise writing, the aim of this blog is to help others solve problems, and learn the ropes of self-hosting, using Linux, becoming a privacy enthusiast and more.">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<link rel="icon" type="image/x-icon" href=/assets/logo/favicon.svg />
<link rel="stylesheet" href=/assets/css/style.css />
</head>
<body>
<div class="head">
<div class="line-top"></div>
<nav>
<ul class='nav-bar'>
<li class='logo'><a href=/index.html><img src=/assets/logo/favicon.svg /></a></li>
<input type='checkbox' id='check' />
<span class="menu">
<li><a href="https://blog.aiquiral.me">Home</a></li>
<li><a href="https://portfolio.aiquiral.me">Portfolio</a></li>
<li><a href="https://aiquiral.me/contact">Contact</a></li>
<li><a href="https://aiquiral.me/about">About</a></li>
<label for="check" class="close-menu">X</label>
</span>
<label for="check" class="open-menu"></label>
</ul>
</nav>
</div>
<div class="main">
<div class="hero">
<div class="latest-post">
<h1 style="padding-bottom: 20px;">Latest</h1><a href="/bypass-cgnat">
<img src="/assets/posts/2023-10-07-bypass-cgnat/bypass-cgnat.avif" class="latest" />
<h2 style="color: #25252d;">How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through</h2>
<p>07 October 2023 | Linux Guide, Privacy, Self-hosting</p>
<p>You've set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it with friends and family, or maybe you just need the ability to access it remotely. So, you decided to expose it to the internet, but your ISP does not let you do that. Issues like dynamic IP can be resolved using a service like Duck DNS or No-IP, but if your ISP does not let you forward your ports, then you have to rely on third-parties to forward your traffic.</p>
<p style="color: #2ea3f2;">Read More</p>
</a></div>
<div class="search-and-categories">
<div class="search-bar">
<input type="search" id="search-bar" placeholder="Start typing to search..." />
<div id="search-results"></div>
<script type="application/json" id="search-data">[
{
"title": "How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through",
"snippet": "You&#39;ve set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it with friends and family, or maybe you just need the ability to access it remotely. So, you decided to expose it to the internet, but your ISP does not let you do that. Issues like dynamic IP can be resolved using a service like Duck DNS or No-IP, but if your ISP does not let you forward your ports, then you have to rely on third-parties to forward your traffic.",
"href": "/bypass-cgnat"
},
{
"title": "Remap keyboard keys using evremap",
"snippet": "Sometimes a key on your keyboard stops working, and you may not have the time or motivation to fix it or get it fixed. Or maybe you just want to change how your keyboard keys work to improve your workflow. All this, and more, can be done with the help of evremap.",
"href": "/remap-keyboard-keys-using-evremap"
},
{
"title": "Proton VPN Linux Guide How to install, configure, use and auto-connect?",
"snippet": "The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific country, enabling their VPN Accelerator etc. However, we can achieve a lot using their official CLI client. And yes, that is what we are going to use. No third-party applications.",
"href": "/proton-vpn-linux-guide"
},
{
"title": "Awesome Privacy",
"snippet": "(UNDER CONSTRUCTION) A list dedicated to providing the best tools and services to protect your online privacy.",
"href": "/awesome-privacy"
}
]</script>
<script>
var searchData = JSON.parse(document.getElementById('search-data').textContent);
var searchResultsList = document.getElementById('search-results');
var searchInput = document.getElementById('search-bar');
var updateSearchResults = function(e) {
var q = e.target.value.toLowerCase();
if (q.trim() !== '') {
searchResultsList.innerHTML = "";
for (let i in searchData) {
var searchItem = searchData[i];
if (searchItem.title.toLowerCase().includes(q) || searchItem.snippet.toLowerCase().includes(q)) {
var searchLink = document.createElement('a');
var searchContent = document.createTextNode(searchItem.title);
searchLink.setAttribute('href', searchItem.href);
searchLink.appendChild(searchContent);
searchResultsList.appendChild(searchLink);
}
}
}
};
searchInput.addEventListener('keyup', updateSearchResults);
</script>
</div>
<h1>Categories</h1>
<div class="categories">
<a class="category-button" href="/privacy.html"><div class="category-button-div">Privacy</div></a>
<a class="category-button" href="/linux-guide.html"><div class="category-button-div">Linux Guide</div></a>
<a class="category-button" href="/self-hosting.html"><div class="category-button-div">Self-hosting</div></a>
<a class="category-button" href="/animation.html"><div class="category-button-div">Animation</div></a>
</div>
</div>
</div>
<div class="author">
<div class="meri-photo-div">
<img class="meri-photo" src=/assets/logo/aiquiral.avif alt="" />
</div>
<div class="meri-bio">
<div><h4>ABOUT THE AUTHOR</h4></div>
<div><h1 style="padding-bottom: 10px;">Anuj Kaushik</h1></div>
<div><p>During my journey of learning about self-hosting, I became increasingly aware of the privacy issues in our society. As a result, I've been removing proprietary software, services and hardware from my life. On my blog, I share tutorials, guides and configurations for others looking to do the same.</p></div>
&nbsp;
<div><a class="simple-link" href="https://aiquiral.me/about">Read more</a></div>
</div>
</div>
<div class="all-posts">
<h1>All Posts</h1>
<div class="all-posts-table"><div class="allposts-post">
<a href="/remap-keyboard-keys-using-evremap">
<img src="/assets/posts/2023-05-21-remap-keyboard-keys-using-evremap/evremap_thumb.avif" class="latest" />
<h3 style="color: #25252d;">Remap keyboard keys using evremap</h3>
<p>21 May 2023 | Linux Guide</p>
<p>Sometimes a key on your keyboard stops working, and you may not have the time or motivation to fix it or get it fixed. Or...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/proton-vpn-linux-guide">
<img src="/assets/posts/2023-05-19-proton-vpn-linux-guide/proton.svg" class="latest" />
<h3 style="color: #25252d;">Proton VPN Linux Guide How to install, configure, use and auto-connect?</h3>
<p>19 May 2023 | Linux Guide, Privacy</p>
<p>The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/awesome-privacy">
<img src="/assets/posts/2023-04-26-awesome-privacy/awesome.svg" class="latest" />
<h3 style="color: #25252d;">Awesome Privacy</h3>
<p>26 April 2023 | Privacy, Self-hosting</p>
<p>(UNDER CONSTRUCTION) A list dedicated to providing the best tools and services to protect your online privacy.</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div></div>
</div>
</div>
<div class="foot"><p style="text-align: center;"><a href="https://soundcloud.com/aiquiral">Music</a> <a href="https://git.aiquiral.me/aiquiral">Other Projects</a> <img src=/assets/logo/inline-logo.svg style="position:relative;bottom:-3px" width=28 height=32></img> <a href="https://aiquiral.me/privacy-policy.html">Privacy Policy</a> <a href="https://aiquiral.me/about.html">About</a></p></div>
<div class="line-bottom"></div>
</body>
</html>

87
linux-guide.html Normal file
View file

@ -0,0 +1,87 @@
<!DOCTYPE html>
<html lang="en-IN">
<head>
<title>Category - Linux Guide | Aiquiral's Blog</title>
<meta name="description" content="With clear and concise writing, the aim of this blog is to help others solve problems, and learn the ropes of self-hosting, using Linux, becoming a privacy enthusiast and more.">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<link rel="icon" type="image/x-icon" href=/assets/logo/favicon.svg />
<link rel="stylesheet" href=/assets/css/style.css />
</head>
<body>
<div class="head">
<div class="line-top"></div>
<nav>
<ul class='nav-bar'>
<li class='logo'><a href=/index.html><img src=/assets/logo/favicon.svg /></a></li>
<input type='checkbox' id='check' />
<span class="menu">
<li><a href="https://blog.aiquiral.me">Home</a></li>
<li><a href="https://portfolio.aiquiral.me">Portfolio</a></li>
<li><a href="https://aiquiral.me/contact">Contact</a></li>
<li><a href="https://aiquiral.me/about">About</a></li>
<label for="check" class="close-menu">X</label>
</span>
<label for="check" class="open-menu"></label>
</ul>
</nav>
</div>
<div class="main">
<style>
.category-page{
padding: 5vw 30%;
}
@media (max-width: 1203px) {
.category-page {
padding: 70px 10%;
margin-top: 100px;
}
}
</style>
<div class="category-page">
<h1>Category - Linux Guide</h1>
<div class="allposts-post" style="margin: 30px 0px 30px 0px;">
<a href="/bypass-cgnat">
<img src="/assets/posts/2023-10-07-bypass-cgnat/bypass-cgnat_thumb.avif" class="latest" />
<h2 style="color: #25252d;">How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through</h2>
<p>07 October 2023 | Linux Guide, Privacy, Self-hosting</p>
<p>You've set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div>
<div class="allposts-post" style="margin: 30px 0px 30px 0px;">
<a href="/remap-keyboard-keys-using-evremap">
<img src="/assets/posts/2023-05-21-remap-keyboard-keys-using-evremap/evremap_thumb.avif" class="latest" />
<h2 style="color: #25252d;">Remap keyboard keys using evremap</h2>
<p>21 May 2023 | Linux Guide</p>
<p>Sometimes a key on your keyboard stops working, and you may not have the time or motivation to fix it or get it fixed. Or...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div>
<div class="allposts-post" style="margin: 30px 0px 30px 0px;">
<a href="/proton-vpn-linux-guide">
<img src="/assets/posts/2023-05-19-proton-vpn-linux-guide/proton.svg" class="latest" />
<h2 style="color: #25252d;">Proton VPN Linux Guide How to install, configure, use and auto-connect?</h2>
<p>19 May 2023 | Linux Guide, Privacy</p>
<p>The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div>
</div>
</div>
<div class="foot"><p style="text-align: center;"><a href="https://soundcloud.com/aiquiral">Music</a> <a href="https://git.aiquiral.me/aiquiral">Other Projects</a> <img src=/assets/logo/inline-logo.svg style="position:relative;bottom:-3px" width=28 height=32></img> <a href="https://aiquiral.me/privacy-policy.html">Privacy Policy</a> <a href="https://aiquiral.me/about.html">About</a></p></div>
<div class="line-bottom"></div>
</body>
</html>

87
privacy.html Normal file
View file

@ -0,0 +1,87 @@
<!DOCTYPE html>
<html lang="en-IN">
<head>
<title>Category - Privacy | Aiquiral's Blog</title>
<meta name="description" content="With clear and concise writing, the aim of this blog is to help others solve problems, and learn the ropes of self-hosting, using Linux, becoming a privacy enthusiast and more.">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<link rel="icon" type="image/x-icon" href=/assets/logo/favicon.svg />
<link rel="stylesheet" href=/assets/css/style.css />
</head>
<body>
<div class="head">
<div class="line-top"></div>
<nav>
<ul class='nav-bar'>
<li class='logo'><a href=/index.html><img src=/assets/logo/favicon.svg /></a></li>
<input type='checkbox' id='check' />
<span class="menu">
<li><a href="https://blog.aiquiral.me">Home</a></li>
<li><a href="https://portfolio.aiquiral.me">Portfolio</a></li>
<li><a href="https://aiquiral.me/contact">Contact</a></li>
<li><a href="https://aiquiral.me/about">About</a></li>
<label for="check" class="close-menu">X</label>
</span>
<label for="check" class="open-menu"></label>
</ul>
</nav>
</div>
<div class="main">
<style>
.category-page{
padding: 5vw 30%;
}
@media (max-width: 1203px) {
.category-page {
padding: 70px 10%;
margin-top: 100px;
}
}
</style>
<div class="category-page">
<h1>Category - Privacy</h1>
<div class="allposts-post" style="margin: 30px 0px 30px 0px;">
<a href="/bypass-cgnat">
<img src="/assets/posts/2023-10-07-bypass-cgnat/bypass-cgnat_thumb.avif" class="latest" />
<h2 style="color: #25252d;">How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through</h2>
<p>07 October 2023 | Linux Guide, Privacy, Self-hosting</p>
<p>You've set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div>
<div class="allposts-post" style="margin: 30px 0px 30px 0px;">
<a href="/proton-vpn-linux-guide">
<img src="/assets/posts/2023-05-19-proton-vpn-linux-guide/proton.svg" class="latest" />
<h2 style="color: #25252d;">Proton VPN Linux Guide How to install, configure, use and auto-connect?</h2>
<p>19 May 2023 | Linux Guide, Privacy</p>
<p>The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div>
<div class="allposts-post" style="margin: 30px 0px 30px 0px;">
<a href="/awesome-privacy">
<img src="/assets/posts/2023-04-26-awesome-privacy/awesome.svg" class="latest" />
<h2 style="color: #25252d;">Awesome Privacy</h2>
<p>26 April 2023 | Privacy, Self-hosting</p>
<p>(UNDER CONSTRUCTION) A list dedicated to providing the best tools and services to protect your online privacy.</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div>
</div>
</div>
<div class="foot"><p style="text-align: center;"><a href="https://soundcloud.com/aiquiral">Music</a> <a href="https://git.aiquiral.me/aiquiral">Other Projects</a> <img src=/assets/logo/inline-logo.svg style="position:relative;bottom:-3px" width=28 height=32></img> <a href="https://aiquiral.me/privacy-policy.html">Privacy Policy</a> <a href="https://aiquiral.me/about.html">About</a></p></div>
<div class="line-bottom"></div>
</body>
</html>

322
proton-vpn-linux-guide.html Normal file
View file

@ -0,0 +1,322 @@
<!DOCTYPE html>
<html lang="en-IN">
<head>
<title>Proton VPN Linux Guide How to install, configure, use and auto-connect? | Aiquiral's Blog</title>
<meta name="description" content="The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific country, enabling their VPN Accelerator etc. However, we can achieve a lot using their official CLI client. And yes, that is what we are going to use. No third-party applications.">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<link rel="icon" type="image/x-icon" href=/assets/logo/favicon.svg />
<link rel="stylesheet" href=/assets/css/style.css />
</head>
<body>
<div class="head">
<div class="line-top"></div>
<nav>
<ul class='nav-bar'>
<li class='logo'><a href=/index.html><img src=/assets/logo/favicon.svg /></a></li>
<input type='checkbox' id='check' />
<span class="menu">
<li><a href="https://blog.aiquiral.me">Home</a></li>
<li><a href="https://portfolio.aiquiral.me">Portfolio</a></li>
<li><a href="https://aiquiral.me/contact">Contact</a></li>
<li><a href="https://aiquiral.me/about">About</a></li>
<label for="check" class="close-menu">X</label>
</span>
<label for="check" class="open-menu"></label>
</ul>
</nav>
</div>
<div class="blog-post">
<h1 class="post-heading">Proton VPN Linux Guide How to install, configure, use and auto-connect?</h1>
<p class="post-date">19 May 2023 | Linux Guide, Privacy</p>
<img src="/assets/posts/2023-05-19-proton-vpn-linux-guide/proton.svg" class="featured" alt="Proton VPN - Linux Guide - Install, Configure, Use & Auto-Connect" title="Proton VPN Linux Guide How to install, configure, use and auto-connect?"/>
<h2 id="content">Content</h2>
<ol start="0">
<li><a href="#introduction">Introduction</a></li>
<li><a href="#installing-the-official-linux-cli">Installing</a>
<ul>
<li><a href="#debian">Debian</a></li>
<li><a href="#fedora-35">Fedora 35+</a></li>
<li><a href="#arch">Arch</a></li>
</ul>
</li>
<li>
<p><a href="#configuring-and-using">Configuring and using</a></p>
<ol type="a">
<li><a href="#login-and-basic-configuration">Login and basic configuration</a></li>
<li><a href="#advanced-configuration">Advanced configuration</a></li>
<li><a href="#connecting-to-the-vpn-servers">Connecting to the VPN servers</a></li>
</ol>
</li>
<li><a href="#setting-up-auto-connect-at-boot">Setting up auto-connect on boot</a></li>
<li><a href="#other-options">Other options</a></li>
<li><a href="#references">References</a></li>
</ol>
<h2 id="introduction">Introduction</h2>
<p>It is widely known that the Proton team does not focus on Linux users as much as they focus on Windows and macOS users. The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific country, enabling their VPN Accelerator etc.</p>
<p>However, we can achieve a lot using their official CLI client. And yes, that is what we are going to use. No third-party applications.</p>
<h2 id="installing-the-official-linux-cli">Installing the official Linux CLI</h2>
<h3 id="debian">Debian</h3>
<p>Get the Proton VPN repository setup DEB package:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wget https://repo.protonvpn.com/debian/dists/stable/main/binary-all/protonvpn-stable-release_1.0.3_all.deb
</code></pre></div></div>
<p>Install the Proton VPN repository:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-get install ./protonvpn-stable-release_1.0.3_all.deb
</code></pre></div></div>
<p>Update the apt-get package list:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-get update
</code></pre></div></div>
<p>Install the Proton VPN Linux CLI:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-get install protonvpn-cli
</code></pre></div></div>
<h3 id="fedora-35">Fedora 35+</h3>
<p>Get the Proton VPN repository setup RPM package:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wget https://protonvpn.com/download/protonvpn-stable-release-1.0.1-1.noarch.rpm
</code></pre></div></div>
<p>Install the Proton VPN repository:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo dnf install ./protonvpn-stable-release-1.0.1-1.noarch.rpm
</code></pre></div></div>
<p>Update the dnf package list:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo dnf update
</code></pre></div></div>
<p>Install the Proton VPN Linux CLI:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo dnf install protonvpn-cli
</code></pre></div></div>
<p>Install required dependencies for the alternative routing feature:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo dnf install python3-pip
pip3 install --user 'dnspython&gt;=1.16.0
</code></pre></div></div>
<h3 id="arch">Arch</h3>
<p>Update your local repository:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pamac update --force-refresh
</code></pre></div></div>
<p>Verify that Proton VPN is now in your local repository:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pamac search --aur protonvpn-cli
</code></pre></div></div>
<p>Build and install Proton VPN:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pamac build protonvpn-cli
</code></pre></div></div>
<p class="important-note"><strong>Note</strong> - Visit the Proton VPNs <a href="https://protonvpn.com/support/linux-vpn-tool/">official documentation page</a> if you get any errors or need detailed instructions.</p>
<h2 id="configuring-and-using-the-cli-tool">Configuring and using the CLI tool</h2>
<p><img src="/assets/posts/2023-05-19-proton-vpn-linux-guide/protonvpn-cli_-help.avif" alt="Terminal screenshot with the command &quot;protonvpn-cli --help&quot;." title="Proton VPN CLI with --help argument" /></p>
<h3 id="login-and-basic-configuration">Login and basic configuration</h3>
<p>To log in, use this command and follow the on-screen instructions:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli login
</code></pre></div></div>
<p>Turn on VPN Accelerator:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli config --vpn-accelerator enable
</code></pre></div></div>
<p>Turn on NetShield to block ads and malware:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli ns --ads-malware
</code></pre></div></div>
<p>Change default connection protocol to TCP:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli config -p tcp
</code></pre></div></div>
<h3 id="advanced-configuration">Advanced configuration</h3>
<p>Change DNS configuration:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli config --dns custom --ip 9.9.9.9
</code></pre></div></div>
<p>You can add upto 3 IPs, or leave it at automatic by using this command:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli config --dns automatic
</code></pre></div></div>
<p>Turn on alternative routing to circumvent censorship:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli config --alt-routing enable
</code></pre></div></div>
<p>Turn on the Kill Switch:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli ks --on
</code></pre></div></div>
<p>or</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli ks --permanent
</code></pre></div></div>
<p>For more configuration options, use:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli --help
</code></pre></div></div>
<p>and</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli config --help
</code></pre></div></div>
<h3 id="connecting-to-the-vpn-servers">Connecting to the VPN servers</h3>
<p>To manually select the country and the server to connect to, use the following command and follow the on-screen instructions:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli c
</code></pre></div></div>
<p>To connect to the fastest Proton VPN server for your location, for example, enter:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli c -f
</code></pre></div></div>
<p>To connect to the fastest Tor server, enter:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli c --tor
</code></pre></div></div>
<p>To connect to the fastest server in a specific country, a country code can be used. For example, the following command connects to the fastest server in Germany using TCP:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli c --cc DE -p TCP
</code></pre></div></div>
<h2 id="setting-up-auto-connect-at-boot">Setting up auto-connect at boot</h2>
<p>The following method is tested on Debian 11 with Xfce, Fedora 38 Workstation with Gnome and Manjaro 22.1.1 with KDE.</p>
<p>Go to the autostart folder in your home directory which contains all your application shortcuts that start immediately after login:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd ~/.config/autostart
</code></pre></div></div>
<p>Create a new file:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nano pvpn.desktop
</code></pre></div></div>
<p>Paste the following:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Desktop Entry]
Exec=protonvpn-cli c -f
Name=ProtonVPN Autoconnect
Comment=Autoconnect to the fastest server
Type=Application
Icon=protonvpn-logo
</code></pre></div></div>
<p>Change the “Exec” value according to your needs. For example, use</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>protonvpn-cli c --cc DE -p TCP
</code></pre></div></div>
<p>to connect to the fastest server in Germany using the TCP protocol. Save the file by hitting Ctrl + X, then Y, and then Enter.</p>
<p>Test this by logging out and then logging back in. Or just restart the whole system. If everything went perfectly, you should be automatically connected to the VPN when you log in.</p>
<p>If due to some reason you are not automatically connected, change the “Exec” value to:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Exec=bash -c "sleep 10 &amp;&amp; protonvpn-cli c -f"
</code></pre></div></div>
<p>This will delay the command execution by ten seconds.</p>
<h2 id="other-options">Other options</h2>
<p>There are other options:</p>
<ul>
<li>Installing <a href="https://www.wireguard.com/install/">Wireguard</a>, generating a <a href="https://protonvpn.com/support/wireguard-configurations/">config file</a> and using that.</li>
<li>Using OpenVPN <a href="https://protonvpn.com/support/linux-openvpn/">config files</a> to connect to the VPN.</li>
<li>Setting up the VPN on <a href="https://protonvpn.com/support/installing-protonvpn-on-a-router/">your router</a>.</li>
</ul>
<h2 id="references">References</h2>
<ul>
<li><a href="https://github.com/ProtonVPN/linux-cli">https://github.com/ProtonVPN/linux-cli</a></li>
<li><a href="https://protonvpn.com/support/">https://protonvpn.com/support/</a></li>
</ul>
</div>
<div class="comments">
<hr>
<h2>Comments</h2>
<script>
var remark_config = {
host: 'https://comments.aiquiral.me',
site_id: 'blog',
}
</script>
<script>!function(e,n){for(var o=0;o<e.length;o++){var r=n.createElement("script"),c=".js",d=n.head||n.body;"noModule"in r?(r.type="module",c=".mjs"):r.async=!0,r.defer=!0,r.src=remark_config.host+"/web/"+e[o]+c,d.appendChild(r)}}(remark_config.components||["embed"],document);</script>
<div id="remark42"></div>
</div>
<div class="comments">
<h2>Recent Posts</h2>
<div class="all-posts-table"><div class="allposts-post">
<a href="/bypass-cgnat">
<img src="/assets/posts/2023-10-07-bypass-cgnat/bypass-cgnat.avif" class="latest" />
<h3 style="color: #25252d;">How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through</h3>
<p>07 October 2023 | Linux Guide, Privacy, Self-hosting</p>
<p>You've set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/remap-keyboard-keys-using-evremap">
<img src="/assets/posts/2023-05-21-remap-keyboard-keys-using-evremap/evremap.avif" class="latest" />
<h3 style="color: #25252d;">Remap keyboard keys using evremap</h3>
<p>21 May 2023 | Linux Guide</p>
<p>Sometimes a key on your keyboard stops working, and you may not have the time or motivation to fix it or get it fixed. Or...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/proton-vpn-linux-guide">
<img src="/assets/posts/2023-05-19-proton-vpn-linux-guide/proton.svg" class="latest" />
<h3 style="color: #25252d;">Proton VPN Linux Guide How to install, configure, use and auto-connect?</h3>
<p>19 May 2023 | Linux Guide, Privacy</p>
<p>The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div></div>
</div>
<div class="foot"><p style="text-align: center;"><a href="https://soundcloud.com/aiquiral">Music</a> <a href="https://git.aiquiral.me/aiquiral">Other Projects</a> <img src=/assets/logo/inline-logo.svg style="position:relative;bottom:-3px" width=28 height=32></img> <a href="https://aiquiral.me/privacy-policy.html">Privacy Policy</a> <a href="https://aiquiral.me/about.html">About</a></p></div>
<div class="line-bottom"></div>
</body>
</html>

View file

@ -0,0 +1,236 @@
<!DOCTYPE html>
<html lang="en-IN">
<head>
<title>Remap keyboard keys using evremap | Aiquiral's Blog</title>
<meta name="description" content="Sometimes a key on your keyboard stops working, and you may not have the time or motivation to fix it or get it fixed. Or maybe you just want to change how your keyboard keys work to improve your workflow. All this, and more, can be done with the help of evremap.">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<link rel="icon" type="image/x-icon" href=/assets/logo/favicon.svg />
<link rel="stylesheet" href=/assets/css/style.css />
</head>
<body>
<div class="head">
<div class="line-top"></div>
<nav>
<ul class='nav-bar'>
<li class='logo'><a href=/index.html><img src=/assets/logo/favicon.svg /></a></li>
<input type='checkbox' id='check' />
<span class="menu">
<li><a href="https://blog.aiquiral.me">Home</a></li>
<li><a href="https://portfolio.aiquiral.me">Portfolio</a></li>
<li><a href="https://aiquiral.me/contact">Contact</a></li>
<li><a href="https://aiquiral.me/about">About</a></li>
<label for="check" class="close-menu">X</label>
</span>
<label for="check" class="open-menu"></label>
</ul>
</nav>
</div>
<div class="blog-post">
<h1 class="post-heading">Remap keyboard keys using evremap</h1>
<p class="post-date">21 May 2023 | Linux Guide</p>
<img src="/assets/posts/2023-05-21-remap-keyboard-keys-using-evremap/evremap.avif" class="featured" alt="A close-up view of a purple backlit keyboard with a transparent text overlay reading “evremap”." title="Remap keyboard keys using evremap"/>
<h2 id="content">Content</h2>
<ol start="0">
<li><a href="#introduction">Introduction</a></li>
<li>
<p><a href="#building-and-installing">Building and Installing</a></p>
<ol type="a">
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#building">Building</a></li>
<li><a href="#installing">Installing</a></li>
</ol>
</li>
<li><a href="#usage">Usage</a></li>
<li><a href="#other-options">Other Options</a></li>
<li><a href="#references">References</a></li>
</ol>
<h2 id="introduction">Introduction</h2>
<p>Sometimes a key on your keyboard stops working, and you may not have the time or motivation to fix it or get it fixed. Or maybe you just want to change how your keyboard keys work to improve your workflow. All this, and more, can be done with the help of <code class="language-plaintext highlighter-rouge">evremap</code> (<a href="https://github.com/wez/evremap">github.com/wez/evremap</a>).</p>
<p>It is a tool that can remap the keyboard inputs for Linux systems, made by <a href="https://github.com/wez/">Wez</a>. And because <code class="language-plaintext highlighter-rouge">evremap</code> targets the <code class="language-plaintext highlighter-rouge">evdev</code> layer of <code class="language-plaintext highlighter-rouge">libinput</code>, the remapping is effective system-wide in Wayland, X11 and the Linux console.</p>
<h2 id="building-and-installing">Building and Installing</h2>
<h3 id="prerequisites">Prerequisites</h3>
<p>Debian and its derivatives like Ubuntu require some prerequisites before we can build it. Use this command to install them:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt install git cargo pkg-config libevdev-dev
</code></pre></div></div>
<p>RHEL and its derivates also require some prerequisites. Use the following command to install it:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo dnf install git libevdev-devel
</code></pre></div></div>
<h3 id="building">Building</h3>
<p>First, clone the repository to any folder of your choice. I recommend the Downloads folder, as after building it, you can safely delete it.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd ~/Downloads &amp;&amp; git clone https://github.com/wez/evremap.git &amp;&amp; cd evremap
</code></pre></div></div>
<p>Now, build the binary.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cargo build --release
</code></pre></div></div>
<p>If everything went fine, the last lines of your terminal output should be something like the ones in the image below.</p>
<p><img src="/assets/posts/2023-05-21-remap-keyboard-keys-using-evremap/evremap_build-finish.avif" alt="A screenshot of the terminal after evremap finished building." title="evremap_build-finish" class="inline-img" /></p>
<h3 id="installing">Installing</h3>
<p>Copy the binary file to the specified location using this command:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo cp target/release/evremap /usr/bin/
</code></pre></div></div>
<p>Now create a config file in the specified location using this command:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo touch /etc/evremap.toml
</code></pre></div></div>
<p>We will edit this file in the Usage section, below.To make your configured remapping active immediately after the system startup we need to create a <code class="language-plaintext highlighter-rouge">systemd</code> service. Use the following commands to do so:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo cp evremap.service /usr/lib/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable evremap.service
sudo systemctl start evremap.service
</code></pre></div></div>
<p>Now, you can safely delete the cloned repository.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd .. &amp;&amp; rm -rf evremap
</code></pre></div></div>
<h2 id="usage">Usage</h2>
<p>In the configuration file, we need to state two things, basically name of the keyboard(s) and name of the keys you wish to remap.</p>
<p>To find the name of all the connected keyboards use the following command:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo evremap list-devices
</code></pre></div></div>
<p>Usually, laptop keyboards will be named “AT Translated Set 2 keyboard”.</p>
<p>To find the name of all the inputs use:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo evremap list-keys
</code></pre></div></div>
<p>The <code class="language-plaintext highlighter-rouge">grep</code> command can help you find the keyboards and the keys faster.</p>
<p>For example:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo evremap list-devices | grep HOME
</code></pre></div></div>
<p>Now, let us modify the configuration file. Use the following command to edit it:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/evremap.toml
</code></pre></div></div>
<p>Here is a template that you can copy and paste, and make te changes you need:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>device_name = "DEVICE NAME HERE"
[[remap]]
input = ["NAME_OF_THE_KEY_YOU_WILL_PRESS_ON_YOUR_KEYBOARD"]
output = ["NAME_OF_THE_KEY_YOU_NEED_TO_BE_PRESS_AS_THE_OUTPUT"]
[[remap]]
input = ["KEY_COMBINATION_1", "KEY_COMBINATION_2"]
output = ["OUTPUT_KEY"]
[[dual_role]]
input = "KEY_YOU_NEED_TO_CHANGE_THE_RESULT_FOR"
hold = ["KEY_THAT_WILL_BE_PRESSED_WHEN_INPUT_KEY_IS_HELD"]
tap = ["KEY_THAT_WILL_BE_PRESSED_WHEN_INPUT_KEY_IS_TAPPED"]
</code></pre></div></div>
<p>Here is the configuration file that I use for my laptop, as my Tab and Number 2 keys do not work.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>device_name = "AT Translated Set 2 keyboard"
[[remap]]
input = ["KEY_END"] output = ["KEY_2"]
[[remap]]
input = ["KEY_HOME"]
output = ["KEY_TAB"]
</code></pre></div></div>
<p>You can save the file by hitting CTRL + X, then Y and then Enter.</p>
<p>Now, you can log out and log back in and test your new configuration. If everything went perfectly, your remapped keys should work as expected.</p>
<p>Please visit the <a href="https://github.com/wez/evremap">official repository on GitHub</a> if you have any questions or need a detailed documentation.</p>
<h2 id="other-options">Other Options</h2>
<p>There is a tool called <code class="language-plaintext highlighter-rouge">xmodmap</code>, but it works only on X11.</p>
<h2 id="references">References</h2>
<ul>
<li><a href="https://github.com/wez/evremap">https://github.com/wez/evremap</a></li>
</ul>
</div>
<div class="comments">
<hr>
<h2>Comments</h2>
<script>
var remark_config = {
host: 'https://comments.aiquiral.me',
site_id: 'blog',
}
</script>
<script>!function(e,n){for(var o=0;o<e.length;o++){var r=n.createElement("script"),c=".js",d=n.head||n.body;"noModule"in r?(r.type="module",c=".mjs"):r.async=!0,r.defer=!0,r.src=remark_config.host+"/web/"+e[o]+c,d.appendChild(r)}}(remark_config.components||["embed"],document);</script>
<div id="remark42"></div>
</div>
<div class="comments">
<h2>Recent Posts</h2>
<div class="all-posts-table"><div class="allposts-post">
<a href="/bypass-cgnat">
<img src="/assets/posts/2023-10-07-bypass-cgnat/bypass-cgnat.avif" class="latest" />
<h3 style="color: #25252d;">How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through</h3>
<p>07 October 2023 | Linux Guide, Privacy, Self-hosting</p>
<p>You've set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/remap-keyboard-keys-using-evremap">
<img src="/assets/posts/2023-05-21-remap-keyboard-keys-using-evremap/evremap.avif" class="latest" />
<h3 style="color: #25252d;">Remap keyboard keys using evremap</h3>
<p>21 May 2023 | Linux Guide</p>
<p>Sometimes a key on your keyboard stops working, and you may not have the time or motivation to fix it or get it fixed. Or...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div><div class="allposts-post">
<a href="/proton-vpn-linux-guide">
<img src="/assets/posts/2023-05-19-proton-vpn-linux-guide/proton.svg" class="latest" />
<h3 style="color: #25252d;">Proton VPN Linux Guide How to install, configure, use and auto-connect?</h3>
<p>19 May 2023 | Linux Guide, Privacy</p>
<p>The official Proton VPN Linux client lacks a lot of features, like changing the connection protocol, quickly connecting to the fastest server of a specific...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div></div>
</div>
<div class="foot"><p style="text-align: center;"><a href="https://soundcloud.com/aiquiral">Music</a> <a href="https://git.aiquiral.me/aiquiral">Other Projects</a> <img src=/assets/logo/inline-logo.svg style="position:relative;bottom:-3px" width=28 height=32></img> <a href="https://aiquiral.me/privacy-policy.html">Privacy Policy</a> <a href="https://aiquiral.me/about.html">About</a></p></div>
<div class="line-bottom"></div>
</body>
</html>

8
robots.txt Normal file
View file

@ -0,0 +1,8 @@
User-agent: googlebot-image
Disallow: /
User-agent: psbot
Disallow: /
User-agent: *
Disallow:
Disallow: /cgi-bin/
Sitemap: https://aiquiral.me/sitemap.xml

77
self-hosting.html Normal file
View file

@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="en-IN">
<head>
<title>Category - Self-hosting | Aiquiral's Blog</title>
<meta name="description" content="With clear and concise writing, the aim of this blog is to help others solve problems, and learn the ropes of self-hosting, using Linux, becoming a privacy enthusiast and more.">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<link rel="icon" type="image/x-icon" href=/assets/logo/favicon.svg />
<link rel="stylesheet" href=/assets/css/style.css />
</head>
<body>
<div class="head">
<div class="line-top"></div>
<nav>
<ul class='nav-bar'>
<li class='logo'><a href=/index.html><img src=/assets/logo/favicon.svg /></a></li>
<input type='checkbox' id='check' />
<span class="menu">
<li><a href="https://blog.aiquiral.me">Home</a></li>
<li><a href="https://portfolio.aiquiral.me">Portfolio</a></li>
<li><a href="https://aiquiral.me/contact">Contact</a></li>
<li><a href="https://aiquiral.me/about">About</a></li>
<label for="check" class="close-menu">X</label>
</span>
<label for="check" class="open-menu"></label>
</ul>
</nav>
</div>
<div class="main">
<style>
.category-page{
padding: 5vw 30%;
}
@media (max-width: 1203px) {
.category-page {
padding: 70px 10%;
margin-top: 100px;
}
}
</style>
<div class="category-page">
<h1>Category - Self-hosting</h1>
<div class="allposts-post" style="margin: 30px 0px 30px 0px;">
<a href="/bypass-cgnat">
<img src="/assets/posts/2023-10-07-bypass-cgnat/bypass-cgnat_thumb.avif" class="latest" />
<h2 style="color: #25252d;">How to Bypass CGNAT - Exposing your home server to the internet with TLS/SSL pass through</h2>
<p>07 October 2023 | Linux Guide, Privacy, Self-hosting</p>
<p>You've set up a home server, and are hosting some services like Vaultwarden, or Jellyfin, or perhaps Nextcloud. But now, you want to share it...</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div>
<div class="allposts-post" style="margin: 30px 0px 30px 0px;">
<a href="/awesome-privacy">
<img src="/assets/posts/2023-04-26-awesome-privacy/awesome.svg" class="latest" />
<h2 style="color: #25252d;">Awesome Privacy</h2>
<p>26 April 2023 | Privacy, Self-hosting</p>
<p>(UNDER CONSTRUCTION) A list dedicated to providing the best tools and services to protect your online privacy.</p>
<p style="color: #2ea3f2;">Read More</p>
</a>
</div>
</div>
</div>
<div class="foot"><p style="text-align: center;"><a href="https://soundcloud.com/aiquiral">Music</a> <a href="https://git.aiquiral.me/aiquiral">Other Projects</a> <img src=/assets/logo/inline-logo.svg style="position:relative;bottom:-3px" width=28 height=32></img> <a href="https://aiquiral.me/privacy-policy.html">Privacy Policy</a> <a href="https://aiquiral.me/about.html">About</a></p></div>
<div class="line-bottom"></div>
</body>
</html>

49
sitemap.xml Normal file
View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://blog.aiquiral.me/</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://blog.aiquiral.me/privacy</loc>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://blog.aiquiral.me/self-hosting</loc>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://blog.aiquiral.me/linux-guide</loc>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://blog.aiquiral.me/animation</loc>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>https://blog.aiquiral.me/bypass-cgnat</loc>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://blog.aiquiral.me/remap-keyboard-keys-using-evremap</loc>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://blog.aiquiral.me/proton-vpn-linux-guide</loc>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://blog.aiquiral.me/awesome-privacy</loc>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
</urlset>