cloudflare
tcp/443 tcp/80 tcp/8443
Open service 2a06:98c1:3121::3:80 · app.project-banana.com
2026-01-25 03:14
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 03:14:49 GMT
Content-Length: 0
Connection: close
Location: https://app.project-banana.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=iE4G8XsZrjbfNbVWbFcGKEqUUWy1RLnXtEJSGo86YmEZt%2FJ2JLboXB6pnUyxzzaSyouaKzcX3HdHlhulajFF0toSx5yZ4BPVLO7AeZmVR6YnPCK7p198DCyYn0C03UD9pYU%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c349a42d9295672-LHR
alt-svc: h3=":443"; ma=86400
Open service 2a06:98c1:3120::3:8443 · app.project-banana.com
2026-01-25 03:14
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:14:49 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=0p0UyIXY4FZqv7XXT%2FxlBi%2FE73cT%2B8EaPOxcXs0EKZdwdF3Cwy1kySKGMubgQ50hG2ynZPtILZV0UAoND8SKmPIBFXqJw2bfBw2hL5ELo2lJL3rqK3EMqaVdoAt8y%2FftOZU%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c349a431f76948d-LHR
alt-svc: h3=":8443"; ma=86400
Page title: Project Banana App
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana App</title>
<link rel="icon" href="data:," />
<script type="module" crossorigin src="/assets/index-CCGUsMi4.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-N4o3p08P.css">
</head>
<body>
<div id="homeView">
<button id="createButton">create</button>
<a href="https://www.project-banana.com">site</a>
<p>or</p>
<input id="roomIdInput" type="text"/>
<button id="joinButton">join</button>
</div>
<div id="roomView">
<div class="room-view-inner-container">
<header>
<button id="leaveButton">leave</button>
</header>
<div class="video-container">
<video id="remoteVideo" autoplay></video>
<video id="localVideo" autoplay></video>
</div>
<footer>
<p>room ID: </p>
<p id="roomIdParagraph"></p>
</footer>
</div>
</div>
</body>
</html>
Open service 2a06:98c1:3121::3:443 · app.project-banana.com
2026-01-25 03:14
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:14:49 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=U9oEQxNkcGbwT1HKfdVVQIAxF8Q2dlyOcWDxo5VAThmzKmfYKaAoBIDXulEXxkf6vQFFudXuGCciNl2ZEgV637slLzB3cNBx7ku%2BFUm9AKWjljImcyAYgwJKahgBErbaK1w%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c349a42dfb0e5da-FRA
alt-svc: h3=":443"; ma=86400
Page title: Project Banana App
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana App</title>
<link rel="icon" href="data:," />
<script type="module" crossorigin src="/assets/index-CCGUsMi4.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-N4o3p08P.css">
</head>
<body>
<div id="homeView">
<button id="createButton">create</button>
<a href="https://www.project-banana.com">site</a>
<p>or</p>
<input id="roomIdInput" type="text"/>
<button id="joinButton">join</button>
</div>
<div id="roomView">
<div class="room-view-inner-container">
<header>
<button id="leaveButton">leave</button>
</header>
<div class="video-container">
<video id="remoteVideo" autoplay></video>
<video id="localVideo" autoplay></video>
</div>
<footer>
<p>room ID: </p>
<p id="roomIdParagraph"></p>
</footer>
</div>
</div>
</body>
</html>
Open service 2a06:98c1:3120::3:443 · app.project-banana.com
2026-01-25 03:14
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:14:49 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=N3K9YLrpNjxdcGcSlzVhmXU6rjYCoGEZ7mwD2Ld6K%2Bct80t9cINV3q%2BobGJYMfz%2FQtyttFSoxKSAQfpZ%2BK3bcht2BO1LNylNK%2Fy8oqcn4KMBYv2UVw%2BH9Ej%2B3AnDarQzp8g%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c349a434aae0eac-AMS
alt-svc: h3=":443"; ma=86400
Page title: Project Banana App
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana App</title>
<link rel="icon" href="data:," />
<script type="module" crossorigin src="/assets/index-CCGUsMi4.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-N4o3p08P.css">
</head>
<body>
<div id="homeView">
<button id="createButton">create</button>
<a href="https://www.project-banana.com">site</a>
<p>or</p>
<input id="roomIdInput" type="text"/>
<button id="joinButton">join</button>
</div>
<div id="roomView">
<div class="room-view-inner-container">
<header>
<button id="leaveButton">leave</button>
</header>
<div class="video-container">
<video id="remoteVideo" autoplay></video>
<video id="localVideo" autoplay></video>
</div>
<footer>
<p>room ID: </p>
<p id="roomIdParagraph"></p>
</footer>
</div>
</div>
</body>
</html>
Open service 2a06:98c1:3120::3:80 · app.project-banana.com
2026-01-25 03:14
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 03:14:49 GMT
Content-Length: 0
Connection: close
Location: https://app.project-banana.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=MIbqa1IJ0S6ZL756kmrAt1aq0m7xfMYqy8oRDAv8WYvQjmDucNZrifigAsO5YjmAfkUbEnD3MP5zAYmGdQpyfzf72b73GOEpZe4LBYVydYreAZCtTyyT6ML0xZRsKfVS%2FOk%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c349a42c83d4186-BOM
alt-svc: h3=":443"; ma=86400
Open service 188.114.97.3:8443 · app.project-banana.com
2026-01-25 03:14
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:14:49 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=hC%2FebVnkoJaNQd28jH6dJAN%2BmwXJC2rXU1OI3BvZIlbdPHMdbIYvZG0NaIL%2BK0rvfDv9Cr82qE6uT6o3ckiWeQYCowbD0N6lOzmksfk45QO5qIpcPyo%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c349a432a6eac25-YYZ
alt-svc: h3=":8443"; ma=86400
Page title: Project Banana App
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana App</title>
<link rel="icon" href="data:," />
<script type="module" crossorigin src="/assets/index-CCGUsMi4.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-N4o3p08P.css">
</head>
<body>
<div id="homeView">
<button id="createButton">create</button>
<a href="https://www.project-banana.com">site</a>
<p>or</p>
<input id="roomIdInput" type="text"/>
<button id="joinButton">join</button>
</div>
<div id="roomView">
<div class="room-view-inner-container">
<header>
<button id="leaveButton">leave</button>
</header>
<div class="video-container">
<video id="remoteVideo" autoplay></video>
<video id="localVideo" autoplay></video>
</div>
<footer>
<p>room ID: </p>
<p id="roomIdParagraph"></p>
</footer>
</div>
</div>
</body>
</html>
Open service 2a06:98c1:3121::3:8443 · app.project-banana.com
2026-01-25 03:14
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:14:49 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=FcF8Ro%2Bl%2BzHgID6B%2BDOGGqI9OWw%2Bxwo4zlEbRzYBRAwT7xo3NArKeM1lQyrUiibTF8cazECrIU1xykKp836v72peWvfjgqTAoSTW2ZsGqd3vm5yI7BYRnNEd%2FW4VRCemMMA%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c349a42c9338b88-EWR
alt-svc: h3=":8443"; ma=86400
Page title: Project Banana App
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana App</title>
<link rel="icon" href="data:," />
<script type="module" crossorigin src="/assets/index-CCGUsMi4.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-N4o3p08P.css">
</head>
<body>
<div id="homeView">
<button id="createButton">create</button>
<a href="https://www.project-banana.com">site</a>
<p>or</p>
<input id="roomIdInput" type="text"/>
<button id="joinButton">join</button>
</div>
<div id="roomView">
<div class="room-view-inner-container">
<header>
<button id="leaveButton">leave</button>
</header>
<div class="video-container">
<video id="remoteVideo" autoplay></video>
<video id="localVideo" autoplay></video>
</div>
<footer>
<p>room ID: </p>
<p id="roomIdParagraph"></p>
</footer>
</div>
</div>
</body>
</html>
Open service 188.114.97.3:80 · app.project-banana.com
2026-01-25 03:14
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 03:14:49 GMT
Content-Length: 0
Connection: close
Location: https://app.project-banana.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=eUePCDUVIQODKkIrDURlFTUAJDB7RZKRgnY%2BFLVFAR8LhtAtu2L9Lwje0NNGo1xQY%2FNfiSq49m0iHlGBRDkjlOHpPLWc86F9zKycp0g2fEOHXlWcjSY%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c349a421dbdde04-YYZ
alt-svc: h3=":443"; ma=86400
Open service 188.114.97.3:443 · app.project-banana.com
2026-01-25 03:14
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:14:49 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=R6OAKAy5h17UCv3pcfstrYcunLQZ3a24zkJ2YIUqebYYPd%2F7nz68C3dBaO9%2F6kPMQXCLQWogqkPhjAVTgkWWboZZ3NF06rmeZErU%2BoFHhS3SSL7nvTg%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c349a42ed4f61e8-YYZ
alt-svc: h3=":443"; ma=86400
Page title: Project Banana App
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana App</title>
<link rel="icon" href="data:," />
<script type="module" crossorigin src="/assets/index-CCGUsMi4.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-N4o3p08P.css">
</head>
<body>
<div id="homeView">
<button id="createButton">create</button>
<a href="https://www.project-banana.com">site</a>
<p>or</p>
<input id="roomIdInput" type="text"/>
<button id="joinButton">join</button>
</div>
<div id="roomView">
<div class="room-view-inner-container">
<header>
<button id="leaveButton">leave</button>
</header>
<div class="video-container">
<video id="remoteVideo" autoplay></video>
<video id="localVideo" autoplay></video>
</div>
<footer>
<p>room ID: </p>
<p id="roomIdParagraph"></p>
</footer>
</div>
</div>
</body>
</html>
Open service 2a06:98c1:3121::3:80 · project-banana.com
2026-01-25 03:06
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 03:06:46 GMT
Content-Length: 0
Connection: close
Location: https://project-banana.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=mVF6aIV0O4u6cVtd2TzNgiJ6481P%2BQQGrNw6DWUjrwt70uU9b7g64L5rxXvsIfToCK67ecD7Q0bnG074HuX0jUkkTBU3J1TG1yt%2BFLn%2FkINIvgo4iZ2FqNqSPRlh6A%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c348e7b5cae2847-SJC
alt-svc: h3=":443"; ma=86400
Open service 188.114.97.3:443 · project-banana.com
2026-01-25 03:06
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:06:47 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=1GDMREN6vavWedhiZQMj1F2QKs8yZNtqVA5VJ7SyeDXlj50EWbuyEDOBfUWHhefpH0wFdWiHYuKDXifv0yltlJ3rI2pIvHY65Sj3wP%2Bm2Ac1RQ%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c348e7c3b4ec4af-SIN
alt-svc: h3=":443"; ma=86400
Page title: Project Banana
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana</title>
<link rel="icon" href="data:," />
<style>
a:hover {
background-color: yellow;
}
</style>
</head>
<body>
<h3>About</h3>
<p>
<i>Project Banana</i> is a no-frills live video chat app that boasts an
emphasis on simplicity and privacy: no accounts, no downloads—just an easy
way to connect with your favorite friend(s). Create a room, share it with
someone, and you'll be well on your way to chatting with them using
internet magic!
</p>
<h3>Stack</h3>
<p>
Under the hood, Project banana uses WebRTC and custom signaling logic to
efficiently form a peer-to-peer connection between clients. The backend
consists of a Go server listening for ICE candidates and session
descriptions via gRPC—forwarding them to peers over a WebSocket
connection. The entire setup is deployed on Docker containers and runs on
a Raspberry Pi located in my bedroom, and I'm using
<a href="https://www.noip.com">No-IP</a> to manage my dynamic IP address.
The app's frontend is served using GitHub Pages. Check out the source code
<a href="https://codeberg.org/project-banana/app" target="_blank"
>here</a
>.
</p>
<p>
<a href="https://app.project-banana.com">Try It Now</a>
</p>
</body>
</html>
Open service 2a06:98c1:3121::3:8443 · project-banana.com
2026-01-25 03:06
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:06:47 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=ENCqX7%2BRthRsEJV0lgeZu1pXWRxBiK8dg4s9%2FCYc4s1BTFKKqmaCy3nJXl70%2F56LhN3SWGlG7hBHxCufO4XUs5eBW52aqcA7ZZIj2wkuEnjx2HoPlRXf5TPLFTwDWQ%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c348e7c3d87821c-SIN
alt-svc: h3=":8443"; ma=86400
Page title: Project Banana
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana</title>
<link rel="icon" href="data:," />
<style>
a:hover {
background-color: yellow;
}
</style>
</head>
<body>
<h3>About</h3>
<p>
<i>Project Banana</i> is a no-frills live video chat app that boasts an
emphasis on simplicity and privacy: no accounts, no downloads—just an easy
way to connect with your favorite friend(s). Create a room, share it with
someone, and you'll be well on your way to chatting with them using
internet magic!
</p>
<h3>Stack</h3>
<p>
Under the hood, Project banana uses WebRTC and custom signaling logic to
efficiently form a peer-to-peer connection between clients. The backend
consists of a Go server listening for ICE candidates and session
descriptions via gRPC—forwarding them to peers over a WebSocket
connection. The entire setup is deployed on Docker containers and runs on
a Raspberry Pi located in my bedroom, and I'm using
<a href="https://www.noip.com">No-IP</a> to manage my dynamic IP address.
The app's frontend is served using GitHub Pages. Check out the source code
<a href="https://codeberg.org/project-banana/app" target="_blank"
>here</a
>.
</p>
<p>
<a href="https://app.project-banana.com">Try It Now</a>
</p>
</body>
</html>
Open service 2a06:98c1:3120::3:8443 · project-banana.com
2026-01-25 03:06
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:06:46 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Es0TG1YtUmCfnChRLXSuRuYcSXaKRfwVEG11IKvzrN7Eq02qA1m1hhiyvsaZ3jh3fY7qsuAuaPv3ePpm2V9uzXC%2BZYu44rp%2BQzlJ0K%2B45pL7PRYm%2FASBXUOpDimeuw%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c348e7b586a9f2d-FRA
alt-svc: h3=":8443"; ma=86400
Page title: Project Banana
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana</title>
<link rel="icon" href="data:," />
<style>
a:hover {
background-color: yellow;
}
</style>
</head>
<body>
<h3>About</h3>
<p>
<i>Project Banana</i> is a no-frills live video chat app that boasts an
emphasis on simplicity and privacy: no accounts, no downloads—just an easy
way to connect with your favorite friend(s). Create a room, share it with
someone, and you'll be well on your way to chatting with them using
internet magic!
</p>
<h3>Stack</h3>
<p>
Under the hood, Project banana uses WebRTC and custom signaling logic to
efficiently form a peer-to-peer connection between clients. The backend
consists of a Go server listening for ICE candidates and session
descriptions via gRPC—forwarding them to peers over a WebSocket
connection. The entire setup is deployed on Docker containers and runs on
a Raspberry Pi located in my bedroom, and I'm using
<a href="https://www.noip.com">No-IP</a> to manage my dynamic IP address.
The app's frontend is served using GitHub Pages. Check out the source code
<a href="https://codeberg.org/project-banana/app" target="_blank"
>here</a
>.
</p>
<p>
<a href="https://app.project-banana.com">Try It Now</a>
</p>
</body>
</html>
Open service 2a06:98c1:3120::3:443 · project-banana.com
2026-01-25 03:06
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:06:46 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=bv4KhcI7i5hmtzdg5lsCXasw7L1SvV1f5uTud%2Fah0CGlxw1%2FYax5mqwIbprd4T8E9VOzakGwMLTYOAnH%2B%2BSuRCTbpIJRESpwOmQxwQqrRUHovbYLRKX9VWUjKVZZYg%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c348e7b18c24dbf-FRA
alt-svc: h3=":443"; ma=86400
Page title: Project Banana
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana</title>
<link rel="icon" href="data:," />
<style>
a:hover {
background-color: yellow;
}
</style>
</head>
<body>
<h3>About</h3>
<p>
<i>Project Banana</i> is a no-frills live video chat app that boasts an
emphasis on simplicity and privacy: no accounts, no downloads—just an easy
way to connect with your favorite friend(s). Create a room, share it with
someone, and you'll be well on your way to chatting with them using
internet magic!
</p>
<h3>Stack</h3>
<p>
Under the hood, Project banana uses WebRTC and custom signaling logic to
efficiently form a peer-to-peer connection between clients. The backend
consists of a Go server listening for ICE candidates and session
descriptions via gRPC—forwarding them to peers over a WebSocket
connection. The entire setup is deployed on Docker containers and runs on
a Raspberry Pi located in my bedroom, and I'm using
<a href="https://www.noip.com">No-IP</a> to manage my dynamic IP address.
The app's frontend is served using GitHub Pages. Check out the source code
<a href="https://codeberg.org/project-banana/app" target="_blank"
>here</a
>.
</p>
<p>
<a href="https://app.project-banana.com">Try It Now</a>
</p>
</body>
</html>
Open service 188.114.97.3:80 · project-banana.com
2026-01-25 03:06
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 03:06:46 GMT
Content-Length: 0
Connection: close
Location: https://project-banana.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=97pmJ9eERGMrX1YkxHQ8DcvhT8mdQa28WfZ3xYsJv6ChD3%2BiggCbIpVum7DbpjOfFUaOQ1GYc%2BamzkTorr3gswyhMse72WGHT5vXQntCW2B3hg%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c348e7ae90ed349-FRA
alt-svc: h3=":443"; ma=86400
Open service 188.114.97.3:8443 · project-banana.com
2026-01-25 03:06
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:06:46 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=FbPcRTSie0bGtHA8WyxkZZggprUwX46f9lSEjIzuTL8quC4Ak6XN%2BY90If6j1%2FMqPE3e5s%2FS8b2Zpq0CzEHHiLPcYy6xb5Ap2TAwQNDIkSbU%2Bw%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c348e7b1f4230e4-FRA
alt-svc: h3=":8443"; ma=86400
Page title: Project Banana
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana</title>
<link rel="icon" href="data:," />
<style>
a:hover {
background-color: yellow;
}
</style>
</head>
<body>
<h3>About</h3>
<p>
<i>Project Banana</i> is a no-frills live video chat app that boasts an
emphasis on simplicity and privacy: no accounts, no downloads—just an easy
way to connect with your favorite friend(s). Create a room, share it with
someone, and you'll be well on your way to chatting with them using
internet magic!
</p>
<h3>Stack</h3>
<p>
Under the hood, Project banana uses WebRTC and custom signaling logic to
efficiently form a peer-to-peer connection between clients. The backend
consists of a Go server listening for ICE candidates and session
descriptions via gRPC—forwarding them to peers over a WebSocket
connection. The entire setup is deployed on Docker containers and runs on
a Raspberry Pi located in my bedroom, and I'm using
<a href="https://www.noip.com">No-IP</a> to manage my dynamic IP address.
The app's frontend is served using GitHub Pages. Check out the source code
<a href="https://codeberg.org/project-banana/app" target="_blank"
>here</a
>.
</p>
<p>
<a href="https://app.project-banana.com">Try It Now</a>
</p>
</body>
</html>
Open service 2a06:98c1:3120::3:80 · project-banana.com
2026-01-25 03:06
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 03:06:46 GMT
Content-Length: 0
Connection: close
Location: https://project-banana.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=26NAsBS8wBv%2BznjTmuY53RbJf7Kfvi5%2BPmeOS0HA6w4JwyTjAnzZeIA8k4o49IQddx05bnukn7EOLUOooXoXvS80PSYQRflkpTlKr7dSbxusVq180QV%2Bngq49UiP2w%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c348e7aaca318d5-FRA
alt-svc: h3=":443"; ma=86400
Open service 2a06:98c1:3121::3:443 · project-banana.com
2026-01-25 03:06
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 03:06:46 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=dljG57TBoCojxVZEUEfzuAZhhRTm0ySaoJjCvfWNmYhsg1VK7%2FbN3Bt161B4h7pLRAhQtJN2zCRrbPj%2F9Oyaxp%2Bfz9AZLMpETmfaKyOoXuSFqLcsk4HVO5JiX%2FMycg%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c348e7abc4563df-LHR
alt-svc: h3=":443"; ma=86400
Page title: Project Banana
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana</title>
<link rel="icon" href="data:," />
<style>
a:hover {
background-color: yellow;
}
</style>
</head>
<body>
<h3>About</h3>
<p>
<i>Project Banana</i> is a no-frills live video chat app that boasts an
emphasis on simplicity and privacy: no accounts, no downloads—just an easy
way to connect with your favorite friend(s). Create a room, share it with
someone, and you'll be well on your way to chatting with them using
internet magic!
</p>
<h3>Stack</h3>
<p>
Under the hood, Project banana uses WebRTC and custom signaling logic to
efficiently form a peer-to-peer connection between clients. The backend
consists of a Go server listening for ICE candidates and session
descriptions via gRPC—forwarding them to peers over a WebSocket
connection. The entire setup is deployed on Docker containers and runs on
a Raspberry Pi located in my bedroom, and I'm using
<a href="https://www.noip.com">No-IP</a> to manage my dynamic IP address.
The app's frontend is served using GitHub Pages. Check out the source code
<a href="https://codeberg.org/project-banana/app" target="_blank"
>here</a
>.
</p>
<p>
<a href="https://app.project-banana.com">Try It Now</a>
</p>
</body>
</html>
Open service 104.21.50.19:443 · project-banana.com
2026-01-21 20:45
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 20:45:27 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=jz5CMPu0CbcRnzkjs9AnJBq%2F8ATgVTKDT3lS9NHX30XNVPyaPhCBTRqrmWLxTSFHyrzrD2Q4RF3IWzQQ86dnsjzZhnxm50RBMo350NkQ0BSCRQ%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c19a7c60ec6eb30-SJC
alt-svc: h3=":443"; ma=86400
Page title: Project Banana
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project Banana</title>
<link rel="icon" href="data:," />
<style>
a:hover {
background-color: yellow;
}
</style>
</head>
<body>
<h3>About</h3>
<p>
<i>Project Banana</i> is a no-frills live video chat app that boasts an
emphasis on simplicity and privacy: no accounts, no downloads—just an easy
way to connect with your favorite friend(s). Create a room, share it with
someone, and you'll be well on your way to chatting with them using
internet magic!
</p>
<h3>Stack</h3>
<p>
Under the hood, Project banana uses WebRTC and custom signaling logic to
efficiently form a peer-to-peer connection between clients. The backend
consists of a Go server listening for ICE candidates and session
descriptions via gRPC—forwarding them to peers over a WebSocket
connection. The entire setup is deployed on Docker containers and runs on
a Raspberry Pi located in my bedroom, and I'm using
<a href="https://www.noip.com">No-IP</a> to manage my dynamic IP address.
The app's frontend is served using GitHub Pages. Check out the source code
<a href="https://codeberg.org/project-banana/app" target="_blank"
>here</a
>.
</p>
<p>
<a href="https://app.project-banana.com">Try It Now</a>
</p>
</body>
</html>