[[PageOutline]] = Aufsetzen eines neuen LtspServers from scratch Hier werden Hinweise beschrieben, wie man einen völlig neuen LtspServer im pädagogischen Netzwerk des Kepler-Gymnasiums aufsetzen kann. Dies ist i.d.R. erheblich aufwändiger, als [LtspServerKlonen einen existierenden Server auf eine neue Maschine zu klonen]. == Vorbemerkung Zur Zeit sieht es so aus, als ob wir in Zukunft nur noch virtualisierte Server verwenden werden. Der Rest dieser Seite geht also davon aus, dass ein Virtualisierer (bei uns derzeit ProxMox 2) bereits korrekt aufgesetzt ist. Der "bare metal" Host sollte mit einem RAID 1 aufgesetzt sein, die virtuelle Maschine selbst kann daher ein einfaches Dateisystem haben. Im folgenden gehen wir davon aus, dass das Root-Dateisystem der neuen VM auf `/dev/vda` angelegt wird und der Swap auf `/dev/vdb`. Gelten diese Gegebenheiten zum aktuellen Zeitpunkt nicht mehr, so muss das Vorgehen auf dieser Seite entsprechend angepasst werden. == Edubuntu installieren - Ein aktuelles Edubuntu-Installations-ISO herunterladen und in das virtuelle DVD-Laufwerk der VM einhängen - VM starten - Sprache "Deutsch" auswählen - ("Aktualisierungen herunterladen" lässt sich manges Proxy nicht auswählen, das machen wir später!) - "Lizensierte Inhalte installieren" auswählen - "LTSP installieren" auswählen und alle Pakete wähjlen - Bei der Partitionswahl "etwas anderes" auswählen, dann wählen: - `/dev/vda1` als `/` - `/dev/vdb1` als Swap - Nutzer "linadmin" mit dem zugehörigen Passwort Die Installation dauert nur wenige Minuten :-). - Installations-DVD aus dem virtuellen DVD-Laufwerk entfernen und den neuen Server booten. == Grundkonfiguration === Netzwerk einrichten - über das VNC-Interface als lindamin einloggen - die Auflösung und die Desktop-Dimensionen sind derzeit irrelevant. - mittels `sudo -sH` root werden - Unser neuer Server benötigt zuerst eine feste IP-Adresse im Kepler-Netzwerk. Hinweis:: Falls das terminal nicht lesbar ist (Proxmox-VNC-Problem), statt `editor` einfach `gedit` verwenden. {{{ # editor /etc/network/interfaces }}} - Anpassen nach dem folgende Schema: Im Schülernetz:: {{{ # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 #iface eth0 inet dhcp iface eth0 inet static dns-nameservers 10.32.1.251 dns-search kg-fds.de address 10.32.2. netmask 255.240.0.0 gateway 10.32.1.254 }}} Im Lehrernetz:: {{{ # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 #iface eth0 inet dhcp iface eth0 inet static dns-nameservers 10.16.112.2 dns-search kg-fds.de address 10.16.112.23 netmask 255.255.254.0 gateway 10.16.112.1 # Die beiden folgenden Einträge erlauben den direkten Zugriff auf die # Schülernetzserver aus dem Lehrernetz heraus: post-up route add -net 10.32.0.0 netmask 255.240.0.0 gw 10.16.112.8 post-down route del -net 10.32.0.0 netmask 255.240.0.0 gw 10.16.112.8 }}} - Server neu booten Ab jetzt ist unser neuer Server im Kepler-Netzwerk (und im VPN) unter `ssh linadmin@10.32.2.` erreichbar und hat Verbindung zum Internet. (Das ssh-Paket wurde mit dem LTSP-Paket bereits installiert.) Natürlich soll unser neuer Server im Netzwerk auch einen Namen haben, daher ||=Im Schülernetz=||=Im Lehrernetz|| ||In `paedml:/etc/hosts` einen Eintrag für "ltsp" 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`.|| - Dann den dnsmasq neu starten. === Proxies setzen - Wir loggen uns per `ssh linadmin@ltsp` ein. - Wir werden root mittels `sudo -sH` - Wir starten am besten eine screen-Session mit `screen -RR `. ==== Systemweiter Proxy Im Schülernetz:: 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.): {{{ # echo >> /etc/environment http_proxy=http://10.32.1.251:3128/ # echo >> /etc/environment https_proxy=https://10.32.1.251:3128/ # echo >> /etc/environment ftp_proxy=ftp://10.32.1.251:3128/ }}} Im Lehrernetz:: Hier gilt generell der BelWü-Proxy: {{{ # echo >> /etc/environment http_proxy=http://129.143.4.2:8080/ # echo >> /etc/environment https_proxy=https://129.143.4.2:8080/ # echo >> /etc/environment ftp_proxy=ftp://129.143.4.2:8080/ }}} ==== APT-Proxy Um 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: Im Schülernetz:: {{{ # echo >> /etc/apt/apt.conf 'Acquire::http::Proxy "http://10.32.1.253:3128";' }}} Im Lehrernetz:: Hier gilt generell der BelWü-Proxy: {{{ # echo >> /etc/apt/apt.conf 'Acquire::http::proxy "http://129.143.4.2:8080";' }}} === SSH-Zugang einrichten - Pakete auf den neusten Stand bringen: {{{ # apt-get update # apt-get dist-upgrade }}} - Bevor wir irgend etwas weiteres beginnen, installieren wir einen Editor :-) : {{{ # apt-get install emacs }}} ==== Root-Login ermöglichen {{{ # passwd }}} - 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): Im Schülernetz:: - auf einem laufenden LtspServer als root einloggen, dort: {{{ # rsync -a .ssh/ linadmin@ltsp:.ssh-root }}} - dann auf dem neuen Server als linadmin einloggen: {{{ # sudo mv .ssh-root/ /root/.ssh # sudo chown --recursive root:root /root/.ssh }}} Im Lehrernetz:: (wie oben, aber auf paedml zwischenspeichern) Ab jetzt können sich kup, bau, root@paedml und root@LTSP mit ihren SSH-Schlüsseln einloggen. ==== (Den Passwort-Login für Root unterbinden) Hinweis:: Der folgende Punkt ist ab 14.04 nicht mehr nötig, da default! {{{ # emacs -nw /etc/ssh/sshd_config # service ssh force-reload }}} Option "`PermitRootLogin without-password`" setzen. === Filesysteme beim Boot automatisch reparieren In `/etc/default/rcS` ändern: {{{ FSCKFIX=yes }}} === Niemals am GRUB-Bootschirm warten - In `/etc/default/grub` einfügen: {{{ # This is a headless server. We never want it to wait for user input: GRUB_RECORDFAIL_TIMEOUT=60 }}} - dann `update-grub` ausführen An dieser Stelle bietet sich ein Backup der VM an. == Zugriff auf den paedml === Interne Firewall Im Schülernetz (im Lehrernetz nicht nötig):: Damit 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.) In `paedml:/etc/init.d/linuxmuster-base`: {{{ iptables -A IN-eth1-ALLOWED -s 10.32.2./32 -j ACCEPT }}} === NFS-Anbindung Die 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. Momentan 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! ** - (In `/etc/fstab` hinzufügen (Hinweis: die `noauto` EInträge sind ein Workaround und können möglicherweise inzwischen entfallen, siehe #856):) {{{ # Home ueber NFS: #10.32.1.1:/nfsexport/home/students /home/students nfs _netdev,bg,noauto 0 0 #10.32.1.1:/nfsexport/home/teachers /home/teachers nfs _netdev,bg,noauto 0 0 10.32.1.1:/nfsexport/home/share /home/share nfs _netdev,bg,noauto 0 0 10.32.1.1:/nfsexport/tasks /var/cache/sophomorix/tasks nfs _netdev,bg,noauto 0 0 10.32.1.1:/nfsexport/home/ftp/Scans /home/ftp/Scans nfs _netdev,bg,noauto 0 0 10.32.1.1:/nfsexport/home/cds /home/cds nfs _netdev,bg,noauto 0 0 }}} - (Verzeichnisse anlegen, richtige Besitzrechte einstellen und mounten) {{{ # mkdir -p /home/{students,teachers,share,ftp/Scans,cds} /var/cache/sophomorix/tasks # chgrp teachers /home/teachers # chmod o-r /home/teachers # apt-get install nfs-common # mount -a }}} === LDAP-Anbindung ==== 1. Option: linuxmuster.net-Paket Die 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. ==== 2. Option: LDAP manuell konfigurieren - LDAP-Client-Pakete und Name Server Caching Daemon installieren {{{ # apt-get install ldap-auth-client nscd }}} || ||=Im Schülernetz=||=Im Lehrernetz=|| ||=Server=|| `ldaps://10.32.1.1/` || `ldaps://10.16.112.4/` || ||=Distinguished name=|||| `dc=kg-fds,dc=de` || ||=LDAP-Version=|||| 3 || ||=Make local root Database admin=|||| ja || ||=LDAP-Login nötig=|||| nein || ||=LDAP account for root=|||| cn=admin,dc=kg-fds,dc=de || ||=LDAP-Root-Passwort=|||| (siehe `paedml:/etc/ldap/slapd.conf`) || - Wir verwenden innherhalb des Kepler-Netzwerkes keine Zertifikate für SSL-Verbindungen.\\ Daher in `/etc/ldap.conf` ändern: {{{ tls_checkpeer no }}} - Nun dem [wikipedia:"Name Service Switch"] sagen, dass er die Nutzerinformationen über LDAP beziehen soll:\\ In `/etc/nsswitch.conf` ändern: {{{ passwd: compat ldap group: compat ldap shadow: compat ldap }}} Ab 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. ==== Userspace-LDAP-Unterstützung Auß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: {{{ # apt-get install ldap-utils }}} Die Userspace-LDAP-Tools benutzen ein anderes Konfigurationsfile, als die Authentifizierungstools. In `/etc/ldap/ldap.conf` eintragen: Im Schülernetz:: {{{ BASE dc=kg-fds,dc=de URI ldaps://10.32.1.1/ TLS_REQCERT never bind_policy soft }}} Im Lehrernetz:: {{{ BASE dc=kg-fds,dc=de URI ldaps://10.16.112.4/ TLS_REQCERT never bind_policy soft }}} === pam_mount konfigurieren (CIFS-Anbindung) Dieser 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. {{{ # apt-get install libpam-mount cifs-utils }}} In `/etc/security/pam_mount.conf.xml` ändern/hinzufügen: {{{ 0-5000 }}} Ab jetzt können sich Nutzer des Kepler-Netzwerkes mit Nutzername und Passwort einloggen und sehen ihr Homeverzeichnis. == LightDM konfigurieren LightDM-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: In `/etc/lightdm/lightdm.conf`: {{{ [SeatDefaults] user-session=gnome-fallback greeter-hide-users=false greeter-show-manual-login=true greeter-allow-guest=false }}} Um Zugriff per XDMCP zu aktivieren (derzeit noch experimentell) außerdem: {{{ greeter-show-remote-login=true [XDMCPServer] enabled=true }}} - dann {{{ # restart lightdm }}} == Software Einige zusätzliche Software muss installiert und konfiguriert werden. 1. Siehe hierzu LtspServerUpdate/Saucy: Die dort beschriebenen Prozeduren zu Gnome-Panel, Plank und Hintergrundbild durchführen. 1. Weitere Software: {{{ # apt-get install aptitude apt-listchanges dconf-editor subversion finger nautilus-dropbox synapse virtualbox remmina-plugin-xdmcp vlc texlive texlive-latex-extra texlive-lang-{german,french,english,spanish} auctex ubuntu-restricted-extras audacity stellarium hamster-indicator xournal xaralx mypaint codeblocks pingus hedgewars }}} === Dropbox-Daemon manuell installieren Normalerweise 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: {{{ # cd /var/lib/dropbox/ # wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar --no-same-owner -xzf - }}} Ev. muss zuvor die `http(s)`-Umgebungsvariable mit Nutzer und Passwort gesetzt werden. Das lädt den Daemon herunter und packt ihn in das Verzeichnis `.dropbox-dist` aus. Danach kann man Dropbox verwenden. == Vorgaben für Gnome-Settings (dconf) einrichten - User-Datenbank einrichten und erzeugen: {{{ # cat > /etc/dconf/profile/user < /etc/dconf/db/site.d/00_site_settings < /etc/dconf/db/site.d/locks/00_site_locks < /etc/xdg/autostart/synapse.desktop < /etc/xdg/autostart/ltsp-startup.desktop <