Difference between revisions of "Palvelut-Tekniikka"

From Tampere Hacklab Wiki
Jump to: navigation, search
m (Kontin tiedot)
m (LDAP)
 
(30 intermediate revisions by 3 users not shown)
Line 2: Line 2:
  
 
Käyttäjille tarkoitettu sivu: [[Palvelut]]
 
Käyttäjille tarkoitettu sivu: [[Palvelut]]
 +
 +
Hacklabin webbipalvelut pyörii FAR ry:n tarjoamassa virtuaalipalvelimessa Docker-konteissa.
 +
 +
Docker-konteista ei pääse toisiinsa suoraan. Hostin IP on 172.17.0.1. Eli jos
 +
haluat käyttää esim LDAPpia kontista, se löytyy osoitteesta 172.17.0.1:8889 eikä 127.0.0.1.
 +
(kontteja voi linkittää, jolloin niiden välinen liikenne helpottuu -poro)
 +
 +
'''HUOM! Jos hosti reboottaa, tuo IP voi vaihtua! Tähän pitäisi keksiä ratkaisu. Esim Mezzanine ja Wiki ei tue dns:ää LDAP-hostissa'''
 +
 +
Kontteihin pääsee shelliin tekemään huoltojuttuja näin:
 +
 +
docker exec -it <nimi> bash
 +
 +
Kontissa tehdyt muutokset EIVÄT TALLENNU ellei konttia committoi:
 +
 +
docker commit <nimi>
 +
Kontin ulkopuolella, esim. /data hakemistossa oleva tieto sitävastoin säilyy. Ks. varmuuskopiointi
 +
 +
Jos teet isomman muutoksen, anna kontille uusi image-nimi ja tagi (versionumero):
 +
 +
docker commit <nimi> <image>:<tagi>
 +
 +
Muista päivittää tälle sivulle uusimman version image:tagi!
 +
 +
== Apua! Palvelin rebootannut ja kontit on alhaalla ==
 +
 +
Näillä pitäisi lähteä kontit takasin ajoon:
 +
 +
<pre>
 +
docker start mediawiki
 +
docker start mezzanine
 +
docker start ldap
 +
docker start dlreg
 +
docker start pajakauppaadmin
 +
docker start apache
 +
docker exec ldap service apache2 start
 +
docker exec ldap slapd
 +
</pre>
 +
 +
TODO: Automatisoi nämä!
 +
 +
== Varmuuskopiointi ==
 +
 +
Skripti /root/backup_docker_containers.sh ottaa konteista talteen tarvittavat datat ja tallentaa ne päiväyksellä varustuettuun tiedostoon. Aja se roottina, kun haluat ottaa varmuuskopiot kaikesta.
 +
Nää olisi hyvä vielä kopsia johonkin muualle talteen jos FAR:n palveli leviää täysin.
 +
 +
<pre>
 +
$ sudo /root/backup_docker_containers.sh
 +
Dumping ldap data..
 +
Dumping MYSQL database..
 +
Creating backup archive /root/backup/backup-2016-02-21.tar.gz
 +
tar: Removing leading `/' from member names
 +
Deleting MYSQL database dump
 +
Backups done! Number of files saved:
 +
9233
 +
</pre>
  
 
= LDAP =
 
= LDAP =
Line 7: Line 63:
 
Tehty tämän ohjeen mukaan: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-a-basic-ldap-server-on-an-ubuntu-12-04-vps
 
Tehty tämän ohjeen mukaan: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-a-basic-ldap-server-on-an-ubuntu-12-04-vps
  
== Kontin tiedot ==
+
== Docker-kontti ==
  
 
{{Template:DockerKontti
 
{{Template:DockerKontti
Line 13: Line 69:
 
|nimi = ldap
 
|nimi = ldap
 
|tekija = cos
 
|tekija = cos
|image = ldap_tuotanto_1
+
|image = ldap_tuotanto_1. (TODO: ajossa nyt e93f5ae07ebe, joka on 2kk vanhempi kuin tuo?)
|alkuperainen_image = Ubuntu?
+
|alkuperainen_image = ubuntu
 
|kaynnistys =  
 
|kaynnistys =  
 
<pre>
 
<pre>
  docker run -d -p 8888:80 -p 8889:389 --name ldap -t {{{image}}}
+
  docker run -d -p 8888:80 -p 8889:389 -v /root/docker-data/ldap:/data --name ldap -t {{{image}}}
 
  docker exec ldap service apache2 start
 
  docker exec ldap service apache2 start
  docker exec ldap service slapd start
+
  docker exec ldap slapd
 
</pre>
 
</pre>
|jaetut_hakemistot = -
+
|jaetut_hakemistot = /root/docker-data/ldap:/data . Sisältää etc_ldap:n joka on /etc/ldap-hakemisto sekä usr_share_slapd:n joka on /usr/share/slapd.
|varmuuskopiointi = TBD
+
|varmuuskopiointi = Aja komento sudo /root/backup_docker_containers.sh
 
|verkko = LDAP portissa 8889 (389) ja phpldapadmin portissa 8888 (80)
 
|verkko = LDAP portissa 8889 (389) ja phpldapadmin portissa 8888 (80)
 
}}
 
}}
 +
Huom. slapd normaalisti käynnistettäisiin ''service slapd start'':lla, mutta se failaa jostain syystä. Saa korjata.
 +
 +
Näyttäisi siltä, että slapd:n tietokannat ovat /usr/share/slapd:ssa. Ne voisi sieltä varmuuskopioida myös.
  
 
== Debuggaus ==  
 
== Debuggaus ==  
Line 40: Line 99:
  
 
= Wiki =
 
= Wiki =
 +
 +
Mediawiki. Luet sitä. Käyttää FAR:n MySQL-tietokantaa. Imageen asetettu uudempi versio mediawikistä ja LDAPAuthentication-extensio.
 +
 +
== WYSIWYG-editori ==
 +
 +
VisualEditor on suositeltu. Extensioni asennettu, MUTTA asennus kesken
 +
 +
https://www.mediawiki.org/wiki/Parsoid/Setup kohtaan apt-get install curl parsoid
 +
 +
parsoid : Depends: nodejs (>= 0.8.0) but 0.6.12~dfsg1-1ubuntu1 is to be installed
 +
E: Unable to correct problems, you have held broken packages.
 +
 +
== Docker-kontti ==
 +
 +
{{Template:DockerKontti
 +
|kuvaus = Mediawiki
 +
|nimi = mediawiki
 +
|tekija = cos
 +
|image = mediawiki:beta2
 +
|alkuperainen_image = nickstenning/mediawiki
 +
|kaynnistys =
 +
<pre>
 +
docker run -v /root/docker-data/mediawiki:/data -d -p 81:80 --name mediawiki mediawiki:beta2
 +
</pre>
 +
|jaetut_hakemistot = /root/docker-data/mediawiki <-> /data
 +
|varmuuskopiointi = /root/docker-data/mediawiki sekä MYSQL-tietokanta tallentuu skriptillä.
 +
|verkko = Mediawiki portissa 81
 +
}}
  
 
= Mezzanine =
 
= Mezzanine =
 +
 +
Löytyy kontin sisältä hakemistosta /root/trehacklab
 +
 +
/root:ssa on myös mezzanine.sh, joka asettaa pari ympäristömuuttujaa oikein ja käynnistää mezzaninen. Käytä sitä.
 +
 +
== Muokkaus ==
 +
 +
Labin Mezzanine löytyy GitHubista osoitteesta https://github.com/TampereHacklab/mezzanine
 +
 +
Sitä voi ajaa omalla koneella ja tehdä erilaisia kustomointeja kuten teeman muokkausta, pluginien asennusta jne. Muutokset sitten pullrequestin kautta githubiin ja sieltä palvelimelle.
 +
 +
Lue README jos haluat kokeilla.
 +
 +
Päivitys gitistä tuotantoon (FAR:lla, roottina):
 +
 +
<code>
 +
cd /root/docker-data/mezzanine/mezzanine
 +
 +
git pull
 +
</code>
 +
 +
Ei tarvi edes restartata normaalisti. Muutokset näkyy välittömästi.
 +
 +
== Docker-kontti ==
 +
 +
{{Template:DockerKontti
 +
|kuvaus = Mezzanine CMS
 +
|nimi = mezzanine
 +
|tekija = cos
 +
|image = mezzanine_tuotanto:4
 +
|alkuperainen_image = ubuntu 15.10
 +
|kaynnistys =
 +
<pre>
 +
docker run -d -p 80:80 --name mezzanine -h tampere.hacklab.fi -v /root/docker-data/mezzanine:/data {{{image}}} /data/mezzanine.sh
 +
</pre>
 +
|{{{image}}} on imagen nimi esim. mezzanine_tuotanto:4
 +
| /data/mezzanine.sh on blogisovelluksen käynnistävä komentokuori, vastaa init prosessia normikoneessa.
 +
| --name mezzanine:a voi joutua muuttamaan, kun se on jo annettu aiemmin kontainerille. Sen voi myös jättää pois.
 +
|jaetut_hakemistot = /root/docker-data/mezzanine:/data
 +
|varmuuskopiointi = Koko roska on tuolla /data:n alla nykyään. Tietokanta on dev.db-nimiseen sqlite-tietokanta. Shelliskripti taltio nää kaikki.
 +
|verkko = Mezzanine portissa 80
 +
}}
  
 
= DLReg =
 
= DLReg =
 +
 +
Cos:n tätä varten koodaamaa käyttäjille tarkotettu LDAP-rekisteröintikalu.
 +
Sorsat löytyy https://github.com/hacklab-fi/dlreg ja saa kontributoida.
 +
 +
URL: http://tampere.hacklab.fi:8887/
 +
 +
== Docker-kontti ==
 +
 +
{{Template:DockerKontti
 +
|kuvaus = DLReg LDAP-rekisteröinti
 +
|nimi = dlreg
 +
|tekija = cos
 +
|image = dlreg_image
 +
|alkuperainen_image = dlreg:n oma, gitistä löytyy dockerfile.
 +
|kaynnistys =
 +
<pre>
 +
docker run --name dlreg -d -p 8887:8000 -v /root/docker-data/dlreg:/data dlreg-image python /data/dlreg/manage.py runserver 0.0.0.0:8000
 +
</pre>
 +
|jaetut_hakemistot = /root/docker-data/dlreg:/data jossa on koko applikaatio.
 +
|varmuuskopiointi = Skripti tallentaa jaetusta hakemistosta kaiken. Varsinaista pysyvää dataahan ei ole.
 +
|verkko = Webbi-ui portissa 8887
 +
}}
 +
 +
= HTTP-proxy =
 +
 +
poro väsäsi http-proxy-imagen (Ubuntu+Apache+PHP) jolla onnistuu myös satunnaisten PHP-kikkareiden ajo.
 +
 +
 +
Hakemiston /root/docker/apache/ sisältö:
 +
 +
build/      Dockerfile imagen buildaamista varten. Ei tehdä imageen muutoksia commitoiden, vaan "mountataan" pysyväksi tarkoitetut tiedostot isäntäkoneen levyltä tai tarvittaessa buildataan uusi image Dockerfilen mukaan.
 +
 +
sites/      virtualhostit, esim tampere.hacklab.fi:80. Imagessa valmius HTTPS:lle.
 +
 +
ssl/        SSL-varmenteille paikka, jahka joskus vaikka letsencryptillä moiset väännetään (voimassa 3kk kerrallaan)
 +
 +
www/        varsinainen www-hakemisto. Tällä hetkellä sieltä löytyy labin IP-kamerasta hienon panoraaman generoiva sivu http://tampere.hacklab.fi/webcampan/ sekä pajakauppa
 +
 +
logs/      Apachen access- ja error-lokit
 +
 +
start.sh    scripti joka (uudelleen)käynnistää kontit
 +
 +
 +
Varsinaisen kamerayhteyden toteutus:
 +
Farilta pääsee VPN:ää pitkin Dalekille 172.30.0.3:9999 ja sieltä xinetd:llä tehdyllä porttiforwardilla labin sisäverkon IP-kameraan 192.168.1.3:80
 +
 +
 +
Apachen konffit on säädetty siten, että pelkällä IP:llä surffatessa ei aukea mitään järkevää (sites/000_default.conf)
 +
 +
Jos tämä kontti laitetaan proxyttämään varsinaisten nettisivujen liikenne, niin kannattaa laittaa mezzaninen-kontin löytymään vaikka: 172.30.1.1:82. Vastaava temppu tarvittaessa mediawikille. Myös konttilinkityksillä bitin saa kulkemaan ilman portin paljastamista isäntäkoneella.
 +
 +
Itse IP-kameran hallinta löytyy täältä: http://tampere.hacklab.fi:85/webcam/ (vois ruuvata htpasswd:tä eteen)

Latest revision as of 17:51, 1 October 2017

Tässä tekniset tiedot palveluista. Ei tunnuksia tai salasanoja wikiin.

Käyttäjille tarkoitettu sivu: Palvelut

Hacklabin webbipalvelut pyörii FAR ry:n tarjoamassa virtuaalipalvelimessa Docker-konteissa.

Docker-konteista ei pääse toisiinsa suoraan. Hostin IP on 172.17.0.1. Eli jos haluat käyttää esim LDAPpia kontista, se löytyy osoitteesta 172.17.0.1:8889 eikä 127.0.0.1. (kontteja voi linkittää, jolloin niiden välinen liikenne helpottuu -poro)

HUOM! Jos hosti reboottaa, tuo IP voi vaihtua! Tähän pitäisi keksiä ratkaisu. Esim Mezzanine ja Wiki ei tue dns:ää LDAP-hostissa

Kontteihin pääsee shelliin tekemään huoltojuttuja näin:

docker exec -it <nimi> bash

Kontissa tehdyt muutokset EIVÄT TALLENNU ellei konttia committoi:

docker commit <nimi>

Kontin ulkopuolella, esim. /data hakemistossa oleva tieto sitävastoin säilyy. Ks. varmuuskopiointi

Jos teet isomman muutoksen, anna kontille uusi image-nimi ja tagi (versionumero):

docker commit <nimi> <image>:<tagi>

Muista päivittää tälle sivulle uusimman version image:tagi!

Apua! Palvelin rebootannut ja kontit on alhaalla

Näillä pitäisi lähteä kontit takasin ajoon:

docker start mediawiki
docker start mezzanine
docker start ldap
docker start dlreg
docker start pajakauppaadmin
docker start apache
docker exec ldap service apache2 start
docker exec ldap slapd

TODO: Automatisoi nämä!

Varmuuskopiointi

Skripti /root/backup_docker_containers.sh ottaa konteista talteen tarvittavat datat ja tallentaa ne päiväyksellä varustuettuun tiedostoon. Aja se roottina, kun haluat ottaa varmuuskopiot kaikesta. Nää olisi hyvä vielä kopsia johonkin muualle talteen jos FAR:n palveli leviää täysin.

$ sudo /root/backup_docker_containers.sh
Dumping ldap data..
Dumping MYSQL database..
Creating backup archive /root/backup/backup-2016-02-21.tar.gz
tar: Removing leading `/' from member names
Deleting MYSQL database dump
Backups done! Number of files saved:
9233

LDAP

Tehty tämän ohjeen mukaan: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-a-basic-ldap-server-on-an-ubuntu-12-04-vps

Docker-kontti

Docker-kontin tiedot
Kuvaus slapd LDAP-palvelin
Kontin nimi ldap
Tekijä cos
Image ldap_tuotanto_1. (TODO: ajossa nyt e93f5ae07ebe, joka on 2kk vanhempi kuin tuo?)
Alkuperäinen image ubuntu
Imagen käynnistys
 docker run -d -p 8888:80 -p 8889:389 -v /root/docker-data/ldap:/data --name ldap -t {{{image}}}
 docker exec ldap service apache2 start
 docker exec ldap slapd
Jaetut hakemistot /root/docker-data/ldap:/data . Sisältää etc_ldap:n joka on /etc/ldap-hakemisto sekä usr_share_slapd:n joka on /usr/share/slapd.
Verkko LDAP portissa 8889 (389) ja phpldapadmin portissa 8888 (80)
Varmuuskopiointi Aja komento sudo /root/backup_docker_containers.sh

Huom. slapd normaalisti käynnistettäisiin service slapd start:lla, mutta se failaa jostain syystä. Saa korjata.

Näyttäisi siltä, että slapd:n tietokannat ovat /usr/share/slapd:ssa. Ne voisi sieltä varmuuskopioida myös.

Debuggaus

Slapd:n logituksen saa näin

killall slapd (ei kuole service stop:lla!)
slapd -d -1

ldapsearch

Ldapsearchilla voi tehdä kaikenlaisia hakuja (http://blogs.splunk.com/2009/07/30/ldapsearch-is-your-friend/)

ldapsearch -h 127.0.0.1 -p 8889 -x -b "dc=tampere,dc=hacklab,dc=fi" -D "cn=<tunnus>,ou=users,dc=tampere,dc=hacklab,dc=fi" -W

Wiki

Mediawiki. Luet sitä. Käyttää FAR:n MySQL-tietokantaa. Imageen asetettu uudempi versio mediawikistä ja LDAPAuthentication-extensio.

WYSIWYG-editori

VisualEditor on suositeltu. Extensioni asennettu, MUTTA asennus kesken

https://www.mediawiki.org/wiki/Parsoid/Setup kohtaan apt-get install curl parsoid

parsoid : Depends: nodejs (>= 0.8.0) but 0.6.12~dfsg1-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

Docker-kontti

Docker-kontin tiedot
Kuvaus Mediawiki
Kontin nimi mediawiki
Tekijä cos
Image mediawiki:beta2
Alkuperäinen image nickstenning/mediawiki
Imagen käynnistys
 docker run -v /root/docker-data/mediawiki:/data -d -p 81:80 --name mediawiki mediawiki:beta2
Jaetut hakemistot /root/docker-data/mediawiki <-> /data
Verkko Mediawiki portissa 81
Varmuuskopiointi /root/docker-data/mediawiki sekä MYSQL-tietokanta tallentuu skriptillä.

Mezzanine

Löytyy kontin sisältä hakemistosta /root/trehacklab

/root:ssa on myös mezzanine.sh, joka asettaa pari ympäristömuuttujaa oikein ja käynnistää mezzaninen. Käytä sitä.

Muokkaus

Labin Mezzanine löytyy GitHubista osoitteesta https://github.com/TampereHacklab/mezzanine

Sitä voi ajaa omalla koneella ja tehdä erilaisia kustomointeja kuten teeman muokkausta, pluginien asennusta jne. Muutokset sitten pullrequestin kautta githubiin ja sieltä palvelimelle.

Lue README jos haluat kokeilla.

Päivitys gitistä tuotantoon (FAR:lla, roottina):

cd /root/docker-data/mezzanine/mezzanine

git pull

Ei tarvi edes restartata normaalisti. Muutokset näkyy välittömästi.

Docker-kontti

Docker-kontin tiedot
Kuvaus Mezzanine CMS
Kontin nimi mezzanine
Tekijä cos
Image mezzanine_tuotanto:4
Alkuperäinen image ubuntu 15.10
Imagen käynnistys
 docker run -d -p 80:80 --name mezzanine -h tampere.hacklab.fi -v /root/docker-data/mezzanine:/data {{{image}}} /data/mezzanine.sh
Jaetut hakemistot /root/docker-data/mezzanine:/data
Verkko Mezzanine portissa 80
Varmuuskopiointi Koko roska on tuolla /data:n alla nykyään. Tietokanta on dev.db-nimiseen sqlite-tietokanta. Shelliskripti taltio nää kaikki.

DLReg

Cos:n tätä varten koodaamaa käyttäjille tarkotettu LDAP-rekisteröintikalu. Sorsat löytyy https://github.com/hacklab-fi/dlreg ja saa kontributoida.

URL: http://tampere.hacklab.fi:8887/

Docker-kontti

Docker-kontin tiedot
Kuvaus DLReg LDAP-rekisteröinti
Kontin nimi dlreg
Tekijä cos
Image dlreg_image
Alkuperäinen image dlreg:n oma, gitistä löytyy dockerfile.
Imagen käynnistys
 docker run --name dlreg -d -p 8887:8000 -v /root/docker-data/dlreg:/data dlreg-image python /data/dlreg/manage.py runserver 0.0.0.0:8000
Jaetut hakemistot /root/docker-data/dlreg:/data jossa on koko applikaatio.
Verkko Webbi-ui portissa 8887
Varmuuskopiointi Skripti tallentaa jaetusta hakemistosta kaiken. Varsinaista pysyvää dataahan ei ole.

HTTP-proxy

poro väsäsi http-proxy-imagen (Ubuntu+Apache+PHP) jolla onnistuu myös satunnaisten PHP-kikkareiden ajo.


Hakemiston /root/docker/apache/ sisältö:

build/ Dockerfile imagen buildaamista varten. Ei tehdä imageen muutoksia commitoiden, vaan "mountataan" pysyväksi tarkoitetut tiedostot isäntäkoneen levyltä tai tarvittaessa buildataan uusi image Dockerfilen mukaan.

sites/ virtualhostit, esim tampere.hacklab.fi:80. Imagessa valmius HTTPS:lle.

ssl/ SSL-varmenteille paikka, jahka joskus vaikka letsencryptillä moiset väännetään (voimassa 3kk kerrallaan)

www/ varsinainen www-hakemisto. Tällä hetkellä sieltä löytyy labin IP-kamerasta hienon panoraaman generoiva sivu http://tampere.hacklab.fi/webcampan/ sekä pajakauppa

logs/ Apachen access- ja error-lokit

start.sh scripti joka (uudelleen)käynnistää kontit


Varsinaisen kamerayhteyden toteutus: Farilta pääsee VPN:ää pitkin Dalekille 172.30.0.3:9999 ja sieltä xinetd:llä tehdyllä porttiforwardilla labin sisäverkon IP-kameraan 192.168.1.3:80


Apachen konffit on säädetty siten, että pelkällä IP:llä surffatessa ei aukea mitään järkevää (sites/000_default.conf)

Jos tämä kontti laitetaan proxyttämään varsinaisten nettisivujen liikenne, niin kannattaa laittaa mezzaninen-kontin löytymään vaikka: 172.30.1.1:82. Vastaava temppu tarvittaessa mediawikille. Myös konttilinkityksillä bitin saa kulkemaan ilman portin paljastamista isäntäkoneella.

Itse IP-kameran hallinta löytyy täältä: http://tampere.hacklab.fi:85/webcam/ (vois ruuvata htpasswd:tä eteen)