14 comments

  • simonw35 days ago
    &quot;Warning: The URL is the only authentication. Anyone with the link has full terminal access.&quot;<p>Could you make it so the URL is one-use only, such that once you&#x27;ve scanned it with your phone you can stop worrying because anyone else who uses it won&#x27;t be able to start a session?
    • yxl44834 days ago
      it is indeed disposable and the prefix is like your secure key. it is safe unless someone has access to your screen. I can add an option to permit a single session.
      • gruez34 days ago
        &gt;it is safe unless someone has access to your screen<p>It&#x27;s not, because the &quot;secure key&quot; is only in the domain name, which is transmitted in the clear via SNI. That means anyone along the network path can get the key, and therefore can get access in your terminal.
        • KomoD33 days ago
          And the domain shows up in CT logs too.
      • stogot34 days ago
        I would argue that it should be the default option. Cool idea!
  • sa-code34 days ago
    I can recommend tailscale for creating private networks. It has a generous free tier and would reduce the attack surface considerably compared to ngrok<p>Better yet would be setting up your own wireguard instance and not relying on free lunches. But as far as free lunches go tailscale would be my preferred option
    • bonsai_spool34 days ago
      Head scale is a good middle option - it uses Tailscale’s DNS system but you are able to control your network as you would with Wireguard
    • baq34 days ago
      tailscale has a much better chance to work when you need it most. WireGuard is blocked by too much stuff.
      • ffsm834 days ago
        Tailscale uses wireguard.<p>What it provides is a opinionated configuration management - which is admittedly great which is why I use it as well, but it&#x27;s nonsensical to say tailscale works in places where wireguard is blocked.<p>You&#x27;re likely just noticing the preconfigured nat traversal which tailscale provides and never set one up yourself, as you&#x27;d need a static IP for that and it&#x27;s unconfigured by default.
        • BrandoElFollito34 days ago
          &gt; it&#x27;s nonsensical to say tailscale works in places where wireguard is blocked<p>I have two machines on my desk, I configure a wg service on both. I also configure tailscale on both. Everything works.<p>I move one machine to another network, at a friend&#x27;s place.<p>Wg does not work anymore. Tailscale works. So this is very much sensible to say what GP said.<p>Now, you can have all kinds of explanations about why wg dos not work and ts does, you know STUN, DERP, ts using wg under the hood, and whatnot but the facts are cruel: I cannot wg to my machine, but I can ts.
          • ffsm834 days ago
            I was just pointing out that the statement wrt &quot;wireguard being blocked while tailscale works&quot; is nonsensical.<p>It remains nonsensical no matter how uninformed the user may be - even if he&#x27;s proud of being such, as you seem to be.<p>This was not a discussion about what tool to use if the person doesn&#x27;t know about networking and is generally ... &quot;less technical&quot;.
            • solarkraft34 days ago
              Right, it’s that specific person’s Wireguard configuration, which is likely a typical one as a result of Wireguard‘s defaults. Tailscale‘s defaults work better, hence the surface-level impression that plain Wireguard does not work in cases in which Tailscale does.
              • BrandoElFollito34 days ago
                As I said above - how would you set up plain Wireguard in a place without the possibility of exposing a port, or even that does not have a public IP - and initiate the connection from outside that place? I would love to learn something. Without rebuilding tailscale (or whatever other solutions with STUN or whatnot).
                • ffsm833 days ago
                  i think youre not hearing what - at least <i>i</i> - was saying.<p>I never said that running the same connectivity and NAT traversal via 2 nodes which are both inside of a NAT is possible. Neither did I ever claim you dont need a static public IP which _isnt_ behind a NAT &#x2F; has an open port.<p>With Tailscale, these are being provided to you by them. Without them, you would have to maintain that yourself. This is a significant maintenance burder, which is why I - as in my very first comment you yourself responded to - pointed out that the service theyre providing is great and that i use it myself for that as well.<p>Nonetheless, _if wireguard was blocked, tailscaile wouldn&#x27;t work either_<p>But its not blocked. Hence tailscale works. Just like wireguard would work, if you configured NAT traversal in some way. To get that working, you have multiple options, one of these being the STUN server. Another being an active participants in the VPN which facilitates the connection (not just the initiation, which the STUN server would be doing). easier to configure and maintain, but less performant.<p>Tailscale themselves actually have an incredibly indepth article on how they&#x27;ve implemented it on their end, its a little aged at this point, but I suspect they havent changed much (if any) since<p><a href="https:&#x2F;&#x2F;tailscale.com&#x2F;blog&#x2F;how-nat-traversal-works" rel="nofollow">https:&#x2F;&#x2F;tailscale.com&#x2F;blog&#x2F;how-nat-traversal-works</a>
                  • BrandoElFollito32 days ago
                    &gt; i think youre not hearing what - at least i - was saying.<p>You said &quot; it&#x27;s nonsensical to say tailscale works in places where wireguard is blocked&quot;.<p>If by &quot;blocked&quot; you mean &quot;blocked at the firewall level through some kind of adaptive block that will recognize a wireguard connection based on its behaviour&#x2F;nature of packets&#x2F;whatever&quot; → then yes, of course tailscale will not work either as it uses wg under the hood.<p>If the OP message &quot;tailscale has a much better chance to work when you need it most. WireGuard is blocked by too much stuff&quot; means &quot;I installed wireguard and it does not work (because whatever) but tailscale consistently delivers&quot; → then it is not nonsensical at all. It is the right tool to start with.<p>&gt; Tailscale themselves actually have an incredibly indepth article on how they&#x27;ve implemented it on their end<p>This is an excellent documentation to which I refer people as well.
            • BrandoElFollito34 days ago
              &gt; even if he&#x27;s proud of being such, as you seem to be<p>Of course on Internet nobody knows you are a dog. But hey, I may be someone who wrote a part of the Linux kernel in 1994, ran IT operations for a company that was big (big!) and then almost vanished (not my fault :)) and produces open source that you may have even used if you are &quot;technical&quot; as you say.<p>And set up WG in so many places, including a frontend that unfortunately did not get the worldwide success it should have :)<p>With this modest introduction - tailscale works where wireguard does not. I am not sure why my example was not obvious. You can reach the machine at my friend&#x27;s with tailscale, not with plain wireguard. Of course if you open ports in the right places then yes! And check a few more things.<p>Now - how would you set up <i>plain</i> Wireguard in a place without the possibility of exposing a port, or even that does not have a public IP - and initiate the connection from outside that place? I would love to learn something. Without rebuilding tailscale (or whatever other solutions with STUN or whatnot).
      • roflchoppa34 days ago
        I’ve never noticed wireguard be blocked by something, have you experienced this?
        • baq34 days ago
          many times in public&#x2F;hotel wifis. it&#x27;s usually places which blanket ban UDP and allow TCP 80 and 443 exclusively. tailscale somehow manages to get a connection.
  • smithclay34 days ago
    This is great. If you’re skeptical, vibe coding in the go is great because of how async the agentic coding workflows can be. Nothing like fixing a bug in the dentist office.<p>Lots of different technical solutions for how to do this, including the Claude and ChatGPT mobile apps nowadays. I use Tailscale. Choose what works best for you and enjoy.
  • kosolam34 days ago
    I’m also vibing from the iphone. Termius connects via ssh to remote server where I run claude code. Ssh connects also over a wireguard connection. So ports are not an issue because they are all available via wg in a secure way. Additionally I have code server running there automatically port forwards and giving me ssl. So when I run “pnpm dev” in tmux in ssh then I access it via <a href="https:&#x2F;&#x2F;3000.dev.mydomain.com" rel="nofollow">https:&#x2F;&#x2F;3000.dev.mydomain.com</a> which works great for development.
    • hrimfaxi34 days ago
      Can you speak more to the code server and domain set up? How do you get it to auto provision subdomains?
      • kosolam34 days ago
        Sure, code-server is a web version of vscode, like the github spaces thing only selfhosted.<p>I have acme.sh creating the certs using let’s encrypt. I have a reverse proxy (haproxy) in front of code server. This handles ssl.<p>The port forwarding and mapping to a subdomain is automatic - it’s a feature of code server: <a href="https:&#x2F;&#x2F;coder.com&#x2F;docs&#x2F;code-server&#x2F;guide" rel="nofollow">https:&#x2F;&#x2F;coder.com&#x2F;docs&#x2F;code-server&#x2F;guide</a><p>From the docs: code-server --proxy-domain &lt;domain&gt;
        • hrimfaxi33 days ago
          Thanks for the details!
  • reimuwu34 days ago
    &gt; I wanted to vibe code from bed.<p>In this case, I think using Termux + SSH would be more convenient and compatible with all devices running sshd.
    • stoneforger34 days ago
      Yes but that&#x27;s boring. Look at this it has cool ASCII and a QR. At this point no typing, just vibe-voice ask to build the thing and fix the error. Then we can have some tea, earl grey, hot.
    • yukinon34 days ago
      I don&#x27;t know if &quot;more convenient&quot; would be the words I would use. Setup on this project is very easy, it has very straightforward instructions. Meanwhile, I did a quick 5 minute pressure test of what you suggested and found myself with more questions than answers. I am not saying one way is better than the other, I am just thinking that for those that don&#x27;t breathe SSH&#x2F;VPN&#x2F;Wireguard&#x2F;Terminal Emulators&#x2F;etc.. this project is actually far easier to understand.<p>Also, funny enough on compatibility, but &quot;Termux&quot; is not on iOS, so it fails that basic check. But there&#x27;s alternatives, of course. Just an observation.
    • viraptor34 days ago
      Also <a href="https:&#x2F;&#x2F;github.com&#x2F;chriswritescode-dev&#x2F;opencode-manager" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;chriswritescode-dev&#x2F;opencode-manager</a> is getting there with a proper interface.
  • arisylafeta35 days ago
    Love it, I&#x27;ve been looking for something like this for a while now. But please add a password to it if you have the time. I might chip in by next if you&#x27;re open to contributions.
    • yxl44834 days ago
      I actually thought about it. will be added in a future release.
    • yxl44834 days ago
      uvx ptn -p for a one-time disposable pwd!
  • MarsIronPI34 days ago
    Genuine question here: How is this better than a mobile SSH client + something like Tailscale or Yggdrasil?
    • yxl44834 days ago
      fast and disposable? (btw it also works like a tmux with UI)
      • rubslopes34 days ago
        Agreed. I already use Termux for Claude code via ssh in my phone, but I&#x27;m nevertheless excited to try this.
  • thomasht8635 days ago
    I wanted a secure solution, that still can be run in one command, and came up with this, <a href="https:&#x2F;&#x2F;gist.github.com&#x2F;thomasht86&#x2F;86f0f8f62db1839054abd8a7e501ff7d" rel="nofollow">https:&#x2F;&#x2F;gist.github.com&#x2F;thomasht86&#x2F;86f0f8f62db1839054abd8a7e...</a>
  • gschizas34 days ago
    This command:<p><pre><code> lsb_release -cs </code></pre> Doesn&#x27;t work for Linux Mint 22.2<p>What you want is UBUNTU_CODENAME from &#x2F;etc&#x2F;os-release (in the case of Linux Mint 22.2, it&#x27;s &quot;noble&quot;)<p>EDIT: Actually, I&#x27;m not even sure you can do $(command) inside &#x2F;etc&#x2F;apt&#x2F;sources.list.d&#x2F;*
    • yxl44834 days ago
      Try again. I don&#x27;t have mint instance to test, but should work now.
      • gschizas34 days ago
        I had already fixed the sources file manually, but the &quot;any&quot; distro should probably work as well (I put &quot;noble&quot; when I did the manual edit).<p>Thanks though for the fix.
  • brap34 days ago
    I like this but I hate how everything has to be tied to AI now to get attention. “I wanted to vibe code-“ who cares? It’s a neat tool, do we have to force AI into it?
    • solarkraft34 days ago
      It’s the tool‘s use case, which provides valuable background information about its technical choices.
    • viraptor34 days ago
      Normally we get a few &quot;but why would you make this?&quot; comments. Maybe let&#x27;s not discourage people who actually give us the answer upfront.
  • mark_l_watson34 days ago
    Very cool, indeed.<p>One nit-pick: Terminus requiring a lot of setup work:<p>Terminus is trivial to use with a rented VPS. But, ptn solves a different problem
  • phs318u35 days ago
    Love it.<p>Laziness - the mother of (most) invention.
  • DNSZLSK32 days ago
    [dead]
  • ballpug1xtr34 days ago
    Further information concerning tunneling protocols, sshd&#x2F; ssh is accessible in the man site:<p>[1]:<a href="https:&#x2F;&#x2F;man.openbsd.org&#x2F;sshd.8" rel="nofollow">https:&#x2F;&#x2F;man.openbsd.org&#x2F;sshd.8</a><p>[2]:<a href="https:&#x2F;&#x2F;man.freebsd.org&#x2F;cgi&#x2F;man.cgi?ssh" rel="nofollow">https:&#x2F;&#x2F;man.freebsd.org&#x2F;cgi&#x2F;man.cgi?ssh</a>