Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Support] fejich - ctop, fclones, webhookd, easytier

Featured Replies

这是我第一次为 unRAID 打包插件。
我在自己和朋友的机器上测试了几天,目前一切正常。
如今正申请将其添加到 CA市场 中。

 

This is my first time packaging a plugin for unRAID.
I've been testing it for a few days on my own and my friends' machines, and it's working fine so far.
I'm now applying to get it added to CA / Appstore.

 

插件使用上有任何问题,可以于此贴讨论。

 

If you have any questions about the use of the plugin, you can discuss it in this post.

 

---

 

github repo:ctop Plugin
github repo:fclones Plugin
github repo:webhookd Plugin

github repo:easytier Plugin

---

 

2026.05.09 新增 easytier 插件

2025.01.15 已经正式上架CA商店

 

image.thumb.png.746cb8ee54a0f52af941313162ea3d1b.png

ScreenShot_2026-05-20_140513_033.png

Edited by fejich
正式上架

Hey @fejich, thanks for producing these.

In the 'webhookd' plugin.
I see this text in the 'Plugins' section in Unraid.
 

Quote

webhookd

A very simple webhook server to launch shell scripts.
 

This is a plugin for the webhookd binary executable


Enable the service, run

/etc/rc.d/rc.webhookd start


Working directory: /mnt/user/appdata/webhookd/scripts


Listening port 8080


Source: https://github.com/ncarlier/webhookd


I notice the path " /mnt/user/appdata/webhookd" doesn't exist, is that to be manually created?

Please test this new 'rc.webhookd' file?

The "start" function will:
1. Create the scripts directory at "/mnt/user/appdata/webhookd/scripts" if it doesn't exist

2. Create a .env file at "/mnt/user/appdata/webhookd/webhookd.env" with some simple default values if it doesn't exist

3. Read in the .env file for use in the current environment

4. Start webhookd using the current environment variables

 

#!/bin/sh

NAME="webhookd"
CMD="/usr/bin/webhookd"
ENV_FILE="/mnt/user/appdata/webhookd/webhookd.env"
PROCESSNAME="/usr/bin/webhookd"
USERNAME="root"

func_stop() {
    if [ "$(ps aux | grep $PROCESSNAME | grep -v grep)" ]; then
        echo -n "Stopping $NAME ... "
        killall $PROCESSNAME
        sleep 1
    fi

    if [ ! "$(ps aux | grep $PROCESSNAME | grep -v grep)" ]; then
        echo "Done!"
    else
        echo "Error!"
    fi
}

func_start() {
    echo -n "Starting $NAME ... "

    # Ensure the webhookd config directory exists
    CONFIG_DIR="/mnt/user/appdata/webhookd"
    if [ ! -d "$CONFIG_DIR" ]; then
        echo "Creating config directory at $CONFIG_DIR"
        mkdir -p "$CONFIG_DIR"
    fi

    # Ensure the webhookd.env file exists
    if [ ! -f "$ENV_FILE" ]; then
        echo "Creating webhookd environment file at $ENV_FILE"
        cat <<EOF > "$ENV_FILE"
WHD_HOOK_SCRIPTS=/mnt/user/appdata/webhookd/scripts
WHD_HOOK_DEFAULT_EXT=.sh
WHD_LISTEN_ADDR=:8080
WHD_LOG_LEVEL=info
EOF
    fi

    # Ensure the hook scripts directory exists
    HOOK_SCRIPTS_DIR="/mnt/user/appdata/webhookd/scripts"
    if [ ! -d "$HOOK_SCRIPTS_DIR" ]; then
        echo "Creating hook scripts directory at $HOOK_SCRIPTS_DIR"
        mkdir -p "$HOOK_SCRIPTS_DIR"
    fi

    # Export environment variables from the webhookd.env file
    set -a
    . "$ENV_FILE"
    set +a
    echo "Loaded environment variables from $ENV_FILE:"
    # Uncomment the next line to output the environment variables
    # cat "$ENV_FILE"


    # Start webhookd
    su - $USERNAME -c "$CMD" &
    sleep 1

    if [ "$(ps aux | grep $PROCESSNAME | grep -v grep)" ]; then
        echo "Started!"
    else
        echo "Error!"
    fi
}

case "$1" in
    "start")
        func_start
        ;;
    "stop")
        func_stop
        ;;
    "restart")
        func_stop
        sleep 1
        func_start
        ;;
    *)
        echo "Usage: $0 start|stop|restart"
        ;;
esac


Please see if that works, or not?

 

  • Author
On 1/16/2025 at 11:06 AM, Eurotimmy said:

Please test this new 'rc.webhookd' file?

The "start" function will:
1. Create the scripts directory at "/mnt/user/appdata/webhookd/scripts" if it doesn't exist

2. Create a .env file at "/mnt/user/appdata/webhookd/webhookd.env" with some simple default values if it doesn't exist

3. Read in the .env file for use in the current environment

4. Start webhookd using the current environment variables

 

#!/bin/sh

NAME="webhookd"
CMD="/usr/bin/webhookd"
ENV_FILE="/mnt/user/appdata/webhookd/webhookd.env"
PROCESSNAME="/usr/bin/webhookd"
USERNAME="root"

func_stop() {
    if [ "$(ps aux | grep $PROCESSNAME | grep -v grep)" ]; then
        echo -n "Stopping $NAME ... "
        killall $PROCESSNAME
        sleep 1
    fi

    if [ ! "$(ps aux | grep $PROCESSNAME | grep -v grep)" ]; then
        echo "Done!"
    else
        echo "Error!"
    fi
}

func_start() {
    echo -n "Starting $NAME ... "

    # Ensure the webhookd config directory exists
    CONFIG_DIR="/mnt/user/appdata/webhookd"
    if [ ! -d "$CONFIG_DIR" ]; then
        echo "Creating config directory at $CONFIG_DIR"
        mkdir -p "$CONFIG_DIR"
    fi

    # Ensure the webhookd.env file exists
    if [ ! -f "$ENV_FILE" ]; then
        echo "Creating webhookd environment file at $ENV_FILE"
        cat <<EOF > "$ENV_FILE"
WHD_HOOK_SCRIPTS=/mnt/user/appdata/webhookd/scripts
WHD_HOOK_DEFAULT_EXT=.sh
WHD_LISTEN_ADDR=:8080
WHD_LOG_LEVEL=info
EOF
    fi

    # Ensure the hook scripts directory exists
    HOOK_SCRIPTS_DIR="/mnt/user/appdata/webhookd/scripts"
    if [ ! -d "$HOOK_SCRIPTS_DIR" ]; then
        echo "Creating hook scripts directory at $HOOK_SCRIPTS_DIR"
        mkdir -p "$HOOK_SCRIPTS_DIR"
    fi

    # Export environment variables from the webhookd.env file
    set -a
    . "$ENV_FILE"
    set +a
    echo "Loaded environment variables from $ENV_FILE:"
    # Uncomment the next line to output the environment variables
    # cat "$ENV_FILE"


    # Start webhookd
    su - $USERNAME -c "$CMD" &
    sleep 1

    if [ "$(ps aux | grep $PROCESSNAME | grep -v grep)" ]; then
        echo "Started!"
    else
        echo "Error!"
    fi
}

case "$1" in
    "start")
        func_start
        ;;
    "stop")
        func_stop
        ;;
    "restart")
        func_stop
        sleep 1
        func_start
        ;;
    *)
        echo "Usage: $0 start|stop|restart"
        ;;
esac


Please see if that works, or not?

 

 

 

Thank you for your feedback.🤝
Your modified script has been integrated into the 2025.01.17 version

The script works very well.

 

# /etc/rc.d/rc.webhookdd start
Starting webhookd ... Creating config directory at /mnt/user/appdata/webhookd
Creating webhookd environment file at /mnt/user/appdata/webhookd/webhookd.env
Creating hook scripts directory at /mnt/user/appdata/webhookd/scripts
Loaded environment variables from /mnt/user/appdata/webhookd/webhookd.env:
time=2025-01-17T16:12:31.219+08:00 level=INFO msg="server started" addr=:8080
Started!

 

grid.gif?raw=true

这个实时动态变化是用的什么命令?

只是ctop吗?没有cpu\ net\io的变化呢

 

Edited by Misyo

  • Author
On 1/20/2025 at 11:47 PM, Misyo said:

grid.gif?raw=true

这个实时动态变化是用的什么命令?

只是ctop吗?没有cpu\ net\io的变化呢

 

 

输入 ctop 即可,打开后 按 h 是显示帮助

s 是选择排序方式

 

unRAID 的终端显示不出条状图,都是按文字显示

On 1/22/2025 at 11:37 AM, fejich said:

 

输入 ctop 即可,打开后 按 h 是显示帮助

s 是选择排序方式

 

unRAID 的终端显示不出条状图,都是按文字显示

3Q,好像IO R/W对于unraid不起作用?

I'm trying to change the port, currently my port 8080 is taken up by something I can't change.

In "webhookd.env" I wrote:
WHD_LISTEN_ADDR=:8077
I even manually changed rc.webhookd script in /etc/rc.d folder, changed the port there to 8077 and yet still when I do rc.webhookd start it still tries to access the 8080 port. Any solution for that?

 

root@Tower:/etc/rc.d# ./rc.webhookd start
Starting webhookd ... Loaded environment variables from /mnt/user/appdata/webhookd/webhookd.env:
time=2025-01-23T15:30:31.280+02:00 level=INFO msg="server started" addr=:8080
time=2025-01-23T15:30:31.280+02:00 level=ERROR msg="unable to start the server" addr=:8080 err="listen tcp :8080: bind: address already in use"
Error!



and:
 

root@Tower:/mnt/cache/appdata/webhookd# cat webhookd.env 
WHD_LISTEN_ADDR=:8077


 

Edited by DrMor

  • 2 weeks later...

has anyone experienced the ctop plugin disappearing upon reboot?   i had it happen on 6.12.15 and 7.0.

 

 

Edited by JudasD
typo

  • Author
On 1/23/2025 at 9:34 PM, DrMor said:

I'm trying to change the port, currently my port 8080 is taken up by something I can't change.

In "webhookd.env" I wrote:
WHD_LISTEN_ADDR=:8077
I even manually changed rc.webhookd script in /etc/rc.d folder, changed the port there to 8077 and yet still when I do rc.webhookd start it still tries to access the 8080 port. Any solution for that?

 

root@Tower:/etc/rc.d# ./rc.webhookd start
Starting webhookd ... Loaded environment variables from /mnt/user/appdata/webhookd/webhookd.env:
time=2025-01-23T15:30:31.280+02:00 level=INFO msg="server started" addr=:8080
time=2025-01-23T15:30:31.280+02:00 level=ERROR msg="unable to start the server" addr=:8080 err="listen tcp :8080: bind: address already in use"
Error!



and:
 

root@Tower:/mnt/cache/appdata/webhookd# cat webhookd.env 
WHD_LISTEN_ADDR=:8077


 

 

 Please accept my apologies for the late reply. Due to the prolonged Chinese New Year break, I inadvertently missed your forum post. The problem you mentioned has now been fixed in version 2025.02.04.

🙂

  • Author
On 1/23/2025 at 2:29 PM, Misyo said:

3Q,好像IO R/W对于unraid不起作用?

应该是的,这部分功能在 unRAID 上不正常

  • Author
On 2/2/2025 at 3:13 PM, JudasD said:

has anyone experienced the ctop plugin disappearing upon reboot?   i had it happen on 6.12.15 and 7.0.

 

 

 

Based on my tests, I couldn't reproduce the issue.

42 minutes ago, fejich said:

 

Based on my tests, I couldn't reproduce the issue.

thank you for trying to reproduce.  it happens only upon reboot and it is not every reboot.  I do not reboot very often, so this is why i have not been able to gather any substantial data.  I'll follow-up if i do determine any patterns.

 

Thanks,

JD

 

  • 1 month later...

Hi - how do I get CTOP to sort by CPU usage?

Thanks

 

Screenshot2025-03-18at19_56_01.thumb.png.1ec2dbe916f561ad49d93262d9a96f56.png

  • Author
On 3/19/2025 at 3:56 AM, dopeytree said:

Hi - how do I get CTOP to sort by CPU usage?
你好 - 我怎么能让 CTOP 按照 CPU 使用率排序?

Thanks   谢谢

 

Screenshot2025-03-18at19_56_01.thumb.png.1ec2dbe916f561ad49d93262d9a96f56.png

 

 <enter> - open container menu                                   │                                                              
 │                                                                   │
 │   [a] - toggle display of all containers                          │                                                                         
 │   [f] - filter displayed containers                               │                                                           
 │   [h] - open this help dialog                                     │                                                           
 │   [H] - toggle ctop header                                        │                                                           
 │   [s] - select container sort field                               │                                                           
 │   [r] - reverse container sort order                              │                                                           
 │   [o] - open single view                                          │                                                           
 │   [l] - view container logs ([t] to toggle timestamp when open)   │                                                           
 │   [e] - exec shell                                                │                                                           
 │   [w] - open browser (first port is http)                         │                                                           
 │   [c] - configure columns                                         │                                                           
 │   [S] - save current configuration to file                        │                                                           
 │   [q] - exit ctop                                        

 

You can press 's' to select the sorting method.

 

This would be so useful if you could provide a web ui for this plugin

  • 1 month later...

I can't get webhookd working, can't change default port, can't stop service ...

root@MNAS:~# webhookd stop

time=2025-05-22T16:16:33.702+02:00 level=INFO msg="server started" addr=:8080

time=2025-05-22T16:16:33.702+02:00 level=ERROR msg="unable to start the server" addr=:8080 err="listen tcp :8080: bind: address already in use"

root@MNAS:~# webhookd restart

time=2025-05-22T16:16:48.395+02:00 level=INFO msg="server started" addr=:8080

time=2025-05-22T16:16:48.395+02:00 level=ERROR msg="unable to start the server" addr=:8080 err="listen tcp :8080: bind: address already in use"

root@MNAS:~# more /mnt/user/appdata/webhookd/webhookd.env

WHD_HOOK_SCRIPTS=/mnt/user/appdata/webhookd/scripts

WHD_HOOK_DEFAULT_EXT=.sh

WHD_LISTEN_ADDR=:8888

WHD_LOG_LEVEL=info

  • Author
On 5/22/2025 at 10:19 PM, Meldrak said:

I can't get webhookd working, can't change default port, can't stop service ...

root@MNAS:~# webhookd stop

time=2025-05-22T16:16:33.702+02:00 level=INFO msg="server started" addr=:8080

time=2025-05-22T16:16:33.702+02:00 level=ERROR msg="unable to start the server" addr=:8080 err="listen tcp :8080: bind: address already in use"

root@MNAS:~# webhookd restart

time=2025-05-22T16:16:48.395+02:00 level=INFO msg="server started" addr=:8080

time=2025-05-22T16:16:48.395+02:00 level=ERROR msg="unable to start the server" addr=:8080 err="listen tcp :8080: bind: address already in use"

root@MNAS:~# more /mnt/user/appdata/webhookd/webhookd.env

WHD_HOOK_SCRIPTS=/mnt/user/appdata/webhookd/scripts

WHD_HOOK_DEFAULT_EXT=.sh

WHD_LISTEN_ADDR=:8888

WHD_LOG_LEVEL=info

You need to use the /etc/rc.d/rc.webhookd script to manage the service.

# Start the webhookd service
/etc/rc.d/rc.webhookd start

# Stop the webhookd service
/etc/rc.d/rc.webhookd stop

# Restart the webhookd service
/etc/rc.d/rc.webhookd restart
  • 1 month later...

Is there a mistake in the default config ?

Default is:

WHD_HOOK_DEFAULT_EXT=.sh

But then my script.sh is not found because it is searching for script..sh ( 2x "." )

When I change:

WHD_HOOK_DEFAULT_EXT=sh (leaving out the "." )

then script.sh is found.

Mike

  • Author
On 7/17/2025 at 5:51 AM, mmm77 said:

Is there a mistake in the default config ?
默认配置是否有错误?

Default is:  默认是:

WHD_HOOK_DEFAULT_EXT=.sh

But then my script.sh is not found because it is searching for script..sh ( 2x "." )
但这样我的 script.sh 就找不到,因为它在搜索 script..sh(多了一个“.”)

When I change:  当我更改:

WHD_HOOK_DEFAULT_EXT=sh (leaving out the "." )
WHD_HOOK_DEFAULT_EXT=sh(去掉 ".")

then script.sh is found.  则会找到 script.sh。

Mike

On 7/17/2025 at 5:51 AM, mmm77 said:

Is there a mistake in the default config ?

Default is:

WHD_HOOK_DEFAULT_EXT=.sh

But then my script.sh is not found because it is searching for script..sh ( 2x "." )

When I change:

WHD_HOOK_DEFAULT_EXT=sh (leaving out the "." )

then script.sh is found.

Mike

I apologize for my oversight;

I had a habit of typing the full "scriptName.sh" in the URL by default during testing, and I didn't notice this issue until now.

Thank you for the feedback. I will correct this error right away.

  • 2 weeks later...

I have tried to implement a CI/CD pipeline to pull the latest build from GitHub and then build it. The communication with Git is fine, but then I run into permission issues. Is anyone here experience in setting up such a pipeline? I would be massively thankful for some help.

  • 4 months later...
  • 5 months later...
  • Author
On 2025/12/3 at PM10点04分, btTeddy said:

fclones 有更新的可能吗?我记得它还是 0.34 版本,而 0.35 版本已经发布了(https://github.com/pkolaczk/fclones)。

Sorry I haven't browsed the forum for a while. I have updated the fclones plugin to the latest version v0.35.0. Thank you for your feedback.

  • fejich changed the title to [Support] fejich - ctop, fclones, webhookd, easytier

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.