1. Install Openfire-3.6.4 # sudo apt-get install sun-java6-jre # cd /tmp # wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.6.4_all.deb # sudo dpkg -i openfire_3.6.4_all.deb 2. Create a MySQL user and database for Openfire (example: user openfire, database openfire) # mysql -u root -p mysql> CREATE USER 'openfire'@'localhost' IDENTIFIED BY '***'; mysql> GRANT USAGE ON *.* TO 'openfire'@'localhost' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; mysql> CREATE DATABASE IF NOT EXISTS `openfire`; mysql> GRANT ALL PRIVILEGES ON `openfire`.* TO 'openfire'@'localhost'; 2. Access to http://chat.vcc.dit.upm.es:9090/ - Choose Language -> English - Server Settings * Domain: chat.vcc.dit.upm.es * Admin Console Port: 9090 * Secure Admin Console Port: 9091 - Database Settings -> Standard Database Connection - Database Settings - Standard Connection * Database Driver Presets: MySQL * JDBC Driver Class: com.mysql.jdbc.Driver * Database URL: jdbc:mysql://localhost:3306/openfire * Username: openfire * Password: *** * Minimum Connections: 5 * Maximum Connections: 25 * Connection Timeout: 1.0 - Profile Settings -> Default - Administrator Account -> Set your administration account 3. Restart Openfire # /etc/init.d/openfire restart 4. Copy vccCustomAuthentication.jar to Openfire Installation directory. Ej. # cp /home/isabel/global2/current/extras/chat/openfire/installation/vccCustomAuthentication.jar /usr/share/openfire/lib/ 4. Restart Openfire # /etc/init.d/openfire restart 5. Config Openfire Server -> Server Manager -> System Properties admin.authorizedJIDs vcc@chat.vcc.dit.upm.es,admin@chat.vcc.dit.upm.es cache.group.maxLifetime 30000 cache.listsCache.maxLifetime 30000 cache.remoteUsersCache.maxLifetime 30000 cache.userCache.maxLifetime 30000 cache.userGroup.maxLifetime 30000 cache.username2roster.maxLifetime 30000 jdbcGroupProvider.allGroupsSQL SELECT name FROM spaces jdbcGroupProvider.descriptionSQL SELECT `description` FROM `spaces` WHERE `name`=? jdbcGroupProvider.groupCountSQL SELECT count(*) FROM spaces jdbcGroupProvider.loadAdminsSQL SELECT `login` FROM `users` INNER JOIN `performances` ON (`users`.id = `performances`.agent_id AND `performances`.agent_type = 'User') INNER JOIN `spaces` ON (`performances`.stage_id = `spaces`.id AND `performances`.stage_type = 'Space') INNER JOIN `roles` ON (`performances`.role_id = `roles`.id) WHERE `roles`.name = 'Admin' AND `spaces`.name LIKE BINARY ? jdbcGroupProvider.loadMembersSQL SELECT `login` FROM `users` INNER JOIN `performances` ON (`users`.id = `performances`.agent_id AND `performances`.agent_type = 'User') INNER JOIN `spaces` ON (`performances`.stage_id = `spaces`.id AND `performances`.stage_type = 'Space') INNER JOIN `roles` ON (`performances`.role_id = `roles`.id) WHERE `roles`.name != 'Admin' AND `spaces`.name LIKE BINARY ? jdbcGroupProvider.userGroupsSQL SELECT `name` FROM `spaces` INNER JOIN `performances` ON (`spaces`.id = `performances`.stage_id AND `performances`.stage_type = 'Space') INNER JOIN `users` ON (`performances`.agent_id = `users`.id AND `performances`.agent_type = 'User') WHERE `users`.login = ? jdbcProvider.connectionString jdbc:mysql://127.0.0.1/globalplaza_database_name?user=database_user_name&password=database_password jdbcProvider.driver com.mysql.jdbc.Driver jdbcUserProvider.allUsersSQL SELECT login FROM users jdbcUserProvider.emailField email jdbcUserProvider.loadUserSQL SELECT full_name,email FROM users join profiles WHERE users.id = profiles.user_id AND users.login=? jdbcUserProvider.nameField login jdbcUserProvider.searchSQL SELECT login FROM users WHERE jdbcUserProvider.userCountSQL SELECT COUNT(*) FROM users jdbcUserProvider.usernameField login plugin.vccRooms.adminRoles Admin,Organizer plugin.vccRooms.vccEventProfilesUrl http://vcc.dit.upm.es/events/{event-id}/performances.xml plugin.vccRooms.vccEventsUrl http://vcc.dit.upm.es/events/{event-id} plugin.vccRooms.xmppServerUser xmpp_server plugin.vccRooms.xmppServerPassword xmpp_server_password plugin.vccRooms.vccUser vcc_user_for_chat_server_authentication plugin.vccRooms.vccPass vcc_pass_for_chat_server_authentication plugin.vccRooms.vccAvatarUrl http://vcc.dit.upm.es/users/{user-id}/avatar plugin.vccRooms.groupChatServiceName events provider.admin.className org.jivesoftware.openfire.admin.DefaultAdminProvider provider.auth.className org.jivesoftware.openfire.auth.VccCustomAuthProvider provider.group.className org.jivesoftware.openfire.group.VccCustomGroupProvider provider.lockout.className org.jivesoftware.openfire.lockout.DefaultLockOutProvider provider.securityAudit.className org.jivesoftware.openfire.security.DefaultSecurityAuditProvider provider.user.className org.jivesoftware.openfire.user.JDBCUserProvider provider.vcard.className org.jivesoftware.openfire.vcard.DefaultVCardProvider vccCustomAuthProvider.userNameHash 8aa40001b9b39cb257fe646a561a80840c806c55 vccCustomAuthProvider.vccSessionUrl http://vcc.dit.upm.es/session.xml vccCustomAuthProvider.vccCookieSession _vcc_session xmpp.auth.anonymous true xmpp.domain chat.vcc.dit.upm.es xmpp.session.conflict-limit 0 xmpp.socket.ssl.active true 6. Continue Openfire Configuration Group Chat > Group Chat Settings > Create New Service Group chat service name: events Group chat service description (optional): Event Chats 7. Restart Openfire # /etc/init.d/openfire restart 8. Configure Vcc Login with admin user and visit url vcc.dit.upm.es/site Configure -> Presence Domain: chat.vcc.dit.upm.es Event Chat Group Service: events.chat.vcc.dit.upm.es XMPP Server Password: (XMPP Server Password) 9. Congigure Apache - Enable mod_proxy apache module # a2enmod proxy # a2enmod proxy_http - Add this lines to /etc/apache/sites-enabled/000-default ProxyPass /http-bind/ http://127.0.0.1:7070/http-bind/ ProxyPassReverse /http-bind/ http://127.0.0.1:7070/http-bind/ - Properly config /etc/apache/mods-enabled/proxy.conf AddDefaultCharset off Order deny,allow #Deny from all Allow from 127.0.0.1 10. Restart Apache # /etc/init.d/apache reload