======= 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/, 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=,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 [[https://hub.docker.com/r/bitnami/dokuwiki/|bitnami/dokuwiki]] ==== Käytetyt pluginit ==== * LDAP Authentication https://www.dokuwiki.org/plugin:authldap * NSPages https://www.dokuwiki.org/plugin:nspages === 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