This is an old revision of the document!
Hacklabin palveluiden tekniikka
Labilla on FAR ry:n konesalissa virtuaali, tampere.hacklab.fi jossa Ubuntu 18.04.
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
- Sano mezzanine/mezzanine-hakemistossa git pull.
- Sano mezzanine -hakemistossa
docker-compose build –no-cache
- Ja sitten vielä docker-compose restart
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
- uuden varmenteen CN on lisättävä skriptissä SAN kohtaan
- apachella on oltavata site määritys tälle CN nimelle.
- 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
- LDAP Authentication https://www.dokuwiki.org/plugin:authldap
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ä.
Piwigo aka kuvat
Piwigo- kuvagalleriasofta. Valitettavasti LDAP-plugin ei tue halutusti LDAP-grouppeja joten sitä ei käytetä. Yleistunnukset käy.
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
Nextcloud
nc.tampere.hacklab.fi
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
Datahakemistot
- /docker/nextcloud/nc_data
- /docker/nextcloud/db_data
Kirjautuminen LDAP-tunnuksilla, ei admin-tason pääsyä oletuksena.
Lisätietoja antaa 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