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
- 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 (DEPRECATED, see nextcloud)
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
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