VPS + Caddy
Mitä saat: Looku toimii virtuaalipalvelimella (VPS) osoitteessa https://looku.example.com. Caddy on
verkkopalvelin. Se hakee HTTPS-varmenteen automaattisesti ja välittää pyynnöt eteenpäin: /ingest ja /orders
menevät vastaanottimelle, kaikki muu kojelaudalle. Kojelaudassa on salasana, ja se avautuu vain sallimistasi
verkoista.
Aika: noin tunti. Tarvitset:
- VPS:n, jossa on Ubuntu tai Debian, julkinen IP-osoite ja vähintään 1 Gt muistia (mikä tahansa palveluntarjoaja käy; pienin paketti riittää),
- verkkotunnuksen, johon voit lisätä DNS-tietueita,
- kotisi internetyhteyden julkisen IP-osoitteen, jotta voit rajata, kuka pääsee kojelautaan (katso osa 3).
Korvaa example.com omalla verkkotunnuksellasi, 203.0.113.10 VPS:n osoitteella ja myblog lyhyellä tunnuksella
sivustollesi.
1. Valmistele palvelin
Osio nimeltä “1. Valmistele palvelin”-
Ohjaa palvelinnimi VPS:lle. Lisää DNS-palveluntarjoajasi hallinnassa A record eli A-tietue: nimi
looku, arvo203.0.113.10. Jos DNS on Cloudflaressa, aseta tietue toistaiseksi tilaan DNS only (harmaa pilvi). Oranssista pilvestä kerrotaan kohdassa Cloudflaren välityspalvelimen takana.Tarkista muutaman minuutin kuluttua omalta tietokoneeltasi:
Terminal window nslookup looku.example.comVastauksessa pitäisi olla
Address: 203.0.113.10. -
Kirjaudu VPS:lle:
Terminal window ssh root@203.0.113.10Palveluntarjoaja kertoo käyttäjänimen (usein
roottaiubuntu). Osaan 5 asti komennot ajetaan VPS:llä. Jos et oleroot, alla olevat komennot, jotka sitä vaativat, alkavat sanallasudo. -
Asenna Docker Dockerin omalla skriptillä. Se lisää Dockerin pakettilähteen ja asentaa Dockerin ja Composen:
Terminal window curl -fsSL https://get.docker.com | sudo shsudo docker compose versionsudo apt install -y git ufwToisen komennon pitäisi tulostaa
Docker Compose version v2.…tai suuremman numeron. Viimeinen asentaa gitin ja palomuurityökalun, jos ne puuttuvat. Jos et oleroot, lisääsudojokaisen tämän ohjeendocker-komennon eteen. -
Avaa vain tarvittavat portit. Jos palveluntarjoajasi hallintapaneelissa on palomuuri, salli siellä portit 22 (ssh), 80 ja 443 (verkko). Palvelimella itsellään:
Terminal window sudo ufw allow 22/tcp && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw enableVastaa
y. Porttia 80 tarvitaan, vaikka kaikki käyttää HTTPS:ää: Caddy hakee varmenteen sen kautta.
2. Asenna Looku
Osio nimeltä “2. Asenna Looku”-
Lataa Looku:
Terminal window cd ~git clone https://github.com/niemenjoki/Looku.git lookucd looku/deploy -
Lisää Caddy Lookun rinnalle. Luo tiedosto, jonka Compose lukee
compose.yaml-tiedoston lisäksi:Terminal window nano compose.override.yamlLiitä:
services:caddy:image: caddy:2.11.7restart: unless-stoppedports:- "80:80"- "443:443"volumes:- ./Caddyfile:/etc/caddy/Caddyfile:ro- caddy_data:/data- caddy_config:/configdepends_on:- ingest- dashboardvolumes:caddy_data:caddy_config:Tallenna painamalla Ctrl+O ja Enter, poistu painamalla Ctrl+X. Compose yhdistää
compose.override.yaml-tiedoston automaattisesti. Siksi Caddy toimii samassa verkossa kuin Looku ja tavoittaa vastaanottimen nimelläingestja kojelaudan nimellädashboard.caddy_datasäilyttää varmenteet uudelleenkäynnistysten yli. -
Kerro Caddylle, mitä tehdä:
Terminal window nano CaddyfileLiitä tämä omalla palvelinnimelläsi:
looku.example.com {@receiver path /ingest /ordersreverse_proxy @receiver ingest:8787reverse_proxy dashboard:8788}Selkokielellä: osoitteessa
looku.example.comlähetä/ingestja/ordersvastaanottimelle ja kaikki muu kojelaudalle. Caddy hakee ja uusii HTTPS-varmenteen itse.
3. Asetukset
Osio nimeltä “3. Asetukset”-
Selvitä kotiverkkosi julkinen osoite. Hae kotona tietokoneella verkosta “what is my IP” tai avaa reitittimesi tilasivu. Osoite näyttää tältä:
198.51.100.7. Monessa kotiliittymässä osoite pysyy samana kuukausia, mutta se voi vaihtua. Jos kojelauta näyttää yhtäkkiäForbidden, tarkista tämä ensin. -
Luo asetustiedosto:
Terminal window cp .env.example .envnano .envAseta nämä rivit (jätä muut ennalleen):
LOOKU_TIMEZONE=Europe/HelsinkiLOOKU_DASHBOARD_BIND=127.0.0.1LOOKU_API_HOSTS=looku.example.comLOOKU_PUBLIC_ORIGIN=https://looku.example.comLOOKU_COOKIE_SECURE=1LOOKU_TRUST_PROXY=1LOOKU_API_ALLOW=198.51.100.7Mitä ne tekevät:
LOOKU_DASHBOARD_BIND=127.0.0.1pitää kojelaudan oman portin suljettuna internetiltä. Vain Caddy pääsee siihen.LOOKU_API_HOSTSjaLOOKU_PUBLIC_ORIGINkertovat kojelaudalle sen julkisen osoitteen.LOOKU_COOKIE_SECURE=1lähettää kirjautumisevästeen vain HTTPS:n kautta ja käskee selaimia käyttämään aina HTTPS:ää.LOOKU_TRUST_PROXY=1kertoo, että kojelaudan edessä on yksi välityspalvelin (Caddy). Silloin kojelauta lukee kävijän todellisen osoitteen otsakkeesta, jonka Caddy lisää. Tämä on turvallista vain siksi, että portti on suljettu muilta (127.0.0.1yllä).LOOKU_API_ALLOWon luettelo osoitteista, joista kojelaudan saa avata. Erota useampi pilkulla, esimerkiksi kotisi ja puhelimesi VPN. Verkon voi kirjoittaa muodossa198.51.100.0/24. Muut saavat vastauksenForbidden. Tämä ei koske vastaanotinta: sivustosi voi aina lähettää sivunäyttöjä.
-
Luo datakansio:
Terminal window mkdir -p datasudo chown 1000:1000 data
4. Käynnistä ja ota käyttöön
Osio nimeltä “4. Käynnistä ja ota käyttöön”-
Käynnistä:
Terminal window docker compose up -dMuutaman minuutin kuluttua näet tekstin
Startedkonteillelooku-ingest-1,looku-dashboard-1jalooku-caddy-1. -
Lisää sivustosi:
Terminal window docker compose run --rm ingest site:add myblog --domain example.com --timezone Europe/Helsinki--timezoneratkaisee, milloin päivä vaihtuu tämän sivuston raporteissa. Voit vaihtaa sen myöhemmin komennollasite:timezone, mutta jo tallennetut päivät säilyttävät päivämääränsä. Tallenna komennon tulostama allekirjoitusavain (Signing key (shown once):) salasanojen hallintaan. -
Aseta kojelaudan salasana. Julkisella palvelimella käytä pitkää salasanaa, esimerkiksi neljää satunnaista sanaa:
Terminal window docker compose run --rm -it ingest admin:passwordKirjoittaessa ruudulle ei tule mitään, ja salasana kysytään vain kerran.
-
Tarkista omalta tietokoneeltasi (Windowsissa PowerShellissä komennolla
curl.exe):Terminal window curl -s -o /dev/null -w "%{http_code}\n" -X POST https://looku.example.com/ingestTerminal window curl.exe -s -o NUL -w "%{http_code}\n" -X POST https://looku.example.com/ingestTulosteen pitäisi olla
401: vastaanotin vastasi ja hylkäsi allekirjoittamattoman pyynnön, mikä on oikein. Jos tuloste on000tai varmennevirhe, katso Vianetsintä. -
Avaa kojelauta kotoa osoitteessa
https://looku.example.comja kirjaudu sisään.
5. Liitä sivustosi
Osio nimeltä “5. Liitä sivustosi”Sivustosi tarvitsee nämä:
LOOKU_ENDPOINT=https://looku.example.comLOOKU_SITE_ID=myblogLOOKU_SIGNING_KEY=osan 4 avainJatka ohjeella Liitä Next.js-sivusto tai Node.js, Express, Cloudflare tai oma.
Cloudflaren välityspalvelimen takana
Osio nimeltä “Cloudflaren välityspalvelimen takana”Tämä ohje käyttää harmaata pilveä (DNS only), ja se on suositeltu valinta. Oranssilla pilvellä Cloudflare on toinen
välityspalvelin Caddyn edessä. Caddy oletuksena korvaa osoiteotsakkeen sen sijaan, että lisäisi siihen, koska se ei
luota Cloudflareen. Silloin kojelauta näkisi vain Cloudflaren osoitteen, ja LOOKU_API_ALLOW torjuisi sinut.
Jos tarvitset oranssin pilven, Caddylle on kerrottava, että se luottaa Cloudflaren osoitealueisiin. Se tehdään
asetuksella trusted_proxies, ja
LOOKU_TRUST_PROXY on asetettava arvoon 2. Tarkista lopuksi, että kojelauta avautuu sallitusta osoitteestasi ja
näyttää muille Forbidden.
Kirjautumisen suojaus
Osio nimeltä “Kirjautumisen suojaus”Epäonnistuneita kirjautumisia rajoitetaan: 10 osoitetta kohden 15 minuutissa ja yhteensä 200 15 minuutissa. Ilman
LOOKU_API_ALLOW-asetusta kuka tahansa internetissä voisi käyttää yhteisen rajan loppuun ja estää sinua pääsemästä
sisään. Siksi sallittujen listaa suositellaan. Katso Tietoturva.
Valmis, kun
Osio nimeltä “Valmis, kun”docker compose psnäyttääingest,dashboardjacaddytilassaUp,curlosoitteeseen/ingesttulostaa401,- kojelauta avautuu kotoa ja näyttää muualta
Forbidden(kokeile puhelimella mobiilidatan kautta), - kun olet liittänyt sivustosi, kojelautaan ilmestyy sivunäyttö.
Seuraavaksi: varmuuskopiot ja päivitykset.