close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Initial Version and Version 1 of AdminClientAufsetzen


Ignore:
Timestamp:
Apr 29, 2016, 3:32:45 PM (11 years ago)
Author:
Rüdiger Kupper
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdminClientAufsetzen

    v1 v1  
     1[[PageOutline]]
     2
     3= Aufsetzen eines Linuxmuster-Clients from scratch
     4
     5Hier werden Hinweise beschrieben, wie man einen völlig neuen Linuxmuster-Client im pädagogischen Netzwerk des Kepler-Gymnasiums aufsetzen kann. In der Regel wird man das nicht durchführen, sondern auf ein bestehendes Image aufbauen. Es kann jedoch Situationen geben, in denen ein frisches Image gewünscht wird.
     6
     7
     8
     9
     10----- ab hier unbearbeitet ------
     11
     12
     13
     14
     15== Edubuntu installieren
     16
     17- Ein aktuelles Edubuntu-Installations-ISO herunterladen und in das virtuelle DVD-Laufwerk der VM einhängen
     18- VM starten
     19- Sprache "Deutsch" auswählen
     20- ("Aktualisierungen herunterladen" lässt sich manges Proxy nicht auswählen, das machen wir später!)
     21- "Lizensierte Inhalte installieren" auswählen
     22- "LTSP installieren" auswählen und alle Pakete wähjlen
     23- Bei der Partitionswahl "etwas anderes" auswählen, dann wählen:
     24  - `/dev/vda1` als `/`
     25  - `/dev/vdb1` als Swap
     26- Nutzer "linadmin" mit dem zugehörigen Passwort
     27
     28Die Installation dauert nur wenige Minuten :-).
     29
     30- Installations-DVD aus dem virtuellen DVD-Laufwerk entfernen und den neuen Server booten.
     31
     32== Grundkonfiguration
     33
     34=== Netzwerk einrichten
     35
     36- über das VNC-Interface als lindamin einloggen
     37- die Auflösung und die Desktop-Dimensionen sind derzeit irrelevant.
     38- mittels `sudo -sH` root werden
     39- Unser neuer Server benötigt zuerst eine feste IP-Adresse im Kepler-Netzwerk.
     40  Hinweis:: Falls das terminal nicht lesbar ist (Proxmox-VNC-Problem), statt `editor` einfach `gedit` verwenden.
     41  {{{
     42  # editor /etc/network/interfaces
     43  }}}
     44  - Anpassen nach dem folgende Schema:
     45    Im Schülernetz::
     46    {{{
     47# The loopback network interface
     48auto lo
     49iface lo inet loopback
     50
     51# The primary network interface
     52auto eth0
     53#iface eth0 inet dhcp
     54iface eth0 inet static
     55        dns-nameservers 10.32.1.251
     56        dns-search kg-fds.de
     57        address 10.32.2.<ServerNummer>
     58        netmask 255.240.0.0
     59        gateway 10.32.1.254
     60    }}}
     61    Im Lehrernetz::
     62    {{{
     63# The loopback network interface
     64auto lo
     65iface lo inet loopback
     66
     67# The primary network interface
     68auto eth0
     69#iface eth0 inet dhcp
     70iface eth0 inet static
     71        dns-nameservers 10.16.112.2
     72        dns-search kg-fds.de
     73        address 10.16.112.<IP>
     74        netmask 255.255.254.0
     75        gateway 10.16.112.1
     76
     77# Die beiden folgenden Einträge erlauben den direkten Zugriff auf die
     78#  Schülernetzserver aus dem Lehrernetz heraus:
     79        post-up route add -net 10.32.0.0 netmask 255.240.0.0 gw 10.16.112.8
     80        post-down route del -net 10.32.0.0 netmask 255.240.0.0 gw 10.16.112.8
     81    }}}
     82
     83
     84 Die beiden letzten Einträge in der `interfaces`-Datei im Lehrernetz erlauben es, sich vom Lehrernetz direkt auf den Servern im Schülernetz einzuloggen: Über den proxmoxs.kg-fds.de (10.16.112.8) wird ein Routing vom grauen (Lehrer-) Netz ins grüne (Schüler-) Netz realisiert. Wenn man auf den ltspl-Servern eine Route für 10.32.0.0/12 einrichtet, kann man sich mit ssh ltsp[1..7] (wird vom shcp/dns aufgelöst) auf die ltsp-Server im Schülernetz einloggen.
     85
     86
     87
     88  - Server neu booten
     89
     90Ab jetzt ist unser neuer Server im Kepler-Netzwerk (und im VPN) unter `ssh linadmin@10.32.2.<ServerNummer>` erreichbar und hat Verbindung zum Internet.
     91(Das ssh-Paket wurde mit dem LTSP-Paket bereits installiert.)
     92
     93Natürlich soll unser neuer Server im Netzwerk auch einen Namen haben, daher
     94||=Im Schülernetz=||=Im Lehrernetz||
     95||In `paedml:/etc/hosts` einen Eintrag für "ltsp<ServerNummer>" eintragen und den dnsmasq neu starten.||Steht der neue Server im Lehrernetz, so gehört der Eintrag auf den Rechner `dhcp` (10.16.112.2): `dhcp:/etc/hosts`.||
     96- Dann den dnsmasq neu starten.
     97
     98=== Proxies setzen
     99
     100- Wir loggen uns per `ssh linadmin@ltsp<ServerNummer>` ein.
     101- Wir werden root mittels `sudo -sH`
     102- Wir starten am besten eine screen-Session mit `screen -RR <sessionname>`.
     103
     104==== Systemweiter Proxy
     105
     106 Im Schülernetz::
     107 Hier gibt es zwei Proxys, einen (kontrollierten) für Schüler und einen (transparenten) für Lehrer. Das beste, was man tun kann, ist, den Schülerproxy systemweit zu setzen. (Die Lehrer können später ihren Proxy individuell auf den Lehrerproxy (10.32.1.250:3128) konfigurieren.):
     108 {{{
     109 # echo >> /etc/environment http_proxy=http://10.32.1.251:3128/
     110 # echo >> /etc/environment https_proxy=https://10.32.1.251:3128/
     111 # echo >> /etc/environment ftp_proxy=ftp://10.32.1.251:3128/
     112 }}}
     113
     114 Im Lehrernetz::
     115 Hier gilt generell der BelWü-Proxy:
     116 {{{
     117 # echo >> /etc/environment http_proxy=http://129.143.4.2:8080/
     118 # echo >> /etc/environment https_proxy=https://129.143.4.2:8080/
     119 # echo >> /etc/environment ftp_proxy=ftp://129.143.4.2:8080/
     120 }}}
     121
     122Für beide Netze habe ich nun den DNS-Eintrag proxy.kg-fds.de auf dem lokalen DNS eingetragen, im Schülernetz wird dieser aufgelöst zu 10.32.1.251 im Lehrernetz zu 129.143.4.2, jeweils Port 8080 - Standardport ist auch auf dem Schülernetzproxy 3128 ODER 8080). Damit ist eine Standard-Config für beide Netze möglich:
     123
     124{{{
     125 # echo >> /etc/environment http_proxy=http://proxy.kg-fds.de:8080/
     126 # echo >> /etc/environment https_proxy=https://proxy.kg-fds.de:8080/
     127 # echo >> /etc/environment ftp_proxy=ftp://proxy.kg-fds.de:8080/
     128}}}
     129
     130
     131==== APT-Proxy
     132
     133Um unüberwachte Updates zu ermöglichen, muss außerdem APT einen durchlässigen Proxy konnen. Im Lehrernetz ist das ebenso der BelWü-Proxy, im Schülernetz haben wir hierfür einen speziellen APT-Proxy:
     134 
     135 Im Schülernetz::
     136 {{{
     137 # echo >> /etc/apt/apt.conf 'Acquire::http::Proxy "http://10.32.1.253:3128";'
     138 }}}
     139
     140 Im Lehrernetz::
     141 Hier gilt generell der BelWü-Proxy:
     142 {{{
     143 # echo >> /etc/apt/apt.conf 'Acquire::http::proxy "http://129.143.4.2:8080";'
     144 }}}
     145
     146Für beide Netze habe ich nun den DNS-Eintrag proxysw.kg-fds.de auf dem lokalen DNS eingetragen, im Schülernetz wird dieser aufgelöst zu 10.32.1.253 im Lehrernetz zu 129.143.4.2, jeweils Port 8080 - Standardport ist auch auf dem Schülernetzproxy 3128 ODER 8080). Damit ist eine Standard-Config für beide Netze möglich:
     147
     148{{{
     149 # echo >> /etc/apt/apt.conf 'Acquire::http::proxy "http://proxysw.kg-fds.de:8080";'
     150}}}
     151
     152
     153
     154=== SSH-Zugang einrichten
     155
     156- Pakete auf den neusten Stand bringen:
     157  {{{
     158  # apt-get update
     159  # apt-get dist-upgrade
     160  }}}
     161- Bevor wir irgend etwas weiteres beginnen, installieren wir einen Editor :-) :
     162  {{{
     163  # apt-get install emacs
     164  }}}
     165==== Root-Login ermöglichen
     166  {{{
     167  # passwd
     168  }}}
     169  - Den SSH-Schlüssel von `root@LTSP`, sowie die `known hosts` und `authorized_keys` von einem existierenden LtspServer auf unseren neuen Server schieben (Hinweis: seit 14.04 ist der root-Login defaultmäßig verboten, daher müssen wir im linadmin-Account zwischenspeichern):
     170 Im Schülernetz::
     171  - auf einem laufenden LtspServer als root einloggen, dort:
     172  {{{
     173  # rsync -a .ssh/ linadmin@ltsp<ServerNummer>:.ssh-root
     174  }}}
     175  - dann auf dem neuen Server als linadmin einloggen:
     176  {{{
     177  # sudo mv .ssh-root/ /root/.ssh
     178  # sudo chown --recursive root:root /root/.ssh
     179  }}}
     180 Im Lehrernetz:: (wie oben, aber auf paedml zwischenspeichern)
     181
     182Ab jetzt können sich kup, bau, root@paedml und root@LTSP mit ihren SSH-Schlüsseln einloggen.
     183
     184==== (Den Passwort-Login für Root unterbinden)
     185 Hinweis:: Der folgende Punkt ist ab 14.04 nicht mehr nötig, da default!
     186    {{{
     187  # emacs -nw /etc/ssh/sshd_config
     188  # service ssh force-reload
     189  }}}
     190  Option "`PermitRootLogin without-password`" setzen.
     191
     192
     193=== Filesysteme beim Boot automatisch reparieren
     194In `/etc/default/rcS` ändern:
     195{{{
     196FSCKFIX=yes
     197}}}
     198
     199=== Niemals am GRUB-Bootschirm warten
     200- In `/etc/default/grub` einfügen:
     201{{{
     202# This is a headless server. We never want it to wait for user input:
     203GRUB_RECORDFAIL_TIMEOUT=60
     204}}}
     205-  dann `update-grub` ausführen
     206
     207
     208An dieser Stelle bietet sich ein Backup der VM an.
     209
     210
     211
     212
     213== Zugriff auf den paedml
     214
     215=== Interne Firewall
     216
     217 Im Schülernetz (im Lehrernetz nicht nötig)::
     218
     219Damit der neue Server über alle Ports auf den paedml zugreifen darf (für LDAP, NFS, etc), muss dafür ein Eintrag in der Konfiguration der "internen Firewall" der Linuxmusterlösung eingefügt werden. (Siehe auch PaedmlAnpassungen.)
     220
     221In `paedml:/etc/init.d/linuxmuster-base`:
     222{{{
     223iptables -A IN-eth1-ALLOWED -s 10.32.2.<ServerNummer>/32 -j ACCEPT
     224}}}
     225
     226=== NFS-Anbindung
     227
     228Die Anbindung an verschiedene Serververzeichnisse geschieht bei uns momentan nur noch über CIFS. Das Setup ist aber noch immer im Fluss, siehe u.a. #1213, #1192.
     229
     230Momentan wird //gar kein Verzeichnis// über NFS gemountet (sondern "just in Time" beim Login per `pam_mount` über CIFS (s.u.). ** Es sind daher derzeit keine Eintragungen in `/etc/fstab` nötig! **
     231
     232- (In `/etc/fstab` hinzufügen (Hinweis: die `noauto` EInträge sind ein Workaround und können möglicherweise inzwischen entfallen, siehe #856):)
     233{{{
     234# Home ueber NFS:
     235#10.32.1.1:/nfsexport/home/students  /home/students               nfs    _netdev,bg,noauto             0       0
     236#10.32.1.1:/nfsexport/home/teachers  /home/teachers               nfs    _netdev,bg,noauto             0       0
     23710.32.1.1:/nfsexport/home/share     /home/share                  nfs    _netdev,bg,noauto             0       0
     23810.32.1.1:/nfsexport/tasks          /var/cache/sophomorix/tasks  nfs    _netdev,bg,noauto             0       0
     23910.32.1.1:/nfsexport/home/ftp/Scans /home/ftp/Scans              nfs    _netdev,bg,noauto             0       0
     24010.32.1.1:/nfsexport/home/cds       /home/cds                    nfs    _netdev,bg,noauto      0       0
     241}}}
     242- (Verzeichnisse anlegen, richtige Besitzrechte einstellen und mounten)
     243{{{
     244# mkdir -p /home/{students,teachers,share,ftp/Scans,cds} /var/cache/sophomorix/tasks
     245# chgrp teachers /home/teachers
     246# chmod o-r /home/teachers
     247# apt-get install nfs-common
     248# mount -a
     249}}}
     250
     251
     252
     253=== LDAP-Anbindung
     254
     255==== 1. Option: linuxmuster.net-Paket
     256Die einfachste Möglichkeit, die LDAP-Anbindung an den Linuxmuster.net-Server (paedml) einzurichten, wäre sicherlich, das entsprechende linuxmuster.net-Paket zu installieren (`linuxmuster-client-auth`). Die Pakete gibt es aber nur für die LTS-Versionen von Ubuntu. Befinden wir uns auf einer nicht-LTS-Version, müssen wir die Anbindung von Hand vornehmen.
     257
     258==== 2. Option: LDAP manuell konfigurieren
     259
     260- LDAP-Client-Pakete und Name Server Caching Daemon installieren
     261  {{{
     262  # apt-get install ldap-auth-client nscd
     263  }}}
     264|| ||=Im Schülernetz=||=Im Lehrernetz=||=In beiden Netzen=||
     265||=Server=|| `ldaps://10.32.1.1/` || `ldaps://10.16.112.4/` || `ldaps://paedml.kg-fds.de/`||
     266||=Distinguished name=|||||| `dc=kg-fds,dc=de` ||
     267||=LDAP-Version=|||||| 3 ||
     268||=Make local root Database admin=|||||| ja ||
     269||=LDAP-Login nötig=|||||| nein ||
     270||=LDAP account for root=|||||| cn=admin,dc=kg-fds,dc=de ||
     271||=LDAP-Root-Passwort=|||||| (siehe `paedml:/etc/ldap/slapd.conf`) ||
     272
     273- Wir verwenden innherhalb des Kepler-Netzwerkes keine Zertifikate für SSL-Verbindungen.\\
     274  Daher in `/etc/ldap.conf` ändern:
     275  {{{
     276  tls_checkpeer no
     277  }}}
     278- Nun dem [wikipedia:"Name Service Switch"] sagen, dass er die Nutzerinformationen über LDAP beziehen soll:\\
     279  In `/etc/nsswitch.conf` ändern:
     280  {{{
     281  passwd:         compat ldap
     282  group:          compat ldap
     283  shadow:         compat ldap
     284  }}}
     285
     286Ab jetzt könnten sich Nutzer des Kepler-Netzwerkes mit ihrem Nutzernamen und Passwort einloggen -- wenn sie ein Homeverzeichnis hätten. Sofern die Homeverzeichnisse nicht komplett über NFS gemountet werden, wird hierzu der Service `pam_mount` verwendet, der die Homeverzeichnisse //just in time// anlegt und mountet.
     287
     288
     289==== Userspace-LDAP-Unterstützung
     290
     291Außer für die Authentifizierung wollen wir auch LDAP-Anfragen an den paedml schicken, um z.B. Nutzernamen etc. abzufragen (viele unserer Skripte nutzen das). Hierfür werden die folgenden Pakete benötigt:
     292{{{
     293# apt-get install ldap-utils
     294}}}
     295Die Userspace-LDAP-Tools benutzen ein anderes Konfigurationsfile, als die Authentifizierungstools. In `/etc/ldap/ldap.conf` eintragen:
     296 Im Schülernetz::
     297 {{{
     298 BASE    dc=kg-fds,dc=de
     299 URI     ldaps://10.32.1.1/
     300 TLS_REQCERT never
     301 
     302 bind_policy soft
     303 }}}
     304 Im Lehrernetz::
     305 {{{
     306 BASE    dc=kg-fds,dc=de
     307 URI     ldaps://10.16.112.4/
     308 TLS_REQCERT never
     309 
     310 bind_policy soft
     311 }}}
     312
     313 In beiden Netzen:
     314 {{{
     315 BASE    dc=kg-fds,dc=de
     316 URI     ldaps://paedml.kg-fds.de/
     317 TLS_REQCERT never
     318 
     319 bind_policy soft
     320 }}}
     321
     322=== pam_mount konfigurieren (CIFS-Anbindung)
     323
     324Dieser Schritt wird nur benötigt, wenn die Homeverzeichnisse (wie bei der Linuxmuster.net üblich) //just in time// über CIFS gemountet werden. Die Sache ist noch immer in der Testphase.
     325{{{
     326# apt-get install libpam-mount cifs-utils
     327}}}
     328In `/etc/security/pam_mount.conf.xml` ändern/hinzufügen:
     329{{{
     330  <!-- Volume definitions --> 
     331  <volume options="rw,nosuid,nodev,iocharset=utf8,nobrl" mountpoint="~" path="%(USER)" server="paedml" fstype="cifs" >
     332      <not>
     333        <uid>0-5000</uid>
     334      </not>
     335  </volume>
     336  }}}
     337
     338Nach einem Reboot können sich Nutzer des Kepler-Netzwerkes mit Nutzername und Passwort einloggen und sehen ihr Homeverzeichnis.
     339
     340
     341== LightDM konfigurieren
     342
     343LightDM-Optionen setzen. Z.B. muss die Eingabe eines Benutzernamens erlaubt werden. Die Gast-Sitzung sollte deaktiviert sein. Hier kann auch die voreingestellte Sitzung gewählt werden:
     344
     345In `/etc/lightdm/lightdm.conf`:
     346  {{{
     347  [SeatDefaults]
     348  user-session=gnome-flashback
     349  greeter-hide-users=false
     350  greeter-show-manual-login=true
     351  greeter-allow-guest=false
     352  }}}
     353
     354Um Zugriff per XDMCP zu aktivieren (derzeit noch experimentell) außerdem:
     355  {{{ 
     356  [XDMCPServer]
     357  enabled=true
     358  }}}
     359- dann
     360  {{{
     361  # restart lightdm
     362  }}}
     363
     364
     365== Software
     366
     367Einige zusätzliche Software muss installiert und konfiguriert werden.
     368
     369=== Nur 14.04: Synapse aus den Saucy-Quellen
     370
     371Aufgrund veralteter Abhängigkeiten, ist der synapse-Launcher aus dem Debia-Repository herausgeflogen, und damit auch aus den Ubuntu-Quellen. Es gibt keinen technischen Defekt, die Entwickler haben einfach versäumt, ihre Abhängigkeiten zu aktualisieren. Solange das Paket in den Trusty-Quellen nicht verfügbar ist, kann das Paket aus den Saucy-Quellen verwendet werden.
     372
     373Dazu werden die Saucy-Paketquellen eingetragen:
     374{{{
     375# cat > /etc/apt/sources.list.d/saucy.list <<EOF
     376deb http://de.archive.ubuntu.com/ubuntu/ saucy main restricted
     377deb-src http://de.archive.ubuntu.com/ubuntu/ saucy main restricted
     378
     379deb http://de.archive.ubuntu.com/ubuntu/ saucy-updates main restricted
     380deb-src http://de.archive.ubuntu.com/ubuntu/ saucy-updates main restricted
     381
     382deb http://de.archive.ubuntu.com/ubuntu/ saucy universe
     383deb-src http://de.archive.ubuntu.com/ubuntu/ saucy universe
     384deb http://de.archive.ubuntu.com/ubuntu/ saucy-updates universe
     385deb-src http://de.archive.ubuntu.com/ubuntu/ saucy-updates universe
     386
     387deb http://de.archive.ubuntu.com/ubuntu/ saucy multiverse
     388deb-src http://de.archive.ubuntu.com/ubuntu/ saucy multiverse
     389deb http://de.archive.ubuntu.com/ubuntu/ saucy-updates multiverse
     390deb-src http://de.archive.ubuntu.com/ubuntu/ saucy-updates multiverse
     391
     392deb http://de.archive.ubuntu.com/ubuntu/ saucy-backports main restricted universe multiverse
     393deb-src http://de.archive.ubuntu.com/ubuntu/ saucy-backports main restricted universe multiverse
     394
     395deb http://security.ubuntu.com/ubuntu saucy-security main restricted
     396deb-src http://security.ubuntu.com/ubuntu saucy-security main restricted
     397deb http://security.ubuntu.com/ubuntu saucy-security universe
     398deb-src http://security.ubuntu.com/ubuntu saucy-security universe
     399deb http://security.ubuntu.com/ubuntu saucy-security multiverse
     400deb-src http://security.ubuntu.com/ubuntu saucy-security multiverse
     401EOF
     402}}}
     403Anschließend werden Pakete, die in den Trusty-Quellen nicht existieren, aus den Saucy-Quellen genommen. Daher wird synapse wie weiter unten beschrieben, dann aus den Saucy-Quellen geholt. Sollte später eine neuere Version in Trusty auftauchen, hat diese automatisch Priorität.
     404
     405
     406=== Plank
     407Dazu muss derzeit noch [http://wiki.go-docky.com/index.php?title=Plank:Installing#Packages ein PPA aktiviert werden]:
     408
     409 Im Schülernetz::
     410 {{{
     411 export http_proxy=http://10.32.1.253:3128
     412 export https_proxy=https://10.32.1.253:3128
     413 }}}
     414 Im Lehrernetz::
     415 {{{
     416 export http_proxy=http://129.143.2.4:8080
     417 export https_proxy=https://129.143.2.4:8080
     418 }}}
     419dann:
     420{{{
     421# add-apt-repository ppa:ricotz/docky # <- is not a typo
     422# apt-get update
     423# apt-get install plank
     424# cp /usr/share/applications/plank.desktop /etc/xdg/autostart/
     425# ### das folgende scheint unter 14.04 nicht mehr zu klappen (startet nie!)
     426# ###echo "OnlyShowIn=GNOME;" >> /etc/xdg/autostart/plank.desktop
     427}}}
     428Konfiguration in `~/.config/plank/dock1/settings`.
     429
     430
     431=== Weitere Software:
     432  {{{
     433  # apt-get install aptitude apt-listchanges debfoster dconf-editor subversion finger enigmail {thunderbird,firefox}-locale-de libreoffice-l10n-de libreoffice-help-de fonts-crosextra-caladea fonts-crosextra-carlito geogebra nautilus-dropbox synapse virtualbox remmina-plugin-xdmcp vlc texlive texlive-latex-extra texlive-lang-{german,french,english,spanish} auctex gedit-latex-plugin texmaker ubuntu-restricted-extras mesa-utils audacity stellarium wine pptview hamster-indicator ardesia xournal xaralx mypaint krita codeblocks pingus hedgewars gnome-activity-journal freemind kdenlive pitivi gnome-clocks
     434  }}}
     435
     436=== Dropbox-Daemon manuell installieren
     437Normalerweise lädt Dropbox beim ersten Start (oder durch den AUfruf `dropbox start -i`) den Dropbox-Daemon automatisch herunter. Das funktioniert derzeit hinter Firewalls offenbar nicht. So installiert man den Daemon manuell:
     438
     439 Hinweis:: Der Daemon startet dennoch nicht, Grund unbekannt. Derzeitige Lösung: Das Verzeichnis `/var/lib/dropbox/.dropbox-dist` per rsync von einem funktionierenden Server kopieren.
     440
     441{{{
     442# cd /var/lib/dropbox/
     443# wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar --no-same-owner -xzf -
     444}}}
     445Ev. muss zuvor die `http(s)`-Umgebungsvariable mit Nutzer und Passwort gesetzt werden.
     446
     447Das lädt den Daemon herunter und packt ihn in das Verzeichnis `.dropbox-dist` aus. Danach kann man Dropbox verwenden.
     448
     449=== Evernote-Client installieren
     450Siehe ticket:1761.
     451
     452
     453=== Google Earth
     454GE gibt es nicht in den Ubuntu-Paketquellen (logisch). Es gibt aber ein Paket, dass die Installationsdatei von Google herunterlädt und ein *.deb-Paket daraus baut:
     455{{{
     456# apt install googleearth-package
     457}}}
     458- Dann die `http_proxy`-Variable setzen (am besten auf den Lehrerproxy)
     459- Dann `make-googleearth-package --force --ceanup` aufrufen.
     460- Abhängigkeiten von Hand installieren und dann googleearth-Paket installieren:
     461{{{
     462# apt install lsb-core libfreeimage3
     463# dpkg -i <angegebener-Paketname>
     464}}}
     465
     466=== Backports der neueren Gnome-Session aktivieren
     467
     468 Hinweis:: Dieser Vorgang wird hoffentlich mit einer späteren Ubuntu-Version überflüssig, die neuere Versionen von Gnome-Session enthält. Derzeit (Trusty 14.04 LTS) ist er noch nötig!
     469
     470Bisher arbeiteten unsere Clients noch nie mit aktivierter Grafikbeschleunigung, die war stets durch einen entprechenden Eintrag in der lts.conf deaktiviert. Ab Saucy funktionierte nicht einmal der Start der Gnome-Session mit aktivierter Beschleunigung (endlos drehendes Cursor-Rad). Nach langem suchen habe ich endlich jemanden gefunden, der das Problem ebenfalls beschreibt, siehe #1514 bzw. launchpad:1251281.
     471
     472Wir wollen aus diesem PPA nur auf spezielle Anfrage Pakete erhalten:
     473{{{
     474# sudo add-apt-repository ppa:eugenesan/ppa
     475# apt-get update
     476# apt-get dist-upgrade
     477}}}
     478
     479
     480=== Nur vorübergehend: Logout-Workaround
     481
     482 Hinweis:: Diese Prozedur wird hoffentlich bald nicht mehr nötig sein:
     483
     484Die eben beschriebenen Backports bringen einen weiteren Bug mit ins Boot: Der Logout von der Gnome-Session über den normalen Logout-Knopf funktioniert derzeit nicht. Ich habe einen kleinen Logout-Starter geschrieben, das das Problem umgeht:
     485
     486{{{
     487# cd /root
     488# svn update LTSP-setup
     489#  cp LTSP-setup/logout-workaround.desktop /usr/share/applications/
     490}}}
     491
     492Dieser Starter sollte in die Plank-Leiste gelegt werden bzw. ins Gnome-Panel oder auf den Desktop.
     493
     494
     495
     496== Hintergrundbild
     497
     498Das Default-Hintergrundbild, das mit Edubuntu kommt ändern:
     499{{{
     500# cd /usr/share/backgrounds
     501# rm edubuntu_default.{png,jpg}
     502# ln -s <hintergrundbild.jpg> edubuntu_default.png
     503# ln -s <hintergrundbild.jpg> edubuntu_default.jpg
     504}}}
     505Achtung, die Hintergründe werden seit einiger Zeit in den Homes der Nutzer gecached. Der Cache muss gelöscht werden, sonst wird das Bild aus dem Cache genommen. Dazu wird am besten **auf dem paedml** ausgeführt (Achtung, Vorsicht walten lassen):
     506{{{
     507paedml# for h in $(teacherhomes) $(studenthomes) ; do rm -r $h/.cache/wallpaper/ ; done
     508}}}
     509Damit sollten alle Nutzer, die kein spezielles Bild ausgewählt hatten, das Salamanderbild erhalten.
     510
     511
     512== Vorgaben für Gnome-Settings (dconf) einrichten
     513
     514 Hinweis:: Derzeit wir der logout-Workaround als Logout-Knopf verwendet. Wenn irgendwann der eingebaute Logout-Knopf wieder funktioniert, kann wieder dieser verwendet werden (siehe auskommentierte Teile).
     515
     516- User-Datenbank einrichten und erzeugen:
     517  {{{
     518  # cat > /etc/dconf/profile/user <<EOF
     519  user-db:user
     520  system-db:site
     521  EOF
     522  }}}
     523  {{{
     524  # mkdir /etc/dconf/db/site.d
     525  # cat > /etc/dconf/db/site.d/00_site_settings <<EOF
     526[org/gnome/metacity]
     527compositing-manager=true
     528
     529[com/ubuntu/update-notifier]
     530auto-launch=false
     531hide-reboot-notification=true
     532no-show-notifications=true
     533show-apport-crashes=false
     534
     535[apps/indicator-session]
     536suppress-restart-menuitem=true
     537suppress-shutdown-menuitem=true
     538
     539[com/canonical/unity/launcher]
     540favorites=['application://nautilus-home.desktop','application://gnome-activity-journal.desktop','application://firefox.desktop','application://libreoffice-writer.desktop','application://libreoffice-calc.desktop','application://libreoffice-impress.desktop','unity://running-apps','unity://expo-icon','unity://devices']
     541
     542# turn on the desktop switcher
     543[org/compiz/profiles/unity/plugins/core]
     544hsize=2
     545vsize=2
     546
     547# turn off curser plugin in gnome-settings-daemon, see ticket:1212
     548[org/gnome/settings-daemon/plugins/cursor]
     549active=false
     550
     551# set default keyboard layout from "de-nodeadkeys" to "de", see ticket:1217
     552[org/gnome/desktop/input-sources]
     553sources=[('xkb', 'de'), ('xkb', 'de+nodeadkeys')]
     554
     555# set (and lock) gnome panel contents
     556[org/gnome/gnome-panel/layout]
     557#object-id-list=['menu-bar','indicators','logout-button','workspace-switcher']
     558object-id-list=['menu-bar','indicators','workspace-switcher','launcher']
     559toplevel-id-list=['top-panel']
     560
     561[org/gnome/gnome-panel/layout/objects/indicators]
     562object-iid='IndicatorAppletCompleteFactory::IndicatorAppletComplete'
     563pack-index=0
     564pack-type='end'
     565toplevel-id='top-panel'
     566
     567# [org/gnome/gnome-panel/layout/objects/logout-button]
     568# object-iid='PanelInternalFactory::ActionButton:logout'
     569# pack-index=0
     570# pack-type='end'
     571# toplevel-id='top-panel'
     572
     573[org/gnome/gnome-panel/layout/objects/menu-bar]
     574object-iid='PanelInternalFactory::MenuBar'
     575pack-index=0
     576toplevel-id='top-panel'
     577
     578[org/gnome/gnome-panel/layout/objects/workspace-switcher]
     579object-iid='WnckletFactory::WorkspaceSwitcherApplet'
     580pack-index=1
     581pack-type='start'
     582toplevel-id='top-panel'
     583
     584[org/gnome/gnome-panel/layout/objects/launcher]
     585object-iid='PanelInternalFactory::Launcher'
     586pack-index=0
     587pack-type='end'
     588toplevel-id='top-panel'
     589
     590[org/gnome/gnome-panel/layout/objects/launcher/instance-config]
     591location='/usr/share/applications/logout-workaround.desktop'
     592
     593[org/gnome/gnome-panel/layout/toplevels/top-panel]
     594expand=true
     595orientation='top'
     596size=24
     597expand=true
     598auto-hide=false
     599enable-buttons=false
     600
     601[org/gnome/gnome-panel/lockdown]
     602locked-down=true
     603
     604[org/gnome/desktop/screensaver]
     605lock-enabled=false
     606
     607[org/gnome/clocks/state/window]
     608panel-id='timer'
     609EOF
     610  }}}
     611  {{{
     612  # mkdir /etc/dconf/db/site.d/locks
     613  # cat > /etc/dconf/db/site.d/locks/00_site_locks <<EOF
     614/org/gnome/metacity/compositing-manager
     615
     616/com/ubuntu/update-notifier/auto-launch
     617
     618/apps/indicator-session/suppress-shutdown-menuitem
     619/apps/indicator-session/suppress-restart-menuitem
     620
     621/org/gnome/settings-daemon/plugins/cursor/active
     622
     623/org/gnome/desktop/input-sources/sources
     624
     625/org/gnome/gnome-panel/layout/object-id-list
     626/org/gnome/gnome-panel/layout/toplevel-id-list
     627
     628/org/gnome/gnome-panel/layout/objects/indicators/object-iid
     629/org/gnome/gnome-panel/layout/objects/indicators/pack-index
     630/org/gnome/gnome-panel/layout/objects/indicators/pack-type
     631/org/gnome/gnome-panel/layout/objects/indicators/toplevel-id
     632
     633#/org/gnome/gnome-panel/layout/objects/logout-button/object-iid
     634#/org/gnome/gnome-panel/layout/objects/logout-button/pack-index
     635#/org/gnome/gnome-panel/layout/objects/logout-button/pack-type
     636#/org/gnome/gnome-panel/layout/objects/logout-button/toplevel-id
     637
     638/org/gnome/gnome-panel/layout/objects/menu-bar/object-iid
     639/org/gnome/gnome-panel/layout/objects/menu-bar/pack-index
     640/org/gnome/gnome-panel/layout/objects/menu-bar/toplevel-id
     641
     642/org/gnome/gnome-panel/layout/objects/workspace-switcher/object-iid
     643/org/gnome/gnome-panel/layout/objects/workspace-switcher/pack-index
     644/org/gnome/gnome-panel/layout/objects/workspace-switcher/pack-type
     645/org/gnome/gnome-panel/layout/objects/workspace-switcher/toplevel-id
     646
     647/org/gnome/gnome-panel/layout/objects/launcher/object-iid
     648/org/gnome/gnome-panel/layout/objects/launcher/pack-index
     649/org/gnome/gnome-panel/layout/objects/launcher/pack-type
     650/org/gnome/gnome-panel/layout/objects/launcher/toplevel-id
     651
     652/org/gnome/gnome-panel/layout/objects/launcher/instance-config/location
     653
     654/org/gnome/gnome-panel/layout/toplevels/top-panel/expand
     655/org/gnome/gnome-panel/layout/toplevels/top-panel/orientation
     656/org/gnome/gnome-panel/layout/toplevels/top-panel/size
     657/org/gnome/gnome-panel/layout/toplevels/top-panel/auto-hide
     658/org/gnome/gnome-panel/layout/toplevels/top-panel/expand
     659/org/gnome/gnome-panel/layout/toplevels/top-panel/enable-buttons
     660
     661/org/gnome/gnome-panel/lockdown/locked-down
     662
     663/org/gnome/desktop/screensaver/lock-enabled
     664EOF
     665}}}
     666{{{
     667# dconf update
     668}}}
     669
     670
     671== (Vorgaben für GConf einrichten)
     672
     673Nachdem Docky nicht mehr verwendet wird, benötigen wir keine Vorgaben mehr, die über das klassiche GCOnf verteilt werden.
     674
     675== (pam_systemd)
     676
     677**Diese Maßnahme scheint nicht benötigt zu werden. Der neu aufgesetzte Server läuft auc mit aktiviertem pam_systemd prächtig!**
     678
     679(ev. pam_systemd abschalten, siehe #1208)
     680
     681
     682== Timeserver
     683
     684- ntpd installieren (zuverlässiger als das mitgelieferte `ntpdate`, siehe `man ntpdate`)
     685  {{{
     686  # apt-get install ntp
     687  }}}
     688- in `/etc/ntp.conf` alle `server`-Zeilen auskommentieren, dann einfügen:
     689
     690  Im Schülernetz::
     691  {{{
     692  server ntp.kg-fds.de
     693  restrict 10.32.0.0 mask 255.240.0.0
     694  }}}
     695
     696  Im Lehrernetz::
     697  {{{
     698  server ntp.kg-fds.de
     699  restrict 10.16.112.0 mask 255.255.254.0
     700  }}}
     701
     702  (Der Name `ntp.kg-fds.de` wird im Schüler- wie Lehrernetz zu einer geeigneten Adresse aufgelöst.)
     703
     704- dann
     705  {{{
     706  # service ntp restart
     707  }}}
     708
     709
     710
     711== Skripte in `/usr/local/sbin`
     712{{{
     713# rmdir /usr/local/sbin/
     714# svn checkout svn+ssh://root@paedml/srv/svn/keplertools/scripts/trunk/ /usr/local/sbin/
     715}}}
     716
     717
     718== Autostart-Skripte
     719
     720=== Synapse automatisch starten
     721{{{
     722# cat > /etc/xdg/autostart/synapse.desktop <<EOF
     723[Desktop Entry]
     724Name=Synapse
     725Exec=synapse --startup
     726Encoding=UTF-8
     727Type=Application
     728X-GNOME-Autostart-enabled=true
     729Icon=synapse
     730EOF
     731}}}
     732
     733=== LTSP-startup-Skript
     734Das Skript `ltsp-startup` zeigt beim Login den Inhalt der Datei `/etc/ltsp-motd` an, sofern vorhanden:
     735{{{
     736# cat > /etc/xdg/autostart/ltsp-startup.desktop <<EOF
     737[Desktop Entry]
     738Type=Application
     739Exec=ltsp-startup
     740Hidden=false
     741NoDisplay=false
     742X-GNOME-Autostart-enabled=true
     743Name=LTSP startup script
     744Comment=Skript, das beim Einloggen an LTSP-Clients ausgeführt wird.
     745EOF
     746}}}
     747
     748=== (Zeitgeist deaktivieren(?))
     749
     750**Dieser Schritt scheint nicht weiter benötigt zu werden. Der neu aufgesetzte Server läuft prima mit aktivierterm Zeitgeist!**
     751
     752(Ev. die Datei `zeitgeist-datahub.desktop` aus `/etc/xdg/autostart/` entfernen oder in ein anderes Unterverzeichnis verschieben.
     753
     754
     755== Cronskripte
     756
     757=== globale Crontab
     758
     759In `/etc/crontab` **und** `/etc/anacrontab` muss der Proxy eingetragen werden, damit der flashplugin-installer seine Datei herunterladen kann:
     760
     761Im oberen Bereich von `/etc/crontab` **und** `/etc/anacrontab`:
     762
     763 Im Schülernetz::
     764 {{{
     765 # package flashplugin-installer needs to know the proxy:
     766 # note: put this into /etc/anacrontab, too, if anacron is installed
     767 http_proxy=http://10.32.1.253:3128
     768 }}}
     769 
     770 Im Lehrernetz::
     771 {{{
     772 # package flashplugin-installer needs to know the proxy:
     773 # note: put this into /etc/anacrontab, too, if anacron is installed
     774 http_proxy=http://129.143.4.2:8080
     775 }}}
     776
     777**Der folgende Schritt wird viell. nicht mehr benötigt, derzeit läuft der neue Server gut ohne dieses Skript:**
     778TODO(?):
     779Derzeit ist in der crontab außerdem das Skript eingetragen, das hängende Bind-Mounts entfernt (kann in Zukunft hoffentlich entfallen):
     780
     781Unten in `/etc/crontab` anfügen:
     782{{{
     783*/10 7-19 * * * root kepler--umount_cifs -f -m
     784}}}
     785
     786=== (Kepler-spezifische Cronskripte)
     787
     788(Derzeit stehen auf den LTSP-Servern //keine// Kepler-spezifischen Skripte in `/etc/cron.{hourly,daily,weekly,monthly}`.)
     789
     790
     791== Mountall-Workaround in `/etc/rc.local`
     792
     793**Dieser Workaround wird vermutlich nicht mehr benötigt! Der neue Server scheint auch ohne gut zu booten.**
     794
     795(Wenn nötig, in `/etc/fstab` die NFS-Mounts mit dem Flag `noauto` versehen und in `/etc/rc.local` das Skript `kepler--mountall-workaround` aufrufen.)
     796
     797Querverweis: #856
     798
     799
     800== Herunterfahren unterbinden
     801
     802**Achtung! Dieser Punkt steht im Verdacht, für die !Login/Logout-Probleme auf den LtspServern verantwortlich zu sein! Vorerst lieber auslassen!**
     803
     804Obwohl mittels dconf bereits der //Shutdown// und der //Restart-Eintrag// aus dem Systemmenü ausgeblendet wurde, ist es sinnvoll, normalen Nutzern prinzipiell diese Rechte wegzunehmen. (Einerseits, weil es vielleicht einen anderen Weg als das Systemmenü gibt, an diese Optionen zu gelangen. Andererseits, weil dconf derzeit (noch?) nicht das Ausblenden des //Suspend//-Eintrags erlaubt.)
     805
     806Das ist bequem über ein policykit-Konfigurationsfile möglich:
     807
     808{{{
     809  # cat > /etc/polkit-1/localauthority/90-mandatory.d/kepler--disable-shutdown-restart-suspend-hibernate.pkla <<EOF
     810[Disable shutdown/whatever]
     811Identity=unix-user:*
     812Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
     813ResultAny=no
     814ResultInactive=no
     815ResultActive=no
     816EOF
     817}}}
     818(Querverweise: http://askubuntu.com/questions/93542/how-to-disable-shutdown-reboot-suspend-hibernate/93956#93956, #215)
     819
     820
     821== Postfix
     822
     823Vom neuen Server soll Mail an die Nutzer des Kepler-Netzwerkes zu verschicken sein. Insbesondere soll Mail an `root` nicht auf dem lokalen Server stecken bleiben, sondern an den paedml weitergeschickt werden. Dazu muss ein MTA installiert werden, wir nutzen Postfix:
     824- Paket `postfix` installieren (falls noch nicht geschehen)
     825  {{{
     826  # apt-get install postfix
     827  }}}
     828- Nicht alle nötigen Optionen werden bei der Installation abgefragt, daher nach der Installation noch einmal ein `dpkg-reconfigure postfix` machen. Postfix muss so konfiguriert werden, dass er alle Mail an den paedml weiterschickt:
     829  {{{
     830  # dpkg-reconfigure postfix
     831  }}}
     832  - "Satellitensystem" wählen
     833  - System-Emailendung: `kg-fds.de`
     834  - Relayhost: `paedml.kg-fds.de`
     835  - Empfänger für Mails an `root` und `postmaster`: `root@kg-fds.de`
     836  - alle anderen Einstellungen können unverändert übernommen werden.
     837- Testmails verschicken, an:
     838  - `<nutzer>`
     839  - `<nutzer>@kg-fds.de`
     840  - `root`
     841
     842 Hinweis:: Bei virtualisierten Servern sollte ein MTA auch auf dem Virtualisierungshost installiert sein, damit auch der root@paedml erreicht. (Z.B. für SMART-Statusmeldungen, siehe nächster Punkt)
     843
     844== SMART
     845
     846 Hinweis:: Bei virtualisierten Servern ist es wohl sinnvoller, SMART auf dem Virtualisierungshost zu konfigurieren, nicht in der VM.
     847
     848 Auf der neuen Maschine //bzw. auf dem Virtualisierungshost//::
     849 - Vorgehen wie unter AdminSmart beschrieben
     850 
     851
     852
     853== Nagios auf paedml anpassen
     854
     855- **Auf dem paedml** in `/etc/nagios3/conf.d/linuxmuster_custom.cfg` entsprechende Einträge per copy-and-paste erstellen, die den neuen Server auf Lebenszeichen testen.
     856- Ist die neue Maschine virtualisiert, zwei Einträge erstellen, sowohl für den Virtualisierungshost wie auch die VM.
     857
     858
     859== LTSP einrichten
     860
     861=== LTSP-Client-Image
     862
     863- Wenn während der Installation von Edubuntu die Option LTSP ausgewählt wurde, sind die nötigen Pakete schon installiert. Dann wurde auch bereits ein Client-Image erzeugt, das für uns ungeeignet ist und entfernt werden sollte:
     864 {{{
     865 # rm -r /etc/ltsp/*
     866 # rm -r /opt/ltsp/*
     867 }}}
     868
     869- Dann weiter wie unter LtspServerUpdate#ltsp-build-client beschrieben.
     870
     871
     872=== dnsmasq
     873
     874Auf den LtspServern läuft ein `dnsmasq`, der die DHCP-Anfragen der Clients beantwortet. Die Antwort beinhaltet dann den TFT-Server, von dem der Client seinen Netzwerkbootprozess fortsetzt.
     875
     876- Unser neuer Server benötigt das Verzeichnis `/etc/linuxmuster`:
     877  {{{
     878  # mkdir /etc/linuxmuster
     879  }}}
     880- dann:
     881  {{{
     882  # apt-get install dnsmasq
     883  # ln -s /etc/linuxmuster/ltsp_config /etc/dnsmasq.d/
     884  }}}
     885- In `/etc/default/dnsmasq` ändern:
     886  {{{
     887  CONFIG_DIR=/etc/dnsmasq.d/ltsp_config/$(hostname)/conf,.dpkg-dist,.dpkg-old,.dpkg-new
     888  }}}
     889
     890=== make_ltsp_config-Skript
     891
     892Auf dem paedml muss ein Verzeichnis für die DHCP-Config des neuen Servers angelegt werden:
     893
     894 Auf dem paedml::
     895  {{{
     896  # mkdir -p /etc/linuxmuster/ltsp_config/ltsp<ServerNummer>/
     897  }}}
     898
     899Das Skript `make_ltsp_config`, das die zu beantwortenden DHCP-Anfragen festlegt, muss um den Hostnamen des neuen Servers erweitert werden:\\
     900Auf dem paedml die passenden Anpassungen vornehmen (Schleifen):
     901  {{{
     902  # emacs -nw /usr/local/sbin/make_ltsp_config
     903  # emacs -nw /usr/local/sbin/make_ltsp_config.php
     904  # svn commit /usr/local/sbin/make_ltsp_config*
     905  # make_ltsp_config
     906  }}}
     907
     908=== TFT-Boot einrichten
     909
     910- Da die Datei `/var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default` bei jedem Update des Client-Images überschrieben wird, verwenden wir eine Datei namens `0A`, was dem ersten Byte der IP-Adresse unseres Netzwerks entspricht (10.*.*.*). Diese erhält Vorrang vor `default`. Also:\\
     911Datei `/var/lib/tftpboot/ltsp/i386/pxelinux.cfg/0A` erzeugen, mit Inhalt
     912
     913 Im Schülernetz::
     914{{{
     915default keplerltsp
     916label keplerltsp
     917kernel vmlinuz
     918append ro initrd=initrd.img nbdroot=10.32.2.<ServerNummer>:/opt/ltsp/i386 root=/dev/nbd0 init=/sbin/init-ltsp quiet splash plymouth:force-splash vt.handoff=7
     919}}}
     920
     921 Im Lehrernetz::
     922{{{
     923default keplerltsp
     924label keplerltsp
     925kernel vmlinuz
     926append ro initrd=initrd.img nbdroot=10.16.112.<ServerIP>:/opt/ltsp/i386 root=/dev/nbd0 init=/sbin/init-ltsp quiet splash plymouth:force-splash vt.handoff=7
     927}}}
     928
     929=== Automatisches Herunterfahren der Clients beim Server-Shutdown
     930
     931Das Herunterfahren des Servers hat katastrophale Auswirkungen auf laufende Clients. Die Clients müssen also sauber abgeschaltet werden, bevor der Server neu gebootet werden kann.
     932Derzeit verwenden wir einen Polling-Mechanismus, mit dem die Clients bei "ihrem" Server regelmäßig anfragen, ob sie herunterfahren sollen. Dieser Dienst wird über `inetd` auf Port 2001 zur Verfügung gestellt:
     933{{{
     934# cat >> /etc/inetd.conf <<EOF
     9352001           stream  tcp     nowait  nobody /usr/sbin/tcpd /bin/cat /etc/ltsp-message
     936EOF
     937}}}
     938
     939Um diese "shutdown"-Nachricht zu setzen, verwenden wir das sehr schöne "Molly-Guard". Per Default verhindert das versehentliches Herunterfahren. Wir verwenden es hier so:
     940{{{
     941# apt-get install molly-guard
     942# cd /etc/molly-guard/run.d
     943# mv 30-query-hostname disabled--30-query-hostname
     944}}}
     945{{{
     946# cat > 30-kepler--ask-confirmation <<"EOF"
     947#!/bin/bash
     948
     949echo "This will shut down all my LTSP clients and reboot this server.
     950  Note: Don't do this while people are logged in on the clients,
     951        or they will kill you. You have been warned."
     952
     953read -n1 -p "Is this really what you want to do (y/n)? " answer
     954echo
     955
     956if [[ $answer == "y" ]] ; then
     957    exit 0
     958else
     959    exit 1
     960fi
     961EOF
     962}}}
     963{{{
     964# cat > 40-kepler--shutdown-my-clients <<EOF
     965#!/bin/bash
     966
     967if [[ $(id -u) != 0 ]] ; then
     968    echo $0: Need to be root
     969    exit 1
     970fi
     971
     972shutdownclients --mine
     973
     974exit $?
     975EOF
     976}}}
     977{{{
     978# chmod a+x 30-kepler--ask-confirmation
     979# chmod a+x 40-kepler--shutdown-my-clients
     980# chmod a-x disabled--30-query-hostname
     981}}}
     982
     983Geht beim Shutdown etwas schief, darf die Shutdown-Message nicht in der Datei `/etc/ltsp-message` stehen bleiben, weil sonst die Clients direkt nach dem Start wieder herunterfahren (ticket:1114). Die Datei sollte daher bei jedem Boot geleert werden.
     984
     985Dazu in /etc/rc.local die Zeilen einfügen:
     986{{{
     987echo "Clearing /etc/ltsp-message."
     988echo > /etc/ltsp-message
     989}}}
     990
     991
     992== Drucker einrichten
     993
     994Die Drucker werden über den CUPS des paedml zur Verfügung gestellt. Auf dem paedml ist das "printer-sharing" aktiviert, so dass die LtspServer die verfügbaren Drucker selbst entdecken. Dabei sollen sie nur die Drucker anzeigen, die vom paedml veröffentlicht werden. Sonst erscheinen auch Drucker, die an Rechnern irgendwo im Netzwerk eingerichtet sind -- z.B. an der TGS oder am Laptop von Kollegen ("Drucker-Waschküche").
     995
     996In `/etc/cups/cups-browsed.conf` einfügen:
     997 Im Schülernetz::
     998 {{{
     999 BrowseAllow 10.32.1.1
     1000 }}}
     1001 Im Lehrernetz::
     1002 {{{
     1003 BrowseAllow 10.16.112.4
     1004 }}}
     1005
     1006 Hinweis:: Wegen eines (vermutlichen) Bugs im CUPS-Browse-Daemon werden zwar die Drucker, aber nicht die Druckerklassen automatisch erkannt. Solange das nicht behoben ist, muss unsere Druckerklasse (derzeit haben wir ja nur eine) manuell auf den ltspServern eingerichtet werden:
     1007
     1008 `/etc/cups/classes.conf` erzeugen mit Inhalt:
     1009{{{
     1010<DefaultClass DruckerLZ>
     1011UUID urn:uuid:9c344d97-22d8-3c49-6349-4f3ec0ce77fe
     1012Info Lexmark links oder rechts im LZ
     1013Location Lehrerzimmer
     1014State Idle
     1015StateTime 1348058275
     1016Accepting Yes
     1017Shared Yes
     1018JobSheets none none
     1019Printer LaserLZ
     1020Printer LaserLZr
     1021QuotaPeriod 0
     1022PageLimit 0
     1023KLimit 0
     1024AllowUser @lpadmin
     1025AllowUser @teachers
     1026AllowUser pgmadmin
     1027OpPolicy default
     1028ErrorPolicy retry-current-job
     1029</Class>
     1030}}}
     1031
     1032
     1033
     1034
     1035== (Überflüssige Dienste deaktivieren(?))
     1036
     1037**Da der neu Server derzeit mit aktivierten Standarddiensten gut zu laufen scheint, diesen Punkt erst einmal auslassen und beobachten.**
     1038
     1039Korrektur: derzeit ist auf ltsp8 das Network-Manager-Applet und zwei Plugins deaktiviert:
     1040{{{
     1041# apt-get purge network-manager-pptp
     1042# apt-get purge network-manager-pptp-gnome
     1043# apt-get purge network-manager-gnome
     1044}}}
     1045
     1046(Ev. bestimmte Dienste deaktivieren, Querverweis: #569)
     1047
     1048
     1049== clusterssh einrichten
     1050
     1051{{{
     1052# apt-get install clusterssh
     1053# cat > /etc/clusters <<EOF
     1054# this file defines clusters for the cluster-ssh utility (cssh)
     1055ltsp root@ltsp1 root@ltsp2 root@ltsp3 root@ltsp4 root@ltsp5 root@ltsp6 root@ltsp7 root@ltsp8
     1056ltspl root@ltspl1 root@ltspl2
     1057proxmoxltsp root@proxmoxltsp1 root@proxmoxltsp2 root@proxmoxltsp3 root@proxmoxltsp4 root@proxmoxltsp5 root@proxmoxltsp6 root@proxmoxltsp7 root@proxmoxltspl1 root@proxmoxltspl2
     1058default ltsp ltspl
     1059EOF
     1060}}}
     1061
     1062
     1063== Skript `rsync-to-all-ltsp-servers` erweitern
     1064
     1065Im Skript, das wir zum bequemen Verteilen von Dateien auf alle LtspServer verwenden, muss die Schleife um den Namen des neuen Servers erweitert werden:
     1066
     1067source:/keplertools/scripts/trunk/rsync-to-all-ltsp-servers
     1068
     1069- Anpassung in irgend einer ausgecheckten svn-Version vornehmen
     1070- danach **auf allen LtspServern(!)** ein
     1071  {{{
     1072  # svn update /usr/local/sbin/
     1073  }}}
     1074
     1075
     1076== pam_group aktivieren
     1077
     1078Damit die Dokumentenkameras funktionieren, müssen alle User Mitglieder in der Gruppe video (Gruppe auf dem LTSP-Server, nicht: LDAP-Gruppe!) sein.
     1079Für die Benutzung der Bildschirmüberwachung müssen die Lehrer in der Gruppe epoptes sein.
     1080Das geht mit dem pam_group-Mechanismus, der den User beim Login in die angegebenen Gruppen zuweist:
     1081
     1082
     1083* Eintrag in /etc/security/group.conf:
     1084  {{{
     1085  *;*;*;Al0000-2400;video
     1086  *;*;%teachers;Al0000-2400;epoptes
     1087  }}}
     1088* Neue Datei /usr/share/pam-configs/pamgroups:
     1089  {{{
     1090  Name: activate /etc/security/group.conf
     1091  Default: yes
     1092  Priority: 900
     1093  Auth-Type: Primary
     1094  Auth:
     1095  required    pam_group.so use_first_pass
     1096  }}}
     1097* dann:
     1098  {{{
     1099  # pam-auth-update
     1100  # service nscd restart
     1101  }}}
     1102
     1103Damit werden beim Login über das pam_group-Modul die fehlenden Gruppenzugehörigkeiten ergänzt - jetzt können alle User (Schüler und Lehrer) die Dokumentenkamera benutzen!
     1104
     1105
     1106== Virtualbox konfigurieren
     1107
     1108Wir stellen derzeit zwei Virtualbox-Umgebungen zur Verfügung, eine für die TI-Emulation, eine zweite für InfoSys (nur im Lehrernetz).
     1109
     1110Die Maschinen sind für alle Lehrer eingerichtet, die virtuellen Festplatten (vdi-Files) liegen aus Effizienzgründen aber lokal auf den LtspServern.
     1111
     1112Die beiden folgenden Verzeichnisse müssen von einem (geeigneten, d.h. mit gleicher Prozessorarchitektur) LtspServer kopiert werden:
     1113{{{
     1114# rsync -a <ltspserver>:/usr/share/virtualbox-vdi /usr/share/
     1115# rsync -a <ltspserver>:/usr/share/virtualbox-saved /usr/share/
     1116}}}
     1117
     1118 Erklärung:: Damit die Kollegen InfoSys und TINSpire schnell benutzen können, liegen unter /sr/share/virtualbox-saved Speicherabbilder, so dass die VM innerhalb weniger Sekunden startet. Diese Abbilder müssen von einem Server mit der selben Prozessorarchitektur stammen. Eventuell müssen sie neu erzeugt werden, siehe AdminVirtualBox#SpeicherabbildderVirtuellenMaschineerzeugen.
     1119
     1120Die Starter von `/usr/share/virtualbox-saved/` müssen nach `/usr/share/applications/` kopiert werden:
     1121
     1122{{{
     1123# cp /usr/share/virtualbox-saved/{TINSpire,InfoSys}.desktop /usr/share/applications/
     1124}}}
     1125
     1126
     1127
     1128== Epoptes konfigurieren
     1129
     1130=== Nur für den dedizierten Epoptes-Server
     1131
     1132 Hinweis:: Diese Schritte sind nur nötig, wenn der neue Server der dedizierte Epoptes-Server sein soll (derzeit ltsp6).
     1133
     1134Die Schritte durchführen, die unter AdminEpoptes#EinrichtungdesdediziertenEpoptes-Serversderzeitltsp6 beschrieben sind.
     1135
     1136=== Generell
     1137
     1138Mit epoptes können die Schülerbildschirme kontrolliert werden.
     1139Die Clients melden sich beim Login eines Schülers am epoptes-Server (ltsp6) an. Damit nicht Kollegen ebenfalls überwacht werden können, muss der epoptes-Starter angepasst werden.
     1140
     1141In `/etc/xdg/autostart/epoptes-client.desktop`:
     1142{{{
     1143[Desktop Entry]
     1144...
     1145#Exec=/usr/sbin/epoptes-client
     1146Exec=/usr/local/sbin/kepler--epoptes-client-starter
     1147...
     1148}}}
     1149
     1150Für die Kollegen gibt es die Möglichkeit, die Fernwartung per epoptes trotzdem einzuschalten.
     1151
     1152Neue Datei `/usr/share/applications/epoptes-client.desktop`: (Aufruf: Fernwartung):
     1153{{{
     1154[Desktop Entry]
     1155Name=Überwachung meines Bildschirms erlauben
     1156Comment=Ermöglicht für die Dauer dieser Sitzung, dass Administratoren (und andere Lehrer) Ihren Bildschirminhalt sehen und ihren Rechner steuern können.
     1157Exec=bash -c "zenity --question --title 'Fernüberwachung erlauben' --text 'Erlauben Sie, dass andere Lehrer und die Administratoren Ihren Bildschirminhalt sehen und Ihren Rechner steuern können?\n(Diese Entscheidung gilt nur für die laufende Sitzung und wird mit Ihrem Logout wieder aufgehoben.)' && /usr/sbin/epoptes-client"
     1158Icon=epoptes
     1159Terminal=false
     1160Type=Application
     1161Categories=Network;Settings;Utility;RemoteAccess;DesktopSettings;Security;Accessibility;
     1162}}}
     1163
     1164Die Kollegen können auch Schülerdesktops überwachen.
     1165
     1166Neue Datei `/usr/share/applications/epoptes-app-starter.desktop` (Aufruf: //Bildschirme der Schüler anzeigen`):
     1167{{{
     1168[Desktop Entry]
     1169Name=Bildschirme der Schüler anzeigen
     1170Comment=Die Lab-Management-Software Epoptes erlaubt es, den eingeloggten Schülern auf den Bildschirm zu sehen und ihre Rechner zu steuern.
     1171Exec=/usr/local/sbin/kepler--epoptes-app-starter
     1172Icon=epoptes
     1173Terminal=false
     1174Type=Application
     1175Categories=Education;Network;Utility;Monitor;RemoteAccess;
     1176}}}
     1177
     1178Damit der passwortlose Zugang zum ltsp6 als epoptes funktioniert muss die /etc/ssh/ssh_config angepasst werden (anfügen am Ende):
     1179{{{
     1180Host         epoptes_server
     1181Hostname     ltsp6
     1182User         epoptes
     1183IdentityFile /etc/ssl/certs/epoptes_key
     1184ForwardX11   yes
     1185StrictHostKeyChecking no
     1186}}}
     1187
     1188Außerdem sollte der Host-Key von ltsp6 bekannt sein, damit er nicht in die known_hosts jedes Nutzers eingetragen wird (was später Probleme verursachen kann, wenn sich der Schlüssel mal ändern sollte):
     1189{{{
     1190# echo -n "ltsp6,10.32.2.6 " >> /etc/ssh/ssh_known_hosts
     1191# ssh >> /etc/ssh/ssh_known_hosts ltsp6 cat /etc/ssh/ssh_host_ecdsa_key.pub
     1192}}}
     1193
     1194
     1195
     1196
     1197=== Epoptes auf ltspl (Lehrernetz) einrichten
     1198
     1199- Damit die Überwachung der Schülerrechner aus dem Lehrernetz klappt, muss [#Netzwerkeinrichten wie oben bei der Netzwerkeinrichtung beschrieben], eine Route ins Schülernetz gesetzt sein.
     1200
     1201
     1202
     1203=== Kepler-Logos
     1204
     1205Für unsere Briefpapiervorlage und andere Zwecke sollen die Kepler-Logos unter `/usr/local/include` liegen. Das Verzeichnis kann vom paedml kopiert werden:
     1206{{{
     1207# rsync -av paedml:/usr/local/include /usr/local/
     1208}}}
     1209
     1210 Test:: Danach sollte die LaTeX-Briefvorlage, die man per Rechtsklick auf dem Desktop erreicht, kompilieren.
     1211
     1212
     1213
     1214
     1215
     1216----
     1217[[CC_BY_NC_SA(Dr. Rüdiger Kupper, Kepler-Gymnasium Freudenstadt)]]
     1218