Tässä kirjoituksessa on tarkoituksena käydä läpi Baïkal -kalenteripalvelimen asennus Docker-Composelle ja määrittää Caddy-webserverille reverse proxy asetukset siten, että myös kalenteripalvelimella on käytössä sama sertifikaatti kuin Caddy -webserverillä.

Oma kalenteripalvelin on näppärä, jos ei halua käyttää Googlen omaa kalenteria, vaan haluaa kalenterin, jonka tiedot on tallennettu omalle palvelimelle eikä esim. Googlen palvelimelle. Omalle palvelimelle asennettaessa täytyy tietysti muistaa tarvittavat varmuuskopiot, jotta tiedot eivät katoa, jos kone esim. hajoaa. Itselläni on käytössä oma sekä myös perheelle yhteinen kalenteri, johon tallennetaan yhteiset menot yms. jolloin ne ovat kaikkien katseltavissa.

Baïkal -kalenteripalvelin käyttää CalDAV -protokollaa, joka on WebDAV -protokollan laajennus. Myös suosituissa OwnCloud / Nextcloud -pilvipalveluissa, jotka käyttävät WebDAV -protokollaa, on valmiiksi integroituna kalenteripalvelin. Myös nämä kalenteripalvelut toimivat samalla periaatteella kuin Baïkal sillä erotuksella, että Baïkalissa ei ole webbikalenterimahdollisuutta.

Itse hallinnoitavia kalenteri -palvelimia on myös muitakin kuten esim. Radicale, jota olen myös käyttänyt ja asentanut omaan käyttöön, mutta nykyisellään Baïkal on vakiintunut käyttöön.

Baïkalin asennus Link to heading

Baïkalin asennus Docker-Compose ympäristöön alkaa sillä, että luodaan Baïkalille oma hakemisto samaan tapaan kuin Home Assistantin asennuksen kanssa, johon tallennetaan docker-compose.yaml -tiedosto sekä muut tarvittavat asetustiedostot. Minun tapauksessa tämä tiedosto on nimeltään docker-data ja sijaitsee kotihakemistossa eli aluksi siirrymme hakemistoon docker-data ja luomme sinne baikal -nimisen hakemiston.

cd docker-data
mkdir baikal

Seuraavaksi avataan docker-compose.yaml editorilla (minulla nano) ajamalla komento nano docker-compose.yaml ja tallennetaan sinne alla olevat tiedot.

# Docker Compose file for a Baikal server

version: "2"
services:
  baikal:
    image: ckulka/baikal:nginx
    restart: always
    ports:
      - "5232:80"
    volumes:
      - /home/pi/docker-data/baikal/config:/var/www/baikal/config
      - /home/pi/docker-data/baikal/data:/var/www/baikal/Specific

volumes:
  config:
  data:

Kun muutokset on tehty poistutaan editorista ja tallennetaan muutokset. Riviltä “image: chulka/baikal:nginx” nähdään, että tämä versio Baïkalista on asennettu nginx -webserverin päälle ja valitsin sen sen vuoksi, että se on kooltaan pienempi kuin apache -versio. Mikäli kuitenkin haluaa käyttää apache -versiota, niin myös tämä on valittavissa, tällöin nginx tilalle muutetaan apache. Lisää tietoa eri versioista saa github-sivulta https://github.com/ckulka/baikal-docker.

Toinen huomio on, että olen ohjannut portin 5232 dockerin porttiin 80. Olen tehnyt tämän sen vuoksi, että minulla tämä portti 80 on jo varattuna muuhun käyttöön. Tällöin täytyy vain muistaa ohjata myös modeemista käsin portti 5232 tälle koneelle, johon Caddy -webserveri on asennettu. Mutta portti voisi olla myös esim. tämä portti 80.

Olen myös merkinnyt rivin 443:443 pois käytöstä juuri sen vuoksi, että käytämme suojatun yhteyden muodostamiseen Caddy -webserverin reverse proxy -toimintoa, jolla saamme määritettyä suojatun yhteyden kalenteri -palvelimeen.

Asennuksen valmistuttua Baïkal käynnistetään komennolla docker-compose up -d. Mikäli käynnistyksen yhteydessä tulee alla olevan mukainen virheilmoitus, niin kannatta aluksi käynnistää docker uudestaan komennolla sudo systemctl restart docker ja kokeilla sen jälkeen käynnistää Baïkal uudestaan komennolla docker-compose up -d.

Error while fetching server API version: UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

Tässä vaiheessa voidaan tarkastaa, että käynnistyykö Baïkal, jotta saadaan tehtyä tarvittavat käyttäjäasetukset Baïkaliin. Eli mennään selaimella sivustolle x.x.x.x:5232 ja mikäli sivustolla näkyy alla olevan mukainen virheilmoitus, tarkoittaa se sitä, että näiden hakemistojen käyttöoikeudet eivät ole kunnossa ja ne pitää korjata.

Eli seuraavaksi meidän täytyy mennä Dockeriin “sisälle” antamalla komento

docker exec -it baikal_baikal_1 bash

Komennon jälkeen olemme Dockerissa Baïkalin “kontin” sisällä ja seuraavaksi mennään hakemistoon `/var/www/baikal/` sekä tarkistetaan hakemistojen käyttöoikeus komennolla ls -l. Tällä komennolla saamme näkyviin käyttöoikeudet, jotka minulla ovat alla olevan mukaiset eli config -hakemistossa on root -käyttöoikeudet, jotka pitää muuttaa

Baïkalin hakemistojen käyttöoikeudet ennen korjausta

Käyttöoikeudet saadaan muutettua oikeaksi komennolla

chmod -R nginx:nginx config

Nyt meillä pitäisi olla käyttöoikeudet asetettuna oikein kuten alla näkyy

Baïkalin hakemistojen käyttöoikeudet korjauksen jälkeen

Seuraavaksi poistutaan “kontista” komennolla exit ja käynnistetään Baïkal uudestaan komennolla docker-compose up -d.

Baïkalin asetusvelho Link to heading

Tämän jälkeen, kun avaamme uudestaan selaimella sivuston x.x.x.x:5232, niin meille pitäisi avautua alla olevan mukainen ikkuna

Baïkalin asetusvelho

Seuraavaksi asetetaan aikavyöhyke oikeaksi, asetetaan admin -käyttäjän salasana ja tallennetaan muutokset. Tämän jälkeen avautuu uusi ikkuna

Baïkalin tietokannan asetukset

Mikäli näkyviin tulee alla olevan näköinen virheilmoitus, niin Specific -hakemistosta puuttuu db -hakemisto, joka meidän tulee vielä luoda

Baïkalin tietokannan virheilmoitus johtuen puuttuvasta kansioista

Eli palaamme takaisin “konttiin” komennolla docker exec -it baikal_baikal_1 bash, jossa luodaan hakemistoon /var/www/baikal/Specific uusi hakemisto db sekä annetaan hakemistolle oikeat käyttöoikeudet eli

cd /var/www/baikal/Specific
mkdir db
chown -R nginx:nginx db

Lopuksi poistutaan “kontista” komennolla exit ja päivitetään selaimen ikkuna. Nyt kaikki pitäisi olla kunnossa ja pääsemme jatkamaan eteenpäin

Baïkalin tietokannan onnistunut asetus

Eli seuraavaksi painetaan nappia “Start using Baïkal” ja kirjaudutaan admin -tunnuksilla sisään

Baïkalin admin -käyttäjän kirjautumisikkuna

Kirjautumisen jälkeen avautuu näkymä

Baïkalin kojelauta

Kohdassa “Users and resources” luodaan käyttäjät

Baïkalin käyttäjien luonti-ikkuna

Käyttäjän luomisen jälkeen meille on luotuna oletus -kalenteri ja -osoitekirja. Huom! myös sähköpostiosoite tarvitsee antaa käyttäjätietoja luodessa.

Baïkalin käyttäjäikkuna

Nyt meillä on Baïkal -kalenteripalvelin käytössä ja viimeiseksi tehdään vielä muutokset Caddy -webserverille, jotta saadaan suojattu yhteys kalenteripalvelimeen.

Caddyn reverse proxy asetukset Link to heading

Caddyn asetukset tehdään asetustiedostoon /etc/caddy/Caddyfile ja lisätään sinne alla olevat rivit, joilla ohjataan liikenne kalenteripalvelimelle. Tämä IP-osoite x.x.x.x on sen tietokoneen sisäverkon IP-osoite, jolle Baïkal -kalenteripalvelin on asennettu ja esimerkki.fi on se web-sivuston osoite, joka luotiin Caddyn asennuksen yhteydessä.

#Baikal kalenteri
esimerkki.fi:5232 {
                reverse_proxy x.x.x.x:5232
}

Seuraavaksi käynnistetään vielä Caddy uudestaan eli ajetaan komento

sudo systemctl restart caddy

Eli nyt kun avaamme nettiselaimessa osoitteen https://esimerkki.fi:5232, niin meille avautuu suojattu https -yhteys Baïkal -kalenteripalvelimen kirjautumisikkunaan. Kalenterin ja osoitekirjan osoitteen saan näkymään “info” -näppäimesta, kun avaa käyttäjän tiedot. Yleensä osoite on muotoa https://esimerkki.fi:5232/dav.php/calendars/<kalenterin nimi>/default.

Jaa tämä: