sunnuntai 28. lokakuuta 2018

Steamcache ja nginx

Aikaisemmin tuli kirjoiteltua miten lanit saa nopeammiksi. Vaikka oma cache-palvelin ei ole vielä päässytkään tosi testiin oli aika kaivaa laitteisto esiin ja katsoa, että säädöt jne. ovat toimineet.

Tämän yhteydessä aloin myös miettimään miten saada muuta palvelut toimimaan tässä samaisessa järjestelmässä. Aikaisemmin kun tein tätä, niin jokainen palvelu vaatii oman IP-osoitteen jossa se toimii. Tämä tieto sitten jaetaan steamcache-dns-palvelun avulla.

Aloin käymään tätä läpi ja sain vinkin Docker Composeen, jonka avulla on helppo ylläpitää monia dockereita samanaikaisesti. Kun olin tutustunut Docker Composeen ja samalla huomannut, että steamcachella on valmis scripti tätä varten, niin päätin tarttua toimeen.

Helpottaakseni muiden työtä kannattaa lukaista aikaisemmin tekemäni postaus ja sen jälkeen siirtyä tähän. Myös helpottaakseen tämän postauksen etenemistä suosittelen tekemään asivalmisteluja.

Asennetaan ensimmäisenä Docker Compose komennolla
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Seuraavaksi asennetaan jq, mitä käytetään parsintaan komennolla
sudo apt-get install jq

Lopuksi vielä git, jotta saadaan repo kloonattua
sudo apt-get install git

Sitten itse asiaa. Homma alkaa sillä, että ensimmäisenä kloonataan tuo steamcachen docker-compose komennolla
git clone https://github.com/steamcache/docker-compose.git

Seuraavaksi mennään tähän kansioon komenolla cd docker-compose. Seuraavaksi sinun pitää muokkaa .env tiedostoa vaikkapa nanolla ja antaa tänne palvelimen kiinteä IP-osoite. Lopuksi voit scriptillä generoida tarvittavan docker-compose.yml tiedoston, jolla saadaan dockerit käyntiin. Kun tämä on tehty voit nostaa dockerit pystyyn komennolla docker-compose up -d.

Ensimmäisellä kerralla tämä lataa tarvittavat dockerit ja käynnistää ne. Komennolla näet docker container ls näet pyörivät dockerit. Nyt tilanne on seuraava, että dockerit pyörivät omassa verkossaan ja näiden edessä on nginx, joka ohjaa ulkoa tulevat cache pyynnöt oikeaan dockeriin. Sinun tulee vain asettaa tämä palvelimen IP-osoite käytettävän koneen DNS-osoitteeksi tai jakaa se DHCP:n avulla.

Palvelut/cache-dockerit jotka pyörivät vakiona ovat seuraavat
  • nginx
  • dns
  • sniproxy
  • apple
  • arenanet
  • blizzard
  • daybreak
  • frontier
  • hirez
  • minecraft
  • nexusmods
  • nintendo
  • origin
  • renegadex
  • riot
  • rockstar
  • sony
  • steam
  • uplay
  • twitch
  • wargaming
  • wsus
  • xboxlive
Jos haluat rajoittaa mitä palveluita pyörität, se onnistuu seuraavasti. Ensimmäisenä pysäytä dockerit kommennolla
docker-compose stop

Tämän jälkeen sinun tulee muokata .env tiedostoa. Tänne sinun pitää lisätä vaikka tiedoston loppuun halutun palvelun disablointi esim. DISABLE_BLIZZARD=true. Lopuksi tallenna tämä tiedosto. Seuraavaksi sinun tulee muokata docker-compose.yml tiedostoa siten, että joko kommentoit blizzard kohdan pois tai sitten poistat tämän kokonaan. Lopuksi tallenna tämä tiedosto ja aja dockerit ylös docker-compose up -d -komennolla.

Tässä tapauksessa disabloimme blizzardin ja samalla poistimme kohdan jotta tätä dockeria ei turhaan ajeta pystyyn. Nyt nämä DNS pyynnöt, jotka koskevat blizzardin palveluita ohjataan suoraan blizzardille ja cache-palvelin ei näistä välitä. Tätä muutosta monistamalla voit poistaa halutut palvelut/dockerit pois ajosta. Jos muutoksien jälkeen ajat generate.sh-scriptin tämä nollaa tilanteen eli aktivoi taas kaiken takaisin.

Lähteet
https://docs.docker.com/compose/
https://github.com/steamcache

lauantai 15. syyskuuta 2018

Lanit nopeammiksi

Lanit lähenevät ja jokaisella kerralla ongelmana on verkon nopeus ulkomaailmaan. Tämä johtunee siitä, että emme lanittele enää kunnon yhteyksien perässä vaan yhteys on se mitä 4G meille sua. Yhteyden nopeus on johtanut siihen, että kun peleihin tulee päivityksiä tai vastaavia se syö kaistan, tällöin päivitykset ja asennukset kestävät paljon pidempään.

Tänä vuonna on tarkoitus kokeilla Steam Cache -ohjelmistoa. Ideana tämä lähti LTT:n videosta. Ohjelmiston tarkoituksena on cachettaa itselleen eri pelien asennuspaketit/päivitykset ja näin ollen kun useampi kone lataa samoja tietoja, haetaan se paikalliselta palvelimelta. Ohjelmistoa on tarkoitus pyörittää Ubuntun päällä.

Palvelin rauta ei vielä ole kummoinenkaan. Tällä hetkellä i5-3470 prosessori, 4Gt keskusmuistia, 500Gt SSD ja ulospäin tarjolla 1+1Gt linkki.

Ensimmäisenä piti asentaa Ubuntu ja tähän valikoitui Ubuntu 18.04 LTS. Tämän jälkeen kun Ubuntu oli saatu asennettua ja päivitettyä oli aika alkaa asentamaan itse ohjelmistoa. Ohjelmistoa tultaisiin pyörittämään Dockerin päällä.

Ohjeita on monia mutta käytämme tässä pohjana LTT:n foorumilla olevaa ohjetta.

Aluksi asennetaan curlin viimeisin versio.
sudo apt install curl -y

Sitten asennetaan Dockerin viimeisin versio
sudo curl -sSL https://get.docker.com/ | sh

Asennuksen jälkeen on hyvä tarkistaa, että tämä toimii komennolla
sudo systemctl status docker

Jos halutaan ajaa monen eri pelitarjoajan cachea, niin tällöin palvelimelle tulee asettaa käyttöön virtuaalisia IP-osoitteita, joita voidaan varata käytettäväksi muille cacheille.

Kun tarvittavat alkuvalmistelut on tehty, voidaan ensimmäisenä käynnistää Steam Cache
IP-osoitteeksi sinun tulee asettaa palvelimen IP-osoite
Voit halutessasi muuttaa myös cachen sijainteja

sudo docker run \
  --restart unless-stopped -d \
  --name steam-cache \
  -v /home/USERNAME/cache/steam/data:/data/cache \
  -v /home/USERNAME/cache/steam/logs:/data/logs \
  -p 192.168.1.50:80:80 \
  steamcache/generic:latest

LTT:n foorumin ohjeesta löytyy muiden pelitarjojien komennot, joita voit hyödyntää tarvittaessa.
Jos haluat tyhjentää cachea tietyn väliajoin voit laittaa sen vanhentumaan lisäämällä komentoon seuraavaan muuttujan -e CACHE_MAX_AGE=365d.

Näiden jälkeen on aika laittaa DNS-palvelimen pyörimään, seuraavalla komennolla
sudo docker run \
  --restart unless-stopped -d \
  --name steamcache-dns \
  -p 192.168.1.50:53:53/udp \
  -e UPSTREAM_DNS=8.8.8.8 \
  -e STEAMCACHE_IP=192.168.1.50 \
  steamcache/steamcache-dns:latest

Kun olet saanut laitettua halutut palvelut pyörimään on aika tarkistaa, että nämä toimivat komennolla
sudo docker container ls

Seuraavaksi on aika suunnata käytettävän koneen kimppuun ja muuttaa tämän ensisijainen DNS-osoittamaan Steam Cache -palvelinta ja toissijaiseksi voi halutessaan laittaa oman haluamansa. Jos kyseessä on Windows-kone on hyvä tyhjentää sen DNS-tiedot seuraavalla komennolla
ipconfig /flushdns

Tämän jälkeen voit tarkistaa toiminnan seuraavalla PowerShell komennolla
Resolve-DnsName steamcache.cs.steampowered.com -server 192.168.1.50

Tai Linuxissa
dig @192.168.1.50 +short steamcache.cs.steampowered.com

Voit seurata järjestelmän toimintoa asentamalla nload-ohjelmiston
sudo apt-get install nload
Ja käynnistämällä ohjelman komennolla
nload

Lähteet

keskiviikko 25. heinäkuuta 2018

Hellekelit (RuuviTag+)

Kesä tuli ja sen mukana myös helle. Koska lämmöt nousivat aivan maksimiin, niin oli kiva alkaa seuraamaan näitä.

Tutkin erilaisia vaihtoehtoja, että millä sitä lähtisi tekemään kuten Xiaomin kotiautomaation laitteet jne. Päädyin kuitenkin Ruuvin toteuttamaan RuuviTag+ -sensoriin ja näitä tilasin peruspaketin, jossa oli kolme kappaletta.

Tagin käyttöönottaminen on helppoa ja dataa voi suoraan seurata puhelimen ohjelmistolla, mutta halusin kuitenkin enemmän. Tässä vaiheessa aloin tutkimaan miten se onnistui ja kuten oletin jo mielessäni, niin ratkaisu on rakentaa järjestelmä RPI:n päälle.

Sen myötä sitten lähdin toimeen ja etsin tarvittavat osaset millä tämä lähtee toimimaan. Asiaa toki nopeuttaa, että omistaa jo RPI:n ja sitä ei tarvitse hankkia.

Kokonaisuus koostuu kolmesta eri osasta
- RuuviCollector, joka kerää tiedot Tageista
- InfluxDB, johon tiedot tallennetaan
- Grafana, joka näyttää tiedot graafisessa muodossa

Homman aloitin sillä, että päivitin Tageisin uusimman firmwaren sisään tämän sivuston ohjeilla. Kun tämä oli tehty testasin mobiilisovelluksella, että kaikki toimii ja saan tarvittavaa tietoa irti Tageista. näiden jälkeen oli aika siirtyä rakentamaan palvelinta.

Aluksi ajoin uusimman Rasbian imagen microSD-kortille ja päivitin tämän. Näiden jälkeen oli aika aloittaa eri osien asennus. Näiden asennukseen käytin alla olevia ohjeita/ohjeistuksia.

Asennusohjeet, joita käytin

RuuviCollector asennus
https://github.com/Scrin/RuuviCollector
https://github.com/Scrin/RuuviCollector/releases
https://medium.com/@ville.alatalo/oma-sääasema-ruuvitagilla-ja-grafanalla-25c823f20a20

InfluxDB asennus
https://docs.influxdata.com/influxdb/

Grafanan asennus
http://docs.grafana.org/installation/debian/

Lisäksi tuli muutama ongelma Bluetoothin kansa, niin tässä siihen muutamat tipsit, niin saa senkin toimimaan.

https://github.com/ttu/ruuvitag-sensor
sudo apt-get install bluez bluez-hcidump

Vaihtoehtoisia tapoja on kuten yllämainittu https://github.com/ttu/ruuvitag-sensor tai valmis RuuviBerry.

Tulevaisuuden osalta tämä olisi tarkoitus siirtää pyörimään pilveen mutta annan nyt toistaiseksi  tämän pyöriä lokaalisti, niin näen miten kokonaisuus toimii ja mitä mahdollisia ongelmia tulee.

Lisäys 31.7.2018
InfluxDB ja Grafanan voi tarvittaessa asentaa seuraavillakin komennoilla

Lataa ensin InfluxDB:n asennuspaketti osoitteesta
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.6.0_armhf.deb

Tämän jälkeen aja komento
sudo dpkg -i influxdb_1.6.0_armhf.deb

Seuraavaksi sitten Grafanan asennus.

Ladataan ensimmäisenä asennuspaketti
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.2.2_armhf.deb

Jonka jälkeen ajetaan komento
sudo dpkg -i grafana_5.2.2_armhf.deb