Änderungen

Civil Commons:Roadmap 2020 - Docker Technologie

14.055 Byte hinzugefügt, 13:06, 18. Jun. 2019
keine Bearbeitungszusammenfassung
==Ubuntu LTS with SSH==
... im Folgenden eine Anleitung zur Erstellung eines Images, das ein Ubuntu Linux LTS mit SSH-Zugang bereitstellt - basierend auf:   https://github.com/art567/docker-ubuntu-sshd
Das zur Erstellung des Images genutzte Dockerfile:
==FIWARE Keyrock==
((... hat Jürgen Wachtel ist dran - 2Stand 1.34.2019))am Laufen ... Dokumentation ist hier zu ergänzen.
 
==MySQL==
Wir haben bei unseren Tests die Erfahrung gemacht, dass mehrere Container mit MySQL auf einem Docker-Host sich gerne ins Gehege kommen. Aus diesem Grund und weil's schlanker ist, werden wir einen Container mit MySQL bereitstellen, in dem dann alle Systeme, die eine Datenbank brauchen, ihre Daten ablegen.
 
Erwartungsgemäß ist die Bereitstellung eines MySQL-Containers denkbar einfach:
 
[https://hub.docker.com/_/mysql https://hub.docker.com/_/mysql]
 
docker pull mysql
docker run --name mysql <em>-p 3306:3306</em> -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
==Nextcloud==
[https://lehrerfortbildung-bw.de/st_digital/netz/virtual/container/docker/index.html Installation Nextcloud mit nginx-Reverse-Proxy]
 
====2019-03-17====
Installation auf Ubuntu 18, das Hyper-V-virtualisiert unter Windows 10 läuft ... erstmal problemlos, aber:
 
''Im Ergebnis habe ich eine Ubuntu mit der IP 172.17.206.173 und mit einer virtuellen Docker-Netzwerkkarte unter der IP 172.17.0.2.''
 
''172.17.206.173 ist vom Windows Host aus sichtbar, 172.17.0.2 aber (erwartunsgemäß) nicht.''
 
''Nach „sudo docker pull nextcloud” und "docker run -d -p 8080:80 nextcloud" kann ich auf dem Docker-Host ein „wget 172.17.0.2“ machen, auf Port 80 von 172.17.206.173 allerdings kommt nichts an.''
 
''Die Container bedienen also die virtuelle Netzwerkkarte von Docker aber nicht die nach außen sichtbare Netzwerkkarte des Docker-Hosts.''
 
''… „--network=host“ löst das Problem; ich dachte nur, das sei der Standard – das Docker die angegebenen Ports auf der IP-Adresse des Docker-Hosts bedient – statt die Container unter einer IP zu verstecken, die von außen nicht sichtbar ist – naja, kann sein, das ist eine Voreinstellung, die der Sicherheit dient.''
 
''Bleibt nur die Frage: Ist mein Verständnis richtig, dass ich das auch durch einen Reverse-Proxy lösen kann?''
 
'''Jürgen:'''
 
Brigde! Du musst ein eigenen virtuellen Netzwerkadapter erstellen, den als publik definieren und die VM auf diesen virtuellen Netzwerkadapter Konfigurieren.
 
 
===Collabora===
[https://ollis.blog/tutorial-integration-von-collabora-online-in-nextcloud-13/ Blog-Beitrag mit InstallationsbeschreibungInstallationsanleitung[https://www.bitblokes.de/collabora-online-libreoffice-nextcloud-docker-code/ noch ein (sehr ausführlicher) Blog-Beitrag mit Installationsanleitung] ...
<div class="crayon-pre" style="line-height: 15px !important; font-size: 12px !important; -moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; tab-size: 4;">
<span class="crayon-e">sudo </span><span class="crayon-e">docker </span><span class="crayon-e">pull </span><span class="crayon-v">collabora</span><span class="crayon-o">/</span><span class="crayon-v">code</span>
 
<div class="crayon-line"><div class="crayon-pre" style="line-height: 15px !important; font-size: 12px !important; -moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; tab-size: 4;">
<span class="crayon-e">sudo </span><span class="crayon-e">docker </span><span class="crayon-v">run</span> <span class="crayon-o">-</span><span class="crayon-v">t</span> <span class="crayon-o">-</span><span class="crayon-v">d</span> ''--network=host'' <span class="crayon-o">-</span><span class="crayon-i">p</span> <span class="crayon-cn">127.0.0.1</span><span class="crayon-o">:</span><span class="crayon-cn">9980</span><span class="crayon-o">:</span><span class="crayon-cn">9980</span> <span class="crayon-o">-</span><span class="crayon-i">e</span> <span class="crayon-s">'domain=172\\.17\\.206\\.167'</span> <span class="crayon-o">--</span><span class="crayon-e">restart </span><span class="crayon-v">always</span> <span class="crayon-o">--</span><span class="crayon-v">cap</span><span class="crayon-o">-</span><span class="crayon-e">add </span><span class="crayon-e">MKNOD </span>
 
<span class="crayon-v">collabora</span><span class="crayon-o">/</span><span class="crayon-v">code</span>
 
<div class="crayon-pre" style="line-height: 15px !important; font-size: 12px !important; -moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; tab-size: 4;"><div class="crayon-line" id="crayon-5c93df2f34f50429336560-1"><span class="crayon-e">sudo </span><span class="crayon-v">netstat</span> <span class="crayon-o">-</span><span class="crayon-v">lnpt</span></div>
<div class="crayon-line">
Active Internet connections (only servers)<br>Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name<br>tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      705/systemd-resolve<br>tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      908/sshd<br>tcp        0      0 127.0.0.1:9981          0.0.0.0:*               LISTEN      19752/loolwsd<br>tcp6       0      0 :::80                   :::*                    LISTEN      20306/apache2<br>tcp6       0      0 :::22                   :::*                    LISTEN      908/sshd<br>tcp6       0      0 :::9980                 :::*                    LISTEN      19752/loolwsd</div>
</div>
</div>
</div>
</div>
==Bluespice Mediawiki==
[https://hub.docker.com/_/mediawiki https://hub.docker.com/_/mediawiki]
[https://bluespice.com/download-bluespice/ Bluespice Download]
 
===Lösungsansatz===
Für Bluespice gibt es kein "offizielles" Docker Image und keine wirklich überzeugende Installationsanleitung. Es sollte aber möglich sein, von dem Docker Image von MediaWiki ein Bluespice Docker Image abzuleiten - einfach indem man das MediaWiki-Archiv gegen ein Bluespice-Archiv austausch.
 
Also versuchen wir erstmal, das Docker Image von Mediawiki zu installieren.
 
====2019-03-18====
''sudo docker pull mediawiki''
 
''sudo docker run --name mediawiki-1-31 --network=host -p 8080:80 -d mediawiki''
 
   > WARNING: Published ports are discarded when using host network mode <br />   ... hmm - das Thema mit dem Netzwerk, s.o.; für den Moment ignorieren wir das.
 
... :-) Mediawiki ist im Browser aufrufbar und der Installationsdialog läuft fehlerfrei durch; am Ende des Installationsdialogs wird die "LocalSettings.php" erstellt und muss nur noch in den Container hochgeladen werden.
 
Schau'n wir uns den Container erstmal an:
 
''sudo docker exec -i -t <container/b883b28be5a8> bash''
 
... und laden dann die LocalSetting.php hoch:
 
''sudo docker cp /home/ccom/LocalSettings.php <container/b883b28be5a8>:/var/www/html/LocalSettings.php''
 
... läuft :-)
 
====2019-04-06====
Für die Installation von Bluespice 3 sind anstelle der entsprechenden Anweisungen bzgl. MediaWiki die folgenden Anweisungen in das Dockerfile aufzunehmen:
 
# Install zip and unzip<br>RUN apt-get update && apt-get install zip unzip<br><br>ENV BLUESPICE_ZIP_FILE BlueSpice-free-3.0.1.zip<br><br>#RUN mkdir /var/www/html<br>ADD ${BLUESPICE_ZIP_FILE} /var/www/html/${BLUESPICE_ZIP_FILE}<br><br>RUN unzip /var/www/html/${BLUESPICE_ZIP_FILE} "bluespice/*" -d /var/www/html \<br>    && mv /var/www/html/bluespice/* /var/www/html \<br>    && rm -r /var/www/html/bluespice \<br>    && chown -R www-data:www-data /var/www/html/extensions /var/www/html/skins /var/www/html/cache /var/www/html/images \<br>    && rm /var/www/html/${BLUESPICE_ZIP_FILE}
Neben dem Dockerfile ist das Zip-Archiv mit Bluespice bereitzustellen.
 
 
... Erstellen des Images:
 
sudo docker build --tag bluespice .
... Erstellen des Containers:
 
sudo docker run --name bluespice -p 8080:80 -d mediawiki-20190406
... Command line des laufenden Containers:
 
sudo docker exec -i -t bash
... dann antwortet auf Port 8080 des Dockerhosts Bluespice mit dem Installationsdialog.
 
Bluespice bietet im Installationsdialog nicht die Verwendung einer "integrierten" Datenbank (SQLite o.ä.) an. Es muss für Bluespice also eine MySQL/MariaDB bereitgestellt werden.
 
==Konfiguration von Mail-Versand aus Container==
... z.B. über einen Office365-Account:
 
Hier ist eine angemessen einfache Lösung wohl die Verwendung der Utility sSMTP:
 
[https://www.kuerbis.org/2018/05/mailversand-mit-php-aus-einem-docker-container/ https://www.kuerbis.org/2018/05/mailversand-mit-php-aus-einem-docker-container/]
 
[http://linuxpitstop.com/install-ssmtp-to-send-emails-to-gmail-and-office3655/ http://linuxpitstop.com/install-ssmtp-to-send-emails-to-gmail-and-office3655/]
 
[https://docs.j7k6.org/ssmtp-office-365/ https://docs.j7k6.org/ssmtp-office-365/]
 
... eine besonders gute Beschreibung - Installation Ubuntu unter Hyper-V und Installation, Text sSMTP:
 
[https://decatec.de/home-server/linux-einfach-e-mails-senden-mit-ssmtp/ https://decatec.de/home-server/linux-einfach-e-mails-senden-mit-ssmtp/]
 
... und hier ein Beispiel (bzgl. WordPress), wie sSMTP im Dockerfile installiert wird:
 
[https://github.com/xgodon/RIG/blob/master/dockerized-apps/wordpress/Dockerfile https://github.com/xgodon/RIG/blob/master/dockerized-apps/wordpress/Dockerfile]
 
 
 
===... erfolgreich getestet (Ubuntu unter Hyper-V, noch außerhalb Docker)===
sudo nano /etc/ssmtp/ssmtp.conf
 
 #<br /> # Config file for sSMTP sendmail  #<br /> # The person who gets all mail for userids < 1000<br /> # Make this empty to disable rewriting.<br /> root=info@civilcommons.eu<br /><br /> # The place where the mail goes. The actual machine name is required no<br /> # MX records are consulted. Commonly mailhosts are named mail.domain.com<br /> mailhub=smtp.office365.com:587<br /><br /> # Where will the mail seem to come from?<br /> rewriteDomain=civilcommons.eu<br /><br /> # The full hostname<br /> #hostname=info@civilcommons.eu<br /> hostname=192.168.137.40<br /><br /> # Are users allowed to set their own From: address?<br /> # YES - Allow the user to specify their own From: address<br /> # NO - Use the system generated From: address<br /> FromLineOverride=YES<br /><br /> AuthUser=info@civilcommons.eu<br /> AuthPass=********<br /> UseTLS=YES <br /> UseSTARTTLS=YES
 
 
sudo <span class="crayon-v">nano</span> <span class="crayon-o">/</span><span class="crayon-v">etc</span><span class="crayon-o">/</span><span class="crayon-v">ssmtp</span><span class="crayon-o">/</span><span class="crayon-v">revaliases</span>
 
 # sSMTP aliases<br /> #<br /> # Format:       local_account:outgoing_address:mailhub<br /> #<br /> # Example: root:your_login@your.domain:mailhub.your.domain[:port]<br /> # where [:port] is an optional port number that defaults to 25.<br /> root:info@civilcommons.eu:smtp.office365.com:587<br /> ccom:info@civilcommons.eu:smtp.office365.com:587
 
 
 
 
 
<span class="crayon-v">echo -n 'Subject: test\n\nTesting ssmtp' | sendmail -v sfrenzel@kybeidos.de</span>
 
 [<-] 220 DB7PR04CA0019.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sun, 24 Mar 2019 19:35:17<br />   +0000<br /> [->] EHLO 192.168.137.40<br /> [<-] 250 SMTPUTF8<br /> [->] STARTTLS<br /> [<-] 220 2.0.0 SMTP server ready<br /> [->] EHLO 192.168.137.40<br /> [<-] 250 SMTPUTF8<br /> [->] AUTH LOGIN<br /> [<-] 334 VXNlcm5hbWU6<br /> [->] aW5mb0BjaXZpbGNvbW1vbnMuZXU=<br /> [<-] 334 UGFzc3dvcmQ6<br /> [<-] 235 2.7.0 Authentication successful<br /> [->] MAIL FROM:<info@civilcommons.eu><br /> [<-] 250 2.1.0 Sender OK<br /> [->] RCPT TO:<sfrenzel@kybeidos.de><br /> [<-] 250 2.1.5 Recipient OK<br /> [->] DATA<br /> [<-] 354 Start mail input; end with .<br /> [->] Received: by 192.168.137.40 (sSMTP sendmail emulation); Sun, 24 Mar 2019 19:35:18 +0000<br /> [->] From: "Civil Commons" <info@civilcommons.eu><br /> [->] Date: Sun, 24 Mar 2019 19:35:18 +0000<br /> [->]<br /> [->] .<br /> [<-] 250 2.0.0 OK <DB6PR07MB34805AC3E5BCE181980C278BCD5D0@DB6PR07MB3480.eurprd07.prod.outlook.com>  <br />   [Hostname=DB6PR07MB3480.eurprd07.prod.outlook.com]<br /> [->] QUIT<br /> [<-] 221 2.0.0 Service closing transmission channel
 
 
 
==Docker-Entwicklungsumgebung unter Windows==
Auch unter Windows sollte man einen virtualisierten Linux-Server als Docker-Host aufsetzen.
 
Das minimale Linux, das mit Docker-für-Windows installiert wird, ist definitiv nicht zu empfehlen.
 
Als Umgebung zur Bereitstellung virtueller Maschinen steht in Windows 10 Hyper-V zur Verfügung.
 
Auf unserer Nextcloud steht unter "https://share.civilcommons.eu/remote.php/webdav/Urban%20Data%20Space%20-%20Projekt/Digital%20Service%20Package/Development/Building%20Development%20Environment/HowTo_InstallLocalUbuntu_WIN10HYPERV_V02.txt" eine gute Anleitung, wie ein Linux-Server mit eigenem Netzwerk-Switch und statischer IP-Adresse aufgesetzt werden kann.
 
Falls bei der Installation noch keine statische IP angegeben wurde - der folgende Link beschreibt, wie's im Nachhinein konfiguriert werden kann:
 
[https://askubuntu.com/questions/1029531/how-to-setup-a-static-ip-on-ubuntu-server-18-04 Ubuntu 18 Static IP]
 
s.a. [https://decatec.de/home-server/ubuntu-server-als-hyper-v-gastsystem-installieren-und-optimal-einrichten/ https://decatec.de/home-server/ubuntu-server-als-hyper-v-gastsystem-installieren-und-optimal-einrichten/]
 
==NGINX Reverse Proxy==
[https://medium.com/@oliver.zampieri/self-signed-ssl-reverse-proxy-with-docker-dbfc78c05b41 Hier eine sehr gute und knappe Doku. wie NGINX als Reverse-Proxy aufgesetzt wird.]
 
Installation von NGINX auf Ubuntu 18: [https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04-quickstart Beschreibung]
 
Nach Anpassung der Konfiguration ...
 
<code>/etc/init.d/nginx restart</code>
 
 
 
==Migration==
===1===
MySQL, Nextcloud (ohne Collabora Office) und Bluespice 3 (mit Extensions) auf Docker
 
- noch ohne Übernahme von Content
 
===1.1===
Prüfung, ob WordPress mit UserPro-Plugin unproblematisch zu installieren ist
 
===1.2===
- mit Mailversand (sSMTP) in allen Images und Captcha in MediaWiki<br />- zugreifbar über Reverse Proxy<br />- neues Data-Verzeichnis von Nextcloud auf Data-Server<br />- auf Subdomains "share20", "publish20", "home20"
 
===1.3===
- ab hier alte Server "Read-only"<br />- Übernahme von Content auf neue Server (Move von Nextcloud-Verzeichnissen, Export/Import von MediaWiki-Content)
 
===2===
Collabora Office
 
===3===
KnowAge (auf FIWARE) mit MRN-Daten explore
 
===4===
Authentifizierung über OAuth2 - wobei idealerweise der OAuth2-Server ein Keyrock auf FIWARE ist.
BdB_Heidelberg, Bibliothek_KH, DAI_Makerspace_Projekt, Graphiken KF, Landfried, N_E_U_Project, Projekt_BdB_Heidelberg, Projekt_Civil_Commons, Projekt_Landfried, Projekt_OG, Team_UIEG_Heidelberg, Team_UIEV_Heidelberg, UIEG_Heidelberg, UIEV_Heidelberg, Bürokrat, Administrator, Widget-Bearbeiter
955
Bearbeitungen