1
0

Well, I guess I can commit an about page already.

This commit is contained in:
Alexander Andreev 2024-06-27 03:51:51 +04:00
parent 094fe91f86
commit 203335ca3b
Signed by: Arav
GPG Key ID: 25969B23DCB5CA34

View File

@ -1,9 +1,257 @@
package web
import "git.arav.su/Arav/dwelling-home/pkg/servicestat"
import "net/http"
templ About(filesSrvc string, services servicestat.ServiceList) {
@base("About", "About me and my home servers.", "about, me, servcies", "/about", aboutHead())
import "git.arav.su/Arav/dwelling-home/pkg/servicestat"
import "git.arav.su/Arav/dwelling-home/pkg/util"
templ About(services *servicestat.ServiceList, r *http.Request) {
@base("About", "About me and my home servers.", "about, me, servcies", "/about", aboutHead()) {
// span class="highlighted">
<section id="about-me">
<h2>Me</h2>
<p><b class="highlighted">Who am I?</b> My name is Alexander Andreev. I'm a russian guy of age 31 who likes tinkering with computers.</p>
<p><b class="highlighted">Why am I doing all of this?</b> Machines are up 24/7 anyway, so why not?</p>
<p><b class="highlighted">Why am I almost &ldquo;doxxing&rdquo; myself?</b> Yes, my real first and last names and age are here, and since I self-host you can get my city as well. And I simply don't see this as a problem. :|</p>
<p><b class="highlighted">Why particularly that slogan?</b> It was the first thing that went on my mind. Don't you think of your website as of a special place of your own? Sacred in some way..? And what else do we do if not wandering through the vastness of Internet looking for something? Think about it... :)</p>
<p><b class="highlighted">Why English only?</b> I want this place to be accessible for a wide audience and English happen to be todays lingua franca, and to practice the language of course.</p>
<p>Now a little break for...</p>
</section>
<section id="my-cat">
<h3>My kot Boris :3</h3>
<div class="columns figs">
<figure>
<a href="/assets/img/photos/my_cat.webp">
<img src="/assets/img/photos/my_cat_thumb.webp" alt="My cat. :3" title=":3"/>
</a>
</figure>
<figure>
<a href="/assets/img/photos/my_cat_2.webp">
<img src="/assets/img/photos/my_cat_2_thumb.webp" alt="xDDDD" title="xDDDD"/>
</a>
</figure>
</div>
<p>And here we continue. :)</p>
</section>
<section id="more-about-me">
<h3>Hobbies</h3>
<p>Video games (since 1997)</p>
<p>Computers (since 11th November 2004)</p>
<p><s>Wasting my life on</s> Surfing the Internets (since February 2006)</p>
<p>Mapping for Half-life 2, Counter-Strike: Source (since 2006, discontinued in 2009) (everything's fuarrkin' lost, or maybe it is still on a broken IDE drive)</p>
<p>Music writing (since 2007, last track was made in 2010)</p>
<p>Programming (since 2007)</p>
<p><s>(LARP'ing as a system administrator)</s> Home servers (since 1st January 2017, when I had set up my Raspberry Pi I got the day before)</p>
<p>Software Defined Radio (since June 2018)</p>
<h3>What I know</h3>
<h4>Human languages</h4>
<p>While I like learning foreign languages, lack of usefulness for me and my lazyness prevents me from getting on any reasonable level, so I stuck to English. Knowledge of other languages I tried to learn, which are German, Norwegian, French, Polish, and Japanese, is minuscle and only declining.</p>
<p>The other language I understand well, and can somehow speak is Ukrainian, which is no surprise because of its relation with Russian. At least it should be not, yet I see that many Russians don't understand Ukrainian like at all, which is surprising for me. I accidentally learnt it just by consuming content in it with help of a dictionary to look up some words that are archaic in Russian or have different etymology.</p>
<p>As for Belarussian, situation is the same, but I don't speak it, just know some words I have accidentally memorised while listening to music.</p>
<h4>Computer languages</h4>
<p>All the programming, markup and declarative languages I use by now are Go, JavaScript (vanilla), SQL, Python, Bash, AWK, HTML, CSS, LaTeX, Markdown, JSON, XML.</p>
<p>Previously I used (in a chronological order) Pascal, Delphi, C#, C++, C, Java, PHP. Took a taste of Visual Basic, LISP, Haskell, Rust.</p>
<p>It so happened that I didn't save the source code from the past. 99% of it was written purely for education and fun, and usually never get finished. And such a code was heartlessly deleted by me. Why would I keep OpenGL hello world that draws triangles..? :)</p>
<p>At least an experience I gained isn't going anywhere. :) And I think what is on my <a href={ templ.SafeURL(util.GetServiceByHost(r.Host, util.ServiceGit)) }>Gitea instance</a> can speak for me.</p>
<p>I still have an old IDE drive that got broken back in 2011. BIOS cannot see it, but it is spinning, even without any crack noises. Maybe it still has some old code. And some more from that time...</p>
<h3>What I liked</h3>
<h4>Anime</h4>
<p>Ghost in the Shell, Shaman King, Hellsing, Steins;Gate, Cowboy Beebop, Ergo Proxy, Jin-Rou, Black Lagoon, Jojo's Bizzare Adventures, Spice and Wolf, Konosuba, Demon Slayer: Kimetsu no Yaiba.</p>
<h4>Films</h4>
<p>Paths of Glory (1957), Boss Nigger (The Black Bounty Killer) (1974), Movies with Jackie Chan, Blade Runner (1982), WarGames (1983), Robocop (1987), Talk Radio (1988), Stargate (1994), Hackers (1995), Johnny Mnemonic (1995), Contact (1997), Matrix (1999, 2003), Snatch (2000), Oldboy (2003), The Day After Tomorrow (2004), Alpha Dog (2005), Constantine (2005), The Gingerdead Man (2005), Lucky Number Slevin (2006), 99 francs (2007), I Am Legend (2007), Inglourious Basterds (2009), Valhalla Rising (2009), The Guard (2011), Filth (2013), Mandariinid (2013), Gingerdead Man vs. Evil Bong (2013), Gone Girl (2014), Who am I (2014), Arrival (2016), Contratiempo (2016), Wandering Earth (2019), Wandering Earth 2 (2019), Greyhound (2020), I Care A Lot (2020), The Greatest Beer Run Ever (2022), Everything Everywhere All at Once (2022), Dungeons & Dragons: Honor Among Thieves (2023).</p>
<h4>TV series</h4>
<p>X-Files (1993&mdash;2002), Stargate: SG-1 (1997&mdash;2007), Stargate: Atlantis (2004&mdash;2009), Lost (2004&mdash;2010), Breaking Bad (2008&mdash;2013), Narcos (2015&mdash;2017), The Shivering Truth (2018&mdash;2020), Два холма (Two Hills) (2022).</p>
<h4>Games for Dendy (NES/Famicom clone)</h4>
<p>I had not just a Dendy console, no, it was embedded in a keyboard and it was named SUBOR.</p>
<p>Chip 'n Dale Rescue Rangers, and the other was an F1 game which name I don't know. Also, SUBOR had its own special cartridge called training cartridge. It had a keyboard trainer, a simple text editor, calculator, G-BASIC and F-BASIC, also had classic russian music like Moscow Nights in 8-bit.</p>
<p>Despite having BASIC on that cartridge I had no opportunity to start programming because I didn't have a manual. Anyway, I read that there was just code examples and most of them didn't work, LOL.</p>
<h4>Games for SEGA Mega Drive</h4>
<p>Not a lot of games I have played.</p>
<p>Bubba'n'Stix, Battletoads, Granada, Demolition Man, Road Rash, Doom Troopers - The Mutant Chronicles, The Lost Vikings, Ghostbusters, Mig-29 Fighter Pilot, Street Racer.</p>
<h4>Games for PC</h4>
<p>Grand Theft Auto: Vice City, Half-Life (all), StarCraft, Diablo 2, Far Cry (2004), Battlefield: Vietnam, Delta Force: Black Hawk Down, Silent Hunter 3, Grand Theft Auto: San Andreas, Boiling Point: Road to Hell, Portal, Freelancer, F.E.A.R., S.T.A.L.K.E.R., Grand Theft Auto 4, Lineage 2, The Elder Scrolls V: Skyrim, Battlefield 3, The Walking Dead, The Wolf Among Us, Payday 2, The Witcher (1st, 2nd, 3rd didn't finished yet), Minecraft, Terraria, Starbound, Euro Truck Simulator 2, Mount &amp; Blade: Warband, Papers, Please, Insurgency, Elite: Dangerous, theHunter: Call of the Wild, American Truck Simulator, Rocket League, Sea Of Thieves, Tell Some Story: Foz.</p>
<h4>Music</h4>
<p>Go check out <a href={ templ.SafeURL(util.GetServiceByHost(r.Host, util.ServiceFiles)) }>my file share</a>. :)</p>
</section>
<section id="servers-summary">
<h2>My servers</h2>
<p>I have two servers laying on my PC which are a Raspberry Pi 3 rev. B single board computer and a laptop Acer Packard Bell TE69CX. Not quite impressive, I'd say, but they do what I need from them just fine, not for a real heavy load of course.</p>
<p>The laptop has a 2 core Intel Pentium 2117U 1.8GHz CPU and 10GB of RAM (2GB + 8GB), a system disk is a 120GB SSD, and a disk I use to store all the shit is a 2TB HDD, yeah, just one drive for data. Anything worthwhile is backed up (LOL, not really :^)).</p>
<p>For Raspberry Pi I use a 500GB HDD as a system/data disk.</p>
<p>Also I have a cheap VPS with 1 core 2.2GHz CPU and 512MB RAM, and a 10GB disk I use as a slave DNS server for my domain and a Postfix mail relay.</p>
<div class="columns figs">
<figure>
<a href="/assets/img/photos/raspi.webp">
<img src="/assets/img/photos/raspi_thumb.webp" alt="Raspberry Pi 3 rev. B" />
</a>
<figcaption>Raspberry Pi 3 rev. B</figcaption>
</figure>
<figure>
<a href="/assets/img/photos/acer.webp">
<img src="/assets/img/photos/acer_thumb.webp" alt="Acer Packard Bell TE69CX" title="Screen and keyboard are broken." />
</a>
<figcaption>Acer Packard Bell TE69CX</figcaption>
</figure>
</div>
</section>
<section id="services-public">
<h2>Public services</h2>
<p class="center">For everyone.</p>
<div class="columns">
<div>
<h3 class={ isServiceUp("radio", services) }>Internet-radio</h3>
<p>
<a href="https://radio.arav.su">radio.arav.su</a>.<a href="http://wsmkgnmhmzqm7kyzv7jnzzafvgm7xlmlfvzhgorpapd5or2arnhuktqd.onion">onion</a>.<a href="http://[300:a98d:d6d0:8a08::e]">ygg</a>.<a href="http://radio.arav.i2p">i2p</a><sup><a href="http://radio.arav.i2p/?i2paddresshelper=NfCKBu9vjLFiBMEPQGiZT9AzGlhkKHzYrKM66FL-ESeDbnYUY--NzukO9UA28s3WThhDQVge2TmyfYsaZiUw~AjuLsykxS13pebs7lkAVY1jm77La-eFFIAQ22Vtd2YgS0vbhRMzuDxKkCR1vPwNax8R2o6a07xsQvvDml6UQxG4p5vt44JA2geQNvQfm8cEiSa6gNJZJSW3rWuLDg6~1Jy3D70oSVSlNfihmG4JtNV6tVBjJE2h5gUxfhYZACttpGTPM~UNF~lrSujlBQsCqdzvLswdMw~FnvpfGzJcJroeFTerRyH6oUkkDSOK7uWwl0e70vKxrIbFgJjKtjlLWlUCI5N0TnJP4Hzt2pttB~R0hSr2vVl8ky0yJEtN3rwnrJkw7q0ZIH30ngTfxsCTbolAzl6liN9Ez5YF97zDOPnVFmvQ6Eg1PyFdypQO1PiUHqF56SWhx3utGwecUS6jJCvsKIJJVEIMVcD6h7S0z1g1rqQ4jbg5UfXPwFEgFOlzBQAEAAcAAA==" title="Address helper">ah</a></sup>
</p>
<p>I'm too lazy to make some kind of broadcasting program, so I just throw anything I like and randomise the playlist. :)</p>
<p>Technically it runs as follows: <a href={ templ.SafeURL(util.GetServiceByHost(r.Host, util.ServiceGit) + "/Arav/dwelling-radio") }>dwelling-radio</a> &xrArr; Ezstream &xrArr; Icecast &xrArr; NGiNX.</p>
</div>
<div>
<h3 class={ isServiceUp("dwelling-files", services) }>File share</h3>
<p>
<a href="https://files.arav.su">files.arav.su</a>.<a href="http://qf5e43nlhvnrutmikuvbdfj3cmtthokpbaxtkm6mjlslttzvtgm4fxid.onion">onion</a>.<a href="http://[300:a98d:d6d0:8a08::e]">ygg</a>.<a href="http://files.arav.i2p">i2p</a><sup><a href="http://files.arav.i2p/?i2paddresshelper=48vtYgeVnju7B2FaR0zxUL3MQXN9QjK~Ggya45aANwm86mtpemuEkaskJmEQaFSd4FcDAFIiXHfNpfGqoupLwNmtgBmGRcuVV8xb2W~W6lM0oOhovjB37EUaMWs3AI5aIES84QOqApgwYX-ANIcwa~Kg6AbMuX8D8qnejuhBbuCffYah-TD8e~O0cnyqxzLTmxIGCyk2egdYXwanJyYFDocomIVfcqfJ0MgjIHhFQtkcb0e84bxvDzcAFIpEDrzAo4GVrFn-TCu0Lyf2ccqmVpucFl0UGhuVRxEt19KLd3PxlfwHv2lmzTZtq9CbnfaoPntUPx1sf84QnZDmrXWhVK8p3VvuPZMxjyz9KyhPjrGkO4E0oibDlvKuMsGEm-GkZsKxgXo~CrdcVtN8suAwW6rACAuk8gq2jUMBZBZ12migPZ7miHftEkOFHfgfUiKBwirrw~y9Zi261WX4-EVe2oD4pkhQOrqOKIoI-vv5z9CpQ7PKL531kgkipcBseXybBQAEAAcAAA==" title="Address helper">ah</a></sup>
</p>
<p>There you'll find music, videos, books, games, programs, drivers (a very few), OS images (Winblows mainly). Go check it out!</p>
</div>
<div>
<h3 class={ isServiceUp("dwelling-upload", services) }>File upload</h3>
<p>
<a href="https://upload.arav.su">upload.arav.su</a>.<a href="http://4usftbmjpfexkr2x5xbp5ukmygpmg4fgrnx2wbifsexqctooz5hmviyd.onion">onion</a>.<a href="http://[300:a98d:d6d0:8a08::e]">ygg</a>.<a href="http://upload.arav.i2p">i2p</a><sup><a href="http://upload.arav.i2p/?i2paddresshelper=b5NWA2vNydWSv6~8KN4e~td2UVGkYsayKPa1PnXI87A3gsg6m978tIehHLVN4XcCfUq4aB-59hqqZicorRnHKfV3lVdx9mdhC8Bhj~bMAcwMgWoXidqZNrWMoFGzWotFsa3nWh4zsRUSfrokecC8u9Y06byfSS1siyak0J6xpsggXRqqgNF0-8ncPeqvzBxHB9NRDXWEVJGS9HSpydWl1UpjgZffcd~NZroxkSAfughHcFAn2OLKkaZRe6WqCJQfJoXTCyz4wkFmYbH1CSddWlddmWaaU7icsbQrZm3XEqKTVKvm86G6ehxmzyHqCumc4GOWswcP0E51UQVOv-WA8R6SWQAj6ZnZhnCoCNFFEfW2lBiDmTnLJbfm-C-AdI6G1~dQ1~3FCH6wXWy-2DebpyoVVt9epzU7l4l2MVeaOUahbf6wcol1UbxPoR0XlGCXDe9700TYePjtpOU9vNkk2B1dQiZ1usgwseYuO26cRogSvbi8poz4BlCNO733HR1XBQAEAAcAAA==" title="Address helper">ah</a></sup>
</p>
<p>I've made a file upload service for ya with a limit of 128MiB per file, keeping it for 36 hours, and overall storage I dedicated for it is 100GiB.</p>
</div>
<div>
<h3>Tor relay</h3>
<p><a href="https://metrics.torproject.org/rs.html#details/CEF2FD0E1973EA04D1444DDAEFF1B0BC3C0C39B1" rel="nofollow noreferrer">metrics.torproject.org</a></p>
<p><b>Since 1st December 2021 Tor is blocked in Russia, so the relay is down.</b></p>
</div>
<div>
<h3>I2P router</h3>
<p>I help the network using i2pd router.</p>
</div>
</div>
</section>
<section id="services-private">
<h2>Private services</h2>
<p class="center">For a narrow circle of people.</p>
<div class="columns">
<div>
<h3 class={ isServiceUp("mail", services) }>E-Mail server</h3>
<p>Postfix, Dovecot (w/Sieve), rspamd, ClamAV.</p>
</div>
<div>
<h3 class={ isServiceUp("mumble", services) }>Mumble</h3>
<p><a href="mumble://arav.su">mumble://arav.su</a></p>
<p>Runs with uMurmur. Protected by password.</p>
</div>
<div>
<h3 class={ isServiceUp("teamspeak3", services) }>TeamSpeak 3</h3>
<p><a href="ts3server://arav.su">ts3server://arav.su</a></p>
<p>For strangers (unregs) only an Entrance room is available. Your identifier should have a security level greater or equal to 29.</p>
</div>
<div>
<h3 class={ isServiceUp("git", services) }>Git</h3>
<p>
<a href="https://git.arav.su">git</a>.<a href="http://qqitm7qlsbbubwmjos4cqzmvkqidg34rfnbyhuydhalep33fbvh22xyd.onion">onion</a>.<a href="http://[300:a98d:d6d0:8a08::e]">ygg</a>.<a href="http://git.arav.i2p">i2p</a><sup><a href="http://git.arav.i2p/?i2paddresshelper=eFIfcBUv3lHFSnglHfncs5XXtYwm9gCpmAYuio~9CeENBAXKRggPiY1tQC-otCon2hCSpr56WlVBeZk1txKuUnbjHTN7GBFaKW5wJEO2WmKEWPKdcjUDOYZN0D3TwXaYfiBuELD3200lBfDmPEJ01iC2o7B5yvpOqtEKDcaqkIp4vafDuPPumJ~XiCGdUAe~vr52w3Tbuz5x7wbltk-gUELY0-ZAQBos4jOJ6QT1W1lhycHPhAK8qslgwfk94opyIl2pkRyuJhU-2VHc6Fsd621VXC86YAMT1SIfTZlFpoGVCFXDM~BXaLvygFaKf62qardAe0T48Ax6GxosAKXe-yLCVRaiD3KErULfwZXl23kQzRfxM4odG4DWeXawtuvypOmTjHT1skQHU0h52ujye5nT~2bOy14HkCoCnxJ7gSj3MjkmWLd1JhBsPH4ymRmI7jFJR1GYl8Wp5IigMBBzWfJUEEjS7QDHaRo5TCZJ9SXz6sgkGdfh74~r8FWL559gBQAEAAcAAA==" title="Address helper">ah</a></sup>
</p>
<p>Gitea. Anything I think is worth sharing is public. Private in terms of who can have account here.</p>
</div>
</div>
</section>
<section id="services-games">
<h2>Game servers</h2>
<div class="columns">
<div>
<h3 class={ isServiceUp("game-minecraft", services) }>Minecraft</h3>
<p class="highlighted">arav.su:25565</p>
<p><a href="/minemap">Web world map</a></p>
<p>Now runs a version 1.21 with Fabric. Just a fabric-api is needed to play.</p>
</div>
</div>
</section>
<section id="services-inner">
<h2>Inner services</h2>
<p class="center">Maintains other services or used exclusively by me.</p>
<div class="columns">
<div>
<h3>Web-server</h3>
<p>NGiNX. Nuff said.</p>
</div>
<div>
<h3>Database</h3>
<p>Used to run MariaDB, now my services use SQLite3.</p>
</div>
<div>
<h3>VPN</h3>
<p><s>OpenVPN</s> Wireguard.</p>
</div>
<div>
<h3>Network file storage</h3>
<p>Samba and NFSv4.</p>
</div>
<div>
<h3>Torrents</h3>
<p>I use transmission-cli. One annoying thing, it creates .part files for one of ignored files.</p>
</div>
<div>
<h3>Printing</h3>
<p>CUPS with ccpd (Canon CAPT printer).</p>
<p>It is guaranteed to work after reboot. :) If a kernel got updated &mdash; reboot. If you didn't use it for a long time and restart of CUPS and ccpd services after connecting a printer didn't work &mdash; reboot. xD</p>
</div>
<div>
<h3>DNS</h3>
<p>BIND9 via DNSCrypt-proxy.</p>
<p>For LAN I use &ldquo;arav.home.arpa&rdquo; domain. &ldquo;.home.arpa&rdquo; part is a special-use domain introduced in RFC 8375.</p>
<p>Master server lives on the laptop. It serves my external domain, internal one, and work as a recursion server to serve DNS queries from LAN. Raspberry Pi is a slave for the internal domain and recursion. And on the VPS lives a slave for my external domain.</p>
</div>
</div>
</section>
<section id="contacts">
<h2>Contacts</h2>
<span>E-Mail:&nbsp;<a href="mailto:me@arav.su">me@arav.su</a></span>
<span>PGP&nbsp;key:&nbsp;<a href="/assets/pgp.asc">7398 50CD 5051 DE55 4368 7092 2596 9B23 DCB5 CA34</a></span>
</section>
<section id="donation">
<h2>Donation</h2>
<p class="center">Just in case. %^)</p>
<table>
<tr>
<td>USDT&nbsp;(TRC&nbsp;20):</td>
<td>TGSEiAh9nAhCL6YPVA6zHUsnuoccW8tjep</td>
</tr>
<tr>
<td>USDT&nbsp;(ERC&nbsp;20):</td>
<td>0x584b3ab1b31d7248e2c0ba5d317e9ba88a4fb1b4</td>
</tr>
<tr>
<td>TON:</td>
<td>EQC4L0tZMDZ8IPGbyXQafoh2n-N9HbJwVp5EtrYGsRCuR28G</td>
</tr>
<tr>
<td>Bitcoin:</td>
<td>bc1qrmpahnvtqp34kpjaghnmq8acq27n0eke5w35ec</td>
</tr>
<tr>
<td>Monero:</td>
<td>48namnfX17TX1kEGCpkXaRWhtw8p92cQjd5uQg7ivybgUuW4BTVaX8egxQhEi75JwuUGn3MDLKHYGNhu4eCfM6dRAAL2QAq</td>
</tr>
</table>
<div class="center">
<a href="https://www.donationalerts.com/r/arav">DonationAlerts</a>
<span><a href="https://www.tinkoff.ru/rm/andreev.aleksandr1164/5nVjK98501">T-bank</a> (<a href="https://www.tinkoff.ru/baf/5zRsqEQic6r">referal</a>)</span>
<a href="https://ruvds.com/pay/b5a7a24e142e4d30a46c7c8e09e8e07f">Help pay my VPS</a>
</div>
</section>
}
}
func isServiceUp(service string, services *servicestat.ServiceList) string {
if v, ok := (*services)[service]; ok && v {
return "service-up"
}
return "service-down"
}
templ aboutHead() {