Openfire

Real-time collaboration server based on the XMPP protocol

Declared in: projects/Openfire/default.nix

Try the service in a VM

  1. Install Nix
    Bash
    $ apt install --yes curl git jq nix
    Bash
    $ apt install --yes curl git jq nix
    Bash
    $ pacman --sync --refresh --noconfirm curl git jq nix
  2. Download a configuration file
    # default.nix
    {
      ngipkgs ? import (fetchTarball "https://github.com/ngi-nix/ngipkgs/tarball/main") { },
    }:
    ngipkgs.demo-vm (
      { ... }:
      {
        services.openfire-server = {
          enable = true;
          openFirewall = true;
          servicePort = 9090;
          securePort = 9191;
    
          # Settings to be configured on first startup.
          # For available options, see:
          # https://download.igniterealtime.org/openfire/docs/latest/documentation/install-guide.html#Autosetup
          settings.jive.autosetup = {
            run = true;
          };
    
          settings.jive.adminConsole = {
            # needed to access the VM's service port in the host machine
            interface = "0.0.0.0";
          };
        };
      }
    )
    
  3. Enable binary substituters
    Bash
    $ export NIX_CONFIG='substituters = https://cache.nixos.org/ https://ngi.cachix.org/
    trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= ngi.cachix.org-1:n+CAL72ROC3qQuLxIHpV+Tw5t42WhXmMhprAGkRSrOw='
  4. Build and run a virtual machine
    Bash
    $ nix-build ./default.nix && ./result
    Bash
    $ nix-build ./default.nix && ./result
    Bash
    $ rev=$(nix-instantiate --eval --attr sources.nixpkgs.rev https://github.com/ngi-nix/ngipkgs/archive/master.tar.gz | jq --raw-output)
    $ nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/$rev.tar.gz --packages nix --run "nix-build ./default.nix && ./result"
    Bash
    $ nix-build ./default.nix && ./result
  5. Usage Instructions
    1. Visit http://127.0.0.1:9090 in your browser

    2. Log in with the admin account:

      • username: admin
      • password: admin

Options

services.openfire-server
services.openfire-server.autoUpdateState

When enabled, the state directory will be automatically updated to match the installed package version.

For manually doing this, please refer to the Openfire Upgrade Guide.

Type:
boolean
Default:
false
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.dataDir

Where to load readonly data from.

Type:
string
Default:
"${config.services.openfire-server.package}/opt"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.enable

Whether to enable Openfire XMPP server.

Type:
boolean
Default:
false
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.openFirewall

Whether to open ports in the firewall for the server.

Type:
boolean
Default:
false
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.package

The openfire package to use.

Type:
package
Default:
pkgs.openfire
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
Notes:
Missing update script An update script is required for automatically tracking the latest release.
services.openfire-server.securePort

The port on which Openfire should listen for secure Admin Console access.

Type:
16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
9091
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.servicePort

The port on which Openfire should listen for insecure Admin Console access.

Type:
16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
9090
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings

Openfire settings.

Type:
open submodule of (XML value)
Default:
{ }
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.adminConsole.access.allow-wildcards-in-excludes

Whether to allow wildcards in excludes.

Type:
boolean
Default:
true
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.adminConsole.interface

Admin console host.

Type:
string
Default:
"localhost"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.adminConsole.port

Insecure admin console port.

Type:
16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
9090
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.adminConsole.securePort

Secure admin console port.

Type:
16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
9091
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.admin.email

Admin email.

Type:
string
Default:
"admin@example.com"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.admin.password

Admin password.

Type:
string
Default:
"admin"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.authprovider.mode

Authentication provider.

Type:
string
Default:
"default"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.database.mode

Database mode.

Type:
one of "standard", "embedded"
Default:
"embedded"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.encryption.algorithm

Encryption algorithm.

Type:
string
Default:
"AES"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.encryption.key

Encryption key.

Type:
string
Default:
"some-key"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.locale

Locale setting.

Type:
string
Default:
"en"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.run

Whether to enable autosetup feature.

Type:
boolean
Default:
false
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.users

User configurations.

Type:
attribute set of (submodule)
Default:
{ }
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.users..email

User email.

Type:
string
Default:
""
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.users..name

Display name.

Type:
string
Default:
""
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.users..password

User password.

Type:
string
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.users..roster
Type:
attribute set
Default:
{ }
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.users..username

User name.

Type:
string
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.xmpp.auth.anonymous

Whether to enable anonymous authentication.

Type:
boolean
Default:
true
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.xmpp.domain

XMPP domain.

Type:
string
Default:
"server"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.xmpp.fqdn

Fully qualified domain name.

Type:
string
Default:
"server"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.autosetup.xmpp.socket.ssl.active

Whether to enable SSL.

Type:
boolean
Default:
true
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.settings.jive.plugin.restapi.enabled

Whether to enable the RestAPI plugin.

Type:
boolean
Default:
true
Declared in:
projects/Openfire/services/openfire-server/module/default.nix
services.openfire-server.stateDir

Where to store runtime data (logs, plugins, ...).

If left at the default, this will be automatically created on server startup if it does not already exist. If changed, it is the admin's responsibility to make sure that the directory exists and is writeable by the openfire user.

Type:
string
Default:
"/var/lib/openfire"
Declared in:
projects/Openfire/services/openfire-server/module/default.nix

Examples

Enable Openfire server
{ ... }:
{
  services.openfire-server = {
    enable = true;
    openFirewall = true;
    servicePort = 9090;
    securePort = 9191;

    # Settings to be configured on first startup.
    # For available options, see:
    # https://download.igniterealtime.org/openfire/docs/latest/documentation/install-guide.html#Autosetup
    settings.jive.autosetup = {
      run = true;
    };
  };
}

Declared in: projects/Openfire/services/openfire-server/examples/basic/default.nix

Metadata

This project is funded by NLnet through these subgrants:

Core
Openfire-IPv6
Openfire-Connectivity