Skip to content

docker - install h2 via the dockerfiles - #2337

Merged
pbiering merged 1 commit into
Kozea:masterfrom
kalsi-avneet:feature/h2
Nov 7, 2026
Merged

pbiering merged 1 commit into
Kozea:masterfrom
kalsi-avneet:feature/h2

Conversation

@kalsi-avneet

Copy link
Copy Markdown
Collaborator

No description provided.

@pbiering pbiering added the packaging:container related to container packaging label Nov 7, 2026

@pbiering pbiering left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you

@pbiering pbiering added this to the 3.9.1 milestone Nov 7, 2026
@pbiering
pbiering merged commit e6bc014 into Kozea:master Nov 7, 2026
4 checks passed
@schildbach

schildbach commented Nov 7, 2026 •

Copy link
Copy Markdown

I'm testing this PR (via master) and I get this error:

radicale-1  | [2026-11-07 14:54:25 +0000] [1] [INFO] Starting Radicale python=3.15.2 radicale=3.9.1.dev0 vobject=0.9.9 passlib=1.9.4 defusedxml=0.7.1 hypercorn=0.18.0 cheroot=n/a requests=n/a bcrypt=5.0.0 argon2-cffi=n/a pika=n/a ldap=n/a ldap3=n/a pam=n/a with hypercorn on 0.0.0.0:5232, [::]:5232
radicale-1  | [2026-11-07 14:54:25 +0000] [1] [INFO] Running on http://0.0.0.0:5232 (CTRL + C to quit)
radicale-1  | [2026-11-07 14:54:25 +0000] [1] [INFO] Running on http://0.0.0.0:5232 (CTRL + C to quit)
radicale-1  | [2026-11-07 14:54:25 +0000] [1] [INFO] Stopping Radicale
radicale-1  | [2026-11-07 14:54:25 +0000] [1] [CRITICAL] An exception occurred during server startup: [Errno 98] Address in use
radicale-1 exited with code 1

Is it possible that the other (old) HTTP server is also still listening on port 5232?

My entire config:

# cat config 
[server]
type = hypercorn

[auth]
type = htpasswd
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = plain

@schildbach

Copy link
Copy Markdown

I cross-checked and before starting the container, there is no port 5232 listening:

# netstat -lnpt | grep 5232
(no output)

@pbiering

pbiering commented Nov 7, 2026

Copy link
Copy Markdown
Collaborator

See https://github.com/Kozea/Radicale/blob/master/DOCUMENTATION.md#hosts, h2 is not supporting separate bind for IPv4 and IPv6.

@schildbach

Copy link
Copy Markdown

Ok, I tried both

[server]
type = hypercorn
hosts = [::]:5232

and

[server]
type = hypercorn
hosts = 0.0.0.0:5232

but none of the two changes anything. Same "Address in use" error.

@schildbach

Copy link
Copy Markdown

In fact, I haven't even got IPv6 enabled on the docker bridge network. Will try that now.

@pbiering

pbiering commented Nov 7, 2026

Copy link
Copy Markdown
Collaborator

if it works with "builtin" or "cheroot" than it looks like something is incompatible inside "hypercorn"

IPv6 on the docker bridge network should not be required for an IPv4-only bind.

@schildbach

Copy link
Copy Markdown

No matter what I try (any permutation of IPv6 available or not, and wether I bind to 0.0.0.0 or [::]), hypercorn always wants to bind to 0.0.0.0:5232 twice and fails. Switching back to "builtin" makes it work again, at the expense of using vulnerable HTTP/1.1 again.

I didn't try the sysctl net.ipv6.bindv6only = 0 as such a system-wide change is out of question for me.

@pbiering

pbiering commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

It's a problem in hypercorn, unrelated to IPv6. I already wondered in the past why this 2nd bind message appeared and tried to traced down (a little) the hypercorn code, no clue so far why from 1x __init__.py/serve 2x run.py/worker_serve are called.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

packaging:container related to container packaging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants