-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
91df69f
commit 71afbb0
Showing
2 changed files
with
2 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="NPort - A free and open source ngrok alternative that tunnels HTTP(s) connections for straightforward access to localhost via public URLs"><meta name="keywords" content="nport, ngrok alternative, localhost tunnel, local tunnel, HTTP tunnel, HTTPS tunnel, URL forwarding, web development, free ngrok alternative, open source ngrok alternative"><meta name="author" content="Nick - Ngoc Pham"><meta property="og:type" content="website"><meta property="og:url" content="https://nport.link/"><meta property="og:title" content="NPort - Local Tunnel Made Easy | Free & Open Source Ngrok Alternative"><meta property="og:description" content="A free and open source ngrok alternative that tunnels HTTP(s) connections for straightforward access to localhost via public URLs"><meta property="og:image" content="https://nport.link/assets/webp/nport-site.webp"><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://nport.link/"><meta property="twitter:title" content="NPort - Local Tunnel Made Easy | Free & Open Source Ngrok Alternative"><meta property="twitter:description" content="A free and open source ngrok alternative that tunnels HTTP(s) connections for straightforward access to localhost via public URLs"><meta property="twitter:image" content="https://nport.link/assets/webp/nport-site.webp"><link rel="apple-touch-icon" sizes="180x180" href="https://nport.link/assets/favicon_io/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://nport.link/assets/favicon_io/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://nport.link/assets/favicon_io/favicon-16x16.png"><link rel="manifest" href="https://nport.link/assets/favicon_io/site.webmanifest"><title>NPort - Local Tunnel Made Easy | Free & Open Source Ngrok Alternative</title><style>*{margin:0;padding:0;box-sizing:border-box}a{text-decoration:none;color:inherit}body{font-family:sans-serif;min-height:100vh;margin:0;padding:0;position:relative;background:#1e1e1e;color:#fff;display:flex;align-items:center;justify-content:center;overflow-y:auto}.content{text-align:center;max-width:1200px;width:100%;margin:100px auto 80px;padding:0 1rem;position:relative}.content h1{font-size:4rem;font-weight:700;text-transform:uppercase;letter-spacing:5px;margin-bottom:10px;background:linear-gradient(45deg,#fff,#d4d4d4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.content h2{margin-top:4rem;margin-bottom:4rem;font-size:2rem;font-weight:400;letter-spacing:3px}.description{font-size:1.2rem;color:#d4d4d4;max-width:800px;margin:1.5rem auto;line-height:1.6;opacity:.8}.content h2 code,.feature code{background-color:#1e1e1e;padding:.4em .6em;border-radius:6px;font-family:Consolas,Monaco,"Andale Mono",monospace;cursor:pointer;border:1px solid #454545;font-size:.9em;color:#d4d4d4;box-shadow:0 2px 4px rgba(0,0,0,.2);display:inline-block;position:relative;text-align:left}.content h2 code::before,.feature code::before{content:"$";color:#858585;margin-right:.8em;user-select:none}.content h2 code:hover,.feature code:hover{background-color:#2d2d2d;border-color:#666}.social-links{display:flex;gap:1rem;justify-content:center}.button{display:flex;align-items:center;gap:.5rem;padding:.6em 1.2em;border-radius:6px;text-decoration:none;font-size:1rem;font-weight:500;transition:all .2s ease;color:#d4d4d4}.button img{width:20px;height:20px}.button:hover{background-color:#2d2d2d}.coffee-button{display:inline-flex;align-items:center;background-color:#fd0;color:#000;padding:.6em 1.2em;border-radius:6px;text-decoration:none;font-family:cursive;font-size:1.2rem;transition:all .3s ease}.coffee-button:hover{background-color:#ffcd00;transform:translateY(-1px)}.coffee-button img{height:24px;margin-right:8px}.mobile-text{display:none}@media screen and (max-width:768px){.desktop-text{display:none}.mobile-text{display:inline}.coffee-button{padding:8px 16px}}.logo{position:fixed;top:0;left:0;z-index:10;display:flex;align-items:center;gap:1rem;text-decoration:none;color:inherit;background:#1e1e1e;padding:20px 40px;width:100%}.logo img{object-fit:contain;height:60px;width:60px}.logo span{font-size:3rem;color:#fff}.features{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;margin:2rem auto;padding:0 1rem;text-align:left}.feature{background:rgba(30,30,30,.6);padding:1.5rem;border-radius:8px;border:1px solid #454545}.feature h3{font-size:1.2rem;margin-bottom:1rem;color:#fff}.feature p{font-size:1rem;color:#d4d4d4;line-height:1.6;margin-bottom:1rem}.feature ul{list-style-position:inside;color:#d4d4d4}.feature li{line-height:1.4}.feature code{display:inline-block;background:#1e1e1e;padding:.4em .6em;border-radius:4px;font-family:Consolas,Monaco,"Andale Mono",monospace;font-size:.9em;color:#d4d4d4;margin:.5rem 0}.footer{position:fixed;bottom:0;left:0;width:100%;padding:20px;text-align:center;color:#d4d4d4;font-size:.9rem;background:#1e1e1e;z-index:10}.footer a{color:#fff;text-decoration:underline;text-underline-offset:2px;transition:opacity .2s ease}.footer a:hover{opacity:.8;text-decoration-thickness:2px}@media (max-width:768px){body{display:block}.content{margin:80px auto 60px}.content h1{font-size:2.5rem;letter-spacing:3px}.content h2{font-size:1.5rem}.description{font-size:1rem;padding:0 20px;margin:1rem auto}.social-links{flex-direction:row;justify-content:center;gap:.5rem;padding:0 1rem}.button{width:auto;padding:.4em .8em;font-size:.9rem}.logo{padding:10px 20px;gap:.5rem}.logo img{height:30px;width:30px}.logo span{font-size:2rem}.features{grid-template-columns:1fr;gap:1rem}.feature{padding:1rem}.footer{padding:10px;font-size:.8rem}}.copy-feedback{position:fixed;background-color:#2d2d2d;color:#d4d4d4;padding:.4em .8em;border-radius:6px;font-size:.9em;pointer-events:none;opacity:0;z-index:1000;transition:all .2s ease;border:1px solid #454545;box-shadow:0 2px 4px rgba(0,0,0,.2);white-space:nowrap}.copy-feedback.show{opacity:1}</style></head><body><a href="https://nport.link" class="logo"><img src="./assets/webp/nport-logo-dark-min.webp" alt="NPort logo" height="30" width="30"> <span>NPort</span></a><div class="content"><a href="https://nport.link"><h1>nport.link</h1></a><p class="description">NPort is a powerful and lightweight tunneling tool that serves as a complete replacement for <a href="https://ngrok.com/">ngrok</a>, allowing you to create secure HTTP/HTTPS connections from your localhost to public URLs - with all the same features but completely free and open source.</p><div class="social-links"><a href="https://github.com/tuanngocptn/nport" target="_blank" class="button github"><img src="./assets/webp/github.webp" alt="Github NPort"> <span>GitHub</span> </a><a href="https://www.npmjs.com/package/nport" target="_blank" class="button npm"><img src="./assets/webp/npm.webp" alt="NPM NPort"> <span>npm</span> </a><a href="https://buymeacoffee.com/tuanngocptn" target="_blank" class="coffee-button"><img src="./assets/webp/buy-me-a-coffee-min.webp" alt="Coffee cup icon" height="24" width="18"> <span class="desktop-text">Buy me a coffee</span> <span class="mobile-text">Coffee</span></a></div><h2><code>npm i -g nport</code></h2><p class="description">Perfect for developers who need to:</p><div class="features"><div class="feature"><h3>🚀 Share Local Development</h3><p>Instantly share your local development server with teammates or clients without complex server setup.</p></div><div class="feature"><h3>🔒 Test Webhooks</h3><p>Securely test webhook integrations from services like GitHub, Stripe, or PayPal directly on your local machine.</p></div><div class="feature"><h3>📱 Mobile Testing</h3><p>Test your web applications on mobile devices using a public URL while developing on localhost.</p></div><div class="feature"><h3>🛠️ API Development</h3><p>Develop and debug API integrations by exposing your local endpoints to external services.</p></div><div class="feature"><h3>⚡ Key Features</h3><ul><li>Custom subdomain support (e.g., myapp.nport.link)</li><li>Automatic HTTPS encryption</li><li>WebSocket support</li><li>No configuration needed</li><li>Cross-platform compatibility</li></ul></div><div class="feature"><h3>💻 Quick Start</h3><p>After installation, simply run:</p><p><code>nport -s myapp -p 3000</code></p><p>This will create a tunnel from localhost:3000 to https://myapp.nport.link</p></div></div></div><footer class="footer"><p>Created by <a href="https://github.com/tuanngocptn" target="_blank">Nick - Ngoc Pham</a> 🇻🇳 | Powered by <a href="https://github.com/tuanngocptn/nport" target="_blank">nport</a> | <a href="https://www.npmjs.com/package/nport" target="_blank">npm</a></p></footer><script>document.querySelectorAll(".content h2 code, .feature code").forEach(e=>{e.addEventListener("click",async t=>{try{var o=t.target.textContent.replace("$ ","");await navigator.clipboard.writeText(o);let e=document.createElement("div");e.className="copy-feedback",e.textContent="Copied! 📋",document.body.appendChild(e),e.style.left=t.clientX+10+"px",e.style.top=t.clientY-20+"px",requestAnimationFrame(()=>e.classList.add("show")),t.target.style.backgroundColor="#2d2d2d",setTimeout(()=>{t.target.style.backgroundColor="#1e1e1e",e.classList.remove("show"),setTimeout(()=>e.remove(),200)},1e3)}catch(t){console.error("Failed to copy text: ",t)}})})</script></body></html> | ||
<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="NPort - A free and open source ngrok alternative that tunnels HTTP(s) connections for straightforward access to localhost via public URLs"><meta name="keywords" content="nport, ngrok alternative, localhost tunnel, local tunnel, HTTP tunnel, HTTPS tunnel, URL forwarding, web development, free ngrok alternative, open source ngrok alternative"><meta name="author" content="Nick - Ngoc Pham"><meta property="og:type" content="website"><meta property="og:url" content="https://nport.link/"><meta property="og:title" content="NPort - Local Tunnel Made Easy | Free & Open Source Ngrok Alternative"><meta property="og:description" content="A free and open source ngrok alternative that tunnels HTTP(s) connections for straightforward access to localhost via public URLs"><meta property="og:image" content="https://nport.link/assets/webp/nport-site.webp"><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://nport.link/"><meta property="twitter:title" content="NPort - Local Tunnel Made Easy | Free & Open Source Ngrok Alternative"><meta property="twitter:description" content="A free and open source ngrok alternative that tunnels HTTP(s) connections for straightforward access to localhost via public URLs"><meta property="twitter:image" content="https://nport.link/assets/webp/nport-site.webp"><link rel="apple-touch-icon" sizes="180x180" href="https://nport.link/assets/favicon_io/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://nport.link/assets/favicon_io/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://nport.link/assets/favicon_io/favicon-16x16.png"><link rel="manifest" href="https://nport.link/assets/favicon_io/site.webmanifest"><title>NPort - Local Tunnel Made Easy | Free & Open Source Ngrok Alternative</title><style>*{margin:0;padding:0;box-sizing:border-box}a{text-decoration:none;color:inherit}body{font-family:sans-serif;min-height:100vh;margin:0;padding:0;position:relative;background:#1e1e1e;color:#fff;display:flex;align-items:center;justify-content:center;overflow-y:auto}.content{text-align:center;max-width:1200px;width:100%;margin:100px auto 80px;padding:0 1rem;position:relative}.content h1{font-size:4rem;font-weight:700;text-transform:uppercase;letter-spacing:5px;margin-bottom:10px;background:linear-gradient(45deg,#fff,#d4d4d4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.content h2{margin-top:4rem;margin-bottom:4rem;font-size:2rem;font-weight:400;letter-spacing:3px}.description{font-size:1.2rem;color:#d4d4d4;max-width:800px;margin:1.5rem auto;line-height:1.6;opacity:.8}.content h2 code,.feature code{background-color:#1e1e1e;padding:.4em .6em;border-radius:6px;font-family:Consolas,Monaco,"Andale Mono",monospace;cursor:pointer;border:1px solid #454545;font-size:.9em;color:#d4d4d4;box-shadow:0 2px 4px rgba(0,0,0,.2);display:inline-block;position:relative;text-align:left}.content h2 code::before,.feature code::before{content:"$";color:#858585;margin-right:.8em;user-select:none}.content h2 code:hover,.feature code:hover{background-color:#2d2d2d;border-color:#666}.social-links{display:flex;gap:1rem;justify-content:center}.button{display:flex;align-items:center;gap:.5rem;padding:.6em 1.2em;border-radius:6px;text-decoration:none;font-size:1rem;font-weight:500;transition:all .2s ease;color:#d4d4d4}.button img{width:20px;height:20px}.button:hover{background-color:#2d2d2d}.coffee-button{display:inline-flex;align-items:center;background-color:#fd0;color:#000;padding:.6em 1.2em;border-radius:6px;text-decoration:none;font-family:cursive;font-size:1.2rem;transition:all .3s ease}.coffee-button:hover{background-color:#ffcd00;transform:translateY(-1px)}.coffee-button img{height:24px;margin-right:8px}.mobile-text{display:none}@media screen and (max-width:768px){.desktop-text{display:none}.mobile-text{display:inline}.coffee-button{padding:8px 16px}}.logo{position:fixed;top:0;left:0;z-index:10;display:flex;align-items:center;gap:1rem;text-decoration:none;color:inherit;background:#1e1e1e;padding:20px 40px;width:100%}.logo img{object-fit:contain;height:60px;width:60px}.logo span{font-size:3rem;color:#fff}.features{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;margin:2rem auto;padding:0 1rem;text-align:left}.feature{background:rgba(30,30,30,.6);padding:1.5rem;border-radius:8px;border:1px solid #454545}.feature h3{font-size:1.2rem;margin-bottom:1rem;color:#fff}.feature p{font-size:1rem;color:#d4d4d4;line-height:1.6;margin-bottom:1rem}.feature ul{list-style-position:inside;color:#d4d4d4}.feature li{line-height:1.4}.feature code{display:inline-block;background:#1e1e1e;padding:.4em .6em;border-radius:4px;font-family:Consolas,Monaco,"Andale Mono",monospace;font-size:.9em;color:#d4d4d4;margin:.5rem 0}.footer{position:fixed;bottom:0;left:0;width:100%;padding:20px;text-align:center;color:#d4d4d4;font-size:.9rem;background:#1e1e1e;z-index:10}.footer a{color:#fff;text-decoration:underline;text-underline-offset:2px;transition:opacity .2s ease}.footer a:hover{opacity:.8;text-decoration-thickness:2px}@media (max-width:768px){body{display:block}.content{margin:80px auto 60px}.content h1{font-size:2.5rem;letter-spacing:3px}.content h2{font-size:1.5rem}.description{font-size:1rem;padding:0 20px;margin:1rem auto}.social-links{flex-direction:row;justify-content:center;gap:.5rem;padding:0 1rem}.button{width:auto;padding:.4em .8em;font-size:.9rem}.logo{padding:10px 20px;gap:.5rem}.logo img{height:30px;width:30px}.logo span{font-size:2rem}.features{grid-template-columns:1fr;gap:1rem}.feature{padding:1rem}.footer{padding:10px;font-size:.8rem}}.copy-feedback{position:fixed;background-color:#2d2d2d;color:#d4d4d4;padding:.4em .8em;border-radius:6px;font-size:.9em;pointer-events:none;opacity:0;z-index:1000;transition:all .2s ease;border:1px solid #454545;box-shadow:0 2px 4px rgba(0,0,0,.2);white-space:nowrap}.copy-feedback.show{opacity:1}</style></head><body><a href="https://nport.link" class="logo"><img src="./assets/webp/nport-logo-dark-min.webp" alt="NPort logo" height="30" width="30"> <span>NPort</span></a><div class="content"><a href="https://nport.link"><h1>nport.link</h1></a><p class="description">NPort is a powerful and lightweight <a href="https://ngrok.com" target="_blank">ngrok alternative</a> that creates secure HTTP/HTTPS connections from localhost to public URLs.</p><div class="social-links"><a href="https://github.com/tuanngocptn/nport" target="_blank" class="button github"><img src="./assets/webp/github.webp" alt="Github NPort"> <span>GitHub</span> </a><a href="https://www.npmjs.com/package/nport" target="_blank" class="button npm"><img src="./assets/webp/npm.webp" alt="NPM NPort"> <span>npm</span> </a><a href="https://buymeacoffee.com/tuanngocptn" target="_blank" class="coffee-button"><img src="./assets/webp/buy-me-a-coffee-min.webp" alt="Coffee cup icon" height="24" width="18"> <span class="desktop-text">Buy me a coffee</span> <span class="mobile-text">Coffee</span></a></div><h2><code>npm i -g nport</code></h2><p class="description">Perfect for developers who need to:</p><div class="features"><div class="feature"><h3>🚀 Share Local Development</h3><p>Instantly share your local development server with teammates or clients without complex server setup.</p></div><div class="feature"><h3>🔒 Test Webhooks</h3><p>Securely test webhook integrations from services like GitHub, Stripe, or PayPal directly on your local machine.</p></div><div class="feature"><h3>📱 Mobile Testing</h3><p>Test your web applications on mobile devices using a public URL while developing on localhost.</p></div><div class="feature"><h3>🛠️ API Development</h3><p>Develop and debug API integrations by exposing your local endpoints to external services.</p></div><div class="feature"><h3>⚡ Key Features</h3><ul><li>Custom subdomain support (e.g., myapp.nport.link)</li><li>Automatic HTTPS encryption</li><li>WebSocket support</li><li>No configuration needed</li><li>Cross-platform compatibility</li></ul></div><div class="feature"><h3>💻 Quick Start</h3><p>After installation, simply run:</p><p><code>nport -s myapp -p 3000</code></p><p>This will create a tunnel from localhost:3000 to https://myapp.nport.link</p></div></div></div><footer class="footer"><p>Created by <a href="https://github.com/tuanngocptn" target="_blank">Nick - Ngoc Pham</a> 🇻🇳 | Powered by <a href="https://github.com/tuanngocptn/nport" target="_blank">nport</a> | <a href="https://www.npmjs.com/package/nport" target="_blank">npm</a></p></footer><script>document.querySelectorAll(".content h2 code, .feature code").forEach(e=>{e.addEventListener("click",async t=>{try{var o=t.target.textContent.replace("$ ","");await navigator.clipboard.writeText(o);let e=document.createElement("div");e.className="copy-feedback",e.textContent="Copied! 📋",document.body.appendChild(e),e.style.left=t.clientX+10+"px",e.style.top=t.clientY-20+"px",requestAnimationFrame(()=>e.classList.add("show")),t.target.style.backgroundColor="#2d2d2d",setTimeout(()=>{t.target.style.backgroundColor="#1e1e1e",e.classList.remove("show"),setTimeout(()=>e.remove(),200)},1e3)}catch(t){console.error("Failed to copy text: ",t)}})})</script></body></html> |