summaryrefslogtreecommitdiff
path: root/docs/posts/2022-08-05-Why-You-No-Host.html
blob: cad4ea336d4143c7b9bdab0c73f262d6814546f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<!DOCTYPE html>
<html lang="en">
<head>
    
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="theme-color" content="#6a9fb5">

    <title>Why You No Host?</title>

    <!--
    <link rel="stylesheet" href="https://unpkg.com/latex.css/style.min.css" /> 
    -->

    <link rel="stylesheet" href="/assets/c-hyde.css">

    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700">

    <link rel="stylesheet" href="/assets/main.css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="og:site_name" content="Navan Chauhan">
    <link rel="canonical" href="https://web.navan.dev/posts/2022-08-05-Why-You-No-Host.html">
    <meta name="twitter:url" content="https://web.navan.dev/posts/2022-08-05-Why-You-No-Host.html">
    <meta name="og:url" content="https://web.navan.dev/posts/2022-08-05-Why-You-No-Host.html">
    <meta name="twitter:title" content="Why You No Host?">
    <meta name="og:title" content="Why You No Host?">
    <meta name="description" content="Why you should self-host with YunoHost">
    <meta name="twitter:description" content="Why you should self-host with YunoHost">
    <meta name="og:description" content="Why you should self-host with YunoHost">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="shortcut icon" href="/images/favicon.png" type="image/png">
    <link href="/feed.rss" type="application/atom+xml" rel="alternate" title="Sitewide Atom feed">
    <meta name="twitter:image" content="https://web.navan.dev/images/opengraph/posts/2022-08-05-Why-You-No-Host.png">
    <meta name="og:image" content="https://web.navan.dev/images/opengraph/posts/2022-08-05-Why-You-No-Host.png">
    <meta name="google-site-verification" content="LVeSZxz-QskhbEjHxOi7-BM5dDxTg53x2TwrjFxfL0k">
    <script data-goatcounter="https://navanchauhan.goatcounter.com/count"
        async src="//gc.zgo.at/count.js"></script>
    <script defer data-domain="web.navan.dev" src="https://plausible.io/js/plausible.js"></script>
    <link rel="manifest" href="/manifest.json">
    
</head>
<body class="theme-base-0d">
    <div class="sidebar">
    <div class="container sidebar-sticky">
        <div class="sidebar-about">
            <h1><a href="/">Navan</a></h1>
            <p class="lead" id="random-lead">Alea iacta est.</p>
        </div>

        <ul class="sidebar-nav">
            <li><a class="sidebar-nav-item" href="/about/">about/links</a></li>
            <li><a class="sidebar-nav-item" href="/posts/">posts</a></li>
            <li><a class="sidebar-nav-item" href="/3D-Designs/">3D designs</a></li>
            <li><a class="sidebar-nav-item" href="/feed.rss">RSS Feed</a></li>
            <li><a class="sidebar-nav-item" href="/colophon/">colophon</a></li>
        </ul>
        <div class="copyright"><p>&copy; 2019-2024. Navan Chauhan <br> <a href="/feed.rss">RSS</a></p></div>
    </div>
</div>

<script>
let phrases = [
    "Something Funny", "Veni, vidi, vici", "Alea iacta est", "In vino veritas", "Acta, non verba", "Castigat ridendo mores",
    "Cui bono?", "Memento vivere", "अहम् ब्रह्मास्मि", "अनुगच्छतु प्रवाहं", "चरन्मार्गान्विजानाति", "coq de cheval", "我愛啤酒"
    ];

let new_phrase = phrases[Math.floor(Math.random()*phrases.length)];

let lead = document.getElementById("random-lead");
lead.innerText = new_phrase;
</script>
    <div class="content container">
    
	<div class="post">
	<h1 id="why-you-no-host">Why You No Host?</h1>

<p><img src="/assets/y-u-n-o/meme.png" alt="" /></p>

<p>With all these data leaks happening every other day, why have you not started self-hosting?</p>

<p>The title refers to the “Y U No Host” internet meme, which led to the name of “YunoHost”, an operating system aiming to democratise self-hosting. This post tries to discuss the idea that anyone can self-host and why you should consider YunoHost.</p>

<h2 id="should-you-self-host">Should you Self-Host?</h2>

<ul>
<li>Do you get annoyed when half of the internet goes down because everything a few major companies host the majority of the internet?
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.cloudflare.com/cloudflare-outage-on-june-21-2022/">Cloudflare outage</a></li>
<li><a rel="noopener" target="_blank" href="https://www.fiercetelecom.com/cloud/extended-aws-outage-disrupts-services-across-globe">Amazon Web Services outage</a></li>
<li><a rel="noopener" target="_blank" href="https://www.crn.com/news/cloud/google-cloud-outage-takes-major-websites-and-apps-down">Google Cloud Platform outage</a></li>
</ul></li>
<li>Do you get annoyed when lifetime promises go bust and you don’t actually own anything?
<ul>
<li><a rel="noopener" target="_blank" href="https://support.google.com/photos/answer/10100180?hl=en">Google Photos Unlimited Storage ending</a></li>
<li><a rel="noopener" target="_blank" href="https://www.theverge.com/2018/1/9/16867380/nextbit-smart-storage-cloud-service-shut-down-robin-phone">Nextbit shutting down its Smart Storage Cloud</a> </li>
<li><a rel="noopener" target="_blank" href="https://www.theverge.com/2022/7/8/23199861/playstation-store-film-tv-show-removed-austria-germany-studiocanal">Sony removing purchased movies from libraries</a></li>
</ul></li>
<li>How about account suspensions without any prior notice?
<ul>
<li><a rel="noopener" target="_blank" href="https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=account%20suspended&sort=byPopularity&type=story">Hacker News stories with “account suspended“</a></li>
</ul></li>
<li>Do you value security and privacy?</li>
<li>Or, do you want a new hobby?</li>
</ul>

<p>These are just some of the reasons to self-host.</p>

<h2 id="what-if-you-dont-know-anything">What if you don’t know anything?</h2>

<p>No one is born with the knowledge of knowing how to orchestrate a cluster. You can always learn how to, but sometimes you just don’t have the time or energy. YunoHost tries to ease this issue by providing a clean web-interface. You do not even need to touch the command line for all the basic tasks.</p>

<h2 id="what-should-you-self-host">What should you self-host?</h2>

<p>Anything and everything! The best part about self-hosting is that you own the data. This data is not going to be sold to the highest bidder.</p>

<p>Just because you like watching YouTube does not mean you cannot self-host a privacy friendly front-end for it on your server. Why stop there, why not create your own Google Drive / Dropbox alternative and host it on your own with actual unlimited storage, where the only limit is how much capacity you want. Do you own tons of audiobooks or DVDs/Blu-rays? Simply host an audiobook server or create your own personal Netflix and share it with your friends and family.</p>

<p>Do you own a small-business? Do you hate the idea of having your sensitive e-mails stored on someone else’s server? Why not setup your own mail server, with contacts and calendar syncing.</p>

<p>Do you run a small hobby group? Why not host a forum for everyone to discuss on? Or, simply a chat server where everyone can hop on and text, or call.</p>

<p>Although you can do all of this (and much more!) without needing to use YunoHost, it just makes it easy to manage.</p>

<h2 id="what-do-i-need-to-self-host">What do I need to self-host?</h2>

<ul>
<li>A decent internet connection if you plan on using the services outside your home network and hosting at home</li>
<li>Anything that can run Debian 10/11. Some examples:
<ul>
<li>A used server/PC bought in a Library/University’s liquidation sale</li>
<li>An old laptop nobody uses</li>
<li>A Raspberry Pi 4</li>
<li>A VPS (Checkout Linode, Hetzner, OVH)</li>
</ul></li>
<li>Some patience</li>
</ul>

<h2 id="what-is-yunohosthttpsyunohostorgenwhatsyunohostq2fwhatsyunohost"><a rel="noopener" target="_blank" href="https://yunohost.org/en/whatsyunohost?q=%2Fwhatsyunohost">What is YunoHost</a>?</h2>

<p><a rel="noopener" target="_blank" href="https://yunohost.org/">YunoHost</a> is a server operating system which takes  guesswork out of Self-Hosting. Out of the box it provides:</p>

<ul>
<li>a web-interface for easy administration</li>
<li>few click app deployments </li>
<li>multiple user support (with exposed ldap to integrate with your apps)</li>
<li>automatic ssl certificate management for your domains</li>
<li>integrated backup and restoration for all apps</li>
<li>security features (fail2ban, firewall)</li>
<li>Free *.noho.st domain(s)!</li>
</ul>

<p>and much more!</p>

<h3 id="why-did-i-choose-yunohost">Why did I choose YunoHost?</h3>

<p>I began my self-hosting journey with a Raspberry Pi 4 (4GB). I looked at tons of options for the base management layer:</p>

<ul>
<li><a rel="noopener" target="_blank" href="https://sandstorm.io/install">Sandstorm</a> - Does not run on arm64</li>
<li><a rel="noopener" target="_blank" href="https://www.cloudron.io">Cloudron</a> - 2 app limitation on the free tier
<ul>
<li>Although I don’t have a problem with paying for software licenses, having an app limit on something which you are self-hosting and you don’t want support is kind of confusing</li>
</ul></li>
<li>Plain <a rel="noopener" target="_blank" href="https://ubuntu.com/download/server">Ubuntu Server</a> - I didn’t want to waste time configuring everything</li>
</ul>

<p>One look at the user portal and I was sold. Yep, more than the features it was the app screen which looked like elements from the periodic table which sold me on the idea of using YunoHost. </p>

<p>Although there is no “correct“ way to self-host, YunoHost is indeed an easier way.</p>

<p><img src="/assets/y-u-n-o/ssys.png" alt="YunoHost SSO Login Screen" />
 <img src="/assets/y-u-n-o/ssyp.png" alt="YunoHost Portal" />
 <img src="/assets/y-u-n-o/ssyw.png" alt="YunoHost Web Admin" /></p>

<p>The stock Raspberry Pi image provided by YunoHost meant you don’t run in full arm64 mode. I had to first install Debian and then install YunoHost to get full arm64 goodness. </p>

<p>Setting up the domain was as painless as following the online web admin diagnosis page to copy paste DNS records. </p>

<p>The easiest way to deploy any app is to use Docker. I dislike this approach for a variety of reasons but I am not going to cover them here. All YunoHost apps are packaged to run on bare-metal for the best performance. See an app that does not have pre-compiled binaries? The package installer will download the latest source, install dependencies, compile, and then clean all the unnecessary files. Because you are running Debian after all, you can always SSH into the server and install docker if you want to. You can even install Portainer through YunoHost’s app catalogue if you really want to. </p>

<p>Also, YunoHost has been here for a long time! <a rel="noopener" target="_blank" href="https://news.ycombinator.com/item?id=7894838">Here</a> is an old Hacker News post about YunoHost. All the projects mentioned in the comments? Dead.  </p>

<h3 id="what-do-i-self-host">What do I self-host?</h3>

<h4 id="audiobookshelf-an-audiobook-server">audiobookshelf - an audiobook server</h4>

<p><img src="/assets/y-u-n-o/ssabs.png" alt="Audiobook server" /></p>

<h4 id="ergo-chat-an-irc-server">ergo chat - an IRC server</h4>

<p><img src="/assets/y-u-n-o/sst.png" alt="Screenshot of Textual Client connected to my IRC server" /></p>

<h4 id="freshrss-rss-aggregator">FreshRSS - RSS aggregator</h4>

<p><img src="/assets/y-u-n-o/ssfr.png" alt="Screenshot of FreshRSS" /></p>

<h4 id="gitea-self-hosted-git">Gitea - self-hosted git</h4>

<h4 id="screenshot-of-gitea-dashboard-with-logs-about-repository-mirroringassetsy-u-n-ossgipng"><img src="/assets/y-u-n-o/ssgi.png" alt="Screenshot of Gitea dashboard with logs about repository mirroring" /></h4>

<h4 id="grafana-metrics-dashboard">Grafana - Metrics dashboard</h4>

<p><img src="/assets/y-u-n-o/ssgr.png" alt="Grafana Dashboard" /></p>

<h4 id="home-assistant-home-automation-platform">Home Assistant - Home automation platform</h4>

<p><img src="/assets/y-u-n-o/ssha.png" alt="Screenshot of Home Assistant dashboard" /></p>

<h4 id="jellyfin-media-server">Jellyfin - Media server</h4>

<p><img src="/assets/y-u-n-o/ssj.png" alt="Screenshot of Jellyfin showing movies " /></p>

<h4 id="listmonk-newsletter-and-mailing-list-manager">Listmonk - Newsletter and Mailing List manager</h4>

<p><img src="/assets/y-u-n-o/ssl.png" alt="Screenshot of ListMonk" /></p>

<h4 id="minio-server-s3-compatible-storage-server">MinIO Server - S3 compatible storage server</h4>

<p><img src="/assets/y-u-n-o/ssm.png" alt="Screenshot of MinIO console" /></p>

<h4 id="nextcloud-storage-file-sharing-etc">Nextcloud - Storage, file-sharing, e.t.c</h4>

<p><img src="/assets/y-u-n-o/ssn.png" alt="Screenshot of Nextcloud dashboard" /></p>

<h4 id="syncthing-continuous-file-synchronization">Syncthing - continuous file synchronization</h4>

<p><img src="/assets/y-u-n-o/sss.png" alt="Screenshot of Synching dashboard" /></p>

<h4 id="vaultwarden-bitwarden-server">Vaultwarden - Bitwarden server</h4>

<p><img src="/assets/y-u-n-o/ssv.png" alt="Screenshot of Vaultwarden loading screen" /></p>

<h4 id="wallabag-read-it-later-app">Wallabag - Read it later app</h4>

<p><img src="/assets/y-u-n-o/ssw.png" alt="Screenshot of Wallabag" /></p>

<h4 id="h5ai-http-server-index">h5ai - HTTP server index</h4>

<p><img src="/assets/y-u-n-o/ssh.png" alt="Screenshot of h5ai" /></p>

<h2 id="how-do-i-install-yunohost">How do I install YunoHost?</h2>

<ol>
<li>Install minimal Debian 10/11  on your preferred machine</li>
<li><code>curl https://install.yunohost.org | bash</code></li>
</ol>

<p>Done!</p>

<h2 id="should-you-actually-self-host-everything">Should you actually self-host everything?</h2>

<p>Highly context dependent. I run two YunoHost servers in two different locations. One of the ISP has actually blacklisted the residential IP address range and does not let me change my reverseDNS, which means all my outgoing emails are marked as spam. On the other hand, the other ISP gave a clean static IP and the server managed for a small business is not at all problematic for emailing. YMMV but at least you know you have an option.</p>

	</div>
	<blockquote>If you have scrolled this far, consider subscribing to my mailing list <a href="https://listmonk.navan.dev/subscription/form">here.</a> You can subscribe to either a specific type of post you are interested in, or subscribe to everything with the "Everything" list.</blockquote>
	<script data-isso="https://comments.navan.dev/"
        src="https://comments.navan.dev/js/embed.min.js"></script>
	<div id="isso-thread">
	    <noscript>Javascript needs to be activated to view comments.</noscript>
	</div>

    </div>
    <script src="assets/manup.min.js"></script>
    <script src="/pwabuilder-sw-register.js"></script>    
</body>
</html>