VPS'te Alpine Linux: minimal sistem ve gizli tuzakları
Alpine Linux, kurulumdan sonra diskte yaklaşık yüz megabayt yer kaplayan ve boştayken birkaç on megabayt bellek kullanan bir dağıtımdır. Bu üç tercihle elde edilir: glibc yerine musl kütüphanesi, tam GNU programları yerine BusyBox araç seti ve systemd yerine OpenRC başlatma sistemi. Sunucuda bu; hızlı açılış, az sayıda gereksiz servis ve küçük bir saldırı yüzeyi demektir, ama önceden bilinmesi gereken bazı farklar da vardır: internetteki talimatların çoğu Debian veya Ubuntu için yazılmıştır ve Alpine'de birebir çalışmaz.
Alpine hangi işler için uygundur
- En küçük paketler, 256–512 MB bellekli: Ubuntu'nun artık sıkıştığı yerde Alpine belleğin neredeyse tamamını uygulamaya bırakır.
- Konteyner ana makinesi. Docker ve containerd resmî depodan kurulur, sistem konteynerlere neredeyse hiç karışmaz. Donanım gereksinimleri Docker için VPS sayfasında açıklanmıştır.
- Ters proxy, DNS sunucusu, WireGuard tabanlı özel ağ düğümü — büyük bir kütüphane yığınına değil, ağa ve birkaç yapılandırma dosyasına ihtiyaç duyan servisler.
- «Tek kullanımlık» sunucu testler ve CI için: imaj saniyeler içinde açılır ve sıfırdan kolayca yeniden oluşturulur.
Alpine; kontrol paneli altında çalışan siteler, yalnızca glibc paketleri olarak dağıtılan tescilli yazılımlar ve yöneticinin alışık olduğu dağıtımlardan farkları öğrenmeye hazır olmadığı projeler için daha az uygundur. Bu durumlarda Debian seçmek daha rahattır: o da tutumludur, ama her şeyle uyumludur.
Alpine alışık olunan Linux'tan nasıl ayrılır
- Paketler apk ile kurulur:
apk update,apk add paket,apk upgrade. community deposu varsayılan olarak kapalı olabilir —/etc/apk/repositoriesdosyasında yorum işaretini kaldırın. - Servisler OpenRC ile yönetilir: başlatmak için
rc-service nginx start, otomatik başlatma içinrc-update add nginx. systemd unit dosyaları burada çalışmaz; kendi programlarınız için kısa init betikleri yazılır. - glibc yerine musl. glibc için derlenmiş hazır ikili dosyalar çalışmaz veya çöker. gcompat uyumluluk katmanı her zaman yardımcı olmaz. Python'da bazı paketlerin musl için hazır derlemesi yoktur ve kurulum sırasında derlenirler; bu uzun sürer ve sunucuda derleyici gerektirir.
- Varsayılan olarak bash yok: komut kabuğu BusyBox'ın ash'idir. bash sözdizimli betikler ya yeniden yazılır ya da bash ayrı bir paket olarak kurulur.
- Günlükleri BusyBox'ın syslog'u
/var/log/messagesdosyasına yazar; burada journalctl yoktur.
Kurulum ve güncellemeler
Hazır Alpine şablonu her sağlayıcıda yoktur, olduğu yerde de bazen eski bir sürümden hazırlanmıştır. Sistemi tam da sanal makineler için yapılmış resmî virt imajından kurmak daha güvenilirdir. Bunun için kendi imajınızı yükleyebileceğiniz ve VNC konsolu olan bir KVM VPS gerekir: ISO'dan açın, root olarak parolasız giriş yapın ve setup-alpine komutunu çalıştırın. Betik klavye düzenini, ağı, saat dilimini, SSH sunucusunu ve diski sorar; sunucu için sys kurulum modunu — diske normal kurulumu — seçin. Uygun paketlerin listesi kendi ISO'nuzu kurabileceğiniz VPS sayfasındadır.
Sağlayıcı adresi DHCP ile vermiyorsa ağı /etc/network/interfaces dosyasında elle tanımlamanız gerekir; bu özellikle IPv6 için geçerlidir. Erişimsiz kalmamak için ağı yeniden başlatmadan önce konsolda kontrol edin.
Kurulumdan hemen sonra root parolası belirleyin, sıradan bir kullanıcı oluşturun ve ona bir SSH anahtarı ekleyin. Alpine'de sudo yerine çoğu zaman doas kullanılır — daha küçüktür ve ayarlaması daha basittir. Varsayılan olarak güvenlik duvarı yoktur: nftables veya awall ile iptables kurun ve yalnızca SSH'yi ve gerekli servisleri açın. Saati de ayrıca kontrol edin: chrony veya ntpd olmadan sanal makinenin saati yavaş yavaş kayar; TLS sertifikalarının doğrulanması ve günlüklerdeki kayıtların sırası ise doğru saate bağlıdır.
Alpine'in kararlı sürümleri yılda iki kez çıkar, her birinin ana deposu yaklaşık iki yıl desteklenir. Sürüm içi güncelleme apk upgrade ile yapılır. Yeni sürüme geçmek için /etc/apk/repositories dosyasındaki sürüm numarasını değiştirin ve apk upgrade --available komutunu çalıştırın, ardından yeniden başlatın. edge dalını sunucuya kurmayın: bu bir geliştirme sürümüdür. Alpine'de otomatik güncelleme yoktur — cron'a bir görev ekleyin veya sürüm duyurularının e-posta listesine abone olun.
Paket seçerken nelere dikkat etmeli
Alpine'in ihtiyaç duyduğu bellek o kadar azdır ki paket seçiminde belirleyici olan bellek değil, disk ve ağdır. 512 MB'ta bile nginx, küçük bir veritabanı ve birkaç konteyner için yer kalır, ama Docker kullanmayı planlıyorsanız diskten tasarruf etmeyin: imajlar ve katmanlar hızla gigabaytlarca yer kaplar. Alpine konteyner sanallaştırmasında da çalışır, ancak orada çekirdeği siz seçmezsiniz ve WireGuard gibi modüller sağlayıcının ayarlarına bağlıdır. Sunucuda birkaç servisten daha ağır bir şey çalışacaksa baştan en az 1 GB bellek ve bir swap dosyası alın.