Kotipalvelin + Cloudflare
Vastaanotin saa julkisen palvelinnimen (https://looku.example.com) Cloudflare Tunnelin kautta, eikä kotona avata
yhtään porttia. Cloudflaren sääntö päästää läpi vain pyynnöt POST /ingest ja POST /orders. Kojelauta kuuntelee
vain kotiverkossa. Ensimmäinen kerta? 2. Ensimmäinen asennus kotipalvelimelle
käy läpi samat vaiheet selityksineen.
Tarvitset: Linuxin, jossa on Docker Compose v2 tai uudempi, Cloudflaressa olevan verkkotunnuksen ja palvelimen
kotiverkko-osoitteen (tässä 192.168.1.10). Komennot ajetaan palvelimella kansiossa ~/looku/deploy.
Asennus
Osio nimeltä “Asennus”cd ~ && git clone https://github.com/niemenjoki/Looku.git looku && cd looku/deploycp .env.example .envTiedostoon .env:
LOOKU_TIMEZONE=Europe/HelsinkiLOOKU_DASHBOARD_BIND=192.168.1.10LOOKU_API_HOSTS=192.168.1.10:8788| Asetus | Miksi |
|---|---|
LOOKU_TIMEZONE |
yöajon ja kuukausisähköpostin aikavyöhyke (nimet) |
LOOKU_DASHBOARD_BIND |
kojelaudan portti julkaistaan vain tässä osoitteessa; 127.0.0.1 = vain palvelin itse |
LOOKU_API_HOSTS |
hyväksytyt Host-otsakkeet, suojaa DNS rebinding -hyökkäykseltä. Lisää muut nimet pilkun jälkeen (server.local:8788); pidä portti samana kuin asetuksessa LOOKU_DASHBOARD_PORT |
Kun muutat .env-tiedostoa myöhemmin: docker compose up -d. Kaikki asetukset: Asetukset.
mkdir -p data && sudo chown 1000:1000 datadocker compose up -ddocker compose psMolemmissa konteissa lukee Up ja minuutin kuluttua (healthy). Lisää sitten sivusto ja salasana:
docker compose run --rm ingest site:add myblog --domain example.com --timezone Europe/Helsinkidocker compose run --rm -it ingest admin:passwordsite:addtulostaaSigning key (shown once):ja avaimen. Tallenna se;site:rotate-key myblogvaihtaa sen.--timezoneratkaisee, milloin päivä vaihtuu sivuston raporteissa;site:timezonevaihtaa sen myöhemmin (jo tallennetut päivät säilyttävät päivämääränsä).admin:passwordkysyy salasanan kerran näyttämättä sitä, vähintään 10 merkkiä.docker compose restart dashboardpäättää olemassa olevat kirjautumiset.- Käytä kertakomennoissa muotoa
run --rm ingest.run dashboardvoi ensin käynnistää vastaanottimen uudelleen, koska kojelauta riippuu siitä.
Kojelauta on osoitteessa http://192.168.1.10:8788.
Tunneli
Osio nimeltä “Tunneli”Cloudflaren kojelaudassa (polut tarkistettu marraskuussa 2026; jos valikko on siirtynyt, hae sulkeissa olevalla sanalla):
-
Networking → Tunnels (“Tunnels”) → Create a tunnel, nimi
looku. -
Valitse Docker ja kopioi tunnus (token)
--token-sanan jälkeen (alkaaeyJ). Älä aja näytettyä komentoa. -
Palvelimella:
LOOKU_TUNNEL_TOKEN=<token>tiedostoon.env(viimeinen rivi), sitten:Terminal window docker compose --profile tunnel up -dTunneli näkyy Cloudflaressa yhdistettynä minuutin kuluessa (Cloudflare kutsuu
cloudflared-ohjelmaa nimellä “connector”). -
Tunnelissa: Routes → Add route → Published application (“Published application”): subdomain
looku, domainexample.com, path tyhjä, service URLhttp://ingest:8787.
Palomuurisääntö
Osio nimeltä “Palomuurisääntö”Verkkotunnuksesi → Security → Security rules (“Security rules”) → Create rule → Custom rules. Nimi
Looku: only POST /ingest and /orders, Edit expression:
(http.host eq "looku.example.com" and not (http.request.method eq "POST" and http.request.uri.path in {"/ingest" "/orders"}))Toiminto Block → Deploy.
Tarkistus
Osio nimeltä “Tarkistus”curl -s -o /dev/null -w "%{http_code}\n" -X POST https://looku.example.com/ingestcurl -s -o /dev/null -w "%{http_code}\n" https://looku.example.com/curl.exe -s -o NUL -w "%{http_code}\n" -X POST https://looku.example.com/ingestcurl.exe -s -o NUL -w "%{http_code}\n" https://looku.example.com/| Ensimmäinen | Toinen | Merkitys |
|---|---|---|
401 |
403 |
oikein: vastaanotin torjui allekirjoittamattoman pyynnön, Cloudflare esti muut |
403 |
sääntö estää myös vastaanottimen; tarkista lauseke | |
502, 530 |
tunneli ei saa yhteyttä vastaanottimeen; katso Vianetsintä |
docker compose --profile tunnel ps näyttää kontit looku-ingest-1, looku-dashboard-1 ja looku-tunnel-1 tilassa
Up.
Seuraavaksi
Osio nimeltä “Seuraavaksi”Sivuston asetukset ovat LOOKU_ENDPOINT=https://looku.example.com, LOOKU_SITE_ID=myblog ja allekirjoitusavain:
Liitä Next.js-sivusto tai Node.js, Express, Cloudflare tai oma.
Varmuuskopiot: Varmuuskopiointi ja päivitys. Kojelauta kodin ulkopuolella:
Kojelauta Tailscalen kautta.