−25%

د Windows پر کلنۍ تادیه، تر ۳۱ اکتوبر. پلانونه وګورئ

EQVPS
پیل وکړئ

د Alpine Linux VPS چمتو کول: apk، doas، OpenRC او فایروال

په نوي Alpine Linux 3.21 VPS کې لومړي ګامونه: تازه کول او بیا پیلول، داسې doas کاروونکی جوړول چې په رښتیا ننوتلی شي، د root او پاسورډ له لارې SSH ننوتل بندول، ufw لګول، cron او ورځني تازه کېدنې چالانول. له دې سره د Docker هغه پورټ هم چې ufw یې نه بندوي.

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 پېژنئ، زیاتره بدلون همدا دی:

کارsystemdAlpine (OpenRC)
خدمت پیلولsystemctl start nginxrc-service nginx start
د بوټ پر مهال پیلولsystemctl enable nginxrc-update add nginx default
حالتsystemctl status nginxrc-service nginx status
څه چلېږيsystemctl list-unitsrc-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 کېږي، پرته له پېژندپاڼې او کارت.

پوښتنې

ولې Alpine له Ubuntu یا Debian څخه دومره کوچنی دی؟

دا د glibc پر ځای musl، د بنسټیزو کمانډونو لپاره BusyBox او د systemd پر ځای OpenRC کاروي. زموږ په سرورونو یو نوي Alpine 3.21 په بېکاره حالت کې 55 MB RAM او 153 MB ډیسک کاراوه. Ubuntu 24.04 بیا 313 MB او 2.7 GB کارول.

که کیلي سمه وي، ولې نوی کاروونکی "account is locked" ترلاسه کوي؟

adduser -D حساب بې پاسورډه جوړوي، Alpine یې تړل شوی ګڼي، او sshd دغه کاروونکی له سمې کیلي سره هم ردوي. په لاګ کې دا کرښه راځي: "User deploy not allowed because account is locked". د passwd په مرسته کاروونکي ته پاسورډ ورکړئ، بیا د کیلي ننوتل کار کوي.

ولې په Alpine کې SSH تونل کار نه کوي؟

د Alpine ډیفالټ /etc/ssh/sshd_config کې AllowTcpForwarding no ټاکل شوی، نو د ssh -L لېږدونې ردېږي. که تونل ته اړتیا لرئ، په همدې فایل کې یې yes کړئ او rc-service sshd restart وچلوئ.

ایا زما پروګرام به په Alpine کار وکړي؟

د Alpine له زېرمو هر څه کار کوي، او هغه Docker کانټینرونه هم چې پر هر بنسټیز امېج جوړ شوي وي. د glibc لپاره جوړ شوي چمتو Linux پروګرامونه په musl اکثر نه پیلېږي. د Alpine یا musl نسخه ولټوئ، یا پروګرام په Docker کې وچلوئ. د gcompat کڅوړه له ځینو ساده glibc پروګرامونو سره مرسته کوي.

د Alpine لپاره کوم پلان بس دی؟

په میاشت کې د $3 د 1 GB Nano پلان ډېر ځای لري: سیسټم پخپله شاوخوا 55 MB کاروي. که پورټونه 80 او 443 باید انټرنیټ ته پرانیستي وي، د خپل IPv4 لرونکی Nano-IP په میاشت کې په $8 واخلئ.

تبصرې

لا تبصرې نشته. لومړی اوسئ.

یوه تبصره پریږدئ

تبصرې د ښکاره کیدو مخکې اعتدال کیږي.