Koko kolttonen.fi on siirretty uuteen virtuaalikoneeseen

Olin jo aiemmin siirtänyt sähköpostipalvelut pois aiemmalta hostaajaltani, mutta sähisin viime yönä www-palveluiden migraation parissa noin kello viiteen asti aamulla. Minulla on ostettuna louhi.net palvelusta perustehoinen virtuaalikone, jota pystyn hallitsemaan pääkäyttäjän oikeuksin. Käyttöjärjestelmäksi valitsin aidon ja oikean Red Hat Enterprise Linux 7:n. Tämä uusi hostauspalvelu maksaa minulle noin 85€ kuukaudessa ja pientä lisäkulua tulee DNS-palveluista, mutta se summa on hyvin pieni.

Olisin saanut CentOS 7:n 10€ halvemmalla, mutta maksan hyvin mielelläni kympin kuussa lisää Red Hatille siitä hyvästä, että he kehittävät tätä hienoa käyttöjärjestelmää työkseen. Aidossa Red Hat Enterprise Linuxissa on sekin etu, että siihen saa yleensä mm. tietoturvapäivityksiä nopeammin kuin CentOS:iin. Jälkimmäinen käyttöjärjestelmähän on käytännössä täysin sama kuin Red Hat Enterprise Linux - CentOS on ilmainen klooni, jonka kuka tahansa voi downloadata ilmaiseksi netistä mikäli haluaa tutustua Linux-jakeluun, joka vastaa lähes täysin RHEL-jakelua.

Koko kolttonen.fi www-osuus on periaatteessa aika yksinkertainen. En tosin ole käyttänyt mitään valmista web-frameworkia, vaan lähes kaikki on väännetty käsin. Yhdellä sivulla taitaa olla käytetty jotain JQuery-kirjastoa tai vastaavaa automaattisten numerointien generointiin HTML5-otsikoihin. En enää jaksa muistaa.

Lisäksi blogini RSS Feed on toteutettu käyttäen jotain valmista Python-kirjastoa, jota tosin jouduin parissa tai kolmessa kohdassa hieman muokkaamaan, jotta tuotettu XML-data menisi läpi RSS-validaattorista ilman yhtäkään varoitusta tai virheilmoitusta. Nyt sen pitäisi olla täysin standardinmukaista.

Blogini indeksisivu on PostgreSQL-relaatiotietokannassa ja samassa SQL-kannassa on myös hiukan metadataa koskien yksittäisiä blogientryjä. Tarkemmin sanottuna tietokannassa on blogientryjen alkuperäinen julkaisuajankohta ja tiedot siitä milloin sitä on mahdollisesti muokattu jälkeenpäin. Tästä syystä vanhoissa blogeissa näkyy julkaisuajankohtana klo 04:00 yöllä, sillä sille piti asettaa jokin arvo tietokannassa.

En siis ole aiemmin pitänyt kirjaa blogieni julkaisuhetkistä tai muokkauksista kuin vuorokauden tarkkuudella, mutta nyt on huomattavasti parempi, että blogini RSS Feedeihinkin tulee totuudenmukaista metadataa myös kellonajan kohdalla eikä pelkän päivämäärän.

Jokaisessa blogientryssä on uniikki ID ja viittaus simppeliin /js/blog.js JavaScript-koodiini, joka siis downloadataan ja ajetaan www-asiakasohjelman päässä. Asiakasohjelmiahan ovat esimerkiksi Firefox, Chrome tai vaikka tekstipohjainen Lynx. Siis sivuston käyttäjien www-selain ajaa kyseisen JavaScriptin, joka tekee asynkronisen kyselyn www-serverilleni tiedustellen blogin uniikin ID:n perusteella blogientryn julkaisuajankohdan ja mahdollisen päivitysajankohdan. Kommunikaatio tapahtuu yksinkertaisesti keksimäni JSON-formaatissa olevan protokollan yli.

Kaipa tämä on käsin tehty REST-API puhtaimmillaan ja yksinkertaisimmillaan. Lisäsin äsken blog.js koodiin myös sen, että nyt jokaisen blogientryn loppuun generoidaan sininen nappi, jolla voi palata yksittäisestä blogientrystä suoraan blogini päätasolle eli sen indeksiin. En tiedä oliko toteutus kovin siisti, mutta näyttäisi se ainakin toimivan. En tiedä näistä www-jutuista kovinkaan paljon, mutta opettelen vähitellen lisää sitäkin alaa.

Joka tapauksessa yritän pitää webisivuni mahdollisimman yksinkertaisina, käytettävinä, kevyinä ja siisteinä, eli sinne ei koskaan tule mitään sirkusmaista paskaa kuten mainosbannereita, pop-up-ikkunoita tai nuuskivaa koodia, joka kyttäisi käyttäjiä esimerkiksi HTTP cookieiden avulla. Toki näen Apachen logeista käyttäjien IP-osoitteita ja User-Agent tietoja, jotka tosin voivat olla väärennettyjä.

Oli miten oli, JavaScript-koodissani on nyt huonoa nimeämistä, sillä sivun latauksen triggeröimä JavaScript-funktio tekee eilisillasta lähtien muutakin kuin hakee ja näyttää blogientryn päivämäärät. Olin liian laiska korjatakseni asian, mutta teen sen kyllä joskus myöhemmin. Nyt halusin vain kyseisen napin äkkiä toteutetuksi, jotta blogieni lukeminen ja navigointi olisi vähän helpompaa sivustoni käyttäjille.

OpenLDAP:in sain juuri muutama tunti sitten uudelleenkonfiguroitua eli se palvelee nyt dc=kolttonen,dc=fi puuta eikä ole enää sidottu virtuaalikoneeni DNS-nimeen vcust561.louhi.net. Tämä on paljon siistimpää ja selkeämpää myös siinä vaiheessa kun alan tunkemaan MIT Kerberosta virtuaalikoneeseeni.

Ajattelin myös jatkossa laittaa Sendmailin käyttämään laajemmin OpenLDAP:in tietokantoja. Tällä hetkellä se tekee vain autentikoinnin LDAP:ista, käyttäen SASL:ia ihan kuten Cyrus IMAP asennuksenikin tekee. Sendmailin tietokannat ovat nyt kolttonen.fi postipalvelussa paikallisia Berkeley DB:eitä eikä siinä sinänsä ole mitään vikaa.

Sekin malli toimii mainiosti ja koska käyttäjämääräkin on pieni, ei OpenLDAP-kantojen käyttämiselle ole "oikeita" perusteita, mutta laitan silti ihan huvin vuoksi ne käyttöön. Se tekee manageroinnistakin hieman helpompaa kun dataa voi päivittää OpenLDAP:iin ja kaikki se tulee sitä kautta heti Sendmailin tietoon ilman että tarvitsisi uudelleenrakentaa Berkeley DB tietokantoja skripteillä.

Louhen hostauspalvelu ei ole ollut 100% ongelmatonta, mutta olen saanut vastauksia kyselyihini melko kohtuullisessa ajassa. Tällä hetkellä ongelmana on kuitenkin se, että en pysty allekirjoittamaan uloslähteviä sähköpostiviestejä DKIM:illä. Minulla on kyllä generoituna 2048-bittinen RSA-avainpari, mutta niistä se julkinen RSA-avainosa pitää laittaa kaikille vapaasti saataville Louhen nimipalveluun, jotta viestien vastaanottajat voivat sen avulla verifioida, että viestieni sisältöä ei ole muutettu mitenkään.

Yritin laittaa julkisen avaimen metadatoineen Louhen DNS-palvelimille, mutta minulla ei ole suoraa pääsyä niille. Sen sijaan tavallisena asiakkaana joudun tyytymään heidän web-pohjaiseen graafiseen käyttöliittymäänsä ja sen kautta taas ei pysty lisäämään näitä TXT-tyyppisiä DNS-entryjä niiden ison koon takia.

Tietääkseni esimerkiksi BIND-nimipalvelimeen pitää nämä DKIM-avaimet syöttää osissa, jotta homma toimisi. DNS-pakettien koko on nimittäin rajattua ja UDP-paketti taitaa olla liian pieni 2048-bittiselle RSA-avaimelle, joka on vieläpä enkoodatussa muodossa isompi kuin raa'asti binäärisenä.

Eli minulla on nyt sisässä Louhen tuessa pyyntö lisätä kyseinen RSA-avain nimipalveluuni. Saa nähdä tuleeko vastaus jo maanantaina. Kerberosta varten pyysin myös heitä avaamaan UDP portin 88, jotta pääsen jatkossa kiinni KDC-palveluuni.