-
-
Notifications
You must be signed in to change notification settings - Fork 960
fix: correct Signal service port mapping for custom TLS certificates #4763
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
The Signal service runs its gRPC backward compatibility server on internal port 10000, not port 80. The current mapping ($NETBIRD_SIGNAL_PORT:80) causes connection failures as external connections to port 10000 are mapped to the wrong internal port. This fixes the "Signal: Disconnected" issue where clients successfully connect to Management but fail to connect to Signal service. Fixes netbirdio#4762
WalkthroughChanged the Signal service container port referenced in the docker-compose template from port 80 to port 443; updated README port documentation and CI test expectation to match the new signal port mapping. No other logic or public API changes. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Client
participant Host
participant SignalContainer
rect rgb(230,240,255)
Note over Host,SignalContainer: New mapping (this change)
Client->>Host: TCP connect to host:$NETBIRD_SIGNAL_PORT
Host->>SignalContainer: Forward to container:443
SignalContainer-->>Client: TLS / gRPC / WebSocket responses
end
rect rgb(255,240,230)
Note over Host,SignalContainer: Previous mapping (before change)
Client->>Host: TCP connect to host:$NETBIRD_SIGNAL_PORT
Host->>SignalContainer: Forward to container:80
SignalContainer--x Client: Connection refused / timeout if service listens on 443
end
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Poem
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR fixes the signal service port mapping in the docker-compose template. The internal container port was incorrectly set to 80 instead of the actual default port 10000 that the signal service listens on.
- Changed the signal service port mapping from
$NETBIRD_SIGNAL_PORT:80to$NETBIRD_SIGNAL_PORT:10000
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Following maintainer feedback, port 443 is the correct port for modern Signal service deployments. Port 10000 was kept only for backward compatibility with older clients. The Signal service with custom TLS certificates runs HTTPS/WebSocket on port 443, which is the recommended approach for new deployments. Tested and confirmed working with port 443 mapping.
|
Hi @braginini, Thanks for the feedback! You're absolutely right - I tested with port 443 and it works perfectly. I've updated the PR to use port 443 instead of 10000: ports:
- $NETBIRD_SIGNAL_PORT:443Testing results with port 443: $ netbird status
Management: Connected
Signal: Connected ✅
Relays: 3/3 AvailablePort 443 is indeed the correct modern approach for Signal service with custom TLS certificates. The previous mapping to port 80 was causing the connection failures. Thanks for pointing me in the right direction! |
Following the Signal service port mapping update to use port 443 (modern HTTPS/WebSocket) instead of 10000 (legacy gRPC backward compatibility), update the CI workflow test to verify the correct port mapping. This ensures the test suite validates the recommended modern deployment configuration.
|
|
I encountered the issue that this MR fixes when I was following the official installation instructions. Was going to create a patch MR and found this one, hence writing this comment and bumping the MR. |



Describe your changes
This PR fixes a critical port mapping issue in the Signal service configuration that prevents clients from connecting when using custom TLS certificates.
The Signal service with custom TLS certificates runs HTTPS/WebSocket on internal port 443, not port 80. The current docker-compose template incorrectly maps
$NETBIRD_SIGNAL_PORT:80, causing connection failures.Updated port mapping:
Impact:
Issue ticket number and link
Fixes #4762
Stack
Checklist
Documentation
Select exactly one:
Additional Details
Problem Analysis
When the Signal service runs with custom TLS certificates (via
--cert-fileand--cert-keyflags), it starts the HTTPS/WebSocket server on internal port 443, not port 80.Evidence from Signal service logs:
This mismatch causes:
netbird statusTesting Results
Before the fix:
After the fix (port 443):
Configuration Context
This issue specifically affects deployments using:
--cert-fileand--cert-keyflagsinfrastructure_filesThe configuration in question:
Related Changes
This PR also updates:
Summary by CodeRabbit
Chores
Documentation