# VPN ja Customization (asiakaskohtaiset asennukset)

### 1. VPN

#### 1.1 Avaa tarvittavat tiedostot

- Avaa Produced\_devices.CSV -tiedosto (Actiweb-käyttäjän kotihakemistosta)
- Avaa VPN-excel tiedosto (työpöydältä)

<p class="callout info">Excelistä on lukittu tarvittavat solut joten siihen ei voi syöttää vääriin kohtiin tietoa.</p>

- kopioi Produced\_devices.CSV -tiedostosta **Device ID**
- Liitä se punaisella merkittyihin soluihin, jolloin tiedosto automaattisesti muokkaa tarvittavat rivit 
    - Mikäli solut vaihtavat väriä (ei enää punainen), tee uudestaan 
        - UNDO ja uus yritys
        - Liitä mieluummin Excelin syöttöriville kuin suoraan soluun, niin onnistuu paremmin

<table border="0" cellspacing="0" id="bkmrk-vpn-linkin-luonti-co"><colgroup width="83"></colgroup> <colgroup width="56"></colgroup> <colgroup width="41"></colgroup> <colgroup span="2" width="72"></colgroup> <colgroup width="204"></colgroup> <colgroup width="72"></colgroup> <colgroup width="53"></colgroup> <colgroup width="449"></colgroup><tbody><tr><td align="center" bgcolor="#FFFF00" colspan="9" data-sheets-value="{ "1": 2, "2": "VPN linkin luonti"}" height="37" rowspan="2" style="border: 2px solid #000000;" valign="middle">**<span style="color: #000000; font-size: x-large;">VPN linkin luonti</span>**</td></tr><tr></tr><tr><td align="center" bgcolor="#D9F2D0" colspan="3" data-sheets-value="{ "1": 2, "2": "common name"}" height="18" style="border: 2px solid #000000;" valign="bottom">**<span style="color: #000000;">common name</span>**</td><td align="center" bgcolor="#F2CFEE" colspan="3" data-sheets-value="{ "1": 2, "2": "url"}" style="border: 2px solid #000000;" valign="bottom">**<span style="color: #000000;">url</span>**</td><td align="center" bgcolor="#FBE3D6" colspan="2" data-sheets-value="{ "1": 2, "2": "customer"}" style="border: 2px solid #000000;" valign="bottom">**<span style="color: #000000;">customer</span>**</td><td align="center" bgcolor="#4E95D9" data-sheets-value="{ "1": 2, "2": "address"}" style="border-top: 2px solid #000000; border-bottom: 2px solid #000000; border-left: 2px solid #000000;" valign="bottom">**<span style="color: #000000;">address</span>**</td></tr><tr><td align="center" bgcolor="#FF3838" colspan="3" data-sheets-value="{ "1": 2, "2": "INSERT DEVICE ID"}" height="34" style="border-top: 2px solid #000000; border-bottom: 2px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000; font-family: Liberation Sans;">INSERT DEVICE ID</span></td><td align="center" bgcolor="#FF3838" colspan="3" data-sheets-value="{ "1": 2, "2": "INSERT DEVICE ID"}" style="border-top: 2px solid #000000; border-bottom: 2px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000; font-family: Liberation Sans;">INSERT DEVICE ID</span></td><td align="center" bgcolor="#FFFFFF" colspan="2" data-sheets-value="{ "1": 2, "2": "generic"}" style="border-top: 2px solid #000000; border-bottom: 2px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000; font-size: medium;">generic</span></td><td align="center" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" style="border-top: 2px solid #000000; border-bottom: 2px solid #000000;" valign="middle"><span style="color: #000000; font-size: medium;">  
</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" colspan="9" data-sheets-value="{ "1": 2, "2": "Permission key:"}" height="18" style="border-top: 2px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 2px solid #000000;" valign="bottom"><span style="color: #000000;">Permission key:</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" colspan="9" data-sheets-value="{ "1": 2, "2": "G76NK9645U367R9K6W49"}" height="18" style="border-bottom: 2px solid #000000; border-left: 2px solid #000000; border-right: 2px solid #000000;" valign="bottom"><span style="color: #000000; font-family: Liberation Sans;">G76NK9645U367R9K6W49</span></td></tr><tr><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" height="18" valign="bottom"><span style="color: #000000;">  
</span></td><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" valign="bottom"><span style="color: #000000;">  
</span></td><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" valign="bottom"><span style="color: #000000;">  
</span></td><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" valign="bottom"><span style="color: #000000;">  
</span></td><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" valign="bottom"><span style="color: #000000;">  
</span></td><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" valign="bottom"><span style="color: #000000;">  
</span></td><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" valign="bottom"><span style="color: #000000;">  
</span></td><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" valign="bottom"><span style="color: #000000;">  
</span></td><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" valign="bottom"><span style="color: #000000;">  
</span></td></tr><tr><td align="center" bgcolor="#CAEEFB" colspan="9" data-sheets-value="{ "1": 2, "2": "Terminaalissa seuraavat järjestyksessä:"}" height="30" style="border: 2px solid #000000;" valign="middle">**<span style="color: #000000; font-size: large;">Terminaalissa seuraavat järjestyksessä:</span>**</td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 1}" height="30" style="border-top: 2px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">1</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": "ssh machine@192.168.0.250"}" style="border-top: 2px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">ssh [machine@192.168.0.250](mailto:machine@192.168.0.250)</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 2}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">2</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": "cd pkigenerator"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">cd pkigenerator</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 3}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">3</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": ".\/bit_vpn create --common-name INSERT DEVICE ID --url INSERT DEVICE ID --customer generic --street-address '  '"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">./bit\_vpn create --common-name INSERT DEVICE ID --url INSERT DEVICE ID --customer generic --street-address ' '</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 4}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">4</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": "G76NK9645U367R9K6W49"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">G76NK9645U367R9K6W49</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 5}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">5</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": ".\/bit_vpn userhosts-reconfigure"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">./bit\_vpn userhosts-reconfigure</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 6}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">6</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": ".\/bit_vpn config-push --openvpn --nginx --userhost"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">./bit\_vpn config-push --openvpn --nginx --userhost</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 7}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">7</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": ".\/bit_vpn push-to-client -cn INSERT DEVICE ID --ip-address 192.168.0.134"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">./bit\_vpn push-to-client -cn INSERT DEVICE ID --ip-address 192.168.0.134</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">  
</span></td><td align="center" bgcolor="#FFFF6D" colspan="8" data-sheets-value="{ "1": 2, "2": "TÄSSÄ VAIHEESSA KYSY LINUX(SYSTEM) SALASANA!!!!!!!"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle">**<span style="color: #c9211e;">TÄSSÄ VAIHEESSA KYSYTÄÄN LINUX(SYSTEM) SALASANA</span>**</td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 8}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">8</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": "exit"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">exit</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 9}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">9</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": "ssh actiweb@192.168.0.134"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">ssh actiweb@192.168.0.134</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 10}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">10</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": "sudo .\/clientSetup.sh"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">sudo ./clientSetup.sh</span></td></tr><tr><td align="center" bgcolor="#FFFFFF" data-sheets-numberformat="{ "1": 2, "2": "0", "3": 1}" data-sheets-value="{ "1": 3, "3": 11}" height="30" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 2px solid #000000; border-right: 1px solid #000000;" valign="middle"><span style="color: #000000;">11</span></td><td align="center" bgcolor="#FFFFFF" colspan="8" data-sheets-value="{ "1": 2, "2": "ip addr show"}" style="border-top: 1px solid #000000; border-bottom: 2px solid #000000; border-right: 2px solid #000000;" valign="middle"><span style="color: #000000;">ip addr show</span></td></tr><tr><td align="left" bgcolor="#FFFFFF" data-sheets-value="{ "1": 2, "2": ""}" height="37" valign="bottom"><span style="color: #000000;">  
</span></td><td align="center" bgcolor="#FFFF6D" colspan="8" data-sheets-value="{ "1": 2, "2": "Tässä tarkistetaan onko VPN yhteys kunnossa! Mene osoitteeseen 192.168.0.60. Device Id on oltavana siinä yleensä alimmana rivinä! Voi mennä hetki ! Päivittele sivu jos ei näöy!"}" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 2px solid #000000;" valign="middle">**<span style="color: #c9211e;">Tässä tarkistetaan onko VPN yhteys kunnossa (osoite 192.168.0.60). Jos laite ei näy heti listalla niin odota/päivitä.</span>**

</td></tr></tbody></table>

#### 1.2 Terminaali (komentokehoite)

- **Avaa terminaali** (2 vaihtoehtoista tapaa): 
    - Näppäimistöltä \[se yks näppäin joka ois windows-näppäin jos tässä ois windows\] + T
    - ctrl-alt-t

- **Copy-paste rivi kerrallaan** VPN-excelistä 
    - Kopiointi voi olla vähän ärsyttävää riippuen valitsetko hiiren klikkauksilla 'copy' vai käytätkö näppäimistöltä Ctrl+C 
        - joillain riveillä on tekstiä, joka kopioituu vain valitsemalla excelin syöttöriviltä (ei siis solusta itsestään vaan siitä kohtaa mihin sisältöä kirjoitetaan)
        - joillain riveillä puolestaan ei SAA kopioida sieltä syöttöriviltä koska siinä on automaattisesti päivittyvää sisältöä (juuri ne mitä kopioit aiemmin Produced Devices -tiedostosta ja jotka siitä kopioituivat automaattisesti tarvittaville riveille)

<p class="callout info">Paste eli liittäminen terminaaliin pitää valita **hiirellä**, koska pikanäppäin Ctrl+V ei toimi terminaalissa.</p>

##### 1.2.1 Erityishuomioita tiettyjen VPN-Excelin rivien kohdalla

- Syötettyäsi **rivin 3** komennon, kysytään onko tiedot oikein ja haluatko jatkaa **y/N**. Siinä kohtaa tarkista, että Device id vastaa sitä laitetta, jota olet työstämässä. Vastaa kyllä jos homma ok.
- Syötettyäsi **rivin 7** komennon, sinun pitää kopioida **Linux-password** Produced Devices -tiedostosta ja liittää se terminaaliin.
- Syötettyäsi **rivin 10** komennon, kysytään **y/N** että haluatko jatkaa. Kyllä haluat.


#### 1.3 Tarkistus että onnistui

- Mene osoitteeseen 192.168.0.60
- Siellä on lista VPN-yhteyksistä, siellä pitäis näkyä oikee laite (device ID:n perusteella tunnistat).
- Luultavasti listan viimeisenä.
- Testaa linkki että toimii. 
    - tarkista admin/admin(actiweb) salasanalla että pääset sisään.
    - Jos ei pääse on selvitettävä, mistä johtuu.

<span style="background-color: rgb(185, 106, 217); color: rgb(251, 238, 184);">(tähän screenshotteja)</span>

### 2. Asiakaskohtaiset asennukset


Mikäli laite on menossa jollekulle seuraavista asiakkaista, tehdään asiakaskohtaiset asennukset:

- Högfors GST
- ClimaPri

<p class="callout warning">**ClimaPri** customization -vaiheen tekee tällä hetkellä Risto Kokkola. Toimita laite hänelle tämän vaiheen suorittamiseksi.</p>

<span style="color: rgb(251, 238, 184);">[![mainmenu-Climapricustomize.png](https://wiki.bithouse.fi/uploads/images/gallery/2026-04/scaled-1680-/mainmenu-climapricustomize.png)](https://wiki.bithouse.fi/uploads/images/gallery/2026-04/mainmenu-climapricustomize.png)</span>

#### <span style="color: rgb(0, 0, 0);">2.1 HögforsGST Oy</span>

- <span style="color: rgb(0, 0, 0);">Tarvitsee julkisen VPN-etäyhteysosoitteen.</span>

[![image.png](https://wiki.bithouse.fi/uploads/images/gallery/2026-05/scaled-1680-/tsjimage.png)](https://wiki.bithouse.fi/uploads/images/gallery/2026-05/tsjimage.png)

<span style="color: rgb(0, 0, 0);">Eli tämä:</span>

- <span style="color: rgb(0, 0, 0);">osoitteesta 192.168.0.60</span>
- <span style="color: rgb(0, 0, 0);">valitse DEVICE ID:n perusteella oikea rivi</span>
- <span style="color: rgb(0, 0, 0);">sisältäen https:// osan</span>
- <span style="color: rgb(0, 0, 0);">loppuu .io</span>
    - <span style="color: rgb(0, 0, 0);">EI kauttaviivoja tai mitään sen jälkeen</span>

[![image.png](https://wiki.bithouse.fi/uploads/images/gallery/2026-05/scaled-1680-/1xRimage.png)](https://wiki.bithouse.fi/uploads/images/gallery/2026-05/1xRimage.png)

#### 2.2 ClimaPri Oy

- Tällä hetkellä vain Risto Kokkola tekee tämän vaihen. Toimitathan laitteen hänelle tämän vaiheen suorittamiseksi.