Recommendation: ServerChan 3 Notification Service for godoxy Project #88

Closed
opened 2025-12-29 09:22:50 +01:00 by adam · 23 comments
Owner

Originally created by @Yxini-p on GitHub (Jun 25, 2025).

ServerChan 3 offers a highly practical solution, especially for users in China. It supports background - free push notifications on a wide range of mobile devices, including iOS, FCM, and Android devices from major Chinese manufacturers such as Xiaomi, Huawei, Honor, Vivo, Oppo, iQOO, Realme, OnePlus, and Meizu. This feature ensures that users can receive timely notifications even when the app is not running in the background, which is a significant advantage in terms of user experience.

Here are some links that you might find useful:

English documentation: https://doc.sc3.ft07.com/en/serverchan3
Example documents: https://github.com/easychen/serverchan3-doc

I believe integrating ServerChan 3 into the godoxy project could enhance its functionality and user satisfaction. Thank you for considering this recommendation.

Originally created by @Yxini-p on GitHub (Jun 25, 2025). ServerChan 3 offers a highly practical solution, especially for users in China. It supports background - free push notifications on a wide range of mobile devices, including iOS, FCM, and Android devices from major Chinese manufacturers such as Xiaomi, Huawei, Honor, Vivo, Oppo, iQOO, Realme, OnePlus, and Meizu. This feature ensures that users can receive timely notifications even when the app is not running in the background, which is a significant advantage in terms of user experience. Here are some links that you might find useful: English documentation: https://doc.sc3.ft07.com/en/serverchan3 Example documents: https://github.com/easychen/serverchan3-doc I believe integrating ServerChan 3 into the godoxy project could enhance its functionality and user satisfaction. Thank you for considering this recommendation.
adam added the enhancement label 2025-12-29 09:22:50 +01:00
adam closed this issue 2025-12-29 09:22:51 +01:00
Author
Owner

@Yxini-p commented on GitHub (Jun 25, 2025):

Author, can you consider adding ServerChan3 as a notification? The advantage of ServerChan3 is its simplicity, as it only requires a SendKey to push notifications, and for notifications that can be pushed without the need for a backend, it is somewhat similar to iOS's Brak notification; If you consider adding notifications, it will make the Android notification experience better;

@Yxini-p commented on GitHub (Jun 25, 2025): Author, can you consider adding ServerChan3 as a notification? The advantage of ServerChan3 is its simplicity, as it only requires a SendKey to push notifications, and for notifications that can be pushed without the need for a backend, it is somewhat similar to iOS's Brak notification; If you consider adding notifications, it will make the Android notification experience better;
Author
Owner

@yusing commented on GitHub (Jun 25, 2025):

Thanks for the suggestion. Please test with the webhook notification provider then I'll add a template for ServerChan3.

ServerChan3 API docs: https://doc.sc3.ft07.com/en/serverchan3/server/api
GoDoxy Webhook Notification docs: https://docs.godoxy.dev/Notifications#webhook

@yusing commented on GitHub (Jun 25, 2025): Thanks for the suggestion. Please test with the `webhook` notification provider then I'll add a template for ServerChan3. ServerChan3 API docs: <https://doc.sc3.ft07.com/en/serverchan3/server/api> GoDoxy Webhook Notification docs: <https://docs.godoxy.dev/Notifications#webhook>
Author
Owner

@Yxini-p commented on GitHub (Jun 25, 2025):

Firstly, I apologize that I am not a programmer; My personal level is not high, and my programming skills can only rely on artificial intelligence to help me (or artificial intelligence is the only way for me to understand the world of programming). I can now use artificial intelligence to provide you with some information;

  1. Define the Webhook Target URL​
    The ServerChan3 API endpoint is:​

    https://sct.ftqq.com/{SCKEY}.send​

    Replace {SCKEY} with your actual Token. Example:​

    https://sct.ftqq.com/sct1234567890abcdefghijklmnopqrstuvwxyz.send​

  2. Set Up Webhook in GoDoxy​
    Based on GoDoxy's documentation (https://docs.godoxy.dev/Notifications#webhook), follow these steps:​

    Access GoDoxy's notification settings, find "Webhook," and click "Add New Webhook."​

    Configure basic info:​

    Name: Customize (e.g., "ServerChan3 Notification").​

    Target URL: Enter the ServerChan3 API address above.​

    Request Method: Select POST.​

    Set Request Headers:​

    Content-Type: application/json​

    Set Request Body (JSON Template):​

According to ServerChan3's API, the body must include title and desp. Example:​

{​
"title": "GoDoxy Notification: {{event_type}}",​
"desp": "Event Type: {{event_type}}\nTime: {{occurred_at}}\nDetails: {{event_data}}\n\nView Details"​
}​

Parameter Notes:​

{{event_type}}: GoDoxy event type (e.g., "Task Completed," "System Alert").​

{{occurred_at}}: Event timestamp.​

{{event_data}}: Event-specific data (adjust fields as needed).​

{{event_url}}: Event detail link (optional).​
  1. ServerChan3 Template Examples & Optimization​

  2. Basic Notification Template​

    {​
    "title": "【GoDoxy】{{event_type}}",​
    "desp": "### Event Details\n- Type: {{event_type}}\n- Time: {{occurred_at}}\n- Status: {{event_status}}\n\n### Detailed Information\n{{event_description}}\n\nVisit GoDoxy Console"​
    }​

  3. Task Alert Template (for failed tasks)​

    {​
    "title": "【Warning】GoDoxy Task Execution Failed",​
    "desp": "### Task Information\n- Task Name: {{task_name}}\n- Task ID: {{task_id}}\n- Start Time: {{start_time}}\n- End Time: {{end_time}}\n\n### Failure Reason\n{{error_message}}\n\n### Action Suggestions\n1. Log in to GoDoxy to view task logs\n2. Check dependent environments or configurations\n3. Re-trigger task execution\n\nTask Details Link"​
    }​

  4. System Status Template (for periodic monitoring)​

    {​
    "title": "GoDoxy System Status Daily Report",​
    "desp": "### Today's Statistics\n- Total Tasks: {{total_tasks}}\n- Successful Tasks: {{success_tasks}} ({{success_rate}}%)\n- Failed Tasks: {{failed_tasks}}\n\n### Resource Usage\n- CPU Usage: {{cpu_usage}}%\n- Memory Usage: {{memory_usage}}%\n- Disk Space: {{disk_space}}GB / {{disk_total}}GB\n\n### Latest Alerts\n{{latest_alerts}}\n\nSystem Monitoring Panel"​
    }​

  5. Testing & Debugging​

    Send a test notification:​

In GoDoxy's Webhook settings, use the "Test Notification" option to trigger a mock request and verify if ServerChan3 receives the message.​

Troubleshooting common issues:​

If no notification is received: Check if the SCKEY in the URL is correct. Test the URL in a browser (a successful request should return {"code":0,"message":"success"}).​

If there's a format error: Ensure the request body is in JSON and field names match ServerChan3's API (e.g., desp cannot be description).
@Yxini-p commented on GitHub (Jun 25, 2025): Firstly, I apologize that I am not a programmer; My personal level is not high, and my programming skills can only rely on artificial intelligence to help me (or artificial intelligence is the only way for me to understand the world of programming). I can now use artificial intelligence to provide you with some information; 1. Define the Webhook Target URL​ The ServerChan3 API endpoint is:​ ​ https://sct.ftqq.com/{SCKEY}.send​ ​ Replace {SCKEY} with your actual Token. Example:​ ​ https://sct.ftqq.com/sct1234567890abcdefghijklmnopqrstuvwxyz.send​ ​ 2. Set Up Webhook in GoDoxy​ Based on GoDoxy's documentation (https://docs.godoxy.dev/Notifications#webhook), follow these steps:​ Access GoDoxy's notification settings, find "Webhook," and click "Add New Webhook."​ Configure basic info:​ Name: Customize (e.g., "ServerChan3 Notification").​ Target URL: Enter the ServerChan3 API address above.​ Request Method: Select POST.​ Set Request Headers:​ Content-Type: application/json​ Set Request Body (JSON Template):​ According to ServerChan3's API, the body must include title and desp. Example:​ ​ {​ "title": "GoDoxy Notification: {{event_type}}",​ "desp": "Event Type: {{event_type}}\nTime: {{occurred_at}}\nDetails: {{event_data}}\n\n[View Details]({{event_url}})"​ }​ ​ Parameter Notes:​ {{event_type}}: GoDoxy event type (e.g., "Task Completed," "System Alert").​ {{occurred_at}}: Event timestamp.​ {{event_data}}: Event-specific data (adjust fields as needed).​ {{event_url}}: Event detail link (optional).​ 3. ServerChan3 Template Examples & Optimization​ 1. Basic Notification Template​ ​ {​ "title": "【GoDoxy】{{event_type}}",​ "desp": "### Event Details\n- **Type**: {{event_type}}\n- **Time**: {{occurred_at}}\n- **Status**: {{event_status}}\n\n### Detailed Information\n{{event_description}}\n\n[Visit GoDoxy Console]({{console_url}})"​ }​ ​ 2. Task Alert Template (for failed tasks)​ ​ {​ "title": "【Warning】GoDoxy Task Execution Failed",​ "desp": "### Task Information\n- **Task Name**: {{task_name}}\n- **Task ID**: {{task_id}}\n- **Start Time**: {{start_time}}\n- **End Time**: {{end_time}}\n\n### Failure Reason\n{{error_message}}\n\n### Action Suggestions\n1. Log in to GoDoxy to view task logs\n2. Check dependent environments or configurations\n3. Re-trigger task execution\n\n[Task Details Link]({{task_url}})"​ }​ ​ 3. System Status Template (for periodic monitoring)​ ​ {​ "title": "GoDoxy System Status Daily Report",​ "desp": "### Today's Statistics\n- **Total Tasks**: {{total_tasks}}\n- **Successful Tasks**: {{success_tasks}} ({{success_rate}}%)\n- **Failed Tasks**: {{failed_tasks}}\n\n### Resource Usage\n- **CPU Usage**: {{cpu_usage}}%\n- **Memory Usage**: {{memory_usage}}%\n- **Disk Space**: {{disk_space}}GB / {{disk_total}}GB\n\n### Latest Alerts\n{{latest_alerts}}\n\n[System Monitoring Panel]({{monitor_url}})"​ }​ ​ 4. Testing & Debugging​ Send a test notification:​ In GoDoxy's Webhook settings, use the "Test Notification" option to trigger a mock request and verify if ServerChan3 receives the message.​ Troubleshooting common issues:​ If no notification is received: Check if the SCKEY in the URL is correct. Test the URL in a browser (a successful request should return {"code":0,"message":"success"}).​ If there's a format error: Ensure the request body is in JSON and field names match ServerChan3's API (e.g., desp cannot be description).
Author
Owner

@Yxini-p commented on GitHub (Jun 25, 2025):

This is really bad, I am powerless in this regard; I can only think of Uptime Kuma service supporting Serverchan notifications, or we can find references on Uptime Kuma's GitHub;
Because the information I obtained from AI, I myself feel that it is incorrect; It's something that wastes everyone's time;

@Yxini-p commented on GitHub (Jun 25, 2025): This is really bad, I am powerless in this regard; I can only think of Uptime Kuma service supporting Serverchan notifications, or we can find references on Uptime Kuma's GitHub; Because the information I obtained from AI, I myself feel that it is incorrect; It's something that wastes everyone's time;
Author
Owner

@yusing commented on GitHub (Jun 25, 2025):

Indeed, those are incorrect. I can't and not really wanna try out ServerChan3 but can give you a GoDoxy config example later. Let's see if that will work.

@yusing commented on GitHub (Jun 25, 2025): Indeed, those are incorrect. I can't and not really wanna try out ServerChan3 but can give you a GoDoxy config example later. Let's see if that will work.
Author
Owner

@Yxini-p commented on GitHub (Jun 25, 2025):

Thank you. 

---Original---
From: @.>
Date: Wed, Jun 25, 2025 19:11 PM
To: @.
>;
Cc: @.@.>;
Subject: Re: [yusing/godoxy] Recommendation: ServerChan 3 Notification Servicefor godoxy Project (Issue #129)

yusing left a comment (yusing/godoxy#129)

Indeed, those are incorrect. I can't and not really wanna try out ServerChan3 but can give you a GoDoxy config example later. Let's see if that will work.


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

@Yxini-p commented on GitHub (Jun 25, 2025): Thank you.&nbsp; ---Original--- From: ***@***.***&gt; Date: Wed, Jun 25, 2025 19:11 PM To: ***@***.***&gt;; Cc: ***@***.******@***.***&gt;; Subject: Re: [yusing/godoxy] Recommendation: ServerChan 3 Notification Servicefor godoxy Project (Issue #129) yusing left a comment (yusing/godoxy#129) Indeed, those are incorrect. I can't and not really wanna try out ServerChan3 but can give you a GoDoxy config example later. Let's see if that will work. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: ***@***.***&gt;
Author
Owner

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

Try this (add a new item under providers.notification):

providers
  notification:
    - name: ServerChan3
      provider: webhook
      url: https://<uid>.push.ft07.com/send/<sendkey>.send
      payload: |
          {
            "title": $title,
            "desp": $message
          }
@yusing commented on GitHub (Jun 26, 2025): Try this (add a new item under `providers.notification`): ```yaml providers notification: - name: ServerChan3 provider: webhook url: https://<uid>.push.ft07.com/send/<sendkey>.send payload: | { "title": $title, "desp": $message } ```
Author
Owner

@Yxini-p commented on GitHub (Jun 26, 2025):

i try it but it is wrong;

notification:

runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0xc01de804b0 stack=[0xc01de80000, 0xc03de80000]
fatal error: stack overflow
Container stopped

@Yxini-p commented on GitHub (Jun 26, 2025): i try it but it is wrong; notification: - name: gotify provider: gotify url: http://192.168.2.192:18181 token: xxxx - name: ServerChan3 provider: webhook url: https://xxxx.push.ft07.com/send/xxxx.send payload: | { "title": "${title}", "desp": "${message}" } runtime: goroutine stack exceeds 1000000000-byte limit runtime: sp=0xc01de804b0 stack=[0xc01de80000, 0xc03de80000] fatal error: stack overflow Container stopped
Author
Owner

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

Copy the exact payload

@yusing commented on GitHub (Jun 26, 2025): Copy the exact payload
Author
Owner

@Yxini-p commented on GitHub (Jun 26, 2025):

Do you mean to let me copy the entire content you sent into the configuration file

@Yxini-p commented on GitHub (Jun 26, 2025): Do you mean to let me copy the entire content you sent into the configuration file
Author
Owner

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

payload: |
  {
    "title": $title,
    "desp": $message
  }
@yusing commented on GitHub (Jun 26, 2025): ``` payload: | { "title": $title, "desp": $message } ```
Author
Owner

@Yxini-p commented on GitHub (Jun 26, 2025):

Image

Did I correct it or was it wrong

@Yxini-p commented on GitHub (Jun 26, 2025): ![Image](https://github.com/user-attachments/assets/548b3fef-ba90-4183-8d8f-988d25eb6b42) Did I correct it or was it wrong
Author
Owner

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

Yes, try and see if that works.

@yusing commented on GitHub (Jun 26, 2025): Yes, try and see if that works.
Author
Owner

@Yxini-p commented on GitHub (Jun 26, 2025):

Image

It looks a bit off.

@Yxini-p commented on GitHub (Jun 26, 2025): ![Image](https://github.com/user-attachments/assets/5a1cfb55-e37b-4aa1-b7ee-b47943c2426a) It looks a bit off.
Author
Owner

@Yxini-p commented on GitHub (Jun 26, 2025):

autocert:
  provider: local
  key_path: certs/1.key
  cert_path: certs/1.crt
entrypoint:
  middlewares:
    - use: CloudflareRealIP
    - use: ModifyResponse
      set_headers:
        Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD
        Access-Control-Allow-Headers: "*"
        Access-Control-Allow-Origin: "*"
        Access-Control-Max-Age: 180
        Vary: "*"
        X-XSS-Protection: 1; mode=block
        Content-Security-Policy: object-src 'self'; frame-ancestors 'self';
        X-Content-Type-Options: nosniff
        X-Frame-Options: SAMEORIGIN
        Referrer-Policy: same-origin
        Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
  access_log:
    format: combined
    path: /app/logs/entrypoint.log
providers:
  docker:
    local: $DOCKER_HOST
  notification:
    - name: gotify
      provider: gotify
      url: http://192.168.2.192:18181
      token: xxxx
    - name: ServerChan3
      provider: webhook
      url: https://xxxx.push.ft07.com/send/xxxx.send
      payload: |
        {
          "title": $title,
          "desp": $message
        }
homepage:
  use_default_categories: true
timeout_shutdown: 5

I shared my file. Can you download it?

@Yxini-p commented on GitHub (Jun 26, 2025): ``` autocert: provider: local key_path: certs/1.key cert_path: certs/1.crt entrypoint: middlewares: - use: CloudflareRealIP - use: ModifyResponse set_headers: Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD Access-Control-Allow-Headers: "*" Access-Control-Allow-Origin: "*" Access-Control-Max-Age: 180 Vary: "*" X-XSS-Protection: 1; mode=block Content-Security-Policy: object-src 'self'; frame-ancestors 'self'; X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Referrer-Policy: same-origin Strict-Transport-Security: max-age=63072000; includeSubDomains; preload access_log: format: combined path: /app/logs/entrypoint.log providers: docker: local: $DOCKER_HOST notification: - name: gotify provider: gotify url: http://192.168.2.192:18181 token: xxxx - name: ServerChan3 provider: webhook url: https://xxxx.push.ft07.com/send/xxxx.send payload: | { "title": $title, "desp": $message } homepage: use_default_categories: true timeout_shutdown: 5 ``` I shared my file. Can you download it?
Author
Owner

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

I figured out why, there are some issues with the validation. Will try to fix this on weekend.

@yusing commented on GitHub (Jun 26, 2025): I figured out why, there are some issues with the validation. Will try to fix this on weekend.
Author
Owner

@Yxini-p commented on GitHub (Jun 26, 2025):

Thank you for your help, I also promote godoxy in the Chinese social media NAS community, this notification is more famous in Chinese notifications, and it belongs to the more localized notifications in China

@Yxini-p commented on GitHub (Jun 26, 2025): Thank you for your help, I also promote godoxy in the Chinese social media NAS community, this notification is more famous in Chinese notifications, and it belongs to the more localized notifications in China
Author
Owner

@yusing commented on GitHub (Jun 28, 2025):

Fixed in v0.15.2, please update and try again.

@yusing commented on GitHub (Jun 28, 2025): Fixed in v0.15.2, please update and try again.
Author
Owner

@yusing commented on GitHub (Jun 28, 2025):

autocert:
  provider: local
  key_path: certs/1.key
  cert_path: certs/1.crt
entrypoint:
  middlewares:
    - use: CloudflareRealIP
    - use: ModifyResponse
      set_headers:
        Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD
        Access-Control-Allow-Headers: "*"
        Access-Control-Allow-Origin: "*"
        Access-Control-Max-Age: 180
        Vary: "*"
        X-XSS-Protection: 1; mode=block
        Content-Security-Policy: object-src 'self'; frame-ancestors 'self';
        X-Content-Type-Options: nosniff
        X-Frame-Options: SAMEORIGIN
        Referrer-Policy: same-origin
        Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
  access_log:
    format: combined
    path: /app/logs/entrypoint.log
providers:
  docker:
    local: $DOCKER_HOST
  notification:
    - name: gotify
      provider: gotify
      url: http://192.168.2.192:18181
      token: xxxx
    - name: ServerChan3
      provider: webhook
      url: https://xxxx.push.ft07.com/send/xxxx.send
      payload: |
        {
          "title": $title,
          "desp": $message
        }
homepage:
  use_default_categories: true
timeout_shutdown: 5

FYI, with the exact same config.

@yusing commented on GitHub (Jun 28, 2025): > ``` > autocert: > provider: local > key_path: certs/1.key > cert_path: certs/1.crt > entrypoint: > middlewares: > - use: CloudflareRealIP > - use: ModifyResponse > set_headers: > Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD > Access-Control-Allow-Headers: "*" > Access-Control-Allow-Origin: "*" > Access-Control-Max-Age: 180 > Vary: "*" > X-XSS-Protection: 1; mode=block > Content-Security-Policy: object-src 'self'; frame-ancestors 'self'; > X-Content-Type-Options: nosniff > X-Frame-Options: SAMEORIGIN > Referrer-Policy: same-origin > Strict-Transport-Security: max-age=63072000; includeSubDomains; preload > access_log: > format: combined > path: /app/logs/entrypoint.log > providers: > docker: > local: $DOCKER_HOST > notification: > - name: gotify > provider: gotify > url: http://192.168.2.192:18181 > token: xxxx > - name: ServerChan3 > provider: webhook > url: https://xxxx.push.ft07.com/send/xxxx.send > payload: | > { > "title": $title, > "desp": $message > } > homepage: > use_default_categories: true > timeout_shutdown: 5 > ``` FYI, with the exact same config.
Author
Owner

@yusing commented on GitHub (Jun 28, 2025):

Could you share the link of the post you've shared? Thanks a lot.

@yusing commented on GitHub (Jun 28, 2025): Could you share the link of the post you've shared? Thanks a lot.
Author
Owner

@Yxini-p commented on GitHub (Jun 28, 2025):

Could you share the link of the post you've shared? Thanks a lot.

I just saw it, let me test it; I use social media "chat software" similar to discord, using QQ and WeChat, both of which are chat groups of more than 500 people; I recommend it, but in fact, there is a person who shared a tutorial on the website of smzdm, and it is in this tutorial that I learned and found here; I'll send the link;
https://post.smzdm.com/p/a94qwexp/

@Yxini-p commented on GitHub (Jun 28, 2025): > Could you share the link of the post you've shared? Thanks a lot. I just saw it, let me test it; I use social media "chat software" similar to discord, using QQ and WeChat, both of which are chat groups of more than 500 people; I recommend it, but in fact, there is a person who shared a tutorial on the website of smzdm, and it is in this tutorial that I learned and found here; I'll send the link; [https://post.smzdm.com/p/a94qwexp/](url)
Author
Owner

@Yxini-p commented on GitHub (Jun 28, 2025):

I tested it and it can be used normally; thank you, I will recommend it on QQ and WeChat groups; let more people know about this program;

It is not necessary to run in the background to send push notifications, as my phone has limited memory. When using Gotify, I need to add it to the memory whitelist, which can lead to insufficient memory and increased power consumption;

Image

@Yxini-p commented on GitHub (Jun 28, 2025): I tested it and it can be used normally; thank you, I will recommend it on QQ and WeChat groups; let more people know about this program; It is not necessary to run in the background to send push notifications, as my phone has limited memory. When using Gotify, I need to add it to the memory whitelist, which can lead to insufficient memory and increased power consumption; ![Image](https://github.com/user-attachments/assets/4688dc23-9e46-49a2-b40f-74653d44ba84)
Author
Owner

@yusing commented on GitHub (Jun 28, 2025):

Nice to hear it worked. Closing this now, let me know if there's any issue.

@yusing commented on GitHub (Jun 28, 2025): Nice to hear it worked. Closing this now, let me know if there's any issue.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/godoxy#88