Category Archives: Tutorial

Openfire XMPP Chat Server: migrating from windows to linux demystified

Openfire RTC Server

I’ve been using openfire chat server for about two years now. It has been a fantastic cost-effective solution for our clients to communicate efficiently and securely, the solution scales from 2 users to massive, and it’s very easy to setup and administer. Openfire is a fully featured XMPP real time collaboration (RTC) server offering full support for traditional IM, web-based or managed queue, voice and video chat as well as rich media sharing.

The Open Source project is maintained by Jive Software, the social business application powerhouse. Jive maintains the development community and makes sure the project implements important fixes, improvements to stability and XMPP protocol compliance. They continue to do a great job with the most recent release being Openfire 3.7.0 beta 2 weeks ago.

If users are currently using public chat services for corporate communications, I would strongly encourage you to investigate Openfire. The benefits of bringing a widely used service like this in-house are tremendous, but mainly I would cite security as the number one benefit. Most other chat protocols/services do not use TLS/SSL or it’s optional and off by default, and thus it’s a low-hanging vector for data breach and leakage.  But hopefully I’m preaching to the choir, because this post is for current Openfire users.

Recently, a client needed to migrate their Openfire service off a windows machine to a linux server. What a great idea! It’s a fairly straightforward install on the linux box until you try to move the database. Openfire can use an embedded flat file db or an external database (MySQL, SQL Server, Oracle, PostgreSQL, IBM DB2, HSQLDB).

Unfortunately, moving a MySQL database from windows to linux can be a roadblock to what should be a quick and easy migration. Windows likes to ignore case, but linux sees a table name in lowercase as a separate table from one using all caps or even one uppercase character.

Hopefully by sharing my solution, I’ll save somebody the couple of hours I spent implementing this.
Continue reading