Siirry sisältöön

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.

Terminal window
cd ~ && git clone https://github.com/niemenjoki/Looku.git looku && cd looku/deploy
cp .env.example .env

Tiedostoon .env:

LOOKU_TIMEZONE=Europe/Helsinki
LOOKU_DASHBOARD_BIND=192.168.1.10
LOOKU_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.

Terminal window
mkdir -p data && sudo chown 1000:1000 data
docker compose up -d
docker compose ps

Molemmissa konteissa lukee Up ja minuutin kuluttua (healthy). Lisää sitten sivusto ja salasana:

Terminal window
docker compose run --rm ingest site:add myblog --domain example.com --timezone Europe/Helsinki
docker compose run --rm -it ingest admin:password
  • site:add tulostaa Signing key (shown once): ja avaimen. Tallenna se; site:rotate-key myblog vaihtaa sen. --timezone ratkaisee, milloin päivä vaihtuu sivuston raporteissa; site:timezone vaihtaa sen myöhemmin (jo tallennetut päivät säilyttävät päivämääränsä).
  • admin:password kysyy salasanan kerran näyttämättä sitä, vähintään 10 merkkiä. docker compose restart dashboard päättää olemassa olevat kirjautumiset.
  • Käytä kertakomennoissa muotoa run --rm ingest. run dashboard voi ensin käynnistää vastaanottimen uudelleen, koska kojelauta riippuu siitä.

Kojelauta on osoitteessa http://192.168.1.10:8788.

Cloudflaren kojelaudassa (polut tarkistettu marraskuussa 2026; jos valikko on siirtynyt, hae sulkeissa olevalla sanalla):

  1. Networking → Tunnels (“Tunnels”) → Create a tunnel, nimi looku.

  2. Valitse Docker ja kopioi tunnus (token) --token-sanan jälkeen (alkaa eyJ). Älä aja näytettyä komentoa.

  3. Palvelimella: LOOKU_TUNNEL_TOKEN=<token> tiedostoon .env (viimeinen rivi), sitten:

    Terminal window
    docker compose --profile tunnel up -d

    Tunneli näkyy Cloudflaressa yhdistettynä minuutin kuluessa (Cloudflare kutsuu cloudflared-ohjelmaa nimellä “connector”).

  4. Tunnelissa: Routes → Add route → Published application (“Published application”): subdomain looku, domain example.com, path tyhjä, service URL http://ingest:8787.

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.

Terminal window
curl -s -o /dev/null -w "%{http_code}\n" -X POST https://looku.example.com/ingest
curl -s -o /dev/null -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.

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.

Tekijästä