Files
3x-ui/docs/content/docs/en/reference/ports-firewall.mdx
T
MHSanaei 9b91f0f42e docs: vendor the documentation site into the monorepo
Fold the standalone 3x-ui-docs project (Next.js 16 + Fumadocs, deployed to
docs.sanaei.dev) into docs/ so the panel and its documentation share a single
source of truth, the way sing-box keeps its docs in-tree. The old repo becomes
redundant and can be retired.

- Import the full site under docs/ (app, components, content, lib, public,
  scripts, config). The self-contained pnpm project sits alongside the existing
  engineering notes with no filename collisions.
- Re-point "Edit on GitHub" links from MHSanaei/3x-ui-docs to this repo's
  docs/content/docs path (docs/lib/shared.ts, docs/app/.../page.tsx).
- Add docs-ci.yml and docs-deploy.yml under .github/workflows/, scoped to
  docs/** and run with working-directory: docs, since GitHub only runs
  workflows from the repo-root .github/. deploy-static.yml's GitHub Pages
  publish (CNAME docs.sanaei.dev) carries over unchanged.

Follow-up (outside this commit): attach the docs.sanaei.dev custom domain to
this repository's Pages (or set the Vercel project's root directory to docs),
confirm the site is live from the monorepo, then delete MHSanaei/3x-ui-docs.
2026-07-07 23:07:14 +02:00

37 lines
1.2 KiB
Plaintext

---
title: Ports & Firewall
description: The ports 3x-ui uses by default and ready-made ufw / nftables rules to open them.
icon: Network
---
Open only the ports you actually use. Below are the common ones and a generator
for `ufw` and `nftables` rules.
## Common ports
| Port (default) | Purpose |
| -------------- | ----------------------------------------- |
| `22` | SSH (keep this open!). |
| `2053` | Panel (configurable). |
| `2096` | Subscription server (if separate). |
| `443` | A common inbound port (TLS / REALITY). |
| `80` / `443` | Reverse proxy (if you run one). |
Your actual inbound ports depend on the inbounds you create.
## Generate firewall rules
<FirewallRulesGenerator />
<Callout type="warn">
Always keep SSH allowed before enabling a default-deny policy, and test from a
second session so you don't lock yourself out.
</Callout>
## Related
<Cards>
<Card title="Security" href="/docs/operations/security" description="Fail2ban, IP limits, and hardening." />
<Card title="Environment variables" href="/docs/reference/env-vars" description="XUI_PORT and friends." />
</Cards>