Моя self-hosting шиза: Частина 1

Я почав користуватися комп'ютером можна сказати майже зі самого початку свого життя. Як казали мої батьки, я вперше сів за комп'ютер, коли мені було 2 усього рочки.

Свої перші кроки у знайомлення з self-hosting'ом я зробив десь у 10-11 років, зацікавившись створенням власного серверу Minecraft. Як й усі, скажімо так, молоді та недосвідчені, я вантажив готовий сервер та хостив його на тому ж самому комп'ютері, на якому грав. Відкрити порти можливості не мав, тому надавав доступ до серверу через Hamachi, яка на той момент була популярна як маленький та обмежений, але простий у використанні VPN, якого для приватного серверу вистачало. Пізніше я дізнався про ігрові хостинги та VPS-хостинги, та почав жити кочовим способом життя, а саме брав пробні періоди на цих хостингах та робив публічні сервери, які звісно ж вмирали тоді, коли закінчувався пробний період. Одночасно в цей момент я почав знайомитися з серверним Лінуксом, як пам'ятаю для мене це було складно (хоч з десктомним Лінуксом досвід в мене тоді вже був, але здебільшого я тоді був ще віндузятником), але це було дуже і дуже цікаво. Потім я перейшов на сервери і для інших ігор: Counter-Strike: Global Offensive, San Andreas Multiplayer та інші. В якийсь момент (не знаю як) в мене з'явилася можливість відкрити порти, і я тримав Sandbox та DarkRP сервери для Garry's Mod, які загалом були для моїх друзів, але на них міг заходити, хто завгодно (не одночасно, щось одне за настроєм мене та цих друзів). Пам'ятаю, що хтось навіть задонатив на адмінську роль (так, на школосерверах продавати адмінські права – це норма, як мінімум була, сподіваюсь, що вже ні), і друг, який прийняв донат, витратив ці гроші на сайт з кейсами для CS:GO (для тих, хто не розуміє, про що мова, то можна сказати, що програв у казино).

З тих пір, як я почав хостити ігрові сервери, в мене була мрія мати власний популярний ігровий сервер. Але згодом я подорослішав. Я почав відходити від того, що відеоігри – це ледве не єдине моє хобі. Я почав набувати ще більше IT-знань, зокрема з адміністрування серверів. А також в мене почала розвиватися цифрова параноя: я став занадто багато знати про великі корпорації та чим насправді ми платимо, коли користуємося їхніми “безкоштовними” сервісами. Тому ця мрія почала звучати по-іншому: я хотів мати власну серверну інфраструктуру, щоб навчатися серверному адмініструванню та щоб менше залежати від інших сервісів, а тим паче від сервісів великих корпорацій.

В 2023 році я влаштувався на свою поточну роботу, тому нарешті почав отримувати власні гроші. Саме так влітку 2024 року я зробив перший крок до створення тієї home lab, яку маю зараз: я придбав GEEKOM Mini Air12. Це міні-ПК з 4-ядерним процесором Intel N100, 16 ГБ DDR5 ОЗП та 512 ГБ NVMe SSD. На ньому була передвстановлена Windows 11 Pro, яка навіть без додаткових запущених програм використовувала 100% потужності процесору. Вона так чи інакше би там не протрималась довго, але після того,постає як я це побачив, Ubuntu Server 24.04 LTS була встановлена туди раніше, ніж очікувалося =)

Точно вже не згадаю, але тоді я встановив CasaOS – веб-інтерфейс для розгортання Docker-контейнерів. Перший контейнер, який я встановив, був Crafty – веб-інтерфейс для створення Minecraft-серверів. Я створив ванільний сервер для тесту і був у захваті. Потім, продивившись магазин застосунків в CasaOS, натикнувся на Navidrome – сервер стримінгу музики. Встановив, почав завантажувати музику, точно отриману легальним шляхом, і також був у неймовірному захваті. Через деякий час після моєї знахідки про Navidrome, Spotify на моєму комп'ютері та телефоні почали просто займати місце на пам'яті відповідних пристроїв, а більшість музики, яку я слухаю, я почав купувати на Bandcamp, або отримувати іншими способами, якщо її не можна легально купити.

Я й досі не маю статичного IP, тому постає питання, як виводити усе це в Інтернет? Спочатку я для цього користувався сервісом playit.gg – тунель, який прокидає трафік через свої сервери до моїх. Навіть купляв в них Premium та виділену IP-адресу, бо без цього через playit.gg можна тунелювати лише HTTP(S) та Minecraft сервери, інші TCP та UDP – ні. Приблизно в той самий час я придбав свій перший домен, який вже не використовую. Згодом, коли я почав хостити напівпублічні сервери Minecraft, для гравців став проблемою пінґ, який як для серверу, розміщеного здавалося б в Україні, досить неприпустимий – 50-100 мс. Тому я відправився в подорож у пошуках оптимальної VPS для власного реверс проксі серверу. Спочатку у Львові, потім київська, але там якийсь такий провайдер, що я не мав доступу до серверів завантажування Tailscale, а потім зрештою зупинився на тому, що використовую зараз – VPSка від ukraine.com.ua за 3 євро на місяць. Для цілей реверс проксі серверу її цілком достатньо, до того ж є можливість придбати декілька IP-адрес, що є корисним для мене, бо я розміщую на своїх серверах не лише свої сервіси. Тому мій поточний сетап виглядає так – усі сервери об'єднані за допомогою Tailscale, реверс проксі прокидує трафік за допомогою nginx (якщо треба прокинути TCP та UDP) та Caddy (якщо треба прокинути HTTPS). Також один з моїх сервісів (а саме Forgejo) захищений Anubis, який стоїть на проксі сервері.

Зараз в мене на цьому сервері встановлений Proxmox, та на ньому розміщено більшість моїх сервісів, у тому числі мій сайт, Jellyfin, Vaultwarden, Forgejo, сайт моєї подруги, мій інстанс Sharkey, цей блог, а також Telegram-бот для мемних копіпаст.

З тих пір я придбав та отримав у користування більше обладнання, але про це іншим разом.