Hacklabin palveluiden tekniikka

Labilla on FAR ry:n konesalissa virtuaali, tampere.hacklab.fi jossa Ubuntu 18.04.

Lisäksi upcloud tarjoaa virtuaalikoneet mulysalle ja nextcloudille.

Docker

Koneella on virallinen dockerin apt-repo käytössä.

Jos säädät dockeria, älä käytä roottia vaan lisää itsesi grouppiin: sudo usermod -aG docker ${USER}

Dockerissa on verkko: tamperehacklab - lisää kaikki kontit siihen niin ne näkevät toisensa.

Dockerin konttien tiedostot löytyvät hakemistosta /docker/<kontti>, johon pitäisi olla kirjoitusoikat docker-ryhmään kuuluvilla käyttäjillä.

Konteissa käytetään docker-composea. Käytä sitä jos teet kontin. Katso esimerkkiä olemassaolevista. Ei salasanoja tai muuta salaista docker-compose.yml:n.

Konttien ympäristömuuttujat ovat joka kontin hakemistoissa .env-tiedostossa. Ne sisältävät salasanoja joten niitä ei voi laittaa gittiin. Älä laita niitä gittiin.

Skriptit

Löytyvät /docker:sta.

  • start_all, stop_all käynnistävät tai pysäyttävät kaikki kontit
  • rebuild_all.sh päivittää imaget ja rakentaa kontit uusiksi. Testaa palveluiden toiminta jos ajat tämän!
  • backup_all.sh varmuuskopioi kaiken.

Lue skriptit ennen ajoa, niissä on kommenteissa lisätietoja.

LDAP

Käyttäjätietokanta, jota kaikki palvelut käyttävät.

Käytetään tätä imagea: https://github.com/osixia/docker-openldap

Kontin nimi: ldap

Adminkäyttäjä on: “cn=admin,dc=tampere,dc=hacklab,dc=fi” LDAP-tunnukset ovat tyyliin: “cn=<kayttaja>,ou=users,dc=tampere,dc=hacklab,dc=fi”

Vanhan Importtaus

(Jos joskus tarvii siirtää dataa koneelta toiselle) Avaa lähde-phpldapadmin, valkkaa export.

  • Base dn: dc=tampere,dc=hacklab,dc=fi
  • Search Scope: Sub (entire subtree)

Save as file ja LDIF

Avaa export.ldif, poista alusta 2 kohtaa eli base dn ja admin-käyttäjätunnus.

Avaa kohde-phpldapadmin (jossa vain admin-tunnus ja muuten tyhjää). Importtaa export.ldif. Maailma ehkä räjähtää, ehkä ei.

phpLDAPadmin

LDAP:n ylläpitotyökalu.

Kontin nimi: phpldapadmin

Web ui urlissa /phpldapadmin/

Mezzanine

Labin CMS eli webbisivut/blogialusta.

Sisältää mezzanine-hakemiston joka on gitistä: https://github.com/TampereHacklab/mezzanine

Päivittäminen:

  • Tee muutokset gittirepoon ja testaa mielellään paikallisesti
  • Aja:
cd /docker/mezzanine/mezzanine
git pull
cd /docker/mezzanine
docker-compose build --no-cache
docker-compose up -d

Jos päivität local_settings.py:tä niin docker-compose restart riittää

DLReg

Cos:n koodaama LDAP:n rekisteröitymiskikkare. Gitistä: https://github.com/hacklab-fi/dlreg

Kontitettu ja kukkuu. Ei erikoisempaa konffia kuin local_settings.py.

URL: /dlreg/

Apache Proxy

Reverse proxy jonka läpi muut (webbi)palvelut näkyy http/https- portin kautta.

Huom! Jos muutat konffista, käynnistä kontti uudestaan. Se ei lataa sitä lennosta.

Pohjana tämä kontti, kts dokkarit https://github.com/DiouxX/docker-apache-proxy

TLS

Käytettävät certit on data/ssl/ -hakemistossa. Varmenteet myöntää Letsencrypt ja ne ovat voimassa 3kk kerrallaan. Luonti hoidetaan ACME protokollalla. Proxyn hakemistossa /docker/apache-proxy on vanhalta serveriltä kopsittu skripti renewcerts.sh. Se on cronissa ja päivittäin tarkistaa tilanteen.

Jos tehdään uusia varmenteita, niin silloin voidaan käyttää

/docker/apache-proxy/acmetiny/rikucron_renewal.sh

Jotta tämä ACME menetelmä toimisi, niin

  1. uuden varmenteen CN on lisättävä skriptissä SAN kohtaan
  2. apachella on oltavata site määritys tälle CN nimelle.
  3. Tärkeää on lisätä ennen muita ProxyPass määrityksiä rivi
 ProxyPass /.well-known/acme-challenge/ !    

Huom: rivi sisälsi huutomerkin. (!)

 
  * Jos sivustolle on vain TLS (portti 443) yhteys, niin yo. rivi kuuluu sinne.
  * Jos sivustolla on redirect 80->443, niin ACME protokolla yrittää ensin 80 porttiin ja sitten vasta 443, 
    mikä hidastaa n. 5 sekuntia renewal skriptin ajoa, joten oikea paikka olisi :80 määrityksessä.

HUOM: Jos ylläolevat ehdot eivät täyty, bugaa skriptikin eikä pääse loppuun asti uusimaan varmenteita. Onneksi LetsEncrypt kuitenkin lähettää hallitukselle varoitusmailin 19 päivää ennen vanhenemisia, kuten kävi tänään 15.3.2019 -RI

Dokuwiki

Wiki, joka on vähän järkevämpi ylläpitää kuin MediaWiki. Käyttää imagea bitnami/dokuwiki

Käytetyt pluginit

Päivitys

Ennenkuin päivität, ota varmuuskopio minkä voi restoroida. Katso ohjeet bitnamin sivulta https://github.com/bitnami/bitnami-docker-dokuwiki#maintenance

Datojen siirto (Mediawikistä)

dokuwiki/yamdwe :sta löytyy importtaustyökalu. Käyttää virtualenviä.

env/bin/activate
./yamdwe.py https://tampere.hacklab.fi/viswiki/api.php ../data/dokuwiki/

(säädä data:n tiedosto-oikkia tarvittaessa)

Nakkisade

cos:n koodaama tapahtumiin ilmottatumisjärjestelmä.

Git: https://github.com/hacklab-fi/nakkisade

Web ui: http://nakkisade.tampere.hacklab.fi/

Piwigo aka kuvat (DEPRECATED, see nextcloud)

Piwigo- kuvagalleriasofta. Valitettavasti LDAP-plugin ei tue halutusti LDAP-grouppeja joten sitä ei käytetä. Yleistunnukset käy.

Web ui: https://kuvat.tampere.hacklab.fi/

Hemppa

cos:n koodaama geneerinen matrix-botti.

Git: https://github.com/vranki/hemppa

Muutokset gitistä:

  • git pull
  • docker-compose stop
  • docker-compose build
  • docker-compose up -d

Mulysa jäsenrekisteri

my.tampere.hacklab.fi

Mulysa pyörii upcloudin tarjoamalla koneella helsingissä (jossain pilvessä) /docker/mulysa kansiossa

dockerissa pyörii myös mariadb ja traefik ohjaamassa liikennettä (ja hoitamassa lets encrypt certit)

access ainakin tsw ja cos

Mulysa toimii SSO backendinä hacklabin SSO palvelimelle tampereen palveluille.

Nextcloud

nc.tampere.hacklab.fi

Pyörii upcloudissa

Pilvi tiedostojen ja muistiinpanojen hallintaan. Käyttää imagea https://hub.docker.com/_/nextcloud/ ja sisältää lisäksi mariadb-tietokannan https://hub.docker.com/_/mariadb Kirjautuminen hacklab.fi SSO:lla.

Lisätietoja antaa tsw ja eimink

Sähköpostit

  • Postfix asennettu palvelimelle
  • Logitiedosto: /var/log/mail.log
  • 20190309 dockerkonteista voi lähettää postia ulkopuolelle eli sallittu relay verkosta 172.18.0.0/16. Nyt hakijatkin saavat vahvistusviestin.
  • 20200103 - tsw
    • 587 portti aktivoitu, vaatii sasl authin
    • samalla korjattu myhostname
    • käyttää samoja letsencrypt sertejä kuin 443
    • saslauthd asennettu ja lisätty noreply@tampere.hacklab.fi user (pass tsw:ltä)
    • tämä kaikki että saadaan mulysa lähettämään postia

Ja tarkempi kuvaus tuosta sasl:sta:

sudo apt-get install sasl2-bin

in file: /etc/default/saslauthd change

START=yes
MECHANISMS=“sasldb”
OPTIONS=“-c -m /var/spool/postfix/var/run/saslauthd”

add user:

sudo saslpasswd2 -c -u tampere.hacklab.fi noreply

with a good password, remember to configure the same password into services that use this (as of writing this mulysa is the only one)

sudo service saslauthd start

add smtpd config file

# cat /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
saslauthd_path: /var/run/saslauthd/mux

in main.cf use the existing www certs

# using same certs as httpd smtpd_tls_cert_file=/docker/apache-proxy/data/ssl/tampere.hacklab.fi.signed.crt
smtpd_tls_key_file=/docker/apache-proxy/data/ssl/tampere.hacklab.fi.domain.key
smtpd_use_tls=yes
smtp_use_tls=yes

in master.cf enable submission

submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING

give postfix saslgroup

adduser postfix sasl

and restart postfix

service postfix restart

and test

Aliasten muokkaus

  • Muokkaa /etc/aliases:ia
  • sudo newaliases
  • sudo systemctl restart postfix
Back to top