Siirry sisältöön

2. Ensimmäinen asennus kotipalvelimelle

Tässä oppaassa asennat Lookun oikeasti, kotipalvelimelle, ja annat sille julkisen osoitteen, johon sivustosi voi lähettää sivunäytöt. Kun olet valmis, Looku odottaa sivustoasi, jonka liität seuraavassa oppaassa.

Siihen menee noin tunti. Jos teit ohjeen 1. Kokeile Lookua omalla koneellasi, ensimmäinen puolisko näyttää tutulta: se on sama Docker-asennus.

Lookussa on kaksi osaa, joilla on eri tehtävät:

  • Vastaanotin ottaa vastaan sivunäytöt sivustosi palvelimelta. Sivustosi on jossain internetissä, joten vastaanotin tarvitsee julkisen osoitteen, esimerkiksi https://looku.example.com.
  • Kojelaudalta luet luvut. Vain sinä tarvitset sitä, joten se pysyy kotiverkossasi, esimerkiksi osoitteessa http://192.168.1.10:8788.

Jotta vastaanotin saa julkisen osoitteen avaamatta kotireititintäsi, käytämme Cloudflare Tunnelia: pieni ohjelma palvelimellasi pitää yhteyden auki Cloudflareen, ja Cloudflare välittää osoitteeseen looku.example.com tulevat pyynnöt sitä pitkin. Cloudflare myös pysäyttää kaiken, mikä ei ole sivunäyttö, ennen kuin se päätyy kotiisi.

  • Linux-kotipalvelimen, jossa on Docker ja Git: vanhan tietokoneen, minitietokoneen tai Raspberry Pi 4:n tai uudemman. Jos Dockeria ei ole vielä asennettu, asenna se Dockerin ohjeen mukaan omalle Linuxillesi. Git: sudo apt install git.
  • Verkkotunnuksen Cloudflaressa, esimerkiksi example.com. Cloudflare-tili on ilmainen; verkkotunnus maksaa noin 10 € vuodessa. Jos verkkotunnuksesi on toisella yrityksellä, lisää se ensin Cloudflareen Cloudflaren sivuston lisäysohjeen mukaan. Siihen voi mennä muutama tunti, joten aloita ajoissa.
  • Oman tietokoneesi samassa kotiverkossa. Kirjoitat sillä komennot ja käytät selainta.

Korvaa alla olevissa komennoissa 192.168.1.10 palvelimesi osoitteella, example.com verkkotunnuksellasi ja myblog sivustosi lyhyellä nimellä. Näytämme, miten löydät palvelimen osoitteen.

  1. Avaa pääte omalla tietokoneellasi (Windowsissa PowerShell, macOS:ssä ja Linuxissa pääte) ja ota yhteys palvelimeen ssh-komennolla. Käytä käyttäjänimeäsi palvelimella:

    Terminal window
    ssh you@192.168.1.10

    Ensimmäisellä kerralla se kysyy, luotatko palvelimeen. Kirjoita yes. Sitten se kysyy salasanaasi. Kun kehotteessa (rivin alussa, johon kirjoitat komennon) näkyy palvelimen nimi, jokainen kirjoittamasi komento ajetaan palvelimella.

    Etkö tiedä palvelimen osoitetta? Aja hostname -I palvelimella itsellään (näppäimistön ja näytön kanssa). Ensimmäinen numero, joka alkaa 192.168. tai 10., on yleensä oikea. Pyydä reititintäsi antamaan palvelimelle aina tämä osoite (reitittimen asetuksissa “DHCP-varaus”). Muuten osoite voi jonain päivänä vaihtua, eikä kojelauta silloin käynnisty.

  2. Tarkista, että Docker toimii:

    Terminal window
    docker compose version
    docker ps

    Ensimmäisen pitäisi tulostaa Docker Compose version v2.… tai suurempi numero, toisen otsikkorivi, joka alkaa CONTAINER ID. Jos näet permission denied, lisää sudo jokaisen tämän ohjeen docker-komennon eteen.

  1. Lataa Looku kotikansioosi:

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

    Olet nyt deploy-kansiossa. Kaikki tämän ohjeen docker compose -komennot ajetaan tässä.

  2. Kirjoita asetukset. Kopioi esimerkki ja avaa se nanolla, yksinkertaisella tekstieditorilla päätteessä:

    Terminal window
    cp .env.example .env
    nano .env

    Liiku nuolinäppäimillä ja muuta nämä kolme riviä (jätä muut ennalleen):

    LOOKU_TIMEZONE=Europe/Helsinki
    LOOKU_DASHBOARD_BIND=192.168.1.10
    LOOKU_API_HOSTS=192.168.1.10:8788

    Mitä ne tarkoittavat:

    • LOOKU_TIMEZONE: aikavyöhykkeesi. Yöajo ja kuukausisähköposti noudattavat sitä.
    • LOOKU_DASHBOARD_BIND: mistä kojelaudan voi avata. Palvelimesi kotiverkon osoite tarkoittaa: vain kotoa.
    • LOOKU_API_HOSTS: osoite, jonka kirjoitat selaimeen. Kojelauta torjuu muut osoitteet. Se suojaa kojelautaa tempulta, jossa haitallinen verkkosivu yrittää päästä kotiverkkosi laitteisiin.

    Tallenna painamalla Ctrl+O ja Enter, ja poistu painamalla Ctrl+X.

  3. Luo kansio tiedoille. Kaikki Lookun tiedot tulevat yhteen tiedostoon tässä kansiossa:

    Terminal window
    mkdir -p data
    sudo chown 1000:1000 data

    Jälkimmäinen komento antaa kansion käyttäjälle, jona Looku toimii kontin sisällä. sudo kysyy salasanaasi.

  4. Käynnistä Looku:

    Terminal window
    docker compose up -d

    Ensimmäinen kerta kestää muutaman minuutin. Lopussa näkyvät rivit Container looku-ingest-1 Started ja Container looku-dashboard-1 Started. Looku käynnistyy nyt itsestään aina, kun palvelin käynnistyy uudelleen. Tarkista minuutin päästä komennolla docker compose ps: kummankin kohdalla pitäisi lukea Up ja (healthy).

  5. Lisää sivustosi:

    Terminal window
    docker compose run --rm ingest site:add myblog --domain example.com --timezone Europe/Helsinki

    --domain on sivustosi osoite ilman https://-alkua (www.-alun kanssa tai ilman; Looku käsittelee ne samana). Looku vastaa sivuston allekirjoitusavaimella:

    Site myblog added. Signing key (shown once):
    k8Jd2mQx7RfTn4WcZp1LvB9sHy6GaE0uYoXiN5tCw3E

    Tallenna avain nyt salasanojen hallintaohjelmaasi. Sivustosi allekirjoittaa jokaisen sivunäytön sillä, ja Looku hyväksyy vain allekirjoitetut sivunäytöt. Jos hukkaat avaimen, docker compose run --rm ingest site:rotate-key myblog luo uuden.

  6. Valitse kojelaudan salasana (vähintään 10 merkkiä):

    Terminal window
    docker compose run --rm -it ingest admin:password

    Kirjoita se kysymyksen New dashboard password: perään ja paina Enter. Mitään ei näy kirjoittaessasi, ja salasana kysytään vain kerran. Se vastaa Password set. Restart `looku serve` to end existing logins. Dockerissa “restart looku serve” tarkoittaa komentoa docker compose restart dashboard; tarvitset sitä vain, kun vaihdat salasanan myöhemmin.

  7. Avaa kojelauta omalla tietokoneellasi: http://192.168.1.10:8788. Kirjaudu sisään.

    Lookun kirjautumissivu.Lookun kirjautumissivu.

    Kojelauta on vielä tyhjä. Se täyttyy, kun sivustosi alkaa lähettää sivunäyttöjä.

    Jos sivu ei aukea tai siinä lukee Unknown host, tarkista .env-tiedoston kolme riviä, aja docker compose up -d (se ottaa .env-tiedoston muutokset käyttöön) ja katso Vianetsintä.

Tämä osa tehdään enimmäkseen Cloudflaren kojelaudassa selaimessa. Cloudflare muuttaa valikkojaan aika ajoin, joten jokaisessa vaiheessa on valikon nimi ja hakusana. (Tarkistettu marraskuussa 2026.)

  1. Luo tunneli. Kirjaudu osoitteessa dash.cloudflare.com, siirry kohtaan Networking → Tunnels (hakusana: “Tunnels”) ja valitse Create a tunnel. Anna nimeksi looku ja valitse Create Tunnel.

  2. Kopioi tunnelin tunnus (token). Cloudflare näyttää nyt, miten tunneliohjelma asennetaan eri järjestelmiin. Valitse Docker. Älä aja sen näyttämää komentoa: Lookussa on jo tunneliohjelma. Kopioi vain pitkä teksti --token-sanan jälkeen (se alkaa eyJ). Se on salaisuus, kuten salasana. Pidä tämä sivu auki.

  3. Anna tunnus Lookulle. Palvelimen päätteessä. (Jos palaat tähän myöhemmin, ota ensin uudelleen yhteys komennolla ssh you@192.168.1.10 ja aja cd ~/looku/deploy.)

    Terminal window
    nano .env

    Siirry viimeiselle riville, LOOKU_TUNNEL_TOKEN=, ja liitä tunnus heti =-merkin perään (päätteessä liitetään hiiren oikealla painikkeella tai Ctrl+Shift+V). Tallenna ja poistu.

  4. Käynnistä tunneli:

    Terminal window
    docker compose --profile tunnel up -d

    Näet tekstin Container looku-tunnel-1 Started. Tunneli on erillinen kontti, joka käynnistyy vain, kun pyydät sitä valinnalla --profile tunnel.

  5. Palaa Cloudflareen sivulle, jolta kopioit tunnuksen. Tunnelin pitäisi näkyä yhdistettynä (healthy) minuutin kuluessa. (Cloudflare kutsuu tunneliohjelmaa nimellä “connector”.) Valitse Continue. Tunneliin pääset aina takaisin kohdasta Networking → Tunnels valitsemalla sen nimen.

  6. Ohjaa osoitteesi vastaanottimeen. Avaa tunnelin Routes-välilehti ja valitse Add route → Published application. Täytä:

    Kenttä Arvo
    Subdomain looku
    Domain example.com
    Path jätä tyhjäksi
    Service URL http://ingest:8787

    Valitse Add route. Cloudflare luo osoitteen looku.example.com verkkotunnukseesi itse. Siihen tulevat pyynnöt kulkevat nyt tunnelin kautta vastaanottimelle, jonka nimi Dockerin sisällä on ingest.

Osa 4: Päästä läpi vain sivunäytöt

Osio nimeltä “Osa 4: Päästä läpi vain sivunäytöt”

Sivustosi lähettää vastaanottimelle täsmälleen kahdenlaisia pyyntöjä: POST-pyyntöjä osoitteeseen /ingest (sivunäytöt) ja osoitteeseen /orders (verkkokaupan tilaukset). Pyydetään Cloudflarea estämään kaikki muu, jotta mikään muu ei koskaan päädy kotiisi.

  1. Avaa Cloudflaren kojelaudassa verkkotunnuksesi (example.com).

  2. Siirry kohtaan Security → Security rules (hakusana: “Security rules”) ja valitse Create rule → Custom rules.

  3. Anna säännölle nimi Looku: only POST /ingest and /orders.

  4. Valitse kohdan When incoming requests match alta Edit expression ja liitä tämä niin, että looku.example.com-osoitteen tilalla on oma osoitteesi:

    (http.host eq "looku.example.com" and not (http.request.method eq "POST" and http.request.uri.path in {"/ingest" "/orders"}))

    Selkokielellä: “pyyntö osoitteeseen looku.example.com, joka ei ole POST-pyyntö osoitteeseen /ingest tai /orders”.

  5. Valitse kohdan Then take action alta Block ja valitse Deploy.

Testaa omalla tietokoneellasi. Anna säännölle ensin minuutti aikaa:

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 Mitä se tarkoittaa
401 403 Oikein. Testisi pääsi vastaanottimelle, joka torjui sen, koska sitä ei ollut allekirjoitettu, ja Cloudflare esti toisen pyynnön.
403 Sääntö estää myös vastaanottimen. Tarkista osan 4 lauseke.
502 tai 530 Tunneli ei saa yhteyttä vastaanottimeen. Katso Vianetsintä.

Looku toimii palvelimellasi. Vastaanottimella on julkinen osoite, joka ottaa vastaan vain allekirjoitetut sivunäytöt, ja kojelautaan pääsee vain kotoa. Kirjoita muistiin kolme asiaa, jotka sivustosi tarvitsee:

LOOKU_ENDPOINT=https://looku.example.com
LOOKU_SITE_ID=myblog
LOOKU_SIGNING_KEY=osan 2 avain

Seuraavaksi: 3. Liitä sivustosi ja lue ensimmäiset lukusi.

Ota myöhemmin käyttöön varmuuskopiot. Jos haluat avata kojelaudan kodin ulkopuolella, katso Tailscale.

Tekijästä