−25%

kwa Windows ya mwaka, hadi 31 Okt. Tazama mipango

EQVPS
Anza

Jinsi ya kuandaa VPS ya Alpine Linux: apk, doas, OpenRC na ngome

Hatua za kwanza kwenye VPS mpya ya Alpine Linux 3.21: sasisha na uwashe upya, unda mtumiaji wa doas anayeweza kuingia kweli, zima kuingia kwa SSH kwa root na kwa nenosiri, weka ufw, washa cron na masasisho ya kila siku. Pamoja na mlango wa Docker ambao ufw haiuzuii.

Alpine Linux ndiyo picha ndogo zaidi tunayotoa. Kwenye seva zetu Alpine 3.21 mpya ilitumia MB 55 za RAM na MB 153 za diski ikiwa haifanyi kazi, ikilinganishwa na MB 313 na GB 2.7 kwa Ubuntu 24.04. Gharama yake ni kuacha zana ulizozizoea. Alpine hutumia apk badala ya apt, doas badala ya sudo, OpenRC badala ya systemd na musl badala ya glibc.

Hatua zilizo hapa chini ni dakika kumi zilezile za kwanza kama kwenye Debian au Ubuntu, zikihamishiwa kwa Alpine. Tuliendesha kila amri kwenye picha yetu ya Alpine 3.21 kabla ya kuchapisha, na mbili kati yake zilitukwaza mara ya kwanza. Ingia kama root kwa nenosiri kutoka kwenye dashibodi yako.

1. Sasisha, kisha uwashe upya mara moja

apk update && apk upgrade
uname -r
ls /lib/modules

Seva yako tayari ilisakinisha masasisho yaliyopo ilipowashwa mara ya kwanza, kwa hiyo apk upgrade kwa kawaida haina mengi ya kufanya. Badala yake angalia mistari miwili ya mwisho. Ikiwa sasisho hilo la kwanza lilileta kiini kipya, kiini kinachoendesha (uname -r) hakina tena moduli zake kwenye diski. Chochote kinachopakia moduli kitashindwa hadi uwashe upya. Kwenye seva yetu ya majaribio, kusakinisha ngome kulionyesha ERROR: Couldn't determine iptables version. Ikiwa matoleo hayo mawili yanatofautiana, washa upya sasa:

reboot

Seva yetu ya majaribio ilirudi ndani ya chini ya dakika moja.

2. Unda mtumiaji anayeweza kuingia

adduser -D deploy
passwd deploy
adduser deploy wheel

Usiruke passwd. adduser -D huunda akaunti bila nenosiri, Alpine huiweka alama kuwa imefungwa, na sshd hukataa akaunti iliyofungwa hata kwa ufunguo sahihi. Katika jaribio letu kidokezo pekee kilikuwa mstari huu kwenye /var/log/messages:

User deploy not allowed because account is locked

Nenosiri pia ni muhimu baadaye: ndilo doas itakaloliuliza.

Ikiwa uliongeza ufunguo wa SSH ulipoagiza seva, uko kwenye authorized_keys ya root. Unakili kwa mtumiaji mpya:

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

Bado huna ufunguo? Unda mmoja kwenye kompyuta yako na ubandike sehemu ya umma kwenye /home/deploy/.ssh/authorized_keys.

3. Fanya doas iulize nenosiri

Alpine hutumia doas badala ya sudo, na picha yetu tayari inaruhusu kikundi wheel kuitumia. Kanuni katika /etc/doas.d/wheel.conf ni permit nopass :wheel, kwa hiyo mwanachama yeyote wa wheel anakuwa root bila kuandika chochote. Ifanye iulize nenosiri, kisha ilikumbuke kwa dakika chache:

echo 'permit persist :wheel' > /etc/doas.d/wheel.conf

Kuanzia sasa doas apk add nano hufanya kazi kama sudo apt install nano kwenye Ubuntu.

4. SSH: funguo pekee, bila root

sshd husoma faili zilizo ndani ya /etc/ssh/sshd_config.d/ kwa mpangilio wa majina na huhifadhi thamani ya kwanza inayoipata kwa kila mpangilio. Kwenye picha yetu faili ya kwanza ni 00-eqvps.conf, inayoruhusu root na manenosiri ili uweze kuingia siku ya kwanza. Badilisha maudhui yake:

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) '

Mstari wa tatu ni muhimu kwenye Alpine. Picha inaendesha toleo la OpenSSH lenye PAM, na kwa mistari miwili ya kwanza pekee seva yetu ya majaribio bado ilitoa kuingia kwa keyboard-interactive. Kwa mistari yote mitatu, jaribio la kuingia bila ufunguo hupata:

Permission denied (publickey).

Acha kipindi chako cha root wazi. Katika terminal ya pili, hakikisha ssh deploy@YOUR.SERVER.IP inafanya kazi (kwenye mpango wa NAT ongeza -p na mlango wako binafsi kutoka kwenye dashibodi) na kwamba doas id inakubali nenosiri.

5. Ngome: ufw

ufw iko kwenye hazina ya community, ambayo imewashwa kwenye picha yetu:

apk add ufw
ufw limit 22/tcp
ufw --force enable
rc-update add ufw default
ufw status

limit huruhusu SSH lakini humpunguzia kasi yeyote anayefungua miunganisho mingi mfululizo. rc-update ni muhimu hapa, kwa sababu OpenRC haianzishi ngome baada ya kuwasha upya isipokuwa uiongeze kwenye runlevel. Baada ya kuwasha upya, seva yetu ilirudi ikiwa na Status: active. Kwenye mpango wa NAT acha SSH kwenye mlango 22: mlango wako binafsi wa nje unaelekezwa kwenye 22 ndani ya seva. Kwenye mpango wenye IPv4 yake, fungua milango ya wavuti unapoihitaji (ufw allow 80/tcp, ufw allow 443/tcp). Mengine yako kwenye mwongozo wa ufw.

6. Washa cron na masasisho ya kila siku

Seva mpya ya Alpine haiendeshi cron hata kidogo. Iwashe:

rc-update add crond default
rc-service crond start

crontab ya root kwenye Alpine tayari huendesha kila kitu kilicho ndani ya /etc/periodic/daily saa 02:00. Weka skripti ya kusasisha hapo:

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

Amri ya mwisho huorodhesha skripti ambazo cron itaendesha, na yako inapaswa kuwa kwenye orodha. Hivyo unapata marekebisho ya 3.21. Kuhamia toleo linalofuata la Alpine ni hatua tofauti ya kufanya kwa mkono. Masasisho ya kiini bado yanahitaji kuwasha upya: rudia mara kwa mara ukaguzi wa uname -r / ls /lib/modules kutoka hatua ya 1.

7. OpenRC katika jedwali moja

Ikiwa unaijua systemd, haya ndiyo mengi ya yanayobadilika:

KazisystemdAlpine (OpenRC)
Anzisha hudumasystemctl start nginxrc-service nginx start
Anza wakati wa kuwashasystemctl enable nginxrc-update add nginx default
Halisystemctl status nginxrc-service nginx status
Kinachoendeshasystemctl list-unitsrc-status
Kumbukumbu ya mfumojournalctl/var/log/messages

8. Docker, na mlango ambao ufw haiuzuii

Alpine ni mwenyeji mzuri wa Docker kwa sababu mfumo wenyewe hauingilii:

apk add docker docker-cli-compose
rc-update add docker default
rc-service docker start
docker run --rm hello-world

Kwenye seva yetu hili lilichukua sekunde 12 pamoja na kupakua. Huduma ya Docker ikiwa inaendesha, kumbukumbu iliyotumika ilipanda kutoka MB 57 hadi MB 124.

Mtego mmoja usio wa Alpine pekee: Docker huandika kanuni zake za ngome. ufw ikiruhusu SSH tu, tuliwasha nginx kwa -p 8080:80 na tukaufikia kutoka nje ya seva kwenye mlango 8080. ufw haikuuzuia. Ikiwa kontena linapaswa kufikiwa kupitia reverse proxy kwenye seva hiyohiyo tu, lichapishe kwenye localhost:

docker run -d -p 127.0.0.1:8080:80 nginx:alpine

Mpango gani

Alpine huacha karibu RAM yote kwa programu zako. Mpango wa Nano (vCPU 2, GB 1, GB 15, $3 kwa mwezi) unatosha kwa huduma ndogo au makontena machache. Ni mpango wa NAT, kwa hiyo SSH huingia kupitia mlango binafsi. Ukihitaji milango 80 na 443 iwe wazi kwa intaneti, Nano-IP ina IPv4 yake kwa $8 kwa mwezi. Kwa mipangilio mizito zaidi ya Docker, Micro inakupa GB 2 kwa $5 kwa mwezi.

Alpine 3.21 iko kwenye ukurasa wa Alpine VPS na inapatikana kwenye kila mpango wa Linux katika VPS. Malipo ni kwa USDT, USDC au ETH kwenye mitandao ya Base, Ethereum au Polygon, bila kitambulisho wala kadi.

Maswali

Kwa nini Alpine ni ndogo sana kuliko Ubuntu au Debian?

Inatumia musl badala ya glibc, BusyBox kwa amri za msingi na OpenRC badala ya systemd. Kwenye seva zetu Alpine 3.21 mpya ilitumia MB 55 za RAM na MB 153 za diski ikiwa haifanyi kazi. Ubuntu 24.04 ilitumia MB 313 na GB 2.7.

Kwa nini mtumiaji mpya anapata "account is locked" ingawa ufunguo ni sahihi?

adduser -D huunda akaunti bila nenosiri, Alpine huiweka alama kuwa imefungwa, na sshd humkataa mtumiaji huyo hata kwa ufunguo halali. Mstari kwenye kumbukumbu ni "User deploy not allowed because account is locked". Mpe mtumiaji nenosiri kwa passwd na kuingia kwa ufunguo kutaanza kufanya kazi.

Kwa nini handaki la SSH halifanyi kazi kwenye Alpine?

Faili chaguo-msingi /etc/ssh/sshd_config ya Alpine ina AllowTcpForwarding no, kwa hiyo uelekezaji wa ssh -L unakataliwa. Ukihitaji mahandaki, badilisha thamani kuwa yes kwenye faili hiyo na uendeshe rc-service sshd restart.

Je, programu yangu itafanya kazi kwenye Alpine?

Chochote kutoka hazina za Alpine kitafanya kazi, na vivyo hivyo makontena ya Docker yaliyojengwa juu ya picha yoyote ya msingi. Programu za Linux zilizojengwa tayari kwa glibc mara nyingi hazianzi kwenye musl. Tafuta toleo la Alpine au musl, au endesha programu ndani ya Docker. Kifurushi gcompat husaidia kwa baadhi ya programu rahisi za glibc.

Mpango gani unatosha kwa Alpine?

Mpango wa Nano wa GB 1 kwa $3 kwa mwezi una nafasi kubwa: mfumo wenyewe hutumia takriban MB 55. Ukihitaji milango 80 na 443 iwe wazi kwa intaneti, chagua Nano-IP kwa $8 kwa mwezi, yenye IPv4 yake.

Maoni

Bado hakuna maoni. Kuwa wa kwanza.

Acha maoni

Maoni yanakaguliwa kabla ya kuonekana.