Click an icon to bookmark
Summary:
This article provides a step-by-step tutorial on how to install and setup/configure
your own Jabber/XMPP network in a corporate environment.
In the tutorial, an Openfire XMPP server is installed, configured, and integrated
with Active Directory and Microsoft SQL Server database as a backend.
Software developers and system administrators, as well as anyone who wants to run
their own XMPP network, can also use these instructions to quickly setup a private
XMPP network on their local machines for development or testing purposes.
No prior experience with XMPP, and a minimal knowledge of system and network administration,
are assumed.
Table of Contents:
1. Prerequisites and planning.
2. Openfire XMPP server installation and configuration.
- Using Microsoft SQL Server as a backend.
- Integration with AD (Active Directory).
3. Jabber client configuration.
4. XMPP integration with Microsoft SharePoint.
1. Prerequisites and planning.
XMPP is one of the best enterprise collaboration technologies available today.
Here's just one example: the Unites States Department of Defense is using XMPP.
I think that should be enough to convince anyone.
But if you are trying to talk your CxO into using this technology, there are a few
more examples for you of companies which integrated XMPP with their products: IBM,
Google, Cisco, Oracle, Sun Microsystems, and Hewlett-Packard.
Those are hardware and software manufacturers that have thousands upon thousands
of big-name corporate clients all over the world.
OK, that should definitely be more than enough.
So, congratulations on your decision to get started with XMPP.
Let's roll up our sleeves and create our own corporate (or private) XMPP network.
NOTE: If you are planning to install an XMPP server cluster, this article is not
for you: you already [should] have a lot of hands-on experience with managing a
smaller network.
Please follow the instructions in your server documentation.
I will show how to create a single-server XMPP network.
First of all, you need to decide what machine you will be installing you XMPP server
on.
(a) Production environment:
The best approach is to install the server on a machine in a DMZ (delimitarized
zone), with a static IP address mapped to a domain name.
In this case, users will be able to connect to it from any device (desktop PC, laptop,
cell phone, BlackBerry, iPhone, etc.) from wherever they are: at work, in an airport,
on the road, at home, and anywhere else, as long as they have an Internet connection.
(b) Testing or QA environment, or a private XMPP network:
If you are a software developer, you most likely do not have a luxury of choosing
a server location, and you don't have a domain name or a static IP address.
Don't worry about this stuff if you are the only user, and if you will be installing
the server on your local machine for testing purposes only. Proceed to the installation
instructions below, and keep in mind that your XMPP domain will be your machine
name.
But If you want other - external - users to be able to use your XMPP network, you
have a few options:
- Use a VPS (Virtual Private Server) hosted by a third party.
As of this writing, we have had our own private network for about 2 years, with
an Openfire XMPP server running on a VPS.
You can get a very decent machine - with plenty of RAM and disk space - for as low
as $80/month, with a root (administrator) access to it.
Just for your private XMPP network, an account for about $30/month should probably
be good enough.
Shop around (Google is your friend), there are plenty of VPS offers, for any operating
system.
- Or, you can
subscribe for a dynamic DNS account:
http://en.wikipedia.org/wiki/Dynamic_dns.
There are companies (such as DynDNS.com) which offer you services that enable you
to run your own server from almost any machine, even from your desktop at home.
Basically, you get a free domain name (such as something.dyndns.org), and you run
special software on your machine which provides kind of a pseudo-static IP address.
Usually, they offer 2 types of accounts: free and commercial. Those which are free,
are sufficient for your purposes. In a corporate environment, you probably have
domain names and static IP addresses anyway. But for a small company, a [very affordable]
commercial account could be the best solution.
WARNING: If you are planning to do this at work, talk to your system administrators
first. Running a server from behind your corporate firewall can potentially create
very serious security problems. WE DO NOT RECOMMEND THIS APPROACH unless all risks
have been thoroughly evaluated and you have an approval from your IT department
management.
Firewalls:
Depending on how you want to configure your server, at least one TCP port should
be open in your firewall for the clients to be able to communicate with it.
Usually, the standard XMPP ports 5222 and 5223 are used.
Often, 443 and/or 80 are used.
Although you can create users manually, which is just fine for some quick tests,
for a corporate environment you would most likely want to make sure that your XMPP
network is integrated with your Active Directory or other directory services such
as OpenLDAP.
In that case, right after you are done with the server configuration, your AD users
will have their own Jabber IDs in a form of username@xmppdomainname, for example,
john.smith@companyname.com.
So, you need to know some basic information about your Active Directory: name, location,
and an administrator account and password.
NOTE: You can skip this step if you want. Integration with directory services is
optional (although it certainly is convenient).
Database server:
Finally, you need to decide where all the XMPP server data will be stored.
With Openfire, you have a choice of any major DBMS: Oracle, DB2, SQL Server, PostgreSQL,
or MySQL.
If you choose one of them, you need to have access to a database server and an administrator
login credentials.
To make things simple, for a small network and for testing purposes you can use
an embedded database, which will be created and configured for you automatically.
I will show you how to configure your Openfire to use Microsoft SQL Server.
If you are planning to use another DBMS supported by Openfire (for example, Oracle),
please refer to Openfire documentation.
2. XMPP server installation and configuration.
- Using Microsoft SQL Server as a backend.
- Integrating with AD (Active Directory).
1. Download Openfire server installer package for your operating system from
http://www.igniterealtime.org
At the time of this writing, the current version of Openfire is 3.6.4.
2. Install it. As you will see, no specific instructions are needed for this step.
3. Once the server is installed, run it.
Openfire started - Screenshot
4. When the server is started, click "Launch Admin" to open the configuration wizard.
5. The configuration wizard asks for the domain name.
By default, it suggests the local machine name.
But I am installing Openfire on one of our Test/QA virtual private networks (running
on Sun xVM VirtualBox), so I enter the domain name: AI.local .
When I was installing Openfire on our Virtual Private Server (VPS), I entered our
real domain name: acciointellectum.net .
You could also use a subdomain, such as xmpp.yourcompany.com .
Enter your domain name (or accept the machine name instead of domain) and click
Continue.
Server settings - Screenshot
6. Now, choose a database.
The simplest (but not the best for production) solution is to use an embedded database.
I choose Microsoft SQL Server.
Make sure the "Standard Database Connection" is selected and click Continue.
Database settings - Screenshot
7. From the "Database Driver Presets" dropdown list, select "Microsoft SQLServer".
8. In the "Database URL" textbox, I enter jdbc:jtds:sqlserver://vssql;instance=sql2005dev;appName=jive
Here, VSSQL is the name of the our dedicated virtual database server (the machine
name), and SQL2005DEV is the instance name.
[So that there is no misunderstanding here: when I select a SQL Server engine to
connect to in SQL Server Management Studio, this one looks like "VSSQL\SQL2005DEV".]
Of course, you need to replace them with your own values.
NOTE: If you are using a default SQL Server instance (that is, an unnamed instance),
delete "instance=sql2005dev;" from the URL string.
Also, enter the username and password which will be used to connect to the database
server and create the database.
Click Continue.
Database connection - Screenshot
9. Select "Directory Server (LDAP)" and click Continue.
Select LDAP - Screenshot
10. Now, this is probably the most complex configuration step.
In our case, I am going to use our test Active Directory domain (AI.local) and an
SPAdmin user.
The SPAdmin user is in the "Users" AD "folder", and it is both a member of Domain
Administrators AD group and SharePoint administrators (SharePoint group).
So, my settings on this page look as follows:
Server Type: Active Directory
Host (that's the machine name where I am installing Openfire, but it also hosts
the Active Directory services): VSMAINx64
Base DN: dc=AI,dc=local
Administrator DN: cn=SPAdmin,cn=Users,dc=AI,dc=local
Password: <password for the ai\spadmin domain user>
If you are using a subdomain, such as jabber.yourcompany.com, then your Base DN
will be dc=jabber,dc=yourcompany,dc=com
Click "Test Settings". Make sure the result is Success.
Click "Save & Continue".
Active Directory connection settings - Screenshot
11. For our WSS and MOSS SharePoint Web Farms, I want *all* users and groups to
be XMPP "users" and have their own Jabber IDs.
So, I accept the default settings.
If you need to customize this, for example, to make sure that only individual users
(but not domain groups) will have their XMPP accounts, you need to modify Advanced
Settings.
Please refer to Openfire documentation for details.
You might want to select the "Store avatar in database if not provided by LDAP"
checkbox.
Click "Test Settings".
If the test is OK, click "Save & Continue".
AD profile settings - Screenshot
12. Group Mapping: I accept the defaults, test, and continue.
13. On the Administrator Account page, I add SPAdmin and myself.
Be sure to click the little gear icon in the Test column (it will become visible
after you've added at least one adminstrator account).
Click Continue.
Adding LDAP administrators - Screenshot
14. Click "Login to the admin console" button.
Setup complete - Screenshot
15. I enter my domain account credentials and click Login.
Login to Openfire - Screenshot
16. Take a few minutes to explore what's available on the admin site.
You will see that all of your domain users are already there.
For example, my own Jabber ID is dmitriy.gorbachev@AI.local . I didn't add it; my
username was imported from Active Directory, and to make a Jabber ID, you just add
"@yourXMPPdomainname" to your AD account.
Openfire users from Active Directory - Screenshot
17. Let's configure File Transfer.
Users will be able to send files to each other using their Jabber client software.
In the upper-left corner of the screen, click Server, and then select the "Server
Settings" tab.
In the menu on the left, click "File Transfer Settings".
Open File Transfer Settings - Screenshot
Make sure that "Enabled" is selected.
Accept the default port number or enter the one you prefer.
Click Save Settings.
File Transfer Proxy Settings - Screenshot
Now, use your firewall management console to verify that this port in the firewall
is open, and open it if it's currently closed.
18. Click Plugins.
Most likely, you will have one or no plugins yet.
Click Available Plugins.
Click Update Now hyperlink.
Installing a plugin is really easy. Just follow the instructions.
Some time ago, we used an "Import Export Plugin" before. It allows you to easily
import a list of existing users. This is very helpful if you are not using AD/LDAP
integration (which we did in this tutorial). With this plugin, you just create an
XML file with some basic information about users, such as usernames and their desired
Jabber IDs, and then you upload the file and let the Openfire do the work for you
in less than a minute which otherwise might take hours (depending on how many users
you want to create).
But this is not necessary if your Openfire server is integrated with Active Directory.
19. You might want to install Openfire as a Windows service or a server daemon,
so that it starts automatically every time the machine starts.
On Windows, open a command prompt (Start => Run => cmd), "cd" to the Openfire "bin"
folder, and run
openfire-service /install command.
Then,
openfire-service /start - this will start the service.
This is it. We have an XMPP server (and network) up and running. Now, let's help
the users.
3. Jabber client configuration.
A Jabber client is software which is used for Jabber/XMPP communication.
There are many available Jabber clients.
Some of them are available only for a particular operating system, others are cross-platform.
Some are Web-based (run in a browser), others are installed on a user desktop (or
a cell phone, etc).
There are free and commercial Jabber clients.
A large list of XMPP clients can be found in Wikipedia:
http://en.wikipedia.org/wiki/List_of_XMPP_client_software
At Accio Intellectum LLC, we test our software on various operating systems and
several mobile devices.
Here, I am showing to you how to configure 4 of the most popular Jabber clients:
Psi,
Spark,
Pidgin,
and
Kopete.
Kopete is for Unix-like operating systems and Mac OSX; the other three are cross-platform
(including Windows).
All four are free.
In case you're wondering: we are using these four clients, as well as Google Talk
desktop and mobile clients.
Google clients don't work with any other XMPP network except Google Talk, although
there is an XMPP feature called "gateways" which enables you to connect your own
server to Google Talk, AIM, Windows Live, and other non-XMPP networks.
Many companies use this feature; we don't because we don't need it (at least, not
yet).
Gateways are available for Openfire.
NOTE: "AI.local" is just not cool. The screenshots below show configuration settings
for the clients connected to our *real* private XMPP network hosted on acciointellectum.net.
Spark on Windows 7 - Screenshot 1
Spark on Windows 7 - Screenshot 2
Kopete on OpenSUSE 11.2 Linux
- Screenshot 1
Kopete on OpenSUSE 11.2 Linux
- Screenshot 2
Pidgin on OpenSolaris
- Screenshot 1
Pidgin on OpenSolaris
- Screenshot 2
Psi on Windows Server 2003 - Screenshot
1
Psi on Windows Server 2003 - Screenshot
2
4. XMPP integration with Microsoft SharePoint.
If your organization is using Microsoft SharePoint - either Windows SharePoint Services
v3 (WSS 3.0) or Microsoft Office SharePoint Server 2007 (MOSS 2007) - you can use
IMAlerts for SharePoint.
IMAlerts provides functionality similar to that of SharePoint built-in email alerts,
but it uses Jabber/XMPP instant messages instead of email to notify users of important
events that occur in the SharePoint system: for example, when a new document is
added, a Task is re-assigned, an image is deleted, a Wiki page is modified, etc.
Notifications can be sent via a free Google Talk instant messaging network or any
other Jabber/XMPP-compatible public or private network.
IMAlerts is very easy to use. It is seamlessly integrated into your existing SharePoint
websites.
Any XMPP-compatible client software can be used to receive alerts.
With IMAlerts, end users simply create subscriptions for being notified of events
occurring in document libraries, Tasks lists, Issues, Wiki libraries, and virtually
any other SharePoint lists and libraries.
These subscriptions are then processed by IMAlerts, and notifications are generated
and sent when events happen which match those subscriptions.
Alerts are delivered to any PC or mobile device regardless of its operating system.
IMAlerts is completely independent of SharePoint built-in email alerts, and therefore
can be used not only in addition to, but also instead of, email alerts.
IMAlerts is available in three editions: 100% FREE Express Edition, 30-day free
Trial, and Standard Edition.
Licensed per server.
Affordable (and the Express Edition is free).
Get it now. You'll like it.
And - yes, it will work with the XMPP network you've just created.
For more information and to download IMAlerts, please visit
http://sharepoint-im-alerts.com
Click an icon to bookmark