[GH-ISSUE #119] No notifications on latest windows build #12

Open
opened 2026-03-02 23:31:11 +03:00 by kerem · 39 comments
Owner

Originally created by @ThinkSalat on GitHub (Jun 26, 2025).
Original GitHub issue: https://github.com/Aetherinox/ntfy-desktop/issues/119

Originally assigned to: @Aetherinox on GitHub.

Hi,

I've downloaded the latest windows build and am testing it out, and no notifications are appearing. If I open the window and send a test notification from my phone, I can see the message show up on the ntfy window, but I don't receive any notifications. Nor have I received any request to display notifications.

Originally created by @ThinkSalat on GitHub (Jun 26, 2025). Original GitHub issue: https://github.com/Aetherinox/ntfy-desktop/issues/119 Originally assigned to: @Aetherinox on GitHub. Hi, I've downloaded the latest windows build and am testing it out, and no notifications are appearing. If I open the window and send a test notification from my phone, I can see the message show up on the ntfy window, but I don't receive any notifications. Nor have I received any request to display notifications.
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

If I send a test notification from the ntfy application it does show up, but it's the only one that shows up.

<!-- gh-comment-id:3009270885 --> @ThinkSalat commented on GitHub (Jun 26, 2025): If I send a test notification from the ntfy application it does show up, but it's the only one that shows up.
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

So you're getting notifications if you use the Test button, but no notifications if you push a ntfy message to yourself to receive?

<!-- gh-comment-id:3009276777 --> @Aetherinox commented on GitHub (Jun 26, 2025): So you're getting notifications if you use the Test button, but no notifications if you push a ntfy message to yourself to receive?
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

Right - from my phone, if I send a test notification, it doesn't show up on windows. If I use this app to send a test notification like in the screenshot, It shows up. If I send a test notification from a channel from this app, it also doesn't show up.

Image

<!-- gh-comment-id:3009296659 --> @ThinkSalat commented on GitHub (Jun 26, 2025): Right - from my phone, if I send a test notification, it doesn't show up on windows. If I use *this* app to send a test notification like in the screenshot, It shows up. If I send a test notification from a channel from this app, it also doesn't show up. ![Image](https://github.com/user-attachments/assets/69a09bd2-b4f2-4829-afda-f86aa6621f9c)
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

Interesting. Let me load my ntfy instance back up and test.

<!-- gh-comment-id:3009298713 --> @Aetherinox commented on GitHub (Jun 26, 2025): Interesting. Let me load my ntfy instance back up and test.
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

Oh, just to be double sure, you have your API token added correct?

<!-- gh-comment-id:3009300514 --> @Aetherinox commented on GitHub (Jun 26, 2025): Oh, just to be double sure, you have your API token added correct?
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

I didn't manually add one, but I logged in through the interface

<!-- gh-comment-id:3009301856 --> @ThinkSalat commented on GitHub (Jun 26, 2025): I didn't manually add one, but I logged in through the interface
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

Did you ever get notifications doing it this way? My app utilizes the ntfy api access point in order to fetch your pending messages, and in order to access that API, you'd need an API token added in the App -> Settings -> API Token window. Then as you get messages to your interface, you'll get notifications as well.

<!-- gh-comment-id:3009306991 --> @Aetherinox commented on GitHub (Jun 26, 2025): Did you ever get notifications doing it this way? My app utilizes the ntfy api access point in order to fetch your pending messages, and in order to access that API, you'd need an API token added in the App -> Settings -> API Token window. Then as you get messages to your interface, you'll get notifications as well.
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

Well this is my first time trying this application (I saw your post on the ntfy issue). I was using a chrome web app to display notifications and that was working. I also have the mobile app and that also works. For some reason this application does not display notifications, and it's also not asking permission to to display them.

<!-- gh-comment-id:3009348289 --> @ThinkSalat commented on GitHub (Jun 26, 2025): Well this is my first time trying this application (I saw your post on the ntfy issue). I was using a chrome web app to display notifications and that was working. I also have the mobile app and that also works. For some reason this application does not display notifications, and it's also not asking permission to to display them.
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

Maybe related? This happens if I right click > show on the tray icon

Image

<!-- gh-comment-id:3009350716 --> @ThinkSalat commented on GitHub (Jun 26, 2025): Maybe related? This happens if I right click > show on the tray icon ![Image](https://github.com/user-attachments/assets/ef7c36e6-6010-44b2-abe3-9792c86c7278)
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

Then you literally caught me right at a major release lol.

Just to eliminate what's a new issue, download install the last version on my releases page. I think it's 2.1.3. And try that out. That one has been stable for a while. I've suspended the v2.2 release until I can confirm that these are issues related to the re-write. When I tried everything it works normal, so I have to track down what's going on.

https://github.com/Aetherinox/ntfy-desktop/releases/tag/2.1.3

That one should be smooth.

<!-- gh-comment-id:3009358635 --> @Aetherinox commented on GitHub (Jun 26, 2025): Then you literally caught me right at a major release lol. Just to eliminate what's a new issue, download install the last version on my releases page. I think it's 2.1.3. And try that out. That one has been stable for a while. I've suspended the v2.2 release until I can confirm that these are issues related to the re-write. When I tried everything it works normal, so I have to track down what's going on. https://github.com/Aetherinox/ntfy-desktop/releases/tag/2.1.3 That one should be smooth.
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

I figured it out. A single line of code in the wrong spot, made 4 different things break. Go figure.

<!-- gh-comment-id:3009433551 --> @Aetherinox commented on GitHub (Jun 26, 2025): I figured it out. A single line of code in the wrong spot, made 4 different things break. Go figure.
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

Going to build a new release. Sorry about that. Dumb oversight on my part.

That will at least make everything work. Then I'll test out notifications without an API key. Although I don't think that will work, as it needs the API to communicate with the server.

However, you can get an API key from ntfy's website for free and just pop it in.


Edit: Yeah, I just confirmed, even if you sign in, my app doesn't record your login credentials from the ntfy website, and that would be risky.

Even if you're signed out of the website on the home page, and you add an API token from the website to App -> Settings -> API Token, you'll get notifications.

Without that, you only get them on the site. You can go to the ntfy website signed in, and generate one for free.

Image

Sharing sign in credentials is something I'd have to look into. Because the v2.2.0 release ensures the app is now secure, and I surely wouldn't have done that on older versions without it being modernized first. So I'll take a look at getting notifications when you're just signed in without an API token.

<!-- gh-comment-id:3009458512 --> @Aetherinox commented on GitHub (Jun 26, 2025): Going to build a new release. Sorry about that. Dumb oversight on my part. That will at least make everything work. Then I'll test out notifications without an API key. Although I don't think that will work, as it needs the API to communicate with the server. However, you can get an API key from ntfy's website for free and just pop it in. --- **Edit**: Yeah, I just confirmed, even if you sign in, my app doesn't record your login credentials from the ntfy website, and that would be risky. Even if you're signed out of the website on the home page, and you add an API token from the website to App -> Settings -> API Token, you'll get notifications. Without that, you only get them on the site. You can go to the ntfy website signed in, and generate one for free. ![Image](https://github.com/user-attachments/assets/18184cc5-4366-4772-93c5-1859ce1be1bf) Sharing sign in credentials is something I'd have to look into. Because the v2.2.0 release ensures the app is now secure, and I surely wouldn't have done that on older versions without it being modernized first. So I'll take a look at getting notifications when you're just signed in without an API token.
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

You can now download v2.2 again. It should work fine. I applied the fix and released it.

<!-- gh-comment-id:3009489715 --> @Aetherinox commented on GitHub (Jun 26, 2025): You can now download v2.2 again. It should work fine. I applied the fix and released it.
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

Huh, I'll try the new release! I did try 2.1.3 and it also doesn't display notifications

<!-- gh-comment-id:3009489865 --> @ThinkSalat commented on GitHub (Jun 26, 2025): Huh, I'll try the new release! I did try 2.1.3 and it also doesn't display notifications
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

If you don't get notifications for some reason, let me know your setup. Although if the test notification feature works, I see no reason why you shouldn't unless there's some weird witchcraft going on.

I've tested / developed this to work on Windows, Mac, and Linux. And I'm using the Windows version right now (with an API key) and I get notifications.

If it's for Android or iOS I'd have to do some testing, both operating systems have notification functionality, but for those, I'll almost surely need to access permissions.

<!-- gh-comment-id:3009491885 --> @Aetherinox commented on GitHub (Jun 26, 2025): If you don't get notifications for some reason, let me know your setup. Although if the test notification feature works, I see no reason why you shouldn't unless there's some weird witchcraft going on. I've tested / developed this to work on Windows, Mac, and Linux. And I'm using the Windows version right now (with an API key) and I get notifications. If it's for Android or iOS I'd have to do some testing, both operating systems have notification functionality, but for those, I'll almost surely need to access permissions.
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

Hmm. I'm on windows 11 right now. I've added my API key and installed the latest 2.2 release. same behavior as before. Let me know if there are logs or something I can send. I've enabled debug mode from the options. The only time I can get a notification to display is from the help > test notification menu item. Here's what my install folder looks like in case that helps. To install, I'm downloading the zip for windows amd 64, extracting to a folder, then moving that folder to my program files folder. The first time I tested, I just tried it right from my downloads folder.

Image

<!-- gh-comment-id:3009503875 --> @ThinkSalat commented on GitHub (Jun 26, 2025): Hmm. I'm on windows 11 right now. I've added my API key and installed the latest 2.2 release. same behavior as before. Let me know if there are logs or something I can send. I've enabled debug mode from the options. The only time I can get a notification to display is from the `help > test notification` menu item. Here's what my install folder looks like in case that helps. To install, I'm downloading the zip for windows amd 64, extracting to a folder, then moving that folder to my program files folder. The first time I tested, I just tried it right from my downloads folder. ![Image](https://github.com/user-attachments/assets/50d29bea-dce0-4924-8bbe-7a1c57157f31)
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

Just to ensure you're on the one I just released, does it now crash if you send to tray / restore from tray?

<!-- gh-comment-id:3009509521 --> @Aetherinox commented on GitHub (Jun 26, 2025): Just to ensure you're on the one I just released, does it now crash if you send to tray / restore from tray?
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

No, no crashing sending/restoring from tray. right click > show app is working without issue as well

<!-- gh-comment-id:3009521390 --> @ThinkSalat commented on GitHub (Jun 26, 2025): No, no crashing sending/restoring from tray. right click > show app is working without issue as well
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

Ah ok, well at least we've solved that.

Let me go dump some prints. To answer your question about file logs, no. But suddenly I'm realizing that I should. Because unless you run this app directly through node, you get no info.

If you run it through node, the console spams logs because I track just about everything. Well, not track the person, just track the steps to make sure nothing is broke. I'm not the government trying to spy on you.

<!-- gh-comment-id:3009570111 --> @Aetherinox commented on GitHub (Jun 26, 2025): Ah ok, well at least we've solved that. Let me go dump some prints. To answer your question about file logs, no. But suddenly I'm realizing that I should. Because unless you run this app directly through node, you get no info. If you run it through node, the console spams logs because I track just about everything. Well, not track the person, just track the steps to make sure nothing is broke. I'm not the government trying to spy on you.
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

Image seeing this in the web dev console

I believe these logs probably mirror what would show up in node

<!-- gh-comment-id:3009582777 --> @ThinkSalat commented on GitHub (Jun 26, 2025): ![Image](https://github.com/user-attachments/assets/312339e5-1cdf-4aa8-9f96-7789ef77164b) seeing this in the web dev console I believe these logs probably mirror what would show up in node
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

Never seen that error before, that's actually an error coming from their end. That's not an error from me.

While I do this log thing, just double confirm you have your correct topics set, and the API key was copied correctly. It should start with tk_.

My app has a lot of logs, but they are on the app end, which doesn't show in that dev console. The only aspect of my app that shows in the electron dev console is the renderer.

<!-- gh-comment-id:3009600007 --> @Aetherinox commented on GitHub (Jun 26, 2025): Never seen that error before, that's actually an error coming from their end. That's not an error from me. While I do this log thing, just double confirm you have your correct topics set, and the API key was copied correctly. It should start with `tk_`. My app has a lot of logs, but they are on the app end, which doesn't show in that dev console. The only aspect of my app that shows in the electron dev console is the renderer.
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

Yes, appears to have been caused by enabling this setting. I've disabled and the errors have gone away. I'll have to try to build the app from source to see whats going on

Image

<!-- gh-comment-id:3009612508 --> @ThinkSalat commented on GitHub (Jun 26, 2025): Yes, appears to have been caused by enabling this setting. I've disabled and the errors have gone away. I'll have to try to build the app from source to see whats going on ![Image](https://github.com/user-attachments/assets/b306b641-014e-4ba3-a976-4e44f943f1ef)
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

Luckily you don't have to build from source, just need npm install on the packages in the src/ folder and then npm start run, should get you right up.

<!-- gh-comment-id:3009616085 --> @Aetherinox commented on GitHub (Jun 26, 2025): Luckily you don't have to build from source, just need npm install on the packages in the `src/` folder and then `npm start run`, should get you right up.
Author
Owner

@ThinkSalat commented on GitHub (Jun 26, 2025):

Can't make out what's happening when it sends the notification. The node server doesn't appear to be sending logs when it triggers a notification - the help > test notification menu item didn't cause any logs to show.

I am seeing this a fair amount

core [messages] : <msg> Polling for new messages returned invalid json; skipping fetch. Change your instance URL to a valid ntfy instance. <func> GetMessages()

I went ahead and wiped the url (which was the default that was there when I first installed), and I get the same messages.

Ok wait, I'm just now understanding how this works but it's confusing - I figured if I signed in, the notifications from my subscribed channels would automatically show notifications. I just realized I have to manually enter a list of channels I want notifications for in the file menu. Is there a way around this?

<!-- gh-comment-id:3009685264 --> @ThinkSalat commented on GitHub (Jun 26, 2025): Can't make out what's happening when it sends the notification. The node server doesn't appear to be sending logs when it triggers a notification - the help > test notification menu item didn't cause any logs to show. I am seeing this a fair amount `core [messages] : <msg> Polling for new messages returned invalid json; skipping fetch. Change your instance URL to a valid ntfy instance. <func> GetMessages()` I went ahead and wiped the url (which was the default that was there when I first installed), and I get the same messages. Ok wait, I'm just now understanding how this works but it's confusing - I figured if I signed in, the notifications from my subscribed channels would automatically show notifications. I just realized I have to manually enter a list of channels I want notifications for in the file menu. Is there a way around this?
Author
Owner

@Aetherinox commented on GitHub (Jun 26, 2025):

I just realized I have to manually enter a list of channels I want notifications for in the file menu. Is there a way around this?

You mean topics? If you used 2.1 first before my update, then the list for you may be blank, if you started off with v2.2, it defaults to what ntfy's documentation states, which is news,announcements, those are the default channels. And according to their docs, an API call requires at least one channel.

Is that what you're referring to?

https://docs.ntfy.sh/publish/#public-topics

As far as logs, I've just implemented file logs into the app. So it'll now record everything in a .log file. I just need to finish it up so that it strips the colors. Otherwise the logs will be garble.

edit yeah, if I attempt to pass a query to the API without a topic, it returns

{"code":40024,"http":400,"error":"invalid request: request body must be valid JSON"}

manually enter a list of channels I want notifications for in the file menu. Is there a way around this?
Correct. This is how the API has things set up. The two things that you are required to provide is:
1 . API token

  1. Channels you want to receive notifications from. You can list multiple by typing them as comma separated:
channel1, announcements, general, support, etc

With those two things, the program reaches out to the ntfy api and gets your notifications.

You can see your topics when you sign into the ntfy website:

Image

So for my topics in the app settings, I'd put:

Server,test-2

And now it will get all notifications. It allows you to filter out channels you may not want to get popups for. I have a few channels that constantly send notifications, and that could get annoying.

If you sign into the site using the app, it doesn't send that personal information to me so that I can grab your notifications, so the API token is how you get around that. Because cookies are protected when you sign in, and since I'm not the official developers of ntfy, they don't give that type of access.

I'll have to look at a few alternatives, but that'll be something I do in the next build. For now, you have to list your channels you want to get notifications from, and your API token.

The rest of the settings don't matter, they're just there to change things around.

Technically, you can open my app, NOT sign in to the ntfy website, and as long as you have your API token and channels specified, you'll still get desktop push notifications. Signing into the app for the website just allows you to manage ntfy while you receive notifications, so you get both sets of functionalty.

<!-- gh-comment-id:3009746876 --> @Aetherinox commented on GitHub (Jun 26, 2025): > I just realized I have to manually enter a list of channels I want notifications for in the file menu. Is there a way around this? You mean topics? If you used 2.1 first before my update, then the list for you may be blank, if you started off with v2.2, it defaults to what ntfy's documentation states, which is `news,announcements`, those are the default channels. And according to their docs, an API call requires at least one channel. Is that what you're referring to? https://docs.ntfy.sh/publish/#public-topics As far as logs, I've just implemented file logs into the app. So it'll now record everything in a .log file. I just need to finish it up so that it strips the colors. Otherwise the logs will be garble. **edit** yeah, if I attempt to pass a query to the API without a topic, it returns ```json {"code":40024,"http":400,"error":"invalid request: request body must be valid JSON"} ``` > manually enter a list of channels I want notifications for in the file menu. Is there a way around this? Correct. This is how the API has things set up. The two things that you are required to provide is: 1 . API token 2. Channels you want to receive notifications from. You can list multiple by typing them as comma separated: ``` channel1, announcements, general, support, etc ``` With those two things, the program reaches out to the ntfy api and gets your notifications. You can see your topics when you sign into the ntfy website: ![Image](https://github.com/user-attachments/assets/7df9d8ad-edec-4da6-9cd4-ca8fd0d4bbd5) So for my topics in the app settings, I'd put: ``` Server,test-2 ``` And now it will get all notifications. It allows you to filter out channels you may not want to get popups for. I have a few channels that constantly send notifications, and that could get annoying. If you sign into the site using the app, it doesn't send that personal information to me so that I can grab your notifications, so the API token is how you get around that. Because cookies are protected when you sign in, and since I'm not the official developers of ntfy, they don't give that type of access. I'll have to look at a few alternatives, but that'll be something I do in the next build. For now, you have to list your channels you want to get notifications from, and your API token. The rest of the settings don't matter, they're just there to change things around. Technically, you can open my app, NOT sign in to the ntfy website, and as long as you have your API token and channels specified, you'll still get desktop push notifications. Signing into the app for the website just allows you to manage ntfy while you receive notifications, so you get both sets of functionalty.
Author
Owner

@FaNt4zMa commented on GitHub (Jul 16, 2025):

Sorry to hijack this thread but I'm a bit confused. I'm self-hosting and do not have an ntfy account. How do I go about setting up my API token? I do not have it set right now and toast notifications are working somehow but they are delayed. Should I just drop the polling rate to like 10sec? Also if I could give some feedback about the toast: I'd like to see the Title of the notifications, not the channel and timestamp. In my case, the title usually gives out more information than the actual message... Thanks

Image
<!-- gh-comment-id:3076757660 --> @FaNt4zMa commented on GitHub (Jul 16, 2025): Sorry to hijack this thread but I'm a bit confused. I'm self-hosting and do not have an ntfy account. How do I go about setting up my API token? I do not have it set right now and toast notifications are working somehow but they are delayed. Should I just drop the polling rate to like 10sec? Also if I could give some feedback about the toast: I'd like to see the Title of the notifications, not the channel and timestamp. In my case, the title usually gives out more information than the actual message... Thanks <img width="849" height="167" alt="Image" src="https://github.com/user-attachments/assets/04941e9a-c43e-4503-8892-b3eaea1be0a7" />
Author
Owner

@Aetherinox commented on GitHub (Jul 16, 2025):

If you are self-hosting ntfy, then you need to log in to your ntfy instance and in the account settings, there is an API token section which allows you to generate your API token.

I don't recall, but I think the polling rate is like 30s out of box. If you are self-hosting, the polling rate can be set as low as 1s. However, don't do that if you decide to use the official ntfy website, otherwise you'll get blocked with a "too many attempts" error.

<!-- gh-comment-id:3076778254 --> @Aetherinox commented on GitHub (Jul 16, 2025): If you are self-hosting ntfy, then you need to log in to your ntfy instance and in the account settings, there is an API token section which allows you to generate your API token. I don't recall, but I think the polling rate is like 30s out of box. If you are self-hosting, the polling rate can be set as low as 1s. However, don't do that if you decide to use the official ntfy website, otherwise you'll get blocked with a "too many attempts" error.
Author
Owner

@FaNt4zMa commented on GitHub (Jul 16, 2025):

Maybe its different for self-hosted instance but I dont see an "account" section, only a "manage users". I didnt have my instance private before, now I do, but following the docs, it seems like self-hosted user need to generate their tokens using the CLI. Oh and slight correction, the lowest the polling rate will go is 5s :)

<!-- gh-comment-id:3076888043 --> @FaNt4zMa commented on GitHub (Jul 16, 2025): Maybe its different for self-hosted instance but I dont see an "account" section, only a "manage users". I didnt have my instance private before, now I do, but following the docs, it seems like self-hosted user need to [generate their tokens using the CLI](https://docs.ntfy.sh/config/#access-tokens). Oh and slight correction, the lowest the polling rate will go is 5s :)
Author
Owner

@Aetherinox commented on GitHub (Jul 18, 2025):

Are you talking about the actual self-hosted ntfy software? Because generating a token is most definitely in the web interface. I use it almost daily

Image

Top right avatar -> Settings -> Account on left side

<!-- gh-comment-id:3086495373 --> @Aetherinox commented on GitHub (Jul 18, 2025): Are you talking about the actual self-hosted ntfy software? Because generating a token is most definitely in the web interface. I use it almost daily <img width="1532" height="448" alt="Image" src="https://github.com/user-attachments/assets/02c9b7d3-7893-46ce-b19f-8f9ede58b856" /> Top right avatar -> Settings -> Account on left side
Author
Owner

@wgetnz commented on GitHub (Sep 23, 2025):

maybe

Image

<!-- gh-comment-id:3324222060 --> @wgetnz commented on GitHub (Sep 23, 2025): maybe ![Image](https://github.com/user-attachments/assets/f52a8d24-250a-40f9-b42e-2ca61265b6fc)
Author
Owner

@spiral6 commented on GitHub (Oct 3, 2025):

Same issue here.
Edition Windows 10 Pro N
Version 22H2
Installed on ‎2/‎15/‎2023
OS Build 19045.6332

ntfy-desktop v2.2.0

Notifications on Windows desktop refuse to show up outside of the test notification from the Electron app. I can hear the notifications coming in from the "Ding" sound effect but no actual notification shows up on the native Windows UI.

<!-- gh-comment-id:3364148419 --> @spiral6 commented on GitHub (Oct 3, 2025): Same issue here. Edition Windows 10 Pro N Version 22H2 Installed on ‎2/‎15/‎2023 OS Build 19045.6332 ntfy-desktop v2.2.0 Notifications on Windows desktop refuse to show up outside of the test notification from the Electron app. I can hear the notifications coming in from the "Ding" sound effect but no actual notification shows up on the native Windows UI.
Author
Owner

@n3m3s7s commented on GitHub (Oct 9, 2025):

Hi guys,
I do not know if it is relevant or not but it could not be a problem of the application or the code, but generally the OS configuration or policy about SSL of the native client;

I'll try to explain better:
I've encountered the same problem of the kind

"Notifications on Windows desktop refuse to show up outside of the test notification from the Electron app. I can hear the notifications coming in from the "Ding" sound effect but no actual notification shows up on the native Windows UI."

but NOT on my desktop, but on other users' devices with different OS versions (Windows 10 and 11);

as far as I have checked the code, "polling" and "receiving" notifications are very different and use different process;

"polling" is the process that will "poll" (no way) the API server configured in the "instance" menu;

so basically it means "do a get request, with the provided auth-token in the header, for the topic(s) inserted in the app menu AND not the for the subscribed topic(s) INSIDE the ntfy-embedded web app";

but, supposing that the "topic" and the "auth-token" are correct, every single client DOES NEED to call the API and to GET the results and this means ALWAYS resolving the SSL hand-shaking with the provided instance URL;

SSL hand-shaking is between client and server, and if they do not "agree" OR the server is too hardened, the client will be blocked BEFORE actually reaching the NTFY server API;

if the polling request is failing no "native notifications" wil be triggered, since no valid payload has been received;

(this could explain why some client have problems and other don't);

I am managing my own NTFY server on a Ubuntu VPS, which uses NGINX as a reverse-proxy with a custom (valid) SSL certificate for my own domain;

as soon I "lowered" and "changed" my NGINX configuration for the server-block that is using NTFY, several clients that experienced the issue have begin to work as expected!

so it could not be a bug from ntfy, ntfy-server or ntfy-desktop, but the impossibility of a client of obtaining a valid payload from the server, which usually is under SSL!

let me know if You need my NGINX configuration for the server block and what I have changed.

<!-- gh-comment-id:3385559204 --> @n3m3s7s commented on GitHub (Oct 9, 2025): Hi guys, I do not know if it is relevant or not but it could not be a problem of the application or the code, but generally the OS configuration or policy about SSL of the native client; I'll try to explain better: I've encountered the same problem of the kind _"Notifications on Windows desktop refuse to show up outside of the test notification from the Electron app. I can hear the notifications coming in from the "Ding" sound effect but no actual notification shows up on the native Windows UI."_ but NOT on my desktop, but on other users' devices with different OS versions (Windows 10 and 11); as far as I have checked the code, "polling" and "receiving" notifications are very different and use different process; "polling" is the process that will "poll" (no way) the API server configured in the "instance" menu; so basically it means "do a get request, with the provided auth-token in the header, for the topic(s) inserted in the app menu AND not the for the subscribed topic(s) INSIDE the ntfy-embedded web app"; but, supposing that the "topic" and the "auth-token" are correct, every single client DOES NEED to call the API and to GET the results and this means ALWAYS resolving the SSL hand-shaking with the provided instance URL; SSL hand-shaking is between client and server, and if they do not "agree" OR the server is too hardened, the client will be blocked BEFORE actually reaching the NTFY server API; if the polling request is failing no "native notifications" wil be triggered, since no valid payload has been received; (this could explain why some client have problems and other don't); I am managing my own NTFY server on a Ubuntu VPS, which uses NGINX as a reverse-proxy with a custom (valid) SSL certificate for my own domain; as soon I "lowered" and "changed" my NGINX configuration for the server-block that is using NTFY, several clients that experienced the issue have begin to work as expected! so it could not be a bug from ntfy, ntfy-server or ntfy-desktop, but the impossibility of a client of obtaining a valid payload from the server, which usually is under SSL! let me know if You need my NGINX configuration for the server block and what I have changed.
Author
Owner

@Aetherinox commented on GitHub (Oct 9, 2025):

Interesting. This makes sense as to why I've had a pain replicating it.

So the question becomes, what to do to mitigate the issue.

I am using Traefik on my end, not Nginx, and maybe that played a role in me not getting the issue either.

Drop the nginx config that worked, and I'll see if I can reverse it and make it happen with Traefik.

But I've also tested this with my own self-hosted instance, and with ntfy's official servers. So I assume that this is a self-hosted issue?

<!-- gh-comment-id:3386200457 --> @Aetherinox commented on GitHub (Oct 9, 2025): Interesting. This makes sense as to why I've had a pain replicating it. So the question becomes, what to do to mitigate the issue. I am using Traefik on my end, not Nginx, and maybe that played a role in me not getting the issue either. Drop the nginx config that worked, and I'll see if I can reverse it and make it happen with Traefik. But I've also tested this with my own self-hosted instance, and with ntfy's official servers. So I assume that this is a self-hosted issue?
Author
Owner

@n3m3s7s commented on GitHub (Oct 10, 2025):

Interesting. This makes sense as to why I've had a pain replicating it.

So the question becomes, what to do to mitigate the issue.

I am using Traefik on my end, not Nginx, and maybe that played a role in me not getting the issue either.

Drop the nginx config that worked, and I'll see if I can reverse it and make it happen with Traefik.

But I've also tested this with my own self-hosted instance, and with ntfy's official servers. So I assume that this is a self-hosted issue?

Yes, I do not own a ntfy's official server subscription but the clues are pointing to a self-hosted issue;

these are my NGINX server blocks (usually located in /etc/nginx/sites-enabled/ntfy.conf)

IMPORTANT: with NGINX always test the server configuration with the command "nginx -t" or "sudo nginx -t" BEFORE reloading/restarting the NGINX daemon;

sample content of ntfy-nginx.conf

<!-- gh-comment-id:3389024421 --> @n3m3s7s commented on GitHub (Oct 10, 2025): > Interesting. This makes sense as to why I've had a pain replicating it. > > So the question becomes, what to do to mitigate the issue. > > I am using Traefik on my end, not Nginx, and maybe that played a role in me not getting the issue either. > > Drop the nginx config that worked, and I'll see if I can reverse it and make it happen with Traefik. > > But I've also tested this with my own self-hosted instance, and with ntfy's official servers. So I assume that this is a self-hosted issue? Yes, I do not own a ntfy's official server subscription but the clues are pointing to a self-hosted issue; these are my NGINX server blocks (usually located in /etc/nginx/sites-enabled/ntfy.conf) **IMPORTANT**: with NGINX always test the server configuration with the command "nginx -t" or "sudo nginx -t" BEFORE reloading/restarting the NGINX daemon; [sample content of ntfy-nginx.conf](https://gist.github.com/n3m3s7s/7e531d18c86106b43e0e61bf0461df6a)
Author
Owner

@Aetherinox commented on GitHub (Oct 10, 2025):

Thanks, I'll load up a test server.

Have you happened to try other reverse proxies like Traefik or apache?

It's odd that Traefik for me works. And I wonder if that is something out of box, or if I have a specific setting that I made for something else, and it happened ti silence Ntfy as well. For me, it was worked flawlessly.

I guess first, I'll just load up a very basic config with the minimums and see if I can get any type of issue from there.

<!-- gh-comment-id:3389266087 --> @Aetherinox commented on GitHub (Oct 10, 2025): Thanks, I'll load up a test server. Have you happened to try other reverse proxies like Traefik or apache? It's odd that Traefik for me works. And I wonder if that is something out of box, or if I have a specific setting that I made for something else, and it happened ti silence Ntfy as well. For me, it was worked flawlessly. I guess first, I'll just load up a very basic config with the minimums and see if I can get any type of issue from there.
Author
Owner

@spiral6 commented on GitHub (Oct 10, 2025):

I'm using Caddy, btw, not Traefik or NGINX.

Caddy should be even simpler to replicate, but I can help with debugging if bandwidth needed.

<!-- gh-comment-id:3391286974 --> @spiral6 commented on GitHub (Oct 10, 2025): I'm using Caddy, btw, not Traefik or NGINX. Caddy should be even simpler to replicate, but I can help with debugging if bandwidth needed.
Author
Owner

@FaNt4zMa commented on GitHub (Oct 10, 2025):

I'm also using caddy and getting notifications just fine, tho I've noticed a bug. When the client can't reach to the server (timeout, DNS delay, etc) the instance URL will be changed to the default of ntfy.sh.

I was wondering why I wasn't receving notifications for a few weeks, so I when I checked my instance URL this morning it was the default. I then set it to my instance URL, it worked right away, then later I went to test and it had reverted to ntfy.sh again.

It has been a common issue with all my self hosted programs, sometimes I'm unable to reach em from outside for a min or so, not sure if it's DuckDNS's fault or my proxy going into "sleep" mode

<!-- gh-comment-id:3391368876 --> @FaNt4zMa commented on GitHub (Oct 10, 2025): I'm also using caddy and getting notifications just fine, tho I've noticed a bug. When the client can't reach to the server (timeout, DNS delay, etc) the instance URL will be changed to the default of ntfy.sh. I was wondering why I wasn't receving notifications for a few weeks, so I when I checked my instance URL this morning it was the default. I then set it to my instance URL, it worked right away, then later I went to test and it had reverted to ntfy.sh again. It has been a common issue with all my self hosted programs, sometimes I'm unable to reach em from outside for a min or so, not sure if it's DuckDNS's fault or my proxy going into "sleep" mode
Author
Owner

@Aetherinox commented on GitHub (Oct 10, 2025):

@FaNt4zMa

I'll take a look at that.

The only time my app runs a check is when you initially enter your self-hosted URL into the GUI. It'll try to check to make sure it can get a valid response from the URL. But after it successfully adds your new URL, it should not switch.

This check is performed by the method IsValidUrl

                if ( tries === 0 )
                {
                    let errorMsg = `Failed to resolve URL after ${ originalTries } attempts`;
                    if ( err.name === 'AbortError' )
                        errorMsg += ' (timeout)';
                    else if ( err.message )
                        errorMsg += `: ${ err.message }`;

                    return reject( new Error( errorMsg ) );
                }

The problem is, I made that function extremely.... complicated the more I look at it. It works on a retry attempt, tries to figure out the correct headers to use,

However, there is a way to bypass that checker. In your ntfy-desktop settings, enable Localhost Mode.

    const instanceUrl = store.get( 'instanceURL' ) || defInstanceUrl;
    if ( store.getInt( 'bLocalhost' ) === 1 )
    {
        guiMain.loadURL( instanceUrl );
    }

That bypasses the checker completely, and it's a straight "Force connection to this specific URL no matter what happens"

So if you get an issue with the app, always try Localhost Mode first by enabling it and see if you get the same behavior. My suspicions are leading there for at least some of this.


In terms of Caddy, someone else may need to test Caddy. I've got about 3 whole days of experience with Caddy from 5 years ago. I wasn't a huge fan of it, so I didn't use it much. Probably because I just didn't give it enough time. But my main choices are either Nginx or Traefik. Those I can test fine.

Someone who actually has experience with Caddy would be better suited to test that specific issue.

<!-- gh-comment-id:3392431724 --> @Aetherinox commented on GitHub (Oct 10, 2025): @FaNt4zMa I'll take a look at that. The only time my app runs a check is when you initially enter your self-hosted URL into the GUI. It'll try to check to make sure it can get a valid response from the URL. But after it successfully adds your new URL, it should not switch. This check is performed by the method `IsValidUrl` ```javascript if ( tries === 0 ) { let errorMsg = `Failed to resolve URL after ${ originalTries } attempts`; if ( err.name === 'AbortError' ) errorMsg += ' (timeout)'; else if ( err.message ) errorMsg += `: ${ err.message }`; return reject( new Error( errorMsg ) ); } ``` The problem is, I made that function extremely.... complicated the more I look at it. It works on a retry attempt, tries to figure out the correct headers to use, However, there is a way to bypass that checker. In your ntfy-desktop settings, **enable Localhost Mode**. ```javascript const instanceUrl = store.get( 'instanceURL' ) || defInstanceUrl; if ( store.getInt( 'bLocalhost' ) === 1 ) { guiMain.loadURL( instanceUrl ); } ``` That bypasses the checker completely, and it's a straight "Force connection to this specific URL no matter what happens" So if you get an issue with the app, always try Localhost Mode first by enabling it and see if you get the same behavior. My suspicions are leading there for at least some of this. ---- In terms of Caddy, someone else may need to test Caddy. I've got about 3 whole days of experience with Caddy from 5 years ago. I wasn't a huge fan of it, so I didn't use it much. Probably because I just didn't give it enough time. But my main choices are either Nginx or Traefik. Those I can test fine. Someone who actually has experience with Caddy would be better suited to test that specific issue.
Author
Owner

@spiral6 commented on GitHub (Oct 22, 2025):

I tried Localhost mode and still same issue, no notifications. I'm still using Caddy.

On ntfy-desktop version 2.2.0.

<!-- gh-comment-id:3434462031 --> @spiral6 commented on GitHub (Oct 22, 2025): I tried Localhost mode and still same issue, no notifications. I'm still using Caddy. On ntfy-desktop version 2.2.0.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ntfy-desktop#12
No description provided.