diff --git a/database/model/model.go b/database/model/model.go
index baa9c3e9..dfde97d0 100644
--- a/database/model/model.go
+++ b/database/model/model.go
@@ -55,7 +55,7 @@ type Inbound struct {
// Xray configuration fields
Listen string `json:"listen" form:"listen"`
- Port int `json:"port" form:"port" validate:"gte=1,lte=65535"`
+ Port int `json:"port" form:"port" validate:"gte=0,lte=65535"`
Protocol Protocol `json:"protocol" form:"protocol" validate:"required,oneof=vmess vless trojan shadowsocks wireguard hysteria http mixed tunnel tun"`
Settings string `json:"settings" form:"settings"`
StreamSettings string `json:"streamSettings" form:"streamSettings"`
diff --git a/frontend/src/generated/zod.ts b/frontend/src/generated/zod.ts
index 29373964..abdc4414 100644
--- a/frontend/src/generated/zod.ts
+++ b/frontend/src/generated/zod.ts
@@ -291,7 +291,7 @@ export const InboundSchema = z.object({
lastTrafficResetTime: z.number().int(),
listen: z.string(),
nodeId: z.number().int().nullable().optional(),
- port: z.number().int().min(1).max(65535),
+ port: z.number().int().min(0).max(65535),
protocol: z.enum(['vmess', 'vless', 'trojan', 'shadowsocks', 'wireguard', 'hysteria', 'http', 'mixed', 'tunnel', 'tun']),
remark: z.string(),
settings: z.unknown(),
diff --git a/frontend/src/pages/inbounds/form/InboundFormModal.tsx b/frontend/src/pages/inbounds/form/InboundFormModal.tsx
index 8279f482..03da6749 100644
--- a/frontend/src/pages/inbounds/form/InboundFormModal.tsx
+++ b/frontend/src/pages/inbounds/form/InboundFormModal.tsx
@@ -161,6 +161,8 @@ export default function InboundFormModal({
const streamEnabled = canEnableStream({ protocol });
const wPort = Form.useWatch('port', form);
+ const wListen = (Form.useWatch('listen', form) ?? '') as string;
+ const isUdsListen = wListen.startsWith('/');
const wNodeId = Form.useWatch('nodeId', form) ?? null;
const wTag = Form.useWatch('tag', form) ?? '';
const wSsNetwork = Form.useWatch(['settings', 'network'], form);
@@ -488,7 +490,7 @@ export default function InboundFormModal({
label={t('pages.inbounds.port')}
rules={[antdRule(InboundFormBaseSchema.shape.port, t)]}
>
-