Skip to content

Commit 2f2c826

Browse files
committed
Update documentation to 26.01 with: make clean extract
1 parent 07674d0 commit 2f2c826

7 files changed

Lines changed: 935 additions & 69 deletions

File tree

content/CHANGELOG.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,95 @@ search:
55

66
# ChangeLog
77

8+
## Version 26.01
9+
10+
#### Compile and Start
11+
12+
- Remove dependencies, macros and code for Erlang/OTP older than 25
13+
- Require Elixir 1.14 or higher, that's the lowest we can test automatically
14+
- `ejabberdctl`: Support NetBSD and OpenBSD `su` ([#4320](https://github.com/processone/ejabberd/issues/4320))
15+
- `ejabberdctl.template`: Show meaningful error when `ERL_DIST_PORT` is in use
16+
- `ejabberd_app`: Print address and port where listens for erlang node connections
17+
- `Makefile.in`: Add `make relivectl` similar to `relive` but using `ejabberdctl`
18+
19+
#### Databases
20+
21+
- Add db_serialize support in mnesia modules
22+
- Add db serialization to `mod_muc_sql`
23+
- New database export/import infrastructure
24+
- Add commands for new database export/import
25+
- Apply timestamp pass in `?SQL_INSERT` queries
26+
- Update p1_mysql to bring fix for timestamp decoding
27+
- Extend timestamp type handling in sql macros
28+
- Revert changes to conversion of pgsql `int` types
29+
30+
#### Installer and Container
31+
32+
- `make-binaries`: Bump Erlang/OTP 28.3.1 and Elixir 1.19.5
33+
- `Dockerfile`: Bump Erlang/OTP 28.3.1 and Elixir 1.19.5
34+
- `Dockerfile`: Expose also port 7777 for SOCKS5
35+
- `Dockerfile`: Configure TURN ports and expose 5478 50000-50099
36+
- `Dockerfile`: Try to fix error with recent `freetds` Alpine package
37+
- Container: Setup new macro `STARTTLS_REQUIRED` to allow easy disabling
38+
39+
#### MUC
40+
41+
- Add `muc_online_rooms_count` API command
42+
- Set `enable_hats` room option `true` by default
43+
- Allow vcard queries even when IQ queries are disabled ([#4489](https://github.com/processone/ejabberd/issues/4489))
44+
- Announce `stable-id` feature from XEP-0045 1.31, supported since long ago
45+
- Fix `preload_rooms` in case of SQL database ([#4476](https://github.com/processone/ejabberd/issues/4476))
46+
- Run new hooks: `registering_nickmuc` and `registered_nickmuc` ([#4478](https://github.com/processone/ejabberd/issues/4478))
47+
- When deleting account, unregister account's nicks in all MUC hosts ([#4478](https://github.com/processone/ejabberd/issues/4478))
48+
- `mod_muc_log`: Crash in `terminate/2` when stopping module ([#4486](https://github.com/processone/ejabberd/issues/4486))
49+
- `mod_muc_occupantid`: Keep salt per MUC service, not individual rooms
50+
- `mod_muc_room`: Rewrite hats code that gets xdata values
51+
- `mod_muc_room`: Handle hats without definition ([#4503](https://github.com/processone/ejabberd/issues/4503))
52+
- `mod_muc_room`: When user has no hats, don't store in hats_users
53+
54+
#### WebAdmin
55+
56+
- `ejabberd_http`: Run new `http_request_handlers_init` fold hook
57+
- `ejabberd_http`: Add helper `get_auto_urls/2` that returns all URLs and TLS
58+
- `ejabberd_web_admin`: Add helper functions `make_menu_system`
59+
- `ejabberd_web_admin`: Show menu system only when can view vhosts
60+
- `ejabberd_web_admin`: Pass Level in `webadmin_menu_system_post` and `inside` hooks
61+
- `mod_conversejs`: Improve link to conversejs in WebAdmin ([#4495](https://github.com/processone/ejabberd/issues/4495))
62+
- When epmd isn't running show explanation in Clustering WebAdmin page
63+
- Use improved WebAdmin menu system in more modules
64+
- When building WebAdmin menu system, `{URLPATH}` in link text is substituted
65+
66+
#### Web Services
67+
68+
- `rest`: Use separate `httpc` profile
69+
- `ejabberd_captcha`: Use `mod_host_meta:get_auto_url/2`
70+
- `ejabberd_http`: Support repeated module in request_handlers
71+
- `ejabberd_http`: Get back handling when BOSH or WS are disabled
72+
- `mod_host_meta`: Move `get_url` functions from `mod_host_meta` to `ejabberd_http`
73+
- `mod_host_meta`: Allow calling `get_url/2` for other modules, not only WebSocket
74+
- `mod_host_meta`: Cosmetic rename Module to Handler
75+
- `mod_http_upload`: New `content_type` option similar to `mod_http_fileserver` ([#4488](https://github.com/processone/ejabberd/issues/4488))
76+
- `mod_http_upload`: Pass ServerHost, not Host which may be `"upload.HOST"`
77+
- `mod_http_upload`: Amend the fix for #4450 to support IDNA correctly ([#3519](https://github.com/processone/ejabberd/issues/3519))
78+
- `mod_http_fileserver`: Support map of paths in `docroot` option
79+
- `mod_conversejs`: Add new Conversejs Paths and ContentTypes ([#4511](https://github.com/processone/ejabberd/issues/4511))
80+
- `mod_conversejs`: Use ContentType functions from `mod_http_fileserver` ([#4511](https://github.com/processone/ejabberd/issues/4511))
81+
- Use `/websocket` URL in default configuration like `mod_conversejs`, it's more meaningful
82+
83+
#### Core and Modules
84+
85+
- Add `replaced_connection_timeout` toplevel option
86+
- Fix nasty SSL warnings ([#4475](https://github.com/processon4475e/ejabberd/issues/))
87+
- `ejabberd_commands`: Show meaningul error message when problem executing command ([#4506](https://github.com/processone/ejabberd/issues/4506))
88+
- `ejabberd_logger`: Append "color clean" only in console template, not file
89+
- `ejabberd_oauth`: Log error if `oauth_list_tokens` executed with unsupported DB ([#4506](https://github.com/processone/ejabberd/issues/4506))
90+
- `misc`: Get back functions and mark them as deprecated
91+
- `mod_adhoc_api`: Show nice command name, as WebAdmin already does
92+
- `mod_pubsub`: Deliver pubsub notifications to remote servers for nodes with presence based delivery
93+
- `mod_scram_update`: Don't hard-code iteration count
94+
- Bump many XEPs versions that are already supported
95+
- Improve documentation of `install_contrib_modules` ([#4487](https://github.com/processone/ejabberd/issues/4487))
96+
897
## Version 25.10
998

1099
#### Ad-hoc Commands

content/CONTAINER.md

Lines changed: 74 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ Next steps
105105

106106
### Register admin account
107107

108-
#### [![ejabberd Container](https://img.shields.io/badge/ejabberd-grey?logo=opencontainersinitiative&logoColor=2094f3)](https://github.com/processone/ejabberd/pkgs/container/ejabberd) [:orange_circle:](#images-comparison)
108+
#### [![ejabberd Container](https://img.shields.io/badge/ejabberd-grey?logo=opencontainersinitiative&logoColor=2094f3)](https://github.com/processone/ejabberd/pkgs/container/ejabberd) [🔅](#images-comparison)
109109

110110
If you set the `REGISTER_ADMIN_PASSWORD` environment variable,
111111
an account is automatically registered with that password,
@@ -118,11 +118,20 @@ The account created depends on what variables you have set:
118118

119119
The account registration is shown in the container log:
120120

121-
```
122-
:> ejabberdctl register admin example.org somePassw0rd
123-
User admin@example.org successfully registered
121+
```bash
122+
$ podman run -it \
123+
--env EJABBERD_MACRO_HOST=example.org \
124+
--env EJABBERD_MACRO_ADMIN=juliet@example.org \
125+
--env REGISTER_ADMIN_PASSWORD=somePassw0rd \
126+
ghcr.io/processone/ejabberd
127+
128+
:> ejabberdctl register juliet example.org somePassw0rd
129+
User juliet@example.org successfully registered
124130
```
125131

132+
This is implemented internally by using
133+
[Commands on start](#commands-on-start).
134+
126135
Alternatively, you can register the account manually yourself
127136
and edit `conf/ejabberd.yml` and add the ACL as explained in
128137
[ejabberd Docs: Administration Account](https://docs.ejabberd.im/admin/install/next-steps/#administration-account).
@@ -207,20 +216,21 @@ documentation section.
207216
Advanced
208217
--------
209218
210-
### Ports
211-
219+
### Ports 🟠
212220
The container image exposes several ports
213221
(check also [Docs: Firewall Settings](https://docs.ejabberd.im/admin/guide/security/#firewall-settings)):
214222
215223
- `5222`: The default port for XMPP clients.
216224
- `5269`: For XMPP federation. Only needed if you want to communicate with users on other servers.
217225
- `5280`: For admin interface (URL is `admin/`).
218-
- `1880`: For admin interface (URL is `/`, useful for [podman-desktop](https://podman-desktop.io/) and [docker-desktop](https://www.docker.com/products/docker-desktop/)) [:orange_circle:](#images-comparison)
219226
- `5443`: With encryption, used for admin interface, API, CAPTCHA, OAuth, Websockets and XMPP BOSH.
227+
- `1880`: For admin interface (URL is `/`, useful for [podman-desktop](https://podman-desktop.io/) and [docker-desktop](https://www.docker.com/products/docker-desktop/)) [🔅](#images-comparison)
220228
- `1883`: Used for MQTT
229+
- `5478` UDP: STUN service 🟠
230+
- `50000-50099` UDP: TURN service 🟠
231+
- `7777`: SOCKS5 file transfer proxy 🟠
232+
- `5210`: Erlang connectivity when `ERL_DIST_PORT` is set, alternative to EPMD [🔅](#images-comparison)
221233
- `4369-4399`: EPMD and Erlang connectivity, used for `ejabberdctl` and clustering
222-
- `5210`: Erlang connectivity when `ERL_DIST_PORT` is set, alternative to EPMD [:orange_circle:](#images-comparison)
223-
224234

225235
### Volumes
226236

@@ -270,7 +280,10 @@ If any of those commands returns a failure, the container starting gets aborted.
270280
If there is a command with a result that can be ignored,
271281
prefix that command with `!`
272282

273-
This example, registers an `admin@localhost` account when the container is first created.
283+
All this works when starting ejabberd with the default method `foreground`,
284+
not when using `live`, `iexlive`, ...
285+
286+
This example registers an `admin@localhost` account when the container is first created.
274287
Everytime the container starts, it shows the list of registered accounts,
275288
checks that the admin account exists and password is valid,
276289
changes the password of an account if it exists (ignoring any failure),
@@ -284,8 +297,37 @@ and shows the ejabberd starts (check also the [full example](#customized-example
284297
status
285298
```
286299

300+
Same example using Podman:
301+
```bash
302+
$ podman run -it \
303+
--env CTL_ON_CREATE="register admin localhost asd" \
304+
--env CTL_ON_START="stats registeredusers ; \
305+
check_password admin localhost asd ; \
306+
! change_password bot123 localhost qqq ; \
307+
status" \
308+
ghcr.io/processone/ejabberd
309+
310+
...
311+
312+
:> ejabberdctl register admin localhost asd
313+
User admin@localhost successfully registered
314+
315+
:> ejabberdctl stats registeredusers
316+
1
317+
318+
:> ejabberdctl check_password admin localhost asd
319+
320+
:> ejabberdctl change_password bot123 localhost qqq
321+
{not_found,"unknown_user"}
322+
:> FAILURE in command 'change_password bot123 localhost qqq' !!! Ignoring result
323+
324+
:> ejabberdctl status
325+
The node ejabberd@localhost is started. Status: started
326+
ejabberd 25.10.0 is running in that node
327+
```
328+
287329

288-
### Macros in environment [:high_brightness:](#images-comparison)
330+
### Macros in environment
289331

290332
ejabberd reads `EJABBERD_MACRO_*` environment variables
291333
and uses them to define the corresponding
@@ -721,11 +763,10 @@ docker buildx build \
721763

722764
#### Podman build
723765

724-
To build the image using Podman, please notice:
766+
Some minor remarks:
725767

726-
- `EXPOSE 4369-4399` port range is not supported, remove that in Dockerfile
727-
- It mentions that `healthcheck` is not supported by the Open Container Initiative image format
728-
- to start with command `live`, you may want to add environment variable `EJABBERD_BYPASS_WARNINGS=true`
768+
- When building, it mentions that `healthcheck` is not supported by the Open Container Initiative image format
769+
- To start with command `live`, you may want to add environment variable `EJABBERD_BYPASS_WARNINGS=true`
729770

730771
```bash
731772
podman build \
@@ -1061,35 +1102,35 @@ Images Comparison
10611102

10621103
Let's summarize the differences between both container images. Legend:
10631104

1064-
- :sparkle: is the recommended alternative
1065-
- :orange_circle: added in the latest release (ejabberd 25.03)
1066-
- :high_brightness: added in the previous release (ejabberd 24.12)
1067-
- :low_brightness: added in the pre-previous release (ejabberd 24.10)
1105+
- ❇️: is the recommended alternative
1106+
- 🟠: changed in ejabberd 26.01
1107+
- 🔆: changed in ...
1108+
- 🔅: changed in ejabberd 25.03
10681109

10691110
| | [![ejabberd Container](https://img.shields.io/badge/ejabberd-grey?logo=opencontainersinitiative&logoColor=2094f3)](https://github.com/processone/ejabberd/pkgs/container/ejabberd) | [![ecs Container](https://img.shields.io/badge/ecs-grey?logo=docker&logoColor=2094f3)](https://hub.docker.com/r/ejabberd/ecs/) |
10701111
|:----------------------|:------------------|:-----------------------|
10711112
| Source code | [ejabberd/.github/container](https://github.com/processone/ejabberd/tree/master/.github/container) | [docker-ejabberd/ecs](https://github.com/processone/docker-ejabberd/tree/master/ecs) |
10721113
| Generated by | [container.yml](https://github.com/processone/ejabberd/blob/master/.github/workflows/container.yml) | [tests.yml](https://github.com/processone/docker-ejabberd/blob/master/.github/workflows/tests.yml) |
10731114
| Built for | stable releases <br /> `master` branch | stable releases <br /> [`master` branch zip](https://github.com/processone/docker-ejabberd/actions/workflows/tests.yml) |
10741115
| Architectures | `linux/amd64` <br /> `linux/arm64` | `linux/amd64` |
1075-
| Software | Erlang/OTP 27.3.4.3-alpine <br /> Elixir 1.18.4 | Alpine 3.22 <br /> Erlang/OTP 26.2 <br /> Elixir 1.18.3 |
1116+
| Software | Erlang/OTP 28.3.1.0-alpine 🟠 <br /> Elixir 1.19.5 🟠 | Alpine 3.22 <br /> Erlang/OTP 26.2 <br /> Elixir 1.18.3 |
10761117
| Published in | [ghcr.io/processone/ejabberd](https://github.com/processone/ejabberd/pkgs/container/ejabberd) | [docker.io/ejabberd/ecs](https://hub.docker.com/r/ejabberd/ecs/) <br /> [ghcr.io/processone/ecs](https://github.com/processone/docker-ejabberd/pkgs/container/ecs) |
10771118
| :black_square_button: **Additional content** |
10781119
| [ejabberd-contrib](#ejabberd-contrib) | included | not included |
1079-
| [ejabberdapi](#ejabberdapi) | included :orange_circle: | included |
1120+
| [ejabberdapi](#ejabberdapi) | included 🔅 | included |
10801121
| :black_square_button: **Ports** |
1081-
| [1880](#ports) for WebAdmin | yes :orange_circle: | yes :orange_circle: |
1082-
| [5210](#ports) for `ERL_DIST_PORT` | supported | supported :orange_circle: |
1122+
| [1880](#ports) for WebAdmin | yes 🔅 | yes 🔅 |
1123+
| [5210](#ports) for `ERL_DIST_PORT` | supported | supported 🔅 |
10831124
| :black_square_button: **Paths** |
10841125
| `$HOME` | `/opt/ejabberd/` | `/home/ejabberd/` |
1085-
| User data | `$HOME` :sparkle: <br /> `/home/ejabberd/` :orange_circle: | `$HOME` <br /> `/opt/ejabberd/` :sparkle: :low_brightness: |
1086-
| `ejabberdctl` | `ejabberdctl` :sparkle: <br /> `bin/ejabberdctl` :orange_circle: | `bin/ejabberdctl` <br /> `ejabberdctl` :sparkle: :low_brightness: |
1087-
| [`captcha.sh`](#captcha) | `$HOME/bin/captcha.sh` :orange_circle: | `$HOME/bin/captcha.sh` :orange_circle: |
1088-
| `*.sql` files | `$HOME/sql/*.sql` :sparkle: :orange_circle: <br /> `$HOME/database/*.sql` :orange_circle: | `$HOME/database/*.sql` <br /> `$HOME/sql/*.sql` :sparkle: :orange_circle: |
1089-
| Mnesia spool files | `$HOME/database/` :sparkle: <br /> `$HOME/database/NODENAME/` :orange_circle: | `$HOME/database/NODENAME/` <br /> `$HOME/database/` :sparkle: :orange_circle: |
1126+
| User data | `$HOME` ❇️ <br /> `/home/ejabberd/` 🔅 | `$HOME` <br /> `/opt/ejabberd/` ❇️ |
1127+
| `ejabberdctl` | `ejabberdctl` ❇️ <br /> `bin/ejabberdctl` 🔅 | `bin/ejabberdctl` <br /> `ejabberdctl` ❇️ |
1128+
| [`captcha.sh`](#captcha) | `$HOME/bin/captcha.sh` 🔅 | `$HOME/bin/captcha.sh` 🔅 |
1129+
| `*.sql` files | `$HOME/sql/*.sql` ❇️ 🔅 <br /> `$HOME/database/*.sql` 🔅 | `$HOME/database/*.sql` <br /> `$HOME/sql/*.sql` ❇️ 🔅 |
1130+
| Mnesia spool files | `$HOME/database/` ❇️ <br /> `$HOME/database/NODENAME/` 🔅 | `$HOME/database/NODENAME/` <br /> `$HOME/database/` ❇️ 🔅 |
10901131
| :black_square_button: **Variables** |
1091-
| [`EJABBERD_MACRO_*`](#macros-in-environment) | supported :high_brightness: | supported :high_brightness: |
1092-
| Macros used in `ejabberd.yml` | yes :orange_circle: | yes :orange_circle: |
1093-
| [`EJABBERD_MACRO_ADMIN`](#register-admin-account) | Grant admin rights :orange_circle: <br /> (default `admin@localhost`) <br /> | Hardcoded `admin@localhost` |
1094-
| [`REGISTER_ADMIN_PASSWORD`](#register-admin-account) | Register admin account :orange_circle: | unsupported |
1095-
| `CTL_OVER_HTTP` | enabled :orange_circle: | unsupported |
1132+
| [`EJABBERD_MACRO_*`](#macros-in-environment) | supported | supported |
1133+
| Macros used in `ejabberd.yml` | yes 🔅 | yes 🔅 |
1134+
| [`EJABBERD_MACRO_ADMIN`](#register-admin-account) | Grant admin rights 🔅 <br /> (default `admin@localhost`) <br /> | Hardcoded `admin@localhost` |
1135+
| [`REGISTER_ADMIN_PASSWORD`](#register-admin-account) | Register admin account 🔅 | unsupported |
1136+
| `CTL_OVER_HTTP` | enabled 🔅 | unsupported |

0 commit comments

Comments
 (0)