EJABBERDCTL(8)

πŸ’– ejabberdctl(8) β€” bestie's guide to the ejabberd control interface πŸ’–

okay so. you know how ejabberd is this whole ✨server✨ just vibing in the background? ejabberdctl is the little remote control for it. it's the control interface for the ejabberd server, and it's genuinely the main character of this whole manpage. no cap.


🌸 SYNOPSIS 🌸

ejabberdctl [--no-timeout] [--node nodename] [--version api_version]
command [options]

that's it. that's the shape of it. flags first, then the command, then whatever options that command wants. slay.


πŸ¦‹ DESCRIPTION πŸ¦‹

ejabberdctl is a front end to the ejabberd server. think of it like the group chat between you and the daemon πŸ’¬ β€” it exists to help the administrator control the functioning of the running ejabberd daemon. that's the whole job. that's the assignment.

now for the part that actually matters, bestie, so listen up πŸ‘‘

This command must be run either by a superuser or by the user ejabberd, otherwise it will fail to start or to connect to the ejabberd instance. Using sudo also works.

so like. if you're some random third user, it's giving nothing. it will simply not work. periodt. πŸ™…β€β™€οΈ


✨ COMMANDS ✨

wanna know what commands you can actually run on a given ejabberd node? literally just run ejabberdctl with no command at all. it'll tell you the list of available commands. it's that easy, i'm obsessed 😭

of course β€” and this is the important bit β€” the given ejabberd node needs to be up and running for this to succeed. no node, no list. a sleeping server gives you nothing, fr fr.


πŸ’… NOTES πŸ’…

okay so here's the tea, and it's lowkey important:

ejabberdctl does not do anything by itself except for connecting to the running ejabberd instance and telling it about the action requested by the user. it's literally just the messenger 🫢. that's the vibe.

which means… all of the ejabberdctl's operations involving writing or reading files or directories are actually performed by the server process, and that server process runs with the uid and gid of the user and group ejabberd. so when you ask for file stuff to happen, it's not you doing it, it's the server doing it as ejabberd. this must be taken into account when requesting such operations to be done. don't forget it, bestie, or you'll be confused later and nobody wants that πŸ₯²


πŸŽ€ OPTIONS FILE πŸŽ€

these live in the options file, and they go hard:

  • ERLANG_NODE β€” use this specified string as the Erlang node of the ejabberd server to connect to. it overrides the default ejabberd node name. the string may take one of the following forms: nodename, nodename@hostname or nodename@hostname.domainname. pick your fighter ✨
  • FIREWALL_WINDOW β€” use the specified range of ports to communicate with the other Erlang nodes (namely, with the target Erlang node running ejabberd). this can be useful when the system running the target node has a restricted firewall setup allowing only a certain range of ports to be used by the Erlang nodes for communication. in that case, you should specify that range of ports in the FIREWALL_WINDOW setting. firewall said "only these ports", and this is how you respect that πŸ’–

🌈 FILES 🌈

the sacred texts, the locations, the whole map:

  • /etc/default/ejabberd β€” default settings for ejabberdctl which is also run by systemd / the init script
  • /etc/ejabberd β€” configuration directory
  • /etc/ejabberd/ejabberd.yml β€” main configuration file
  • /var/log/ejabberd β€” logfile directory
  • /var/lib/ejabberd β€” database spool directory

go visit them sometime. they're iconic. πŸ—‚οΈ


πŸ‘‘ SEE ALSO πŸ‘‘

the program documentation is available at http://www.process-one.net/en/projects/ejabberd/ β€” go read it, it ate πŸ’…


🧚 AUTHORS 🧚

this manual page was adapted by Sergei Golovan <sgolovan@nes.ru> for the Debian system (but may be used by others) from the ejabberd documentation written by Alexey Shchepin <alexey@sevcom.net>. updated by Konstantin Khomoutov <flatworm@users.sourceforge.net> and Philipp Huebner <debalance@debian.org>.

permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 any later version published by the Free Software Foundation. so like, share it, remix it, it's giving open source πŸ’–

on Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2.


okay that's the whole thing!! 🫢 this page is from the ejabberd manual, dated September 2016, and honestly? timeless. now go run your server, bestie. mwah πŸ’‹βœ¨πŸŒΈ
πŸ“¦ where this page comes from