OwnCloud

openLDAP (mit TLS)
siehe LDAPopen Doku
Bei 64 BIT "./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib64 --includedir=/usr/include  --enable-slapd=no --enable-backends=no --with-tls"
"make"
"make install"
"ln -s /usr/lib64/ldap* /usr/lib/"

PHP (mit SSL/TLS und LDAP)
siehe PHP Doku
"./configure --with-mysql=/usr --with-apxs2=/usr/local/apache2/bin/apxs --enable-mod-charset --with-openssl=/usr --with-zlib --enable-calendar --enable-mbstring --enable-zip --with-gd --with-ldap=/usr --with-ldap-sasl --with-gettext --with-imap-ssl --with-pdo-mysql=/usr --with-libdir=lib64 --with-ldap --with-kerberos"
ab Version 5.4.11 "./configure --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --enable-mod-charset --with-openssl --with-zlib --enable-calendar --enable-mbstring --enable-zip --with-gd --with-gettext --with-ldap-sasl --with-pdo-mysql=/usr/local/mysql -with-libdir=lib64 --with-ldap --with-kerberos"
Version 5.4.11 experimental "./configure --with-mysql --with-apxs2=/usr/local/apache2/bin/apxs --enable-mod-charset --with-openssl --with-zlib --enable-calendar --enable-mbstring --enable-zip --with-gd --with-gettext --with-ldap-sasl --with-pdo-mysql=/usr/local/mysql --with-mcrypt --with-kerberos --with-ldap --with-curl"

TLS:

ownCloud
"wget http://owncloud.org"
"tar -xf owncloud-2.tar.tar"
"mv owncloud /usr/local/apache2/htdocs"
"chown -R daemon:daemon  /usr/local/apache2/htdocs"
"lynx http://wdf-cloud01/owncloud"
Installation via Browser. (/var/run/mysql/mysql.sock muß vorhanden sein)
Ggf. die "vi /usr/local/apache2/htdocs/realcloud/owncloud/config/config.php" anpassen. Seit Version 4.5.5 wird ein user "oc_root" erstellt der natürlich nativ auf der Datenbank nicht existiert. Also abändern in root währen der Installation
Bei DB am bestenm die IP eintragen (127.0.0.1)

#Infos##########################################################
Hochgeladene Files liegen unzer: .apache2..htdocs../owncloud/data/root/files/

#Fazit########################################################
1. Im Internet Explorer sind alle Kästchen verschoben. Design sieht suboptimal aus.
2. Plus basiert Nativ auf Apapche,PHP und MySQL (Hohe Perfomance und Skalierbarkeit)
3. Hochgeladene Dateien liegen auf OS Ebene
4. WebDAV geht out of the Box (auch mit SSL)
5. Dateien können nicht mit LDAP Usern geshared werden http://apps.owncloud.com/content/show.php?action=knowledgebase&content=0&kbid=725
6. Android(ownCloud Client) und iOS(WebDAV) funktionieren auch nicht.
7. Performance sehr langsam. Dauer für 6MB ca. 5 Min. . Upload noch sehr Buggi


#Info##############################
LDAP Zugrif auf M$ ADS = "ldapsearch -x -b "OU=wdf,DC=de,DC=realTech,DC=net" -D "CN=_ldapread,OU=Groups-Systemuser,OU=wdf,DC=de,DC=realTech,DC=net"  -h 10.0.0.33 -p 389 -W"
DE Domain: "ldapsearch -x -b "DC=de,DC=realTech,DC=net" "cn=Schneider, Brian" "homeDirectory" -D "CN=_ldapread,OU=Groups-Systemuser,OU=wdf,DC=de,DC=realTech,DC=net"  -h 10.0.0.33 -p 389 -W" = Suche nach User mit Home Directory
US Domain: "ldapsearch -x -b "DC=us,DC=realTech,DC=net" "cn=Milano, David" "homeDirectory" -D "CN=_ldapread,CN=Users,DC=us,DC=realTech,DC=net"  -h 10.6.0.32 -p 389 -W"
Pass: r3gE@6DF
WebDAV Test = curl -X PROPFIND -u root:DidHvNunvW! -i http://wdf-cloud01/owncloud/files/webdav.php
Darauf achten das die Namen der User klein geschrieben sind "SELECT * FROM `owncloud`.`oc_users`;" da eventuel sonst der Kalender und das Adressbuch nicht korrekt funktionieren.
"NET USE * https://realcloud.realtech.com/files/webdav.php /USER:alexander.wenning@realtech.net /persistent:yes" = Net use Befehl für Windows Anmelde Script.

#ownCloud 2.X an M$ ADS##################################################################################
wie oben beschrieben erst mal PHP mit LDAP und SSL/TLS kompilieren.
dann im owncloud Code rumbasteln.
"vi /usr/local/apache2/htdocs/owncloud/apps/user_ldap/user_ldap.php"
Zeile 67 und 68 abändern (TLS start verhindern:
                                 if(ldap_set_option($this->ds, LDAP_OPT_REFERRALS, 0));
                                          #ldap_start_tls($this->ds);

ab Zeil 90 den Standard filter ausschalten und das ldap_search umbauen										  
	// get dn
                #$filter = str_replace("%uid", $uid, $this->ldap_filter);
                #$sr = ldap_search( $this->getDs(), $this->ldap_base, $filter );

                        $dn = "DC=de,DC=realTech,DC=net";
                        #$filter="(cn=_ldapread)";
                        #$filter="(mail=$uid)";
                        $filter="(userPrincipalName=$uid)";
                        $justthese = array( "ou", "sn", "vorname", "mail");
                        $sr=ldap_search($ds, $dn, $filter, $justthese);

                $entries = ldap_get_entries( $this->getDs(), $sr );
###################################################################################################################

#ownCloud 4.5.6 an M$ ADS##################################################################################
"vi /usr/local/apache2/htdocs/realcloud/apps/user_ldap/lib/connection.php" -> "//ldap_start_tls($this->ldapConnectionRes);" Auskommentieren Zeile 338

	$this->ldapConnectionRes = ldap_connect($this->config['ldapHost'], $this->config['ldapPort']);
			if(ldap_set_option($this->ldapConnectionRes, LDAP_OPT_PROTOCOL_VERSION, 3)) {
					if(ldap_set_option($this->ldapConnectionRes, LDAP_OPT_REFERRALS, 0)) {
						if($this->config['ldapTLS']) {
							//ldap_start_tls($this->ldapConnectionRes);
						}
###################################################################################################################

##ownCloud 2.X##################################################################################################################
Passwort Check ab zeile 108 vi /usr/local/apache2/htdocs/owncloud/apps/user_ldap/user_ldap.php:

public function checkPassword( $uid, $password ) {
		if(!$this->configured){
				return false;
		}
		$dn = $this->getDn( $uid );
#################################################
#ToDo: Sobald das Passwort bekannt ist. SQL Connect in MySQL Datenbank und nach SHA1 umwandeln. 
$myFile = "/tmp/testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "$password \n";
fwrite($fh, $stringData);
fclose($fh);
################################################
		if( !$dn )
				return false;

		if (!@ldap_bind( $this->getDs(), $dn, $password ))
				return false;
		return $uid;

##ownCloud 2.X##################################################################################################################
ADS User Check und MySQL Anbindung:

public function checkPassword( $uid, $password ) {
		if(!$this->configured){
			return false;
		}
		$dn = $this->getDn( $uid );
		#################################################
		system("/usr/local/apache2/htdocs/owncloud/apps/user_ldap/mysql_user_check $uid $password");
		system("/usr/local/apache2/htdocs/owncloud/apps/user_ldap/mount_home_share $uid $password");
		################################################
		if( !$dn )
			return false;

		if (!@ldap_bind( $this->getDs(), $dn, $password ))
			return false;
		return $uid;
###################################################################################################################

"ln -s /usr/local/lib/php.ini /usr/local/lib64/php.ini"

#php.ini Modifikationen###################################################################################################################
"vi /usr/local/lib/php.ini" -> Ubuntu apt-get Installation "vi /etc/php5/apache2/php.ini"
	max_execution_time = 9999
	max_input_time = 9999
	memory_limit = 1024M
	upload_max_filesize = 9999M
	post_max_size = 9999M
	ggf. output_buffering = 9216
	session.save_path = "/usr/local/apache2/htdocs/realcloud/data/php_session_tmp"
	soap.wsdl_cache_dir="/usr/local/apache2/htdocs/realcloud/data/php_session_tmp"
	upload_tmp_dir = "/usr/local/apache2/htdocs/realcloud/data/php_session_tmp"
	default_charset = "UTF-8"
###################################################################################################################

#Apache Modifiaktion###################################################################################################################
"vi /usr/local/apache2/htdocs/owncloud/.htaccess" ->
	php_value upload_max_filesize 9999M
	php_value post_max_size 9999M

#Performance tuning in httpd.conf##
ServerLimit 9999
StartServers 20
MaxClients 1472
MinSpareThreads 25
MaxSpareThreads 999
ThreadsPerChild 64

http://www.heise.de/security/artikel/Forward-Secrecy-testen-und-einrichten-1932806.html
http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#sslciphersuite
"openssl s_client -connect wdf-cloud01:443"
"openssl s_client -cipher 'ECDH:DH' -connect wdf-cloud01:443"
"openssl ciphers -V 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA256 EECDH+aRSA+RC4 EDH+aRSA EECDH RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS'"
#Owncloud Modifiaktion###################################################################################################################
"vi /usr/local/apache2/htdocs/realcloud/3rdparty/smb4php/smb.php" ->
	alle "'/tmp'" durch "/usr/local/apache2/htdocs/realcloud/data/php_session_tmp" ersetzen
File Cache deaktivieren da OwnCloud alle Dateien scannt auch die angeschlossenen externen File Shares :-(
	"DELETE FROM `realcloud`.`oc_filecache`;"  auf Datenbank ebene
###################################################################################################################
Eigene Logos austauschen
"vi /var/www/realcloud/core/templates/layout.user.php" ->
	<img src="<?php print_unescaped(image_path('', 'logo.png')); ?>" class="svg" alt="ownCloud" /> 			in PNG ändern und eigenes Logo hinzufügen
	
"vi /var/www/realcloud/core/templates/layout.guest.php" ->
	src="<?php print_unescaped(image_path('', 'logo-wide.png')); ?>" alt="ownCloud" /></a>					in PNG ändern und eigenes Logo hinzufügen

###################################################################################################################
"vi /var/www/realcloud/settings/templates/personal.php" -> ändern der maximalen Größe auf dem Speicher Ort in 10GB.
	<?php print_unescaped($l->t('You have used <strong>%s</strong> of the available <strong>10 GB</strong>',
###################################################################################################################
PHP Sessin Files löschen. Ohne Handling wächst die Zahl der Dateien schnelle auf 500tsd. bis 1 mio an.
Löscht alle 60min. Files die älter sind als 3 Tage:
"vi /etc/crontab" ->
	*/60 * * * * root       /usr/bin/find /var/www/realcloud/data/php_session_tmp -mtime +3 -print -exec rm -fr {} \;  > /dev/null 2>&1

###################################################################################################################
EXPERIMENTAL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TCP_WAIT Sate
Normalwert 60	
	"cat /proc/sys/net/ipv4/tcp_fin_timeout"
experimental
	"echo 5 > /proc/sys/net/ipv4/tcp_fin_timeout"
Dazu noch die Maximal Anzahl an Connections zum LDAP Server begrenzen auf 3. Sonst werde alle Sekunde mind. 100 Connection geöffnet und bleiben hängen ?????. perfocmance von server bad.
	iptables  -A INPUT -p tcp --syn --dport 389 -m connlimit --connlimit-above 3 -j LOG --log-level 7 --log-prefix "MAX CONN DROP 389: "
	iptables  -A OUTPUT -p tcp --syn --dport 389 -m connlimit --connlimit-above 3 -j LOG --log-level 7 --log-prefix "MAX CONN DROP 389: "
###################################################################################################################
#ownCloud 4.5.6###################################################################################################################
LDAP Einstellungen im WebGUI
LDAP Basic:
	Host: 10.0.0.32  (10.0.0.33)
	Basis-DN: OU=wdf,DC=de,DC=realTech,DC=net
	Benutzer-DN: CN=_ldapread,OU=Groups-Systemuser,OU=wdf,DC=de,DC=realTech,DC=net
	Passwort: <LDAP Read Passwort>
	Benutzer-Login-Filter: sAMAccountName=%uid
	Benutzer-Filter-Liste: objectClass=person
	Gruppen-Filter: objectClass=group
Advanced:
	Port: 389
	Basis-Benutzerbaum: DC=de,DC=realTech,DC=net
	Basis-Gruppenbaum: OU=realcloud_test_access,OU=Test,OU=121130 - IT Services,OU=RT Services,OU=wdf,DC=de,DC=realTech,DC=net
	Assoziation zwischen Gruppe und Benutzer: member (AD)
	Nutze TLS: NEIN
	(Windows: Groß- und Kleinschreibung bleibt unbeachtet): JA
	SSL-Zertifikatsprüfung aus.: NEIN
	Feld für den Anzeigenamen des Benutzers: sAMAccountName
	Feld für den Anzeigenamen der Gruppe: sAMAccountName
	Quota Field: <NIX>
	Quota Default: <NIX>
	Email Field: mail
	Cache Time-To-Live: 600
	User Home Folder Naming Rule: <NIX>
###################################################################################################################

#ownCloud 5.XYZ###################################################################################################################
Automatisches Upgrade schlägt fehl. !!!!!!!
Manuelles update
	Alles Dateien/ordner löschen, außer "data" und "config"
	Dann die neue OwnCloud Version reinkopieren und aufrufen.
	Nun erkennt das Setup die config und macht ein korrektes upgrade.
	Tipp: Falls OwnCloud sagt es sei im Maintenace Modus
	"vi /usr/local/apache2/htdocs/realcloud/config/config.php" ->
		'maintenance' => false,
Mit dem IE kann man nun endlich auch arbeiten

Suchen nach Namen über ID in der Datenbank "SELECT * FROM `realcloud`.`oc_ldap_user_mapping` WHERE owncloud_name = 'B2AB21EA-A099-4A27-99F6-4021D0B96EA8';"
Suchen nach geCachten Dateien "SELECT * FROM `realcloud`.`oc_filecache` WHERE name = 'PGPFS.ini';"
###################################################################################################################

ToDO:###################################################################################################################
.htacces verschärfen sowie httpd.conf in Bezug auf Directory Listing
User daemon auf "/owncloud/data/root/files/" beschränken.
Internet Explorer layout verbessern, falls überhaupt möglich.
Upload von Dateien jenseitz der 250 MB Grenze via Browser (per WebDAV ist unbegrenzt)
	Upload Limits der Browser: http://www.motobit.com/help/scptutl/pa98.htm
	getestet mit Firefox 8, IE 9, Opera, Google Chorme: Alle schlagen Fehl.
Auf DB Ebene automatisiert Quotas setzen.
User Abgleich der MySQL Datenbank mit dem ADS via LDAP. Programm als Cronjob laufen lassen. Extra Tool.
Backup Konzept überlegen. DWRTCBAK
Umount der HomeShares beim korrekten Logoff
Net Use Script beim Windows Login auto verbinden.
Eventuell Perfocemance Check via Prefork des Apachen2
Auf der Start Seite das Android APP anbieten und System Nachrichten Fenster einblenden. (Editieren mit Dreamweaver)
Samba ans ADS bringen und eventuell die User Auth via Samba aka lokale Auth machen.
Mehr als 1000 User aus dem AD ziehen (ldap_search) https://github.com/owncloud/core/issues/609. http://technet.microsoft.com/en-us/library/cc755809%28WS.10%29.aspx (MaxPageSize) . https://support.intranetconnections.com/entries/20520491-changing-ldap-settings-increasing-maxpagesize

#Upgrade von Ver. 2 auf Ver. 3.###################################################################################################################
Zu aller erst den Apachen stoppen
1. SAN LUN nach /usr/local/apache2/htdocs/owncloud_3/data/ mounten bevor der erste login.
1. SQL Datenbank abgleich (User Tabelle) (Bei jeder neuen Version erneut individuell prüfen)
	1.1 Dazu MySQL Studio öffnen und die zwei Tabellen mergen "INSERT IGNORE INTO `owncloud3`.`oc_users` SELECT * FROM `owncloud`.`oc_users`;"
	1.2 Shares mergen "INSERT IGNORE INTO `owncloud3`.`oc_sharing` SELECT * FROM `owncloud`.`oc_sharing`;"
	1.3 "INSERT IGNORE INTO `owncloud3`.`oc_properties` SELECT * FROM `owncloud`.`oc_properties`;"
	1.4 "INSERT IGNORE INTO `owncloud3`.`oc_preferences` SELECT * FROM `owncloud`.`oc_preferences`;"
	1.5 "INSERT IGNORE INTO `owncloud3`.`oc_media_users` SELECT * FROM `owncloud`.`oc_media_users`;"
	1.6 "INSERT IGNORE INTO `owncloud3`.`oc_media_songs` SELECT * FROM `owncloud`.`oc_media_songs`;"
	1.7 "INSERT IGNORE INTO `owncloud3`.`oc_media_artists` SELECT * FROM `owncloud`.`oc_media_artists`;"
	1.8 "INSERT IGNORE INTO `owncloud3`.`oc_media_albums` SELECT * FROM `owncloud`.`oc_media_albums`;"
	1.9 "INSERT IGNORE INTO `owncloud3`.`oc_groups` SELECT * FROM `owncloud`.`oc_groups`;"
	1.10 "INSERT IGNORE INTO `owncloud3`.`oc_group_user` SELECT * FROM `owncloud`.`oc_group_user`;"
	1.11 "INSERT IGNORE INTO `owncloud3`.`oc_gallery_photos` SELECT * FROM `owncloud`.`oc_gallery_photos`;"
	1.12 "INSERT IGNORE INTO `owncloud3`.`oc_gallery_albums` SELECT * FROM `owncloud`.`oc_gallery_albums`;"
	1.13 "INSERT IGNORE INTO `owncloud3`.`oc_foldersize` SELECT * FROM `owncloud`.`oc_foldersize`;"
	1.14 "INSERT IGNORE INTO `owncloud3`.`oc_contacts_cards` SELECT * FROM `owncloud`.`oc_contacts_cards`;"
	1.15 "INSERT IGNORE INTO `owncloud3`.`oc_contacts_addressbooks` SELECT * FROM `owncloud`.`oc_contacts_addressbooks`;"
	1.16 "INSERT IGNORE INTO `owncloud3`.`oc_calendar_objects` SELECT * FROM `owncloud`.`oc_calendar_objects`;"
	1.17 "INSERT IGNORE INTO `owncloud3`.`oc_calendar_calendars` SELECT * FROM `owncloud`.`oc_calendar_calendars`;"
	1.18 "INSERT IGNORE INTO `owncloud3`.`oc_bookmarks_tags` SELECT * FROM `owncloud`.`oc_bookmarks_tags`;"
	1.19 "INSERT IGNORE INTO `owncloud3`.`oc_bookmarks` SELECT * FROM `owncloud`.`oc_bookmarks`;"
			
2. Im Code für ldap schauen wie sich die Struktur geändert hat und die Spezial Programme dazwischen patchen.
	in der "user_ldap.php" hat sich nicht viel verändert, deshalb gemäß der Doku den Code abändern.
	Vorher in den Binaries die neue Datenbank anwählen und neu Kompilieren.

Achtung es müssen eventuell auch alte DB User auf MySQL Ebene gelöscht werden "oc_root -> localhost" und "oc_root -> %"
###################################################################################################################



###################################################################################################################
Fehlermeldungen:
Unter Windows 7 via SSL/WebDAV kommt von Zeit zur Zeit folgender Fehler:
"mutual authentication failed. the server's password is out of date at the domain controller"

Lösung:
??????

Fehlermeldungen:
Leider keine konkrete aber beim mappen des WebDAV Network Drives kommt immerwieder Aufforderung sein Zugangsdaten einzutragen. Das liegt an einem Falschen Zertifikat.

Lösung:
Windows sträubt sich seit Vista/7 ziemlich gegen WebDAV, vor allem dann, wenn es mit SSL abgesichert ist und beispielsweise auf einem Standard-Apache läuft. Nun bin ich endlich auf eine funktionierende Lösung gestoßen:
Um eine Verbindung zum WebDAV-Server unter Windows 7 aufbauen zu können, muß das SSL-Zertifikat des Servers, das im Übrigen exakt auf den Host lauten muß, zunächst heruntergeladen werden, beispielsweise mit Firefox durch
Zertifikat anzeigen > Details > Exportieren…
Anschließend muß das Zertifikat direkt in den Zertifikatsspeicher von Windows (certmgr.msc) unter
Vertrauenswürdige Stammzertifizierungsstellen\Zertifikate
importiert werden.
Danach klappt das Erstellen einer SSL-gesicherten WebDAV-Verbindung fehlerfrei und man kann endlich wieder im Explorer per Drag & Drop Dateien hin- und herschieben. 


Fehlermeldung:
Bad Request
Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Hint: https://realcloud.realtech.com/

Lösung:
???????

Fehlermeldung:
Db connect Error: (bei der Installation von owncloud)

Lösung:
MySQL User checken ("oc_root -> localhost" und "oc_root -> %") und eventuell löschen
Als Datenbank Host 127.0.0.1 eintragen

Fehlermeldung:
SSL Error bei Android OwnCloud App


###################################################################################################################
SAML Konfiguration
PreReq:

Mhash (libmhash):
	"lynx http://mhash.sourceforge.net/"
	"tar -xzf mhash-0.9.9.9.tar.gz"
	"cd mhash-0.9.9.9"
	64-Bit bei openSUSE "./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib64 --includedir=/usr/include"
	"make"
	"make install"
	
Mcrypt:
	"lynx http://mcrypt.sourceforge.net/"
	"tar -xzf libmcrypt-2.5.8.tar.gz"
	"cd libmcrypt-2.5.8"
	64-Bit bei openSUSE "./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib64 --includedir=/usr/include"
	"make"
	"make install"
	
	"tar -xzf mcrypt-2.6.8.tar.gz"
	"cd mcrypt-2.6.8"
	64-Bit bei openSUSE "./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib64 --includedir=/usr/include"
	"make"
	"make install"
	
simplesaml:
	"lynx http://simplesamlphp.org/"
	"wget http://simplesamlphp.googlecode.com/files/simplesamlphp-1.11.0.tar.gz"
	"tar -xzf simplesamlphp-1.11.0.tar.gz"
	"cp -frv simplesamlphp-1.11.0.tar.gz /usr/local/apache2/htdocs/simplesamlphp"
	"cd /usr/local/apache2/htdocs/simplesamlphp"
	"chown -R daemon:daemon /usr/local/apache2/htdocs/*"
	"vi /usr/local/apache2/conf/httpd.conf" ->
		Alias /simplesaml /usr/local/apache2/htdocs/simplesamlphp/www
	"cp -frv simplesamlphp/config-templates/*.php config/
	"cp -frv simplesamlphp/metadata-templates/*.php metadata/
	"vi simplesamlphp/config/config.php" ->
		'auth.adminpassword'		=> 'DgWieI&hidZ!',
			"tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2>/dev/null;echo"
		'secretsalt' => 'p6akesx10z2ptdhi7mgp8r307aq8ogpe', 
	Modul enamble
	"mv simplesamlphp/modules/adfs/default-disable simplesamlphp/modules/adfs/default-enable"
	"vi config/authsources.php" ->
	"vi metadata/saml20-idp-remote.php" ->
	
OwnCloud App user_saml:
	"git clone https://github.com/pitbulk/apps.git"
	"cp -frv user_saml /usr/local/apache2/htdocs/realcloud/apps"
	"chown -R daemon:daemon user_saml"

	https://github.com/owncloud/apps/tree/master/user_saml
	https://groups.google.com/forum/#!topic/simplesamlphp/I8IiDpeKSvY

Konfig:
	"vi /var/www/realcloud/config/config.php" -> ":  'instanceid' => '521f135136c33'," 		gleich	 	"vi /var/www/simplesamlphp/config/config.php" -> ":       'session.phpsession.cookiename'  => '521f135136c33',"
	

############################################################################################################################################################################################################################################################################################
mount -t cifs //wdfcn867/C$ /usr/local/apache2/htdocs/realcloud/data/9BD5C5AD-3B51-43ED-B3CA-33A302D0608F/files/wdfcn867 -o user=alexander.wenning@realtech.net,uid=daemon,gid=daemon
mount -t cifs //wdf-fs02/Wenning$ /usr/local/apache2/htdocs/realcloud/data/9BD5C5AD-3B51-43ED-B3CA-33A302D0608F/files/homeshare -o user=_dbclusteradmin@realtech.net,passwd=WdNnso\!\!,uid=daemon,gid=daemon


#Netzwerk Konfig für WEB-DMS###################################################################################################################
"route del -net 169.254.0.0/16 dev eth0"
"route add -net 195.234.217.0/26 dev eth0"
"route add -net 0/0 gw 195.234.217.1"

netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         195.234.217.1   0.0.0.0         UG        0 0          0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
195.234.217.0   0.0.0.0         255.255.255.192 U         0 0          0 eth0


Address:   195.234.217.36        11000011.11101010.11011001.00 100100
Netmask:   255.255.255.192 = 26  11111111.11111111.11111111.11 000000
Wildcard:  0.0.0.63              00000000.00000000.00000000.00 111111
=>
Network:   195.234.217.0/26      11000011.11101010.11011001.00 000000 (Class C)
Broadcast: 195.234.217.63        11000011.11101010.11011001.00 111111
HostMin:   195.234.217.1         11000011.11101010.11011001.00 000001
HostMax:   195.234.217.62        11000011.11101010.11011001.00 111110
Hosts/Net: 62                    
            
############################################################################################################################################################################################################################################################################################
Produktivsetzung To Tos

RealCloud ToDo:
RRDtool Statistik aufbauen
	sysstat
AWstats Log Analyzer
Quotas mit Benachrichtigung
ClamAV Virus Scanner mit OnAccess
DAU Dokus erstellen
Test Checkliste
OwnCloud mit RealTech Symbolen ausrüsten
syslog (logrotate)
SAML http://apps.owncloud.com/content/show.php/user_saml++?content=154410
WebDAV Android Client (Total Commander) in MDM freigeben.
smbclient tuning
Syslog Allerting mit SSH (Jun 29 18:38:56 wdf-cloud01 sshd[23099]: Address 10.0.56.13 maps to wdfnb179.de.realtech.net, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!)
OwnCloud versucht alle Verzeichnize via smbclient zu cachen, was bei C$ shares einige 10 bin 100 tsd. Dateien sein kann. SMB external Shares sind sehr schlecht zu manager in owncloud.
Logrotae bei apache logs 

#INFO
WebDAV Daten werden direkt ohne /tmp (php Chach Verz.) ins verz. geladen
_ldapread User auf AD Basis ist häuft gesperrt. OwnCloud CLient wird rot. Lösung User unlock.
WebDAV Zugang unter Win7 nur mit @.net Adresse ????
Wenn ein Share in die Cloud eingemountet ist das mehr speicherplatz verbraucht als das max Quaota ist kann man nichts mehr hochladen :-( ???
File Chache Problem
	SELECT * FROM realcloud.oc_filecache;
	DELETE FROM `realcloud`.`oc_filecache`;
	
Probleme:
Quotas auf Verzeichnis Ebene ???
smbclient macht Probleme ??? nimmt zu viel CPU 
SAML und Windows WebDAV Netzlaufwerk funktionieren nicht zusammen

Finished:
RT-LAN
TMG publiziert
Firewall entschärfen
/tmp Verzeichnis nach Leichen aufräumen (PHP Chache). GGF PHP Chache Verz. auf LUN legen. PHP Session Files aufräumen (CRON Job) "/usr/local/apache2/htdocs/realcloud/data/php_session_tmp"
Automatisiertes Backup
SNMP
Apache V-Host Header Check
ZIP Download funktioniert nicht ganz. Nicht alles wird verpackt (Test SoilWork) . DEAKTIVIERT.
.htacces verschärfen
httpd.conf verfeinern (Logs, Vhost Zugriff etc)

############################################################################################################################################################################################################################################################################################
Zusätzliche Kommandos zum Debuggen:
"tcpdump -i eth0 -n -vvv -X not port ssh and host 10.0.0.73 and host 10.0.0.74 and not host 10.0.56.3| grep -i cloud"

###################################################################################################################
http://owncloud.org/changelog/
http://owncloud.org/sync-clients/releases/

OwnCloud Client Probleme
ggf. den Windows registry Eintrag unter "HKEY_CURRENT_USER\Software\ownCloud\OrganizationDefaults" löschen. User Accoun Information.
"Program Files (x86)\ownCloud\owncloud.exe" --logwindow = Startet den Client im Log Modus
oder
"C:\Users\Bit-Devil\AppData\Local\ownCloud" löschen


Filecache neu laden. Hilft falls der User keine Dateien in der Cloud sieht obwohl sie da sind. Oder bei Fehlerhaften Dateien aller Art.
"php /var/www/realcloud/console.php files:scan A66CB65D-D0DF-4113-AFB0-094858AC957E" = Aktualisert den Filecache für den User XY oder "php console.php files:scan --all" aktualiesiert den kompletten Filecache. Achtung das heißt die Cloud zieht sich von allen System die Daten neu, was heißt die CPU kocht und der Netzwerktraffic steigt stark an. Info http://forum.owncloud.org/viewtopic.php?f=17&t=7236
"time sudo -u daemon /usr/local/bin/php /usr/local/apache2/htdocs/console.php file:scan --all" = Alle Files einlesen
"MariaDB [mysql]> use owncloud;  SELECT COUNT(*) FROM oc_filecache;" = Einträge im Filecache zählen.

Nützliche DB SQL Statements
SELECT * FROM realcloud.oc_ldap_user_mapping WHERE ldap_dn LIKE '%mahler%';														= User Suchen um ID festzustellen
SELECT * FROM realcloud.oc_ldap_user_mapping WHERE owncloud_name LIKE '%E3183D6D-3299-4BE6-A9DE-BCC8D807FF12%';					= User Name über ID herausfinden
SELECT * FROM realcloud.oc_filecache WHERE name LIKE '%X16-32254.exe%';															= Nach Datei Suchen
SELECT * FROM realcloud.oc_preferences where configkey = 'quota';																= Schauen ob ein Quota auf einen User liegt
DELETE FROM realcloud.oc_preferences where userid = '96F1596E-353C-401C-9614-226A0EFF00A0' and configkey = 'quota';				= Hebt das Quota für den User wieder auf
DELETE FROM `realcloud`.`oc_filecache` WHERE path_hash ='cacc360555338d9aa66ef7d60612fec8'; 									= genau den File löschen mit dem hashwert
DELETE FROM `realcloud`.`oc_filecache` WHERE path LIKE '%E7E7F7E3-F980-4BBB-9428-927FBEF66210%';								= Files zur User ID löschen

Hin und wieder kann es sein das der AD-User "_ldapread" gesperrt ist. Dann einfach den User wieder unlocken. Zu sehen ist das am schnellsten wenn der OwnCloud Windows Client vom roten Kreuz zum grünen Häckchen wechselt.

Probleme mit Umlauten.
Samba Konverter :-)
Die Dateien des Users Binär via SCP lokal auf eine Windowssystem kopieren.
Die lokalen Dateien des Clients auf der Cloud auf OS Ebene löschen.
Dann via SMB (Windows Datei Explorer) wieder zurück kopieren.
"ls -1 | while read file; do N=$(echo $file | tr -cd '\11\12\40-\176'); mv "$file" "$N"; done" = löscht aber nur die Umlaute.
 
Problem beim Reconnect des WebDAV Laufwerks
http://support.microsoft.com/kb/2673544
Kurz: Unter Windows kann man das nicht über einen Reboot hinaus speichern :-(
Lösung: Disconnect und Reconnect
Lösung2: SAML oder Logon Script
Lösung3: Unter Windows 8.1 funktioniert es

Den Zeitstempel in der Datenbank einer Datei aus der Tabelle Filecache in normale "Menschliche" Zeit umrechnen.
Select Kommando: "SELECT mtime, path FROM `realcloud`.`oc_filecache` WHERE path LIKE '%151013-181013%';" -> 
Rückgabewert: "1382695351	files/ownCloud/Reisekosten/2013/Reisekosten - ComTeam - 151013-181013.xls"
"date -d @1382695351" oder "http://www.convert-unix-time.com/" gleich "Fr 25. Okt 12:02:31 CEST 2013" . Das ist auch die Zeit die in der Cloud als "Modified" angezeigt wird.

Restart des Apapche WebServer "/ect/init.d/apache restart" mit "ps -ef | grep -i apache" überprüfen und "netstat -apn | grep -i apache"

Am schnellsten herausfinden welche OwnCloud ID zu welchem User gehört:
"mount | grep -i wenning" ->
	//wdf-fs02/Wenning$ on /var/www/realcloud/data/9BD5C5AD-3B51-43ED-B3CA-33A302D0608F/files/homeshare type cifs (rw)
Und die ID ist dann "9BD5C5AD-3B51-43ED-B3CA-33A302D0608F"

Die Homeshares werden alle 15 min. neu geladen/überprüft.
Manuelles ausführen des Homeshare Mounters "/var/www/realcloud/data/homeshare_mounter/homeshare_mounter /var/www/realcloud/data/"

"ls -altr /var/www/realcloud/data | egrep '[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}'" = Anzeige mit Regulärem Audruck über eine UUID. Damit läßt sich die Anzahl der User auf der Cloud herausfinden

"time find /var/www/realcloud/data/php_session_tmp -mtime +3 -print -exec rm -fr {} \;  > /dev/null 2>&1" = Löscht alle PHP Session Files die älter sind als 3 Tage
"time find /var/www/realcloud/data/backup_mysql -mtime +3 -print -exec rm -fr {} \;  > /dev/null 2>&1" = Löscht alle MySQL Backup Files die älter sind als 3 Tage

"du -h /var/www/realcloud/data/9BD5C5AD-3B51-43ED-B3CA-33A302D0608F/ --exclude=/var/www/realcloud/data/9BD5C5AD-3B51-43ED-B3CA-33A302D0608F/files/homeshare" = Zeigt die größe des Cloud Storages für einen User an (Ohne Homeshare)

File Ignore List bearbeiten.
Mit Notepad++ C:\Program Files (x86)\ownCloud\sync-exclude.lst öffnen und die gewünschte Dateiendung herausnehmen\hinzufügen.

"lsof | grep -i realcloud" = herausfinden welche User gerade auf die Cloud zugreifen bzw. User aktivität.

FileCache komplett neu einlesen/erstellen Script. Achtung alle Daten werden neu auf den Client übertragen :-(
	1. Apache stoppen. "/etc/init.d/apache2 stop"
	2. Fiel Cache Tabelle leere. "DELETE FROM `realcloud`.`oc_filecache`;"
	3. folgendes Script ausführen ("screen"). "time /root/scripte/filescan.sh"
		#!/bin/bash
		/etc/init.d/apache2 stop
		mysql -e "DELETE FROM realcloud.oc_filecache;"
		rm -frv /root/temp/create_filecache_tmp.sh
		rm -frv /root/temp/create_filecache.sh
		echo -e 'php /var/www/realcloud/console.php files:scan \n' > /root/temp/create_filecache_tmp.sh 
		ls -altr /var/www/realcloud/data | egrep '[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}' |  awk '{print $9}' >> /root/temp/create_filecache_tmp.sh 
		sed 's/$/ \\/' /root/temp/create_filecache_tmp.sh vi  | tee /root/temp/create_filecache.sh
		chmod 777 /root/temp/create_filecache.sh
		rm -frv /root/temp/create_filecache_tmp.sh
		/root/temp/create_filecache.sh
		/etc/init.d/apache2 start
	4. Apache starten

"watch -n 1 "netstat -apn | grep -i 389 | wc -l" " = LDAP Connection zum AD überwachen
##############################################################################################################################################################
Upgrade einer Subversion.

PRD Cloud via VMware klonen.
geklonte DEV Cloud Schnaps schießen.
Nun die DEV Cloud starten.

"export http_proxy=http://192.168.5.21:8080"
"wget http://download.owncloud.org/community/owncloud-5.0.13.tar.bz"
"tar -xf owncloud-5.0.13.tar.bz2"
Im realcloud Verzeichnis folgende Verz. sichern, den Rest löschen.
Am einfachsten geht das mit "mc" (old Norton Commander Style).
"/var/www/realcloud/config"
"/var/www/realcloud/data"
"/var/www/realcloud/.htacces"
Auf die Corportae Pics achten !!!
Der Rest unter "/var/www/realcloud/*" kann gelöscht werden.
Sobald die Verzeichnise gelöscht wurden, die neuen Verz. aus dem Update kopieren, außer das "config" Verz. .
Nun die Webseite erneut aufrufen "https://10.0.2.207". Das Update wird nun automatisch ausgeführt.
Die gleiche Verfahrensweise nach gründlichen Test nun in der PRD Cloud durchführen.

Nich vergessen später noch die Custom realcloud Bilder einzusetzen.

Thats`IT
##############################################################################################################################################################

Sendmail für public share link versenden

##############################################################################################################################################################
Email Konfig für eMail Share Link Funktion
Sendmail installieren

"apt-get install sendmail"
"sendmailconfig" Wizard folgen.

"vi /var/www/realcloud/config/config.php" -> hinzufügen
		'mail_smtpmode' => 'smtp',
		'mail_smtphost' => 'email.realtech.de',
		'mail_smtpport' => 25,
		
##############################################################################################################################################################
OwnCloud Debug Modus im Batch Betrieb starten.

c:\
cd C:\Program Files (x86)\ownCloud\
start owncloud.exe --logdir C:\Temp\cloud_log --logfile C:\Temp\cloud_log\cloud_log.txt
##############################################################################################################################################################

##########################################################################################
Skydrive Test 

User: c507f25c581f48280719
User/mail: c507f25c581f48280719@trash-mail.com
Pass: c507f25c58

apt-get install davfs2
Fehler: mount -t davfs https://skydrive.live.com/?cid=45f544e7837afc98 /root/skydrive
Fehler: mount -t davfs https://skydrive.live.com/#cid=45f544e7837afc98 /root/skydrive

Fehler: mount -t davfs https://skydrive.live.com/#cid=45f544e7837afc98/Documents /root/skydrive
Fehler: mount -t davfs https://skydrive.live.com/?cid=45f544e7837afc98/Documents /root/skydrive

Fehler Bug in davfs2 bzw. MS hält sich nicht an die RFCs: 
mount -t davfs https://d.docs.live.net/45f544e7837afc98 /root/skydrive
http://blog.lazut.in/2012/12/skydrive-webdav-access.html
https://savannah.nongnu.org/support/?107402
##########################################################################################
Upgrade 5 to 6

"vi /usr/local/apache2/htdocs/realcloud/config/config.php" ->
		'maintenance' => false,

"DELETE FROM oc_lucene_status;"

##########################################################################################
MySQL Wartungen

"cd /var/lib/mysql" = SQL Datafiles

ibdata1 Wartung (testen !!!!!):
http://stackoverflow.com/questions/3456159/how-to-shrink-purge-ibdata1-file-in-mysql
http://dba.stackexchange.com/questions/16747/mysql-clean-ibdata1
##########################################################################################
User löschen.

Das Problem welches hier existiert ist, das nicht alle LDAP User in der "Users" Maske unter dem OC User root zu sehen sind.
Deshlab ist das Löschen eines LDAP Users nicht so ohne weiteres möglich.
Erst mal das Home Share unmounten. Dann alle Dateien aus der "nicht owncloud" Verzeichnistruktur manuell löschen (am besten mit "mc").
Dann den User aus der DB oc_ldap_user_mapping löschen "DELETE FROM `realcloud`.`oc_ldap_user_mapping` WHERE owncloud_name LIKE '%F41E6D2B-A733-47D5-8B24-C1BB4FAA6C25%';	"
Danach den User im AD löschen und zum Schluss die Verzeichnistruktru komplett von z.B. F41E6D2B-A733-47D5-8B24-C1BB4FAA6C25 löschen.
##########################################################################################

##########################################################################################
Upgrade von Ver 5.X auf 6.X
filechache löschen. siehe Doku.
BUG: "php console.php files:scan --all" Bug in "scanner.php" Lösung. "vi scanner.php" -> deaktivieren von "//$absolutePath = Filesystem::getView()->getAbsolutePath($dir);" und den file scan unter "cd /var/www/realcloud/date/" starten mit "php ../console.php files:scan --all" . Nachdem Rescan wieder aktivieren.

##########################################################################################
OwnCloud Client Alternative.

Der original OwnCloud Client ist nicht zu gebrauchen.
Zu langsam, schwerfällig und fehleranfällig. Besonder bei vielen Dateien
zur Syncronisation.
Als Alternative bietet sich die Software FreeFileSync an http://www.freefilesync.org/ an.
Da diese Software von Haus aus kein WebDAV kann muss man via Windows OnBoard mitteln, das
WebDAV Verzeichnis der OwnCloud als Netzlaufwerk verbinden und kann dann den File Sync ausführen.
Das schöne an FreeFileSync es kann via Batch automatisiert ausgeführt werden. Einfach einen "Task Schedule" Job erstellen
und es alle X Minuten laufen lassen. Oder man führ den RealTimeSync aus.
##########################################################################################
Perfomance Tuning


"vi /etc/fstab" ->
	none /tmp tmpfs,size=6g defaults
	none /usr/local/apache2/htdocs/owncloud tmpfs defaults,size=6g

PHP APC

echo "2048 64512" > /proc/sys/net/ipv4/ip_local_port_range
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse
echo "10" > /proc/sys/net/ipv4/tcp_fin_timeout

echo "65536" > /proc/sys/net/core/somaxconn
echo "65536" > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo "262144" > /proc/sys/net/netfilter/nf_conntrack_max

Alle OwnCloud File auf die RAM Disk schreiben

"vi /usr/local/apache2/conf/httpd.conf" ->
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 10
HostnameLookups off
<IfModule prefork.c>
        StartServers 100
        MinSpareServers 100
        MaxSpareServers 2000
        ServerLimit 6000
        MaxClients 6000
        MaxRequestsPerChild 4000
</IfModule>
<Directory "/usr/local/apache2/htdocs/owncloud">
        Options Indexes SymLinksIfOwnerMatch AllowOverride All
</Directory>

MySQL Tuning
create index oc_group_user_uid on oc_group_user(uid);
create index oc_share_file_target on oc_share(file_target);
create index oc_filepath on oc_filecache(storage,size);
create index oc_files_versions_user  on oc_files_versions(user);
create index oc_files_trashsize_user  on oc_files_trashsize(user);

/etc/mysql/my.cnf

	[mysqld]
	key_buffer_size         = 9999M
	innodb_buffer_pool_size = 9999M
	query_cache_type = 1
	query_cache_limit = 64M
	query_cache_size = 64M
	table_cache = 512
##########################################################################################
Migration von MySQL nach MariaDB
funktioniert ohne Probleme

##########################################################################################
Aufbau in MariaDB Galera Cluster mit Loadbalancer

Aufbau des Galera Cluster siehe "galera_cluster_mariadb.txt"

Auf MariaDB Seitig alle IPs/Zugänge Eintragen die Zugriff haben sollen (ma besten alle beteiligten IPs):

GRANT ALL PRIVILEGES ON *.* TO root@172.17.190.40 IDENTIFIED BY "passwort"; "
UPDATE `mysql`.`user` SET `Grant_priv`='Y' WHERE  `Host`='172.17.190.40' AND `User`='root'; "
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.17.190.40' WITH GRANT OPTION;

Aufbau des Loadbalncers siehe Doku "ipvsadm_linux_virtual_ip_server_how_to.txt" :

echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.lo.arp_announce=2
sysctl -w net.ipv4.vs.conntrack=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ipvsadm -A -t 172.17.190.39:3306 -s rr
ipvsadm -a -t 172.17.190.39:3306 -r 172.17.190.36:3306 -m
ipvsadm -a -t 172.17.190.39:3306 -r 172.17.190.37:3306 -m
ipvsadm -a -t 172.17.190.39:3306 -r 172.17.190.38:3306 -m
ipvsadm -A -t 172.17.190.39:80 -s rr
ipvsadm -a -t 172.17.190.39:80 -r 172.17.190.40:80 -m
ipvsadm -a -t 172.17.190.39:80 -r 172.17.190.41:80 -m
ipvsadm -a -t 172.17.190.39:80 -r 172.17.190.42:80 -m
#ipvsadm -L -n
#ipvsadm -L -n -c

Das ganze sollte man über den ldirector laufen lassen falls ein Node ausfällt. Sieh ipvsadm Doku.

Aufbau des Web Servers mit APCu siehe Doku.
"Apache_add_on.txt" sowie "apcU.txt"
Der shread storage für die htdocs des Apachen erfolgt über OCFS2 (siehe Doku OCFS2_how_to.txt)

Owncloud Packet runterladen und entpacken.
Zugriff über LB IP 172.17.190.39 und dem Wizard folgen.

gff die "trusted_domains" in config.php hinzufügen
	'trusted_domains' => 
	  array (
		0 => '172.17.190.40',
		1 => '172.17.190.39',
##########################################################################################
#Troubleshooting

Problem:	time sudo -u daemon /usr/local/bin/php /usr/local/apache2/htdocs/console.php file:scan --all
			[OCP\Lock\LockedException]
			"scanner::a0cfaefc5d5ef026458c0e89474f230d" is locked
Lösung:		mysql -> use owncloud; TRUNCATE `oc_file_locks`;





Thats`all
##########################################################################################


Post Revisions: