
🚀 Näin määrität dynaamisen DNS:n Cloudflaren kautta Raspberry Pi:llä
Kotipalvelimesi Raspberry Pi:llä pyörii 24/7, mutta operaattorisi vaihtaa ulkoisen IP-osoitteen joka päivä. Uuteen osoitteeseen manuaalisesti kolkuttelu on arkeologin hommaa. Ja DynDNS ja No-IP pommittavat sinua sähköposteilla: "kirjaudu kerran kuussa tai poistamme ilmaistilisi käytöstä."
Käy ilmi, että Cloudflare toimii dynaamisena DNS:nä, ilman mainossähköposteja, ilman päivitystiheyden rajoituksia ja ilman kolmannen osapuolen aliverkkotunnuksia. Onko sinulla jo verkkotunnus Cloudflaressa? Sitten tarvitset vain API-tokenin ja bash-skriptin Raspberry Pi:llä. Puolessa tunnissa saat pystyyn järjestelyn, joka päivittää A-tietueen automaattisesti aina IP-osoitteen vaihtuessa.
Ja jos haluat muutakin kuin "päästä konsoliin" ja aiot pystyttää täysiverisen kehityssivuston, vaikkapa WordPressillä, tästä asetelmasta tulee perusta: saat yhteyden palvelimeesi mistä päin maailmaa tahansa siistillä aliverkkotunnuksella kuten home.example.com.
💡 Nopea yleiskatsaus:
- Vaihe 1: Luo A-tietue Cloudflaren DNS-paneelissa testi-IP:llä
0.0.0.0 - Vaihe 2: Hanki API-token (ei yleisavainta, tokenit ovat turvallisempia ja kumottavissa yhdellä klikkauksella)
- Vaihe 3: Suorita bash-skripti, joka kysyy nykyisen IP:n ja työntää sen Cloudflaren API:in
- Vaihe 4: Aseta cron-työ ja unohda manuaaliset päivitykset ikuisiksi ajoiksi
Mitä tarvitset
- Verkkotunnus, joka on lisätty Cloudflareen ja jota hallitaan heidän DNS:nsä kautta
- Raspberry Pi (mikä tahansa malli käy, Pi 3, Pi 4, Pi Zero 2 W), jossa on Raspbian tai Raspberry Pi OS
- Staattinen paikallinen IP Raspberry Pi:lle (määritettynä käyttöjärjestelmän graafisessa käyttöliittymässä tai reitittimestä)
- Pääteyhteys Pi:hin SSH:lla tai suoraan
Se, mitä palveluita tarkalleen isännöit Raspberry Pi:llä ja miten ohjaat portit reitittimessä, on tämän oppaan ulkopuolinen aihe. Järjestely toimii samalla tavalla riippumatta siitä, onko kyseessä verkkopalvelin WordPressillä, VNC-yhteys vai valvontakamera.
1. Luo A-tietue kotipalvelimellesi
Valitse aliverkkotunnus, siitä tulee pysyvä sisääntulopisteesi. Itse käytän home, mutta voit valita minkä tahansa: dev, lab, cam.
- Siirry Cloudflaren hallintapaneeliin ja valitse verkkotunnuksesi
- Navigoi DNS-välilehdelle
- Klikkaa Lisää tietue, valitse tyypiksi A
- Nimi-kenttään syötä aliverkkotunnus (esimerkiksi
home) - IPv4-osoite-kenttään määritä
0.0.0.0, väliaikaisesti, jotta voit testata skriptiä myöhemmin - Jätä Välityspalvelimen tila pois päältä (harmaa pilvi), välimuistia ja välityspalvelinta ei tarvita DDNS:lle

Tietue on valmis. Hankitaan nyt API-käyttöavain.
2. Hanki Cloudflaren API-token
Aiemmin kaikki oppaat ehdottivat yleistä API-avainta, joka antaa täydet oikeudet kaikkiin tilin verkkotunnuksiin. Tämä on vaarallista: jos avain vuotaa, kaikki vuotaa. Nyt Cloudflare suosittelee API-tokeneita, joissa on tarkat käyttöoikeudet. Token voidaan rajata tiettyyn verkkotunnukseen ja toimenpiteeseen, ja vaaratilanteessa sen voi kumota yhdellä klikkauksella.
- Cloudflaren hallintapaneelissa siirry kohtaan: Oma profiili → API-tokenit
- Klikkaa Luo token
- Valitse Muokkaa vyöhykkeen DNS:ää -pohja (tai luo mukautettu)
- Vyöhykeresurssit-osiossa määritä se tietty verkkotunnus, jolle olet määrittämässä DDNS:ää
- Klikkaa Jatka yhteenvetoon → Luo token
- Kopioi token, se näytetään vain kerran
Token näyttää pitkältä merkkijonolta, joka alkaa cfut_. Säilytä se turvallisessa paikassa, Raspberry Pi:n skripti tarvitsee sitä hetken kuluttua.
3. Automaattinen päivitysskripti Raspberry Pi:llä
Yhdistä Raspberry Pi:hin SSH:lla tai avaa pääte. Luodaan kansio skriptille:
1 mkdir -p ~/cf && cd ~/cf
Sitten itse skripti. Luo tiedosto cloudflare-ddns.sh:
1 nano ~/cf/cloudflare-ddns.sh
Kopioi siihen seuraava koodi:
1 #!/bin/bash 2 3 ## Settings (replace with yours) 4 AUTH_EMAIL="[email protected]" 5 API_TOKEN="cfut_your_token" 6 ZONE_NAME="example.com" 7 RECORD_NAME="home.example.com" 8 9 ## Get current public IP 10 CURRENT_IP=$(curl -s https://api.ipify.org) 11 12 ## Get Zone ID 13 ZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$ZONE_NAME" \ 14 -H "Authorization: Bearer $API_TOKEN" \ 15 -H "Content-Type: application/json" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) 16 17 ## Get Record ID and current record IP 18 RECORD=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?name=$RECORD_NAME" \ 19 -H "Authorization: Bearer $API_TOKEN" \ 20 -H "Content-Type: application/json") 21 22 RECORD_ID=$(echo "$RECORD" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) 23 DNS_IP=$(echo "$RECORD" | grep -o '"content":"[^"]*"' | head -1 | cut -d'"' -f4) 24 25 ## Update record if IP changed 26 if [ "$CURRENT_IP" != "$DNS_IP" ]; then 27 UPDATE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ 28 -H "Authorization: Bearer $API_TOKEN" \ 29 -H "Content-Type: application/json" \ 30 --data "{\"type\":\"A\",\"name\":\"$RECORD_NAME\",\"content\":\"$CURRENT_IP\",\"ttl\":120}") 31 32 echo "$(date): IP changed from $DNS_IP to $CURRENT_IP — updated" >> ~/cf/cloudflare-ddns.log 33 else 34 echo "$(date): IP unchanged ($CURRENT_IP)" >> ~/cf/cloudflare-ddns.log 35 fi
Korvaa "Settings"-lohkon neljä muuttujaa omilla arvoillasi. Sähköposti, sama jolla kirjaudut Cloudflareen. Token, se jonka kopioit vaiheessa 2. Zone name, verkkotunnuksesi ilman http://-alkua. Record name, koko aliverkkotunnus.
Tallenna tiedosto (Ctrl+O, Enter, Ctrl+X nanossa) ja tee siitä suoritettava:
1 chmod +x ~/cf/cloudflare-ddns.sh
Aja manuaalisesti tarkistaaksesi:
1 ~/cf/cloudflare-ddns.sh
Jos kaikki on määritetty oikein, mene Cloudflaren DNS-paneeliin, A-tietueen IP-osoitteen pitäisi vaihtua 0.0.0.0:sta oikeaksi julkiseksi IP-osoitteeksesi. Loki kirjoitetaan tiedostoon ~/cf/cloudflare-ddns.log, tarkista sieltä jos jokin meni pieleen.
4. Automaatio cronilla
Manuaalinen ajo on vain testausta varten. Tästä eteenpäin cron hoitaa homman.
1 crontab -e
Jos järjestelmä kysyy editorin valintaa, valitse nano (yleensä numero 2, se on yksinkertaisin). Lisää rivi tiedoston loppuun:
1 0 */6 * * * /bin/bash /home/pi/cf/cloudflare-ddns.sh
Tämä merkintä ajaa skriptin 6 tunnin välein. Vaikka operaattori vaihtaisi IP-osoitteen vain muutaman kuukauden välein, kuuden tunnin ikkuna on kohtuullinen kompromissi ajantasaisuuden ja API-kuorman välillä.
Jos haluat useammin, korvaa merkinnällä */30 * * * * (30 minuutin välein). Mutta muista: Cloudflare API:n ilmaisraja on 1200 pyyntöä minuutissa, joten edes minuutin välein tehtävät kutsut eivät ole ongelma yhdelle verkkotunnukselle.
Tallenna (Ctrl+X, Y, Enter). Cron poimii muutokset automaattisesti, palvelua ei tarvitse käynnistää uudelleen. Apua tähtien tulkintaan osoitteessa crontab.guru.
Lyhyt video-opas samasta aiheesta NetworkChuckilta, jossa demonstroidaan oikealla Raspberry Pi:llä ja selitetään jokainen vaihe:
Mitä tehdä, jos skripti ei löytänyt Zone ID:tä tai Record ID:tä
Joskus API ei palauta tunnisteita automaattisesti, varsinkaan jos tilillä on monta verkkotunnusta tai samannimistä tietuetta. Silloin hae ne manuaalisesti:
- Mene Cloudflaren hallintapaneeliin, valitse verkkotunnus, DNS-välilehti
- Avaa selaimen kehittäjätyökalut (
F12→ Network-välilehti → XHR-alavälilehti) - Klikkaa A-tietueesi vieressä olevaa pilvikuvaketta, verkkopaneeliin ilmestyy pyyntö API:in
- Klikkaa sitä hiiren kakkospainikkeella → Copy → Copy link address (Chrome) tai Copy URL (Firefox)
- Kopioidusta linkistä löydät
zones/-kohdan jälkeisen osan, se on Zone ID, jadns_records/-kohdan jälkeisen osan, se on Record ID
Korvaa ne skriptin ZONE_ID- ja RECORD_ID-muuttujiin, niin kaikki toimii. Varmista, että DNS-paneelin pilvi on harmaa (proxy pois päältä): Cloudflaren ei pidä välimuistittaa IP-osoitetta DDNS:ää varten.
⁉️🤔 Usein kysytyt kysymykset
Onko pakko käyttää API-tokenia globaalin avaimen sijaan?
Globaali avain toimii edelleen, mutta token on moderni ja turvallinen vaihtoehto. Tokenin voi rajata yhteen verkkotunnukseen ja DNS-muokkausoikeuksiin. Globaali avain antaa pääsyn koko tiliin. Jos skripti tai Pi vaarantuu, kumoat tokenin helposti, kun taas avain pitäisi vaihtaa kaikkialle.
Miten tämä lähestymistapa eroaa DuckDNS:stä tai No-IP:stä?
Kolmannen osapuolen DDNS-palvelut antavat kolmannen tason aliverkkotunnuksen, kuten
myhome.duckdns.org. Cloudflare-lähestymistapa käyttää omaa verkkotunnustasi (home.example.com), tämä näyttää ammattimaisemmalta, ei ole riippuvainen jonkun toisen palvelusta eikä vaadi kuukausittaista kirjautumista aktiivisuuden vahvistamiseksi. Lisäksi saat käyttöösi koko Cloudflaren ekosysteemin: DDoS-suojauksen, SSL-varmenteet, palomuurisäännöt.
Täytyykö reitittimeen avata portteja?
Kyllä, jotta Raspberry Pi:hin pääsee internetistä. DDNS varmistaa vain, että verkkotunnus osoittaa aina nykyiseen IP-osoitteeseen. Mutta jotta liikenne siitä IP-osoitteesta pääsee Pi:lle, sinun on määritettävä reitittimeen porttiohjaus tarvittaville porteille (22 SSH:lle, 80/443 webille ja niin edelleen).
Mitä tehdä, jos Raspberry Pi on operaattorin NATin takana?
Jotkut operaattorit käyttävät Carrier-Grade NATia (CGNAT), jolloin sinulla ei ole omaa julkista IP-osoitetta eikä DDNS auta. Ratkaisu: pyydä operaattorilta valkoinen IP-osoite (usein ilmainen pyynnöstä) tai käytä Cloudflare Tunnel -palvelua, joka luo salatun kanavan Pi:ltä Cloudflareen ilman porttiohjausta.
Paljonko tämä ratkaisu maksaa?
Ei mitään. Cloudflare DNS on ilmainen rajattomille A-tietueille. Raspberry Pi:n ostit jo. Pi 3/4:n virrankulutus kuormitettuna on noin 3-5 W, vuodessa se on karkeasti 250-400 dollaria.
Voinko päivittää useita aliverkkotunnuksia?
Kyllä, kopioi skriptissä
RECORD_NAME- jaDNS_IP-lohkot jokaiselle aliverkkotunnukselle tai kääri logiikka silmukkaan, joka käy läpi nimien taulukon.
Dynaaminen DNS Cloudflaressa: mitä asetat vuonna 2026
Cloudflare API:n ja cronin yhdistelmä on selvinnyt useista Raspberry Pi -sukupolvista eikä ole menettänyt ajankohtaisuuttaan. Saat oman alidomainin, et ole riippuvainen kolmannen osapuolen DDNS-palveluista etkä maksa senttiäkään.
Jos haluat mennä pidemmälle, tutustu valmiisiin Docker-imageihin: oznu/cloudflare-ddns päivittää IP:n 5 minuutin välein ja konfiguroidaan ympäristömuuttujilla. Pythonin ystäville on tarjolla aribasadme/rpi-cloudflare-ddns, joka on räätälöity nimenomaan Raspberry Pi:lle.
Tärkein asia, jonka teit tänään: Raspberry Pi on nyt tavoitettavissa mistä päin maailmaa tahansa pysyvällä osoitteella. Ja tämä on perusta mille tahansa: WordPress-kehityspalvelimesta omaan pilvitallennukseen.



