diff --git a/messages/en-US.json b/messages/en-US.json
index f7f4c05f6..38df95476 100644
--- a/messages/en-US.json
+++ b/messages/en-US.json
@@ -235,7 +235,7 @@
"privateResourcesBannerTitle": "Zero-Trust Private Access",
"privateResourcesBannerDescription": "Private resources use zero-trust security, ensuring users and machines can only access resources you explicitly grant. Connect user devices or machine clients to access these resources over a secure virtual private network.",
"licenseBillingBannerTitle": "Manage License Billing",
- "licenseBillingBannerDescription": "To manage billing for your license keys, including payment methods and invoices, visit the billing page.",
+ "licenseBillingBannerDescription": "To manage billing for your license keys, including payment methods and invoices, visit the billing page. You can generate additional licenses below to increase server capacity or deploy more instances.",
"licenseBillingBannerButton": "Go to Billing",
"resourcesSearch": "Search resources...",
"resourceAdd": "Add Resource",
@@ -558,6 +558,10 @@
"licenseBannerDescription": "Unlock enterprise features for your self-hosted Pangolin instance. Purchase a license key to activate premium capabilities, then add it below.",
"licenseBannerGetLicense": "Get a License",
"licenseBannerViewDocs": "View Documentation",
+ "licenseUpgradeBannerTitle": "Need More Capacity?",
+ "licenseUpgradeBannerDescription": "If you need to increase your site or user capacity, you can buy more licenses from the app.pangolin.net portal and add them below to upgrade your instance.",
+ "licenseUpgradeBannerButton": "Buy More Licenses",
+ "licenseMultipleKeysDescription": "You have multiple licenses activated on this server. The highest tier is used.",
"communityEdition": "Community Edition",
"licenseAboutDescription": "This is for business and enterprise users who are using Pangolin in a commercial environment. If you are using Pangolin for personal use, you can ignore this section.",
"licenseKeyActivated": "License key activated",
diff --git a/src/app/admin/license/page.tsx b/src/app/admin/license/page.tsx
index 8ed2d697d..cdc564297 100644
--- a/src/app/admin/license/page.tsx
+++ b/src/app/admin/license/page.tsx
@@ -49,6 +49,7 @@ import {
ExternalLink,
Heart,
InfoIcon,
+ ShoppingCart,
TicketCheck
} from "lucide-react";
import Link from "next/link";
@@ -64,6 +65,8 @@ import { useTranslations } from "next-intl";
const ENTERPRISE_DOCS_URL =
"https://docs.pangolin.net/self-host/enterprise-edition";
const ENTERPRISE_PRICING_URL = "https://pangolin.net/pricing#Self-Hosted";
+const LICENSE_PORTAL_URL =
+ "https://app.pangolin.net/auth/login?internal_redirect=/settings/license?generate";
function getTierLabel(
tier: LicenseKeyTier | undefined,
@@ -392,6 +395,33 @@ export default function LicensePage() {
)}
+ {licenseStatus?.isLicenseValid && rows.length > 0 && (
+
+ }
+ description={t("licenseUpgradeBannerDescription")}
+ >
+
+
+
+
+ )}
+
{/* */}
{/* */}
{/* */}
@@ -538,6 +568,11 @@ export default function LicensePage() {