boringproxy
yjs


boringproxy | yjs | |
---|---|---|
10 | 61 | |
1,252 | 18,144 | |
0.9% | 4.1% | |
0.0 | 8.5 | |
7 months ago | 26 days ago | |
Go | JavaScript | |
MIT License | MIT |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
boringproxy
-
List of ngrok/Cloudflare Tunnel alternatives and other tunneling software and services. Focus on self-hosting.
boringproxy - Designed to be very easy to use. No config files. Clients can be remote-controlled through a simple WebUI and/or REST API on the server.
-
Ask HN: Remote access to self hosted (back end) software
A couple of years ago I've read about this concept (already forgot the name) of using self hosted data storage with cloud applications. Basically, you as a user own your data and only permit the cloud hosted web application to access it - not own it and manage in your place.
I was thinking of a similar concept, but in the context of mobile applications. The mobile application itself would be accessible via Google Play Store/App Store, but the backend part would be self hosted and upon opening the application you would have to specify how to access backend.
My question is how would I access the backend if it was hosted on let's say rpi running in the living room? It's not a problem as long as I'm within the home network, but I want seemless network transition without losing access when entering/leaving the house. I was told https://www.cloudflare.com/en-gb/products/zero-trust/access/ could be used for this, but to me it sounds a bit of an overkill to use it for an application which would never be used by more than a single digit amount of users. This looks more suitable: https://github.com/boringproxy/boringproxy
-
Replacing cloudflare with a VPS - My journey
Finally, someone in the above project's Matrix room directed me towards boringproxy - https://github.com/boringproxy/boringproxy. This was the perfect solution. No lengthy config files, easy to use and automate. Setup took about an hour and now everything is back up and running. The only issue I've currently not been able to solve is one where the container seems to use a websocket, which keeps getting timed out (will investigate this further tomorrow).
-
zrok: open-source peer-to-peer sharing (alternative to ngrok)
boringproxy (GitHub) is my go-to for this sort of thing. Thanks for the announcement, I'll have to do a head-to-head and see how they stack up!
-
What's the best way to host Jellyfin to be accessed outside of my home network?
boringproxy
-
Consider SQLite
Am I the only one who thinks SQLite is still too complicated for many programs? Maybe it's just the particular type of software I normally work on, which tends towards small, self-hosted networking services[0] that would often have a single user, or maybe federated with <100 users. These programs need a small amount of state for things like tokens, users accounts, and maybe a bit of domain-specific things. This can all live in memory, but needs to be persisted to disk on writes. I've reached for SQLite several times, and always come back to just keeping a struct of hashmaps[1] in memory and dumping JSON to disk. It's worked great for my needs.
Now obviously if I wanted to scale up, at some point you would have too many users to fit in memory. But do programs at that scale actually need to exist? Why can't everyone be on a federated server with state that fits in memory/JSON? I guess that's more of a philosophical question about big tech. But I think it's interesting that most of our tech stack choices are driven by projects designed to work at a scale most of us will never need, and maybe nobody needs.
[0]: https://boringproxy.io/
[1]: https://github.com/boringproxy/boringproxy/blob/master/datab...
-
Architecture issue with running a docker project - have a crack at this
This is the commit that seems to have broken the docker image.
- Problems with port forwarding
-
How does pricing work for making and maintaining a website?
I use https://github.com/boringproxy/boringproxy
yjs
- Learn Yjs Interactively
-
Multi-player Mode is Everywhere, Even in Dev Tools
Of course, you don’t have to code this functionality from scratch! You can also look at open-source software like Yjs, text-crdt, Automerge and so many more. Alternatively, you can check out tools like Liveblocks, Ably, etc. which enable collaborative multi-player features.
-
Show HN: Screen Sharing in the Browser–No Downloads, No Registrations
You could easily build one using Yjs [1]. I'm using it for my work together website [2] (it has a chat).
[1] https://github.com/yjs/yjs
-
Synchronizing Collaborative Text Editing with Yjs and WebSockets
In this article, I almost do a copy-paste of what's found on the internet. It's a "reminder" for my personal project where I analyzed the use of Yjs.
-
Show HN: JuntOS – A shared Pomodoro and focus tools
I've built this app some time ago but only shared with close friends. It has been useful for me so I decided to share here.
It works by sharing state with yjs [1], as long as you are in the same session, i.e. the same path.
https://github.com/yjs/yjs
-
Understanding Conflict-Free Replicated Data Types
Yjs
-
Oops.js
I write undo/redo/history in web/JS extensively. This the best lib out there for such tasks IMHO:
https://github.com/yjs/yjs
And you're right. You don't want undo/redo only in multi-user apps. You want to have each user have their own local undo/redo events that they can apply and unapply from the shared state which has its own events apart from each user.
Everyone involved needs to keep track of what events they have created forever and always for things to work correctly. This is exactly what ES, OT, and CRDT patterns do, CRDT being the most recent and most capable.
- Show HN: Collaborate on your YC Application with CRDT-powered forms
-
Making CRDTs 98% More Efficient
One idea is just to use fewer random bits in peerIDs. Yjs (https://docs.yjs.dev/) gets away with just 32 random bits. If you compromise and use 64 random bits, then even a very popular doc with 1 million lifetime peerIDs will have a < 10^-7 lifetime probability of collision.
-
An Interactive Intro to CRDTs
I've seen it come up often in collaborative text editors.
Also see: https://github.com/yjs/yjs
What are some alternatives?
selfhosted-gateway - Self-hosted Docker native tunneling to localhost. Expose local docker containers to the public Internet via a simple docker compose interface.
automerge - A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
dqlite - Embeddable, replicated and fault-tolerant SQL engine.
liveblocks - The best apps in the AI era aren’t solo experiences—they’re collaborative. Liveblocks provides customizable pre‑built features to make your product multiplayer, engaging, and AI‑ready. All without derailing your roadmap.
ngrok - Expose your localhost to the web. Node wrapper for ngrok.
automerge-rs - Rust implementation of automerge [Moved to: https://github.com/automerge/automerge]
timeliner - All your digital life on a single timeline, stored locally -- DEPRECATED, SEE TIMELINIZE (link below)
pacman-backup - :floppy_disk: Pacman Cache management tool for off-the-grid updates via Sneakernet (USB drives) or Meshnets (LAN / Wi-Fi)
Gravitational Teleport - The easiest, and most secure way to access and protect all of your infrastructure.
crdt-woot - Implementation of collaborative editing algorithm CRDT WOOT.
rqlite - The lightweight, user-friendly, distributed relational database built on SQLite.
milkdown - 🍼 Plugin driven WYSIWYG markdown editor framework.

