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 کې مهمه ده. امېج د OpenSSH هغه نسخه کاروي چې PAM لري، او یوازې د لومړیو دوو کرښو سره زموږ د ازموینې سرور لا هم د 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 دلته مهم دی، ځکه چې OpenRC له بیا پیل وروسته فایروال نه چالانوي، تر هغه چې تاسو یې runlevel ته ور اضافه نه کړئ. له بیا پیل وروسته زموږ سرور د 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 راتلونکې خپرونې ته تګ جلا او لاسي ګام دی. د کرنل تازه کېدنې لا هم بیا پیل ته اړتیا لري: کله ناکله د لومړي ګام 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 کېږي، پرته له پېژندپاڼې او کارت.
تبصرې
لا تبصرې نشته. لومړی اوسئ.