extends base.pug

block meta_description
    meta(name='description' content="About me and my home servers.")

block append head
    link(href='/assets/css/about.css' rel='stylesheet')
    link(rel='canonical' href='/about')

block nav
    a(href='/') Home
    a(href='/stuff') Stuff
    a(href='/mindflow') Mindflow
    a(href='/guestbook') Guestbook
    h1 About

mixin isServiceUp(header, service)
    if (services[service])
        h3.service-up= header
    else
        h3.service-down= header

block content
    :go:func About(title, files_site string, services servicestat.ServiceList)
    section#about-me
        h2 Me
        p #[span.highlighted Who am I?] My name is Alexander Andreev. I'm a russian guy of age 30 who likes tinkering with computers.
        p #[span.highlighted Why am I doing all of this?] Machines are up 24/7 anyway, so let they do some useful work.
        p #[span.highlighted Why am I almost &ldquo;doxxing&rdquo; myself?] 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 #[span.highlighted Why particularly that slogan?] I just wanted sort of a slogan that would fit under the logo and this was the first thing came on mind. I actually like it. Don't you think of your websites as of very special place of your own? Of course you do. :) And who we are if not the wanderers who are looking for something in the vastness of Intenet? xD And yes, it's a pain in the ass to make it fit under logo across different browsers. That was the moment when I found out that different browsers render text differently.
        p #[span.highlighted Why English only?] I want this place to be accessible for a wide audience, and English happen to be todays lingua franca. Second, to practice English. And third, I'm lazy to maintain two versions of the website, neither see a good reason for that.
        p Contact information and banners are #[a(href='#contacts') at the bottom of this page]. Yes, I totally agree with you not wanting to add my banner since I don't have a link page myself, neither participate in any webring. :) Well, it's way easier to make a banner than a links page. :)
        p Now a little break for...
    section#my-cat
        h2 My kot Boris :3
        div.columns.figs
            figure
                a(href='/assets/img/photos/my_cat.webp')
                    img(src='/assets/img/photos/my_cat_thumb.webp' title=':3' alt='My cat. :3')
            figure
                a(href='/assets/img/photos/my_cat_2.webp')
                    img(src='/assets/img/photos/my_cat_2_thumb.webp' title='xDDDD' alt='xDDDD')
        p And here we continue. :)
    section#more-about-me
        h3 Hobbies
        p Video games (since 1997)
        p Computers (since 11th November 2004)
        p #[s Wasting my life on] Surfing the Internets (since February 2006)
        p Mapping for Half-life 2, Counter-Strike: Source (since 2006, discontinued in 2009) (everything's fuarrkin' lost)
        p Music writing (since 2007, last track was made in 2010)
        p Programming (since 2007)
        p #[s (LARP'ing as a system administrator)] Home servers (since 1st January 2017)
        p Software Defined Radio (since June 2018)

        h3 What I know
        h4 Human languages
        p #[span.highlighted English] is my main foreign language and I think that I know it quite well, but every time I reread what I wrote here I constantly catch cringe vibes. xD I have a nice pronunciation (my teacher once said so :)) and tend to British non-rhotic variant. Of course I end up with a mix of all the flavours of different dialects. What I struggle from is a lack of speaking practice and vocabulary is also still a problem.
        p #[span.highlighted Ukrainian (Українська)] is a special case. :) Russian and ukrainian are related languages, so mutually understandable (must be), yet many russians are struggling to understand it, and I don't know why. It is just a matter of putting some little effort to negatiate it. I never learnt it, aside from reading it here and there, and looking up some words in a dictionary, and especially throughout past #[s 8]9 years I saw enough material to learn it to a decent level of understanding and some speaking.
        p Агась, нiколи спецiйно не вчив українську, користував перекладач тiльки як словник, за цi #[s вiсiм] вже дев'ять рокiв було досить матерiалiв. :) P.S.: Слава Українi у складi Росiї! :)
        p I like learning languages, but me being a lazy fuck won't let me learn something up to a reasonable level. I ended up with being able to +- read some languages, like norwegian, german, polish, french, japanese (hiragana + some yet not forgotten kanji). So, now I main only English.
        h4 Computer languages
        p #[span.highlighted For programming and scripting:] Python, Go, JavaScript, and Bash for now are most used by me. Later I used or tasted: Pascal, Delphi, C#, C, C++, Java, PHP. And wrote hello worlds in some others like LISP and Haskell.
        p #[span.highlighted Markup and declarative:] SQL (SQLite3, MariaDB), HTML5, CSS3, LaTeX, Markdown, XML, and JSON.
        p And I don't know what else to put here. :^)

        h3 What I like
        h4 Anime
        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
        h4 Films
        p 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), The Gingerdead Man (2005), Lucky Number Slevin (2006), I Am Legend (2007), Valhalla Rising (2009), Filth (2013), Mandariinid (2013), Gingerdead Man vs. Evil Bong (2013), Who am I (2014), Arrival (2016), Contratiempo (2016), Wandering Earth (2019), Everything Everywhere All at Once (2022), Dungeons & Dragons: Honor Among Thieves (2023), Wandering Earth 2 (2019)
        h4 TV shows
        p X-Files (1993&mdash;2002), Lost (2004&mdash;2010), Stargate: SG-1 (1997&mdash;2007), Stargate: Atlantis (2004&mdash;2009), The Shivering Truth (2018&mdash;2020), Два холма (Two Hills) (2022), Narcos (2015&mdash;2017)
        p These lists aren't complete, will extend when remember or find something.
        p I actually don't watch much, and if I watch I go for a marathon, and if only I take a break in the middle of a show, then that break could last for years. xD And if I download some film it could sit for years, as it was with Valhalla Rising, it was waiting for me to watch for 3 fucking years. xD Oh, what made me to watch it? An one and a half hour long power outage. xD
        p I found my way of watching films and anime. Watching it with my favorite streamers! xD
        h4 Games for SEGA Mega Drive
        p Not a lot of games I have played.
        p Bubba'n'Stix, Battletoads, Granada, Demolition Man, Road Rash, Doom Troopers - The Mutant Chronicles, The Lost Vikings, Ghostbusters, Mig-29 Fighter Pilot.
        h4 Games for PC
        p Grand Theft Auto: Vice City, Half-Life (all), StarCraft, Diablo 2, Far Cry (2004), 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, 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.
        p I'm CMDR Arav in Elite: Dangerous. My <a href="https://www.edsm.net/en/user/profile/id/22541/cmdr/Arav" rel="noopener noreferrer">EDSM profile</a>.
        p I play TruckersMP mod for Euro Truck Simulator 2 and American Truck Simulator. Nickname is Arav with a tag [RU64].
        h4 Music
        p My favorites that I like almost fully are Falkenbach, Korpiklaani, Sólstafir, Lacrimosa, Enigma, Röyksopp, Nagrobki, Burzum, maybe I forgot to mention something. You can see what I like on #[a(href=files_site+"/music") file share]. I have a tendency to listen to the same music for a long time, so only way for me to know about other music are online-radios and WEBM threads on IBs. :)
    section#servers-summary
        h2 My servers
        p I have two of them, the first one is a #[a(href='https://www.raspberrypi.org/products/raspberry-pi-3-model-b/' rel='nofollow noreferrer') Raspberry Pi 3 rev. B] single board computer and the second one is a laptop. Yeah, not quite impressive, but they do their work just fine.
        p Laptop is Acer Packard Bell TE69CX that has a 2 core Intel Pentium 2117U 1.8GHz and 10GB RAM (2GB + 8GB), the system disk is a 120GB SSD and the other one is 2TB HDD where all the shit I have is stored. I've replaced my good old 500GB disk with 2TB one, since it became a little too tight, now it is a system disk for Raspberry Pi. Everything that have just a bit of importantance to me is backed up, encrypted and stored in the clouds. :)
        p #[span.highlighted TL;DR about services.] Laptop runs BIND9 via DNSCrypt-proxy (master), a network file share, a public file upload service, a seedbox, a HTTP public file share, TeamSpeak 3, Mumble, I2P, an internet-radio, git server, ClamAV for email server, a web-server, and a database. Raspberry Pi 3 runs BIND9 via DNSCrypt-proxy (slave), #[s a Tor relay], an email server, and a XMPP server.
    section#servers-photos
        div.columns.figs
            figure
                a(href='/assets/img/photos/raspi.webp')
                    img(src='/assets/img/photos/raspi_thumb.webp' alt='Raspberry Pi 3 rev. B')
                figcaption Raspberry Pi 3 rev. B
            figure
                a(href='/assets/img/photos/acer.webp')
                    img(src='/assets/img/photos/acer_thumb.webp' title='Screen and keyboard are broken anyway.' alt='Laptop')
                figcaption Acer Packard Bell TE69CX
    section#servers-public-services
        h2 Public services
        p.center That are available for everyone.
        div.columns
            div
                +isServiceUp("Internet-radio", "liquidsoap")
                p
                    a(href='https://radio.arav.su') radio.arav.su
                    | .
                    a(href='http://wsmkgnmhmzqm7kyzv7jnzzafvgm7xlmlfvzhgorpapd5or2arnhuktqd.onion') onion
                    | .
                    a(href='http://radio.arav.i2p') i2p
                    | .
                    a(href='http://[300:a98d:d6d0:8a08::e]') ygg
                p Runs using Liquidsoap through Icecast, which goes through NGiNX. I broadcast almost everything I have. Sorry, but I'm too lazy to make some kind of broadcasting program to stream so I just randomise the playlist and throw new music there from time to time.
                p This project grew from MPD I used to stream music over LAN for myself. Then I let it out and placed a player on my Neocities website. Then Icecast was added to see if there are listeners. I wasn't happy on how MPD was nearly overloading CPU, and later, after moving the radio off to a laptop, MPD was replaced by Liquidsoap.
            div
                +isServiceUp("File share", "dwelling-files")
                p
                    a(href='https://files.arav.su') files.arav.su
                    | .
                    a(href='http://qf5e43nlhvnrutmikuvbdfj3cmtthokpbaxtkm6mjlslttzvtgm4fxid.onion') onion
                    | .
                    a(href='http://files.arav.i2p') i2p
                    | .
                    a(href='http://[300:a98d:d6d0:8a08::d]') ygg
                p There you'll find music, videos, films, animes, TV shows, books, games, programs, drivers (a very few), OS images (Winblows :)). Go check it out!
            div
                +isServiceUp("File upload", "dwelling-upload")
                p
                    a(href='https://upload.arav.su') upload.arav.su
                    | .
                    a(href='http://4usftbmjpfexkr2x5xbp5ukmygpmg4fgrnx2wbifsexqctooz5hmviyd.onion') onion
                    | .
                    a(href='http://upload.arav.i2p') i2p
                    | .
                    a(href='http://[300:a98d:d6d0:8a08::c]') ygg
                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.
            div
                +isServiceUp("Git", "gitea")
                p 
                    a(href='https://git.arav.su') git.arav.su
                    | .
                    a(href='http://qqitm7qlsbbubwmjos4cqzmvkqidg34rfnbyhuydhalep33fbvh22xyd.onion') onion
                    | .
                    a(href='http://git.arav.i2p') i2p
                    | .
                    a(href='http://[300:a98d:d6d0:8a08::b]') ygg
                p Gitea. This is a place where I put source code of everything I ever wrote and consider useful and worth sharing.
            div
                h3 Tor relay
                p #[a(href='https://metrics.torproject.org/rs.html#details/CEF2FD0E1973EA04D1444DDAEFF1B0BC3C0C39B1' rel='nofollow noreferrer') metrics.torproject.org]
                p It is set to use 8 MBits of my Internet connection. It cannot became a guard node because of dynamic IP-address.
                p #[b Since 1st December 2021 Tor is blocked in Russia, so the relay is down.]
            div
                h3 I2P router
                p I help the network using an official #[a(href='https://geti2p.net' rel='nofollow noreferrer') I2P router].
    section#servers-private-services
        h2 Private services
        p.center That are available for a narrow circle of people.
        div.columns
            div
                +isServiceUp("E-Mail server", "postfix")
                p Postfix, Dovecot (w/Sieve), Spamassassin, ClamAV, OpenDMARC and OpenDKIM.
                p Alas, I don't have a static IP. And there is not much sense in it because my ISP doesn't offer reverse DNS for regular clients (it'd be bloody awesome).
                p It results in my messages ends up in a spam box at best. Well, Yandex, Google, Microsoft Live, and Rambler lets me in an Inbox. :) But if service use Spamhaus' blocklists then I'm being rejected.
                p #[b TLDR; I may not be able to send a reply].
            div
                +isServiceUp("XMPP/Jabber", "prosody")
                p Prosody.
            div
                +isServiceUp("Mumble", "murmurd")
                p #[a(href="mumble://arav.su") mumble://arav.su]
                p It's private, but you still can join an entrance room where you can only write messages. A certificate is necessary.
            div
                +isServiceUp("TeamSpeak 3", "ts3server")
                p #[a(href="ts3server://arav.su") ts3server://arav.su]
                p Same as with Mumble applies to TS. It's security level is set to 29, so is yours identifier's level should be at least that high.
            div
                h3 Game servers
                p All game servers are private, if there's exception I'll mention it in its description. They are listed in a section below.
                p Some servers are listed in an in-game server list and theirs names looks like &ldquo;Arav's dwelling / &lt;Game name&gt;&rdquo;.
                p And, of course, I don't run them simultaneously and start them only when needed.
                p Expect poor performance because the server is a low-end laptop.
    section#servers-games
        h2 Game servers
        div.columns
            div
                +isServiceUp("Minecraft", "forge-1.16.5")
                p.highlighted arav.su:25565
                p Version is 1.16.5 currently. I homebrew #[a(href=files_site+"/games/minecraft/") clients] for it, and make installers for Windows using NSIS. You'll need to set a PLAYER and MC_DIR variables in scripts. And change JVM_PARAMS to your preferences (-Xmx usually needs to be adjusted). But the installers will handle it for you.
            div
                +isServiceUp("Starbound", "starbound_server")
                p.highlighted arav.su:21065
                p Server is using a Frackin' Universe mod.
                p Don't forget to set &ldquo;Allow assets mismatch&rdquo; option that can be found on the first page of the &ldquo;Options&rdquo; menu.
                p Access is restricted using accounts. Contact me if you want to play here, you would need to give me a nickname and a password.
            div
                +isServiceUp("Avorion", "AvorionServer")
                p Server is listed in a server list as &ldquo;Arav's dwelling / Avorion&rdquo;. Whitelist is enabled. Bring your SteamID64 if you want to play here.
            div
                +isServiceUp("Project Zomboid", "ProjectZomboid")
                p.highlighted arav.su:16261
                p Server is listed as &ldquo;Arav's dwelling / Project Zomboid&rdquo;. Whitelist is enabled.
            div
                +isServiceUp("Don't Starve Together", "dontstarve_dedicated_server_nullrenderer_x64")
                p.highlighted arav.su:10899
                p Server is listed as &ldquo;Arav's dwelling / Don't Starve Together&rdquo;.
    section#servers-inner-services
        h2 Inner services
        p.center Services that maintains other services or used exclusively by me.
        div.columns
            div
                h3 Web-server
                p NGiNX #[s + PHP-FPM (just for phpMyAdmin)] #[s + NodeJS] + Go.
            div
                h3 Database server
                p #[s MariaDB managed with phpMyAdmin] Replaced by SQLite3 on my services.
            div
                h3 VPN
                p #[s OpenVPN] Wireguard.
            div
                h3 Network file share
                p Samba.
            div
                h3 Torrent seedbox
                p Transmission-cli gets shit done.
                p The only annoying thing is that it sometimes creates .part files for one of unchecked files.
            div
                h3 Print server
                p CUPS with CCP (Canon CAPT printer).
                p Holy shit, it finally works! #[s Wow, even after kernel update it doesn't require a reboot anymore!] Actually, requires. :)
            div
                h3 DNS server
                p BIND9 via DNSCrypt-proxy.
                p For LAN I use &ldquo;home.arpa&rdquo; special-use domain introduced by RFC 8375. And for uniqueness &ldquo;arav.home.arpa&rdquo; specifically.
    section#contacts
        h2 Contacts
        span E-Mail:&nbsp;#[a(href="mailto:me@arav.su" title='May not be able to reply due to being blacklisted because of residental dynamic IP.') me@arav.su]
        span Jabber:&nbsp;#[a(href="xmpp:arav@arav.su") arav@arav.su]
        br
        span
            | PGP&nbsp;key:&nbsp;#[a(href="/~arav/2E873A7831FF0BB640ACEDA5D22A817D95815393.asc") 2E87 3A78 31FF 0BB6 40AC EDA5 D22A 817D 9581 5393] (available through #[a(href="https://wiki.gnupg.org/WKD" rel="nofollow noreferrer") Web Key Directory])
        br
        span
            | Jabber OMEMO fingerprint: 5F705E2C 9CE0F56D BD28F52D 6744FDD3 4477E9C7 CB856590 BDEF5EE1 2F6D566C
    section#donation
        h2 Donation
        a(href="monero:48namnfX17TX1kEGCpkXaRWhtw8p92cQjd5uQg7ivybgUuW4BTVaX8egxQhEi75JwuUGn3MDLKHYGNhu4eCfM6dRAAL2QAq") monero:
        | 48namnfX17TX1kEGCpkXaRWhtw8p92cQjd5uQg7ivybgUuW4BTVaX8egxQhEi75JwuUGn3MDLKHYGNhu4eCfM6dRAAL2QAq
        br
        | #[a(href="https://www.donationalerts.com/r/arav") DonationAlerts]
        | #[a(href="https://qiwi.com/n/UPPON082") QIWI]
        | #[a(href="https://www.tinkoff.ru/rm/andreev.aleksandr1164/cksD590894/") Tinkoff]
    section#banners
        h2 Banners
        p In case you found my site anyhow useful and would like to add me to your links page here are the banners for you.
        div.banners
            figure
                img(src="/assets/img/banners/8831l.gif" alt="Light banner 88x31")
            figure
                img(src="/assets/img/banners/8831d.gif" alt="Dark banner 88x31")
        div.banners
            figure
                img(src="/assets/img/banners/24060l.gif" alt="Light banner 240x60")
            figure
                img(src="/assets/img/banners/24060d.gif" alt="Dark banner 240x60")