Alpine Linux የምናቀርበው ትንሹ ምስል ነው። በአገልጋዮቻችን ላይ አዲስ Alpine 3.21 ስራ ሳይሰራ 55 MB RAM እና 153 MB ዲስክ ተጠቅሟል፣ Ubuntu 24.04 ደግሞ 313 MB እና 2.7 GB። ዋጋው የለመዷቸውን መሳሪያዎች መተው ነው። Alpine ከapt ይልቅ apk፣ ከsudo ይልቅ doas፣ ከsystemd ይልቅ OpenRC እና ከglibc ይልቅ musl ይጠቀማል።
ከታች ያሉት እርምጃዎች በDebian ወይም በUbuntu ላይ ያሉት ተመሳሳይ የመጀመሪያ አስር ደቂቃዎች ናቸው፣ ለAlpine የተስተካከሉ። ከማተማችን በፊት እያንዳንዱን ትዕዛዝ በAlpine 3.21 ምስላችን ላይ አሂደናል፣ ከነሱም ሁለቱ በመጀመሪያው ሙከራ አደናቀፉን። ከዳሽቦርድዎ ባለው ይለፍ ቃል እንደ root ይግቡ።
1. ያዘምኑ፣ ከዚያ አንድ ጊዜ ዳግም ያስጀምሩ
apk update && apk upgrade
uname -r
ls /lib/modules
አገልጋይዎ በመጀመሪያው ማስነሻ ላይ ያሉትን ዝማኔዎች አስቀድሞ ጭኗል፣ ስለዚህ apk upgrade አብዛኛውን ጊዜ ብዙ የሚሰራው አይቀረውም። ይልቁንስ የመጨረሻዎቹን ሁለት መስመሮች ይመልከቱ። ያ የመጀመሪያው ዝማኔ አዲስ ከርነል ካመጣ፣ እየሰራ ያለው ከርነል (uname -r) ሞጁሎቹ በዲስክ ላይ የሉም። ሞጁል የሚጭን ማንኛውም ነገር ዳግም እስኪያስጀምሩ ድረስ ይወድቃል። በሙከራ አገልጋያችን ላይ ፋየርዎሉን መጫን ERROR: Couldn't determine iptables version አሳየ። ሁለቱ ስሪቶች የተለያዩ ከሆኑ አሁኑኑ ዳግም ያስጀምሩ፦
reboot
የሙከራ አገልጋያችን ከአንድ ደቂቃ ባነሰ ጊዜ ተመለሰ።
2. መግባት የሚችል ተጠቃሚ ይፍጠሩ
adduser -D deploy
passwd deploy
adduser deploy wheel
passwdን አይዝለሉ። adduser -D መለያውን ያለ ይለፍ ቃል ይፈጥራል፣ Alpine እንደተቆለፈ ይመዘግበዋል፣ sshd ደግሞ የተቆለፈ መለያን ትክክለኛ ቁልፍ ቢኖርም ይከለክላል። በሙከራችን ውስጥ ብቸኛው ፍንጭ በ/var/log/messages ውስጥ ያለው ይህ መስመር ነበር፦
User deploy not allowed because account is locked
ይለፍ ቃሉ በኋላም ያስፈልጋል፦ doas የሚጠይቀው እሱን ነው።
አገልጋዩን ሲያዝዙ የSSH ቁልፍ ካከሉ፣ በroot authorized_keys ውስጥ ይገኛል። ለአዲሱ ተጠቃሚ ይቅዱት፦
install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
install -m 600 -o deploy -g deploy /root/.ssh/authorized_keys /home/deploy/.ssh/authorized_keys
እስካሁን ቁልፍ የለዎትም? በኮምፒውተርዎ ላይ አንድ ይፍጠሩ እና ይፋዊውን ክፍል ወደ /home/deploy/.ssh/authorized_keys ይለጥፉ።
3. doas ይለፍ ቃል እንዲጠይቅ ያድርጉ
Alpine ከsudo ይልቅ doas ይጠቀማል፣ ምስላችንም ለwheel ቡድን አስቀድሞ ይፈቅዳል። በ/etc/doas.d/wheel.conf ውስጥ ያለው ደንብ permit nopass :wheel ነው፣ ማለትም ማንኛውም የwheel አባል ምንም ሳይተይብ root ይሆናል። ይለፍ ቃል እንዲጠይቅና ለጥቂት ደቂቃዎች እንዲያስታውሰው ያድርጉ፦
echo 'permit persist :wheel' > /etc/doas.d/wheel.conf
ከአሁን ጀምሮ doas apk add nano በUbuntu ላይ እንዳለው sudo apt install nano ይሰራል።
4. SSH፦ ቁልፎች ብቻ፣ root የለም
sshd በ/etc/ssh/sshd_config.d/ ውስጥ ያሉትን ፋይሎች በስም ቅደም ተከተል ያነባል፣ ለእያንዳንዱ ቅንብርም ያገኘውን የመጀመሪያ እሴት ይይዛል። በምስላችን ውስጥ የመጀመሪያው ፋይል 00-eqvps.conf ነው፣ በመጀመሪያው ቀን መግባት እንዲችሉ root እና ይለፍ ቃልን ይፈቅዳል። ይዘቱን ይተኩ፦
cat > /etc/ssh/sshd_config.d/00-eqvps.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
EOF
sshd -t && rc-service sshd restart
sshd -T | grep -E '^(permitrootlogin|passwordauthentication|kbdinteractiveauthentication) '
ሦስተኛው መስመር በAlpine ላይ አስፈላጊ ነው። ምስሉ የPAM ስሪት OpenSSHን ይጠቀማል፣ በመጀመሪያዎቹ ሁለት መስመሮች ብቻ የሙከራ አገልጋያችን አሁንም የkeyboard-interactive መግቢያ ያቀርብ ነበር። ሦስቱም ሲኖሩ ያለ ቁልፍ የሚደረግ የመግቢያ ሙከራ ይህንን ያገኛል፦
Permission denied (publickey).
የroot ክፍለ ጊዜዎን ክፍት ይተዉት። በሁለተኛ ተርሚናል ssh deploy@YOUR.SERVER.IP እንደሚሰራ (በNAT ጥቅል ላይ -p እና ከዳሽቦርዱ ያለውን የግል ወደብ ያክሉ) እና doas id ይለፍ ቃሉን እንደሚቀበል ያረጋግጡ።
5. ፋየርዎል፦ ufw
ufw በcommunity ማከማቻ ውስጥ ይገኛል፣ ይህም በምስላችን ላይ በርቷል፦
apk add ufw
ufw limit 22/tcp
ufw --force enable
rc-update add ufw default
ufw status
limit SSHን ያሳልፋል፣ ነገር ግን በተከታታይ ብዙ ግንኙነቶችን የሚከፍትን ያዘገያል። rc-update እዚህ አስፈላጊ ነው፣ ምክንያቱም ወደ runlevel ካላከሉት OpenRC ዳግም ከተነሳ በኋላ ፋየርዎሉን አያስጀምርም። ዳግም ከተነሳ በኋላ አገልጋያችን በStatus: active ተመለሰ። በNAT ጥቅል ላይ SSHን በወደብ 22 ላይ ይተዉት፦ የግል ውጫዊ ወደብዎ በአገልጋዩ ውስጥ ወዳለው 22 ይተላለፋል። የራሱ IPv4 ባለው ጥቅል ላይ የድር ወደቦችን ሲያስፈልጉ ይክፈቱ (ufw allow 80/tcp፣ ufw allow 443/tcp)። የቀረው በufw መመሪያ ውስጥ አለ።
6. cron እና ዕለታዊ ዝማኔዎችን ያብሩ
አዲስ የAlpine አገልጋይ cronን በፍጹም አያሂድም። ያብሩት፦
rc-update add crond default
rc-service crond start
በAlpine ላይ የroot crontab በ/etc/periodic/daily ውስጥ ያለውን ሁሉ በ02:00 ሰዓት አስቀድሞ ያሂዳል። እዚያ የማዘመኛ ስክሪፕት ያስቀምጡ፦
cat > /etc/periodic/daily/apk-upgrade <<'EOF'
#!/bin/sh
apk upgrade --update-cache --no-progress >> /var/log/apk-auto.log 2>&1
EOF
chmod +x /etc/periodic/daily/apk-upgrade
run-parts --test /etc/periodic/daily
የመጨረሻው ትዕዛዝ cron የሚያሂዳቸውን ስክሪፕቶች ይዘረዝራል፣ የእርስዎም በዝርዝሩ ውስጥ መሆን አለበት። በዚህ መንገድ የ3.21 ማስተካከያዎችን ያገኛሉ። ወደሚቀጥለው የAlpine ልቀት መሸጋገር የተለየ፣ በእጅ የሚደረግ እርምጃ ነው። የከርነል ዝማኔዎች አሁንም ዳግም ማስጀመር ይፈልጋሉ፦ ከደረጃ 1 ያለውን የuname -r / ls /lib/modules ፍተሻ አልፎ አልፎ ይድገሙ።
7. OpenRC በአንድ ሰንጠረዥ
systemdን ካወቁ የሚቀየረው አብዛኛው ይህ ነው፦
| ተግባር | systemd | Alpine (OpenRC) |
|---|---|---|
| አገልግሎት ማስጀመር | systemctl start nginx | rc-service nginx start |
| በማስነሻ ጊዜ ማስጀመር | systemctl enable nginx | rc-update add nginx default |
| ሁኔታ | systemctl status nginx | rc-service nginx status |
| ምን እየሰራ ነው | systemctl list-units | rc-status |
| የስርዓት ምዝግብ | journalctl | /var/log/messages |
8. Docker፣ እና ufw የማያግደው ወደብ
Alpine ለDocker ጥሩ አስተናጋጅ ነው፣ ምክንያቱም ስርዓቱ ራሱ መንገድ አይዘጋም፦
apk add docker docker-cli-compose
rc-update add docker default
rc-service docker start
docker run --rm hello-world
በአገልጋያችን ላይ ይህ ማውረዱን ጨምሮ 12 ሰከንድ ወሰደ። የDocker አገልግሎት ሲሰራ ጥቅም ላይ የዋለው ማህደረ ትውስታ ከ57 MB ወደ 124 MB ከፍ አለ።
ለAlpine ብቻ ያልሆነ አንድ ወጥመድ፦ Docker የራሱን የፋየርዎል ደንቦች ይጽፋል። ufw SSHን ብቻ ሲፈቅድ nginxን በ-p 8080:80 አስጀመርን እና ከአገልጋዩ ውጭ በወደብ 8080 ደረስንበት። ufw አላገደውም። አንድ ኮንቴይነር በዚያው አገልጋይ ላይ ባለ reverse proxy ብቻ መድረስ ካለበት በlocalhost ላይ ያትሙት፦
docker run -d -p 127.0.0.1:8080:80 nginx:alpine
የትኛው ጥቅል
Alpine ከRAM ውስጥ አብዛኛውን ለራስዎ ሶፍትዌር ይተዋል። የNano ጥቅል (2 vCPU፣ 1 GB፣ 15 GB፣ በወር $3) ለትንሽ አገልግሎት ወይም ለጥቂት ኮንቴይነሮች ይበቃል። የNAT ጥቅል ስለሆነ SSH በግል ወደብ በኩል ይገባል። ወደቦች 80 እና 443 ለኢንተርኔት ክፍት መሆን ካለባቸው Nano-IP በወር $8 የራሱ IPv4 አለው። ለከበዱ የDocker ስብስቦች Micro በወር $5 2 GB ይሰጣል።
Alpine 3.21 በAlpine VPS ገጽ ላይ አለ፣ በVPS ውስጥ ባሉ ሁሉም የLinux ጥቅሎች ላይም ይገኛል። ክፍያ በBase፣ Ethereum ወይም Polygon አውታሮች ላይ በUSDT፣ USDC ወይም ETH ይፈጸማል፣ ያለ መታወቂያና ካርድ።
አስተያየቶች
እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።