Roll Your Own LAN Instant Messaging Platform with OpenFire on Linux 🌱

What is OpenFire?

Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache License. It uses the only widely adopted open protocol for instant messaging, XMPP Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance. -https://igniterealtime.org/projects/openfire/

OpenFire Download and Installation

  1. Log into the Linux based device
  2. Run the following commands in the terminal
    # update software repositories
    sudo apt update
    # install available software updates
    sudo apt upgrade -y
    # install openjdk
    sudo apt install default-jdk -y
    # install MySQL
    sudo apt install mariadb-server mariadb-client -y
    # lookup the latest .deb download URL
    regex='">(openfire_[^/]*_all\.deb)<\/a>' && response=$(curl -s https://www.igniterealtime.org/downloads/) && [[ $response =~ $regex ]] && downloadURL="https://www.igniterealtime.org/downloadServlet?filename=openfire/${BASH_REMATCH[1]}"
    # download openfire
    wget -O OpenFire.deb $downloadURL
    # install openfire
    sudo dpkg -i ./OpenFire.deb
    # configure the MySQL database
    sudo su
    mysql_secure_installation
  3. Press Enter to login as root
  4. Type N and press Enter to switch to unix_socket authentication
  5. Type Y and press Enter to set a root password, type the password twice to confirm
  6. Type Y and press Enter to remove anonymous users
  7. Type Y and press Enter to disallow root login remotely
  8. Type Y and press Enter to remove the test database
  9. Type Y and press Enter to reload privilege tables
  10. Run the following command to login into MySQL:
    mysql -u root -p
  11. Authenticate with the root password set earlier
  12. Run the following commands to create the OpenFire database and database user
    CREATE DATABASE openfire;
    GRANT ALL ON openfire.* TO 'openfire_rw'@'localhost' IDENTIFIED BY 'Op3nF1re';
    FLUSH PRIVILEGES;
    use openfire;
    source /usr/share/openfire/resources/database/openfire_mysql.sql;
    EXIT;
    exit
  13. Open a web browser and navigate to http://DNSorIP:9090/setup/index.jsp
  14. Select a language > Click Continue
  15. Set the XMPP domain name and input the server fully qualified domain name > Click Continue
  16. Select Standard Database Connection > Click Continue
  17. Complete the Database Settings form as follows

    Database Driver Presets: MySQL
    JDBC Driver Class: com.mysql.jdbc.Driver
    Database URL: jdbc:mysql://127.0.0.1/openfire?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
    Username: openfire_rw
    Password: Op3nF1re

  18. Click Continue
  19. Select Default on the Profile Settings page > Click Continue
  20. Input an admin email address and password > Click Continue
  21. Click the Login to the admin console button
  22. Login with username admin and the password created previously
  23. Click the Users/Groups tab
  24. Click Create New User in the left navigation menu
  25. Create a username and password for the new user
  26. Follow the steps to create as many users as needed, at least 2 are needed for testing

Setting Up A XMPP Client

  1. Run the following commands in the open terminal window
    # install pidgin
    sudo apt install pidgin -y
  2. Launch Pidgin
  3. Click Add...
  4. Select XMPP from the protocol dropdown
  5. Input the first username created above along with the XMPP domain setup in OpenFire and the user's password
  6. Click the Advanced tab > Select Use encryption if available from the Connection security dropdown
  7. Enter the OpenFire fully qualified server name in the server field
  8. Click the Add button
  9. Click Accept on the self-signed certificate popup
  10. Install and launch Pidgin on a second device
  11. Click Add...
  12. Select XMPP from the protocol dropdown
  13. Input the second username created above along with the XMPP domain setup in OpenFire and the user's password
  14. Click the Advanced tab > Select Use encryption if available from the Connection security dropdown
  15. Enter the OpenFire fully qualified server name in the server field
  16. Click the Add button
  17. Click Accept on the self-signed certificate popup
  18. From one of the devices, select Buddies > Add Buddy
  19. Input the opposite devices username
  20. On the second device accept the message request and the two devices should be able to send and receive instant messages using the OpenFire XMPP server