diff --git a/web/html/form/inbound.html b/web/html/form/inbound.html
index 8b59dc28..d51ff5d2 100644
--- a/web/html/form/inbound.html
+++ b/web/html/form/inbound.html
@@ -81,6 +81,8 @@
{{ i18n
"pages.inbounds.periodicTrafficReset.monthly"
}}
+ {{ i18n
+ "pages.inbounds.periodicTrafficReset.hourly" }}
diff --git a/web/translation/translate.ar_EG.toml b/web/translation/translate.ar_EG.toml
index 3fbcee6e..17e547af 100644
--- a/web/translation/translate.ar_EG.toml
+++ b/web/translation/translate.ar_EG.toml
@@ -271,6 +271,7 @@
"daily" = "يومياً"
"weekly" = "أسبوعياً"
"monthly" = "شهرياً"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "تم الحصول عليه"
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index 7d6ab162..6a94aa8a 100644
--- a/web/translation/translate.en_US.toml
+++ b/web/translation/translate.en_US.toml
@@ -271,6 +271,7 @@
"daily" = "Daily"
"weekly" = "Weekly"
"monthly" = "Monthly"
+"hourly" = "Hourly"
[pages.inbounds.toasts]
"obtain" = "Obtain"
diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml
index 14429228..03ffe566 100644
--- a/web/translation/translate.es_ES.toml
+++ b/web/translation/translate.es_ES.toml
@@ -271,6 +271,7 @@
"daily" = "Diariamente"
"weekly" = "Semanalmente"
"monthly" = "Mensualmente"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "Recibir"
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml
index cc2220fd..c29a2ac1 100644
--- a/web/translation/translate.fa_IR.toml
+++ b/web/translation/translate.fa_IR.toml
@@ -271,6 +271,7 @@
"daily" = "روزانه"
"weekly" = "هفتگی"
"monthly" = "ماهانه"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "فراهمسازی"
diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml
index 65fc04af..d8bdf256 100644
--- a/web/translation/translate.id_ID.toml
+++ b/web/translation/translate.id_ID.toml
@@ -271,6 +271,7 @@
"daily" = "Harian"
"weekly" = "Mingguan"
"monthly" = "Bulanan"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "Dapatkan"
diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml
index d7ff3451..4a5839df 100644
--- a/web/translation/translate.ja_JP.toml
+++ b/web/translation/translate.ja_JP.toml
@@ -271,6 +271,7 @@
"daily" = "毎日"
"weekly" = "毎週"
"monthly" = "毎月"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "取得"
diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml
index dc04c98f..160649f0 100644
--- a/web/translation/translate.pt_BR.toml
+++ b/web/translation/translate.pt_BR.toml
@@ -271,6 +271,7 @@
"daily" = "Diariamente"
"weekly" = "Semanalmente"
"monthly" = "Mensalmente"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "Obter"
diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml
index 0425db96..ecedd334 100644
--- a/web/translation/translate.ru_RU.toml
+++ b/web/translation/translate.ru_RU.toml
@@ -271,6 +271,7 @@
"daily" = "Ежедневно"
"weekly" = "Еженедельно"
"monthly" = "Ежемесячно"
+"hourly" = "Ежечасно"
[pages.inbounds.toasts]
"obtain" = "Получить"
diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml
index 57b84e07..15033c3c 100644
--- a/web/translation/translate.tr_TR.toml
+++ b/web/translation/translate.tr_TR.toml
@@ -271,6 +271,7 @@
"daily" = "Günlük"
"weekly" = "Haftalık"
"monthly" = "Aylık"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "Elde Et"
diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml
index b08ddbec..ea44c1cd 100644
--- a/web/translation/translate.uk_UA.toml
+++ b/web/translation/translate.uk_UA.toml
@@ -271,6 +271,7 @@
"daily" = "Щодня"
"weekly" = "Щотижня"
"monthly" = "Щомісяця"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "Отримати"
diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml
index a4d667d0..3d72c62d 100644
--- a/web/translation/translate.vi_VN.toml
+++ b/web/translation/translate.vi_VN.toml
@@ -271,6 +271,7 @@
"daily" = "Hàng ngày"
"weekly" = "Hàng tuần"
"monthly" = "Hàng tháng"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "Nhận"
diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml
index 103698f6..6c2c30b1 100644
--- a/web/translation/translate.zh_CN.toml
+++ b/web/translation/translate.zh_CN.toml
@@ -271,6 +271,7 @@
"daily" = "每日"
"weekly" = "每周"
"monthly" = "每月"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "获取"
diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml
index ab083f2c..950268d0 100644
--- a/web/translation/translate.zh_TW.toml
+++ b/web/translation/translate.zh_TW.toml
@@ -271,6 +271,7 @@
"daily" = "每日"
"weekly" = "每週"
"monthly" = "每月"
+"hourly" = "hourly"
[pages.inbounds.toasts]
"obtain" = "獲取"
diff --git a/web/web.go b/web/web.go
index 60934048..e1b6b647 100644
--- a/web/web.go
+++ b/web/web.go
@@ -325,6 +325,8 @@ func (s *Server) startTask() {
s.cron.AddJob("@daily", job.NewClearLogsJob())
// Inbound traffic reset jobs
+ // Run every hour
+ s.cron.AddJob("@hourly", job.NewPeriodicTrafficResetJob("hourly"))
// Run once a day, midnight
s.cron.AddJob("@daily", job.NewPeriodicTrafficResetJob("daily"))
// Run once a week, midnight between Sat/Sun