HTTPS seadistamine Pangalinkeri jaoks

Kuna Pangalinker kasutab kasutajakontode sisselogimist, siis on HTTP kasutamine kindlasti soovitatav. HTTPS kasutamise võimalusi on mitmesuguseid.

Variant 1. Cloudflare

Sellisel juhul ei ole vaja oma serveris mitte midagi muuta. Tuleks luua Cloudflare konto, viia sinna üle oma domeeninime haldus, nii et Pangalinkeri rakenduse domeeni DNS server oleks Cloudflare. Seejärel tuleks märkida, et selle domeeni veebiliiklus käiks läbi Cloudflare serverite, mitte otse ning “Crypto” lehel valida SSL tüübiks “Flexible”. Peale seda tekibki domeenile HTTPS kasutamise võimalus. Päringud lähevad sellisel juhul Cloudflare HTTPS serverisse, mis omakorda proksib need edasi Pangalinkeri serverisse, üle olemasoleva HTTP.

Variant 2. Apache või Nginx SSL

Kui rakendusele pääseb ligi läbi Nginx või Apache proksi, tuleks veebiserveri seadetes määrata, et virtuaaldomeen kasutab HTTPS protokolli. Edaspidi võtab veebiserver HTTPS päringud vastu, aga Pangalinkeri rakenduse pihtda proksib päringud juba üle HTTP

Variant 3. Sisseehitatud HTTPS server

Pangalinker oskab ka ise HTTPS protokolli kasutada. Selle jaoks tuleb muuta rakenduse konfiguratsiooni, muuta ära HTTP port 80 HTTPS pordiks 443 ja lisada juurde sertifikaadivõtmete asukohad

{
  web: {
    port: 443,
    ssl: {,
      key: '/path/to/key.pem',
      cert: '/path/to/full-chain.cert'
    }
  }
}

NB! Peale konfiguratsioonifaili muutmist tuleb Pangalinkeri protsess alati taaskäivitada, vastasel korral muudatused ei rakendu: service pangalink restart

Esimesed sammud Pangalinkeriga

Kui Pangalinker on paigaldatud ning korrektselt konfigureeritud, siis võib avada brauseris Pangalinkeri veebilehe.

Kui andmebaas on tühi ja süsteemis pole veel ühtegi kasutajakontot, siis pakub Pangalinker võimaluse luua uus admin õigustega konto. Hiljem enam omal algatusel kontosid luua ei saa, uue konto loomise algatab alati admin kasutaja.

Kui admin konto on loodud, siis on võimalik seadistada teenuse üldseadeid Seadete lingilt. See annab võimaluse määrata teenusele teine pealkiri, samuti valida logofail, mida näidatakse maksekorralduste vaates lehe ülaosas. Lisaks tuleks siin märkida ka e-posti saatja andmed, sest sellise nime ja aadressi alt saadab teenus kõik vajalikud e-kirjad.

Kui kõik on korrektselt seadistatud, võib luua juba esimese makselahenduse

Makselahendus tekitab siis kõik vajalikud andmed testmaksete teostamiseks, sh. salajased võtmed, sertifikaadid, kasutajatunnused jne. Need andmed tuleks seadistada oma rakenduses, mis soovib makseteks pangalinki kasutada ja seepeale peakski olema võimalik maksete testkeskkonda kasutada.

Pangalinkeri kasutamine DigitalOcean serveris

DigitalOcean serveris on võimalik kasutada Pangalinkeri installiskripti. Kõigepealt tuleks luua uus “droplet”, mis kasutaks Ubuntu 16.04 operatsioonisüsteemi. Serveri “suurus” pole oluline, ka $5 server on täiesti sobiv, kuigi soovitatav oleks kasutada suuremat.

Kui server on loodud, tuleks kõigepealt suunata sellele mõni domeeninimi. Selle jaoks tuleks nimeserverisse luua uus kirje, mille A kirjeks on loodud VPS’i IP aadress. Saab ka ilma korrektse domeeninimeta (sellisel juhul tuleks järgnevates kirjeldustes kasutada hostname asemel IP aadressi), aga see võib tähendada kohatisi ebamugavusi.

Järgmiseks tuleks kopeerida loodud serverisse Pangalinkeri rakenduse failid, selleks sobib näiteks scp käsklus, kuid võib kasutada ka suvalist SFTP klienti (scp puhul on koolon käsu lõpus oluline sümbol, mida ei tohi ära jätta):

$ scp pangalink-1.0.0.tar.gz [email protected]:

Kui failid on kohale toimetatud, tuleks serverisse ssh kaudu sisse logida.

$ ssh [email protected]

Serveris tuleks Pangalinkeri failid lahti pakkida ning käivitada installiskript

$ mkdir pangalink
$ mv pangalink-1.0.0.tar.gz pangalink
$ cd pangalink
$ tar xzf pangalink-1.0.0.tar.gz
$ ./setup/ubuntu-install.sh

Install võtab omajagu aega, see on hea moment kohvipausi jaoks.

Kui paigaldamine on lõppenud ja selle käigus vigu ei esinenud, võibki avada Pangalinkeri veebisaidi aadressil http://hostname

Pangalinkeri kasutamine Nginx virtuaalhostina

Tihti ei ole võimalik iga rakenduse jaoks eraldi serverit hankida ja sellisel juhul on mugav võimalus käivitada kõik rakendused samas serveris, aga eri domeeninimedega. Seda saab teha nii Apache, Nginxi kui ka muude veebiserveritega, mis toetavad nn. virtuaalhoste. Sellisel juhul võtab veebiserveri rakendus päringu kliendilt vastu, vaatab Host: päisekirjest soovitud domeeni ning suunab päringu edasi siis juba tegelikule rakendusele.

Ka Pangalinkerit saab jooksutada sarnaselt. Virtuaalhosti loomiseks tuleks Nginx puhul luua /etc/sites-available kausta uue virtuaalhosti konfiguratsioonifail. Faili näidise leiab Pangalinkeri kaustast setup/virtual-hosts/nginx. Kui fail on olemas, siis tuleks selles muuta ära esiteks virtuaalhosti domeeninime (nginx puhul saab põhidomeenile lisaks määrata samal real ka aliasdomeenid). Näide määrab rakenduse domeenideks pangalink.net ja www.pangalink.net, nii et kui serveri poole sellise domeeninimega pöörduda, sunab Nginx kõik need päringu edasi Pangalinkeri rakendusele.

server_name pangalink.net www.pangalink.net;

Järgmiseks tuleks kontrollida, et virtuaalhosti konfiguratsioonis olev pordi number klapiks Pangalinkeri konfiguratsioonis olevaga. Nginx saadab kõik sisenevad päringud sellele pordile, aga kui Pangalinker kuulab mõnd muud porti, siis ei jõua need päringud kunagi kohale.

Virtuaalhosti konfis:

proxy_pass http://127.0.0.1:3480;

Pangalinkeri konfis:

{
  web: {
    port: 3480
  }
}

Kui konfiguratsioon on paigas, tuleks teha virtuaalhosti failist kas sümboolne link või koopia kausta /etc/nginx/sites-enabled ning taaskäivitada Nginx.

$ cd /etc/nginx/sites-enabled
$ ln -s ../sites-available/pangalink.conf
$ service nginx reload

MongoDB konfiguratsiooni seadistamine

Vaikimisi eeldab Pangalinker, et MongoDB on paigaldatud lokaalsesse masinasse, standardseadetega ning see ei nõua autentimist. Pangalinkeri MongoDB seadistus näeb sellisel juhul nii:

{
  mongodb: {
    url: 'mongodb://127.0.0.1:27017/pangalink'
  }
}

See tähendab, et Pangalinker üritab kasutada andmebaasi nimega “pangalink” lokaalses serveris. Kui aga andmebaas siiski nõuab autentimist (soovitatav oleks), siis peaks konfiguratsioon välja nägema juba järgmine:

{
  mongodb: {
    url: 'mongodb://USER:[email protected]:PORT/DB?authSource=AUTH_DB'
  }
}

Kus on kasutusel järgmised väärtused:

  • USER on kasutajanimi, näiteks “pangalink”
  • PASS on kasutaja parool
  • HOST on serveri nimi või IP aadress (vaikimisi localhost)
  • PORT on MongoDB port (vaikimisi 27017)
  • DB on andmebaasi nimi, näiteks “pangalink”. Oluline on, et autenditud kasutajal peab olema “readWrite” rolli õigused selles andmebaasis.
  • AUTH_DB on autentimisandmebaas, mis oli aktiive tol hetkel kui kasutaja loodi. MongoDB ei salvesta kasutajate andmeid mitte globaalselt, vaid aktiivsesse baasi ning hiljem sisse logides tuleb alati ette anda selle baasi asukoht kust autenditava kasutaja andmeid otsida

Kõik indeksitesse ja tabelitesse puutuva organiseerib Pangalinker juba ise, nendega kasutajad toimetama ei pea.

NB! Peale konfiguratsioonifaili muutmist tuleb Pangalinkeri protsess alati taaskäivitada, vastasel korral muudatused ei rakendu: service pangalink restart

Kuidas seadistada väline konto e-posti saatmiseks

Vaikimisi on Pangalinker konfigureeritud saatma e-posti läbi lokaalse mailisüsteemi sarnaselt PHP rakendustele. E-posti konfiguratsioon näeb sellisel juhul välja järgmine:

{
  mail:{
    smtp: {
      sendmail: true  
    }
  }
}

See seadistus ütleb, et kasutada tuleks süsteemset sendmail käsku. Kui sendmail käsk on saadaval mõne teise asukoha pealt, mida Pangalinkeri rakendus ise ei leia, võib ka selle rakenduse asukoha kaasa anda:

{
  mail:{
    smtp: {
      sendmail: true,
      path: '/usr/bin/mail'
    }
  }
}

Kui aga on vaja kasutada mailikäsu asemel välist SMTP serverit, saab seda teha seadistades serveri andmed ja märkides, et ei soovi mailikäsku kasutada:

{
  mail:{
    smtp: {
      sendmail: false,
      host: 'localhost',
      port: 25
    }
  }
}

Juhul kui SMTP server nõuab autentimist, saab need andmed samuti seadistuses ette anda. Järgnev näide kasutab Gmaili kontot e-maili saatmiseks. Gmaili puhul tuleb meeles pidada, et kui saatja aadress erineb sisseloginud kasutaja aadressist, siis Gmail asendab kirjas saatja aadressi kasutaja aadressiga.

{
  mail:{
    smtp: {
      sendmail: false,
      host: 'smtp.gmail.com',
      port: 587,
      auth: {
        user: [email protected]',
        pass: 'salakala'
      }
    }
  }
}

Teine asi millega tuleb konkreetselt Gmaili puhul arvestada, on kahefaktoriline autentimine – kui kontol on see sisse lülitatud, siis e-posti selle parooliga saata ei saa. Selle asemel tuleks Pangalinkeri jaoks genereerida nn “rakendusepõhine parool”.

NB! Peale konfiguratsioonifaili muutmist tuleb Pangalinkeri protsess alati taaskäivitada, vastasel korral muudatused ei rakendu: service pangalink restart