Uy serveri (home server)

Uy serveri (home server)

Boburmirzo Hamraqulov

Oxirgi haftada ancha yillardan beri meni qiziqtirib kelgan, lekin hech fursati bo'lmay kelayotgan bir loyiham - uyda shaxsiy serverimni ishga tushirish va sozlash bilan band bo'ldim. Kim uchundir qiziq va foydali bo'ladi degan umidda maqola shaklida barcha jarayonlarni yozib qoldirishni ma'qul ko'rdim.

Afzalliklari

Xo'sh, o'zi shaxsiy server nega kerak bo'lishi mumkin? Buning sabablari quyidagicha:

  • Mustaqillik. Deyarli barcha mashhur servislarning ochiq kodli (open source) variantlari mavjud, bu degani boshqa tashqi servislardan mustaqil bo'lgan xolda ularga muqobil bo'lgan servislarni o'z serveringizda ishga tushirishingiz mumkin.
  • Shaxsiylik. Server o'zingizniki va o'z uyingizda turadi. Bu degani undagi barcha shaxsiy ma'lumotlaringizni faqat o'zingiz tasarruf etasiz. Albatta bu uchun serverda yetarlicha xavfsizlik choralari ko'rilgan bo'lishingiz kerak.
  • Qulaylik. Uyda foydalanishingiz uchun serveringiz internetga ulangan bo'lishingiz shart emas. Qolaversa, serveringizdagi fayllarni boshqa joyga ko'chirmagan xolda undagi servislarni yangilashingiz, o'chirib tashlashingiz yoki boshqasiga almashtirishingiz mumkin.
  • Tejamlilik. Avvaliga server sotib olish uchun ko'proq pulingiz ketsada, yakunida turli pulli servislarga oylik obunalar to'lab yurmaysiz. Masalan men fayllarni onlayn saqlash uchun Onedrive pullik xizmatidan foydalanishni to'xtatdim. Shaxsiy loyihalaringizni ham qo'shimcha VPS sotib olmay shu uy serveriga o'rnatishingiz mumkin, faqat omma foydalanishi uchun uy serverida saytni ishga tushirish to'g'ri kelmaydi.
  • Va shunchaki yangi tajribalar uchun maydoncha. Agar siz dasturchi bo'lsangiz serveringizda turli xil dasturlarni o'rnatib ko'rishingiz yoki dasturlash uchun qo'shimcha muhit sifatida foydalanishingiz mumkin: hech kim sizni bu uchun bloklab qo'ymaydi yoki qo'shimcha haq talab qilmaydi.

Server tanlash

Yuqoridagilarga o'xshash sabablar tufayli men ham o'z serverimni qurishga qaror qildim. Buning uchun ishni arzonroq server qurilmasini izlashdan boshladim va bir qancha tanlovlardan keyin Dell Wyse 5070 (Intel Celeron J4105, 8GB RAM, 256 GB SSD, Refurbished) mini kompyuterini newegg.com saytidan 110$ ga sotib oldim, uygacha olib kelib berish xarajatlari bilan menga 135$ ga tushdi.

Dell Wyse 5070 mini kompyuteri (internetdan olingan rasm), o'lchamlari: 18.2 X 18.2 X 6.5 sm.

Uy uchun server sotib olishda nimalarga e'tibor qaratish kerak:

  • Server har kuni 24 soat davomida ishlab turadi, shu tufayli server sovutgichi ventilyatorsiz bo'lgani ma'qul, shunda undan shovqin chiqmaydi.
  • Protsessor (CPU) agar zarurat bo'lmasa core i5-i7 lisini olishidan foyda yo'q, unga yuklama deyarli tushmaydi. Bundan tashqari kuchli protsessorlar ko'proq energiysa sarflaydi.
  • Operativ xotira(RAM) ni keyinchalik kengaytirish imkoni mavjud bo'lishi yoki 8GB dan kam bo'lmagani ma'qul. Bo'lmasa serverdagi servislar ko'paygani sari operativ xotira tezda to'lib qoladi.
  • Asosiy xotirasi SSD bo'lsin (tizim tez ishlaydi) va unga zaruratga qarab yana xotira (HDD ham bo'laveradi) qo'shish mumkin bo'lsin. Shunda serverda telefon va kompyuterdagi fayllar nusxalarini, agar uyda kuzatuv kameralari bo'lsa, undagi qaydlarni ham saqlash mumkin.
  • Yangi bo'lishi shart emas. Odatda yuqoridagi kabi mini kompyuterlar ko'plab kompaniyalar tomonidan foydalanishdan chiqarilgan va sotuvga qo'yilgan bo'ladi va shu tufayli holati yaxshi, narxi ham qimmat bo'lmaydi. Bu turdagi mini kompyuterlarga Dell WYSE thin client, Lenovo thinkCentre, Intel NUC, HP EliteDesk kabilarni misol keltirish mumkin, Ebay.com, newegg.com va Amazon.com saytlaridan topsa bo'ladi.
  • Server siz ishlatishni xohlagan operatsion tizimni qo'llab quvvatlashi kerak. Ya'ni unga o'zingiz xohlagan tizimni o'rnata oling. Men hozirgi serverimga Ubuntu 22.04 server operatsion tizimini o'rnatganman.
  • Foydalanilmay turgan eski kompyuter yoki noutbuk ham server vazifasini bajarishi mumkin.

Servislar

Uy serverlariga o'rnatish mumkin bo'lgan, ochiq kodli servislarga butun dunyoda qiziqish bo'lib kelayotgani sabab ushbu soha yaxshigina rivojlangan va o'ziga yarasha auditoriyasiga ega. Bunday servislarda asosiy urg'u ma'lumotlaringizga faqat o'zingiz egalik qilishingiz, servislarning ishlash mexanizmi shaffofligi, kodlarga odamlar o'zlari xohlagan o'zgartirishlarni qila olishlari va boshqa funksiyalarni bemalol qo'sha olishlari va eng muhimi ulardan foydalanish tekinligida.

Yana bir qiziq jihati, bunday servislar orasidan aksar mashhur servislarning muqobil variantlarini o'zingiz uchun topa olasiz. Ba'zilarini misol tariqasida sanab o'taman:

  • Audio fayllarni tinglash va boshqarish: Spotify, Yandex music, Apple music, Soundcloud - muqobillari Navidrome, Airsonic
  • Kino, serial va boshqa video fayllarni boshqarish, ko'rish uchun media server: Netflix, Amazon Prime - muqobillari Jellyfin, Plex, Kodi
  • Shaxsiy rasm va videolarni saqlash, boshqarish: Google Photos, Amazon Photos, Adobe creative cloud - muqobillari Photoprism, Immich, Libre photos
  • Fayllarni sinxronlash va saqlash: Google drive, Onedrive, iCloud - muqobillari Syncthing, Nextcloud, Seafile, File browser
  • Onlayn kutubxona: Kindle store, Bookmate - muqobillari Calibre Web, Kavita

O'zim yuqoridagi servislardan ba'zilarini Docker yordamida o'rnatdim Homepage servisi yordamida quyidagi panelni yasadim:

Serverimdagi servislar paneli

Serverga tashqaridan kirish

Serverga kerakli servislarni o'rnatib olgandan so'ng uyingizdagi Wifi orqali ulardan bemalol foydalana olasiz, hatto internet ishlamagan holatda ham, bunisi yaxshi. Ammo siz uydan uzoqda bo'lganingizda o'sha servislardan birortasiga kira olmaysiz, bunisi esa juda yomon. Chunki bunday holatda siz o'rnatgan servislarga tashqaridan kirish yopib qo'yilgan bo'ladi va siz voz kechmoqchi bo'lgan boshqa pulli servislardan to'laqonli mustaqil bo'lishingizga imkon bermaydi.

Bu uchun uydagi serveringizga tashqaridan ham kirish imkoniyatini yaratish kerak. Eng kamida Wifingizga biriktirilgan tashqi IP manzilingiz orqali. Lekin afsuski bizdagi aksariyat internet provayderlar siz uchun maxsus o'zgarmas IP manzil ajratib berish xizmatini ko'rsatmaydi, siz internet orqali https://whatismyipaddress.com/ kabi xizmatlardan olgan IP manzilingiz esa faqat o'zingizgagina ajratilgan emas.

Bu muammo meni ham o'ylantirib qo'ydi va uni hal qilish uchun bir necha kun izlanishimga to'g'ri keldi. Aniqlashim bo'yicha, agar sizda statik (o'zgarmas) IP manzili bo'lmasa va bir IP manzil bir nechta foydalanuvchi uchun umumiy bo'lsa, unda quyidagi yo'llar orqali uy serveriga tashqaridan ulanish imkoniyatini paydo qilish mumkin:

1) Tashqaridan qo'shimcha VPS sotib olish va unga VPN servisini ishga tushirish. Bunda server va o'sha serverga ulanmoqchi bo'lgan qurilmangiz o'sha tashqaridagi VPN serverga ulangan bo'lishi kerak. Bu variant uncha ma'qul bo'lmadi, qo'shimcha xarajat talab qiladi.

2) Network tunneling servislardan foydalanish. Yaxshiki Cloudflareda bunday servisni tekinga foydalanish varianti mavjud ekan, shu orqali serverimga tashqaridan kirish imkonini topdim. Undan qanday foydalanishni ushbu havoladagi Youtube video orqali o'rganishingiz mumkin.

Servisdan ichkarida ham, tashqarida ham bir xil domen orqali kirish

Tarmoqlar qanday ishlashi haqida yaxshigina bilim yoki tajribaga ega bo'lsangiz tepada men keltirgan yechim boshqa bir noqulaylikni keltirib chiqarishi mumkinligini sezgan bo'lsangiz kerak.

Deylik siz serveringizda bir servisni ishga tushirdingiz. Uyingizda turib o'sha servisga kirmoqchi bo'lsangiz unda brauzeringizda server IP manzili va servis ishga tushgan portni yozishingiz kerak bo'ladi:

http://192.168.100.1:8000

Agar tashqaridan bu servisga ulanmoqchi bo'lsangiz unda Cloudflare Tunnel orqali ushbu servisga bog'langan domen bilan kirasiz:

https://meningservisim.com

Uydagi Wifiga ulangan holda ham o'sha servisga domen orqali kirish ham mumkin albatta, lekin bunda siz serveringiz bilan bir tarmoqqa ulagan bo'lishingizga qaramay unga internet orqali kirayotgan bo'lasiz.

Domen orqali o'sha serverga internetsiz to'g'ridan to'g'ri ulanish uchun yuqoridagi domenni servisning ichki IPsiga yo'naltirib qo'yish kifoya. Buni aksar Wifi routerlarning sozlamalarida "Static DNS" yoki "Port forwarding" bo'limida amalga oshirish mumkin. Ya'ni https://meningservisim.com manzilini terganda Wifi router sizni http://192.168.100.1 manziliga yo'naltirsin.

Agar serverda bir nechta servislar bo'lsachi? Deylik serverda yana bir servis bor, domeni https://meningboshqaservisim.com bo'lsa va uni ham Wifi routerdan http://192.168.100.1 manziliga yo'naltirib qo'ysak, server qaysi servisni taqdim qilish kerakligini qayerdan biladi?

Buning yechimi oson. Domenlarni kerakli servislarga yo'naltirish uchun teskari proksi (reverse proxy) dan foydalanish mumkin. Masalan buni Nginx Proxy manager servisi taqdim qila oladi. Men ham servislarimning domen nomlarini va ip manzil:port larni shu servis orqali sozlaganman. Endi serverimdagi xohlagan servisga kirmoqchi bo'lsam o'sha servis domenini terishim kifoya: agar uydagi Wifiga ulangan bo'lsam Wifi router meni to'g'ridan to'g'ri serverimga yo'naltiradi, agar uydan tashqarida bo'lsam serverimga internet orqali ulanaman.

Barchasi shular edi. Biror joyda tushunmovchilikka duch kelsangiz yoki boshqa savollaringiz bo'lsa post ostidagi izohda qoldirishingiz mumkin, javob berishga harakat qilaman.



Report Page