diff --git a/README.md b/README.md index 9a8bbb5..1759c63 100644 --- a/README.md +++ b/README.md @@ -2,76 +2,175 @@ > ## ⚠ ESTO NO ES OASIS OFICIAL > -> Esta es una **rama de desarrollo experimental** mantenida por el hacklab, no -> afiliada al proyecto original. +> Esta es una **rama de desarrollo experimental** mantenida por el hacklab, **no +> afiliada** al proyecto original. > -> **El repositorio oficial de Oasis es el de epsylon: https://github.com/epsylon/oasis** +> ### El repositorio oficial de Oasis es el de epsylon: https://github.com/epsylon/oasis > -> Si quieres **usar Oasis de verdad**, instala el oficial. Lo que hay aquí puede -> romperse, cambiar de forma incompatible o desaparecer sin aviso. No está auditado -> y no tiene garantía de ninguna clase. +> Si quieres **usar Oasis de verdad, instala el oficial**. Lo que hay aquí puede +> romperse, cambiar de forma incompatible o desaparecer sin aviso. No está auditado y +> no tiene garantía de ninguna clase. > -> Los fallos de esta rama **se reportan aquí, nunca a epsylon**. +> **Los fallos de esta rama se reportan aquí, nunca a epsylon.** -Versión base: **Oasis 0.9.5**. +Versión base: **Oasis 0.9.5** · Rama: `PRUEBAS` · +[Documentación completa](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki) · +[Versión de Android](https://gitea.laenre.net/hacklab/OASIS_MOBILE) -## Qué añade esta rama +![Las novedades](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/00-novedades.png) -### Karvan — salas efímeras +--- -Salas de chat que **viven solo en memoria** y se autodestruyen solas: +## Lo que añade -- TTL de inactividad (30 min) y absoluto (2 h), configurables al crear la sala. -- Nada se escribe en disco ni en el log SSB: al vencer el plazo, la sala y sus - mensajes desaparecen. -- Anillo de 250 mensajes, 100 salas simultáneas, 50 miembros por sala. -- El identificador de sala son **72 bits** y es la única credencial: **quien tiene - el enlace, entra**. No hay lista de miembros que valga. -- Invitación a un contacto por mensaje privado SSB. -- **Funciona sin JavaScript**: enviar y recibir van por formulario y recarga. Con - JavaScript se añade un canal directo entre pares. +| | Oasis oficial | Esta rama | +|---|---|---| +| **Salas efímeras** | — | Karvan: mensajes que solo viven en memoria y se autodestruyen | +| **Videollamadas** | — | Audio y vídeo por WebRTC, probado entre dos participantes | +| **Varias identidades** | Una, en `~/.ssb` | Las que quieras, con aviso si dos comparten clave | +| **Respuesta citada** | — | Responder a un mensaje concreto dentro de un chat | +| **Metadatos de las imágenes** | Se quitan solo si está `sharp` | Se quitan siempre, sin depender de nada | +| **Servidor STUN** | Uno de Google, por defecto | Ninguno. TURN propio si lo configuras | -### Llamadas de audio y vídeo +**La interfaz no se toca**: es la del Oasis oficial, con sus mismos nombres, sus mismos +módulos y su mismo menú lateral. -Sobre el mismo WebRTC del chat. En escritorio el navegador pide los permisos de -cámara y micrófono directamente. +--- -**Sin servidores de terceros**: no hay ningún STUN de fábrica. Un servidor STUN -aprende la IP pública y el momento de cada llamada, así que no se pone ninguno. -Por defecto solo hay candidatos host, que funcionan en la misma red y con NAT -amable. Si tu nodo tiene TURN propio, se configura en `oasis-config.json`: +## Qué es Oasis, en cuatro dibujos -```json -"rtc": { - "stun": ["stun:tu.pub:3478"], - "turn": { "urls": ["turn:tu.pub:3478"], "secret": "", "ttlSec": 3600 }, - "relayOnly": false -} -``` +Una red social **sin servidor**: publicas en tu propio equipo y los demás se traen una +copia. No hay cuenta, no hay contraseña y nadie puede borrarte. -Con `secret` se emiten credenciales efímeras por el mecanismo REST de coturn. Con -`relayOnly` toda la media pasa por el TURN y ningún par ve la IP del otro. +![Qué es Oasis](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/esq/01-red.png) -## Qué NO tiene respecto al oficial +Los mensajes viajan **de vecino en vecino**, así que llegan a gente con la que nunca te +has conectado. Por eso funciona incluso sin internet, entre dos equipos de la misma red. -- **Módulo de IA**: fuera. El modelo son unos 4 GB. -- **housing**: portado pero apagado por defecto. +![Cómo llega un mensaje](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/esq/02-gossip.png) -## Instalación +Un **pub** es solo un nodo que no se apaga nunca. No es un servidor con tus datos: no +guarda tu identidad, no decide qué ves y no puede borrarte. -Igual que el oficial: +![Qué es un pub](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/esq/04-pub.png) + +Todo lo que publicas se encadena y va **firmado con tu clave**. Nadie puede colar un +mensaje en tu nombre ni cambiar lo que dijiste. + +![Tu registro](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/esq/14-registro.png) + +> La explicación completa —los saltos, las tribus, el LARP, los módulos— está en +> **[Entender Oasis en diez minutos](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Entender)**. + +--- + +## Karvan: salas que se borran solas + +![Cómo funciona Karvan](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/esq/11-karvan.png) + +Lo que se dice dentro **no toca el disco**, no entra en tu registro y no se replica a +nadie. Dos relojes corren a la vez —inactividad y tiempo absoluto— y la sala muere con +el que llegue antes. + +![Una sala con mensajes](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/02-karvan-sala.png) + +--- + +## Videollamadas sin terceros + +![Cómo funciona una llamada](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/esq/12-llamadas.png) + +El servidor solo sirve para que os encontréis: **la voz y el vídeo van directos** entre +los participantes, cifrados de extremo a extremo. Sin STUN de Google. + +![Llamada entre dos participantes](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/10-llamada-dos.png) + +Probado entre dos navegadores en la misma sala: se negocia el canal, el indicador pasa +a **P2P (WebRTC)** y llega el vídeo del otro. + +--- + +## Varias identidades en el mismo equipo + +![Varias identidades](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/esq/15-identidades.png) + +Cada una con su clave, su registro y sus contactos, en su propia carpeta. Se elige en +los ajustes y se aplica al reiniciar. + +![Selector de identidades](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/09-identidades.png) + +> Si dos identidades comparten clave, la lista lo avisa en rojo. Publicar desde las dos +> **parte el registro y no se arregla**. + +--- + +## Empezar desde cero + +![De cero a estar dentro](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/esq/05-empezar.png) + +| | | +|---|---| +| **[oasis-project.pub](https://oasis-project.pub)** | Directorio de pubs, con invitaciones y estado de cada uno | +| **[0asis.net](https://0asis.net)** | El proyecto explicado desde el principio | +| **[wiki.solarnethub.com](https://wiki.solarnethub.com/socialnet/overview)** | La documentación oficial, módulo por módulo | + +--- + +## Instalar ```sh -cd src/server && npm install +git clone https://gitea.laenre.net/hacklab/OASIS_LINUX.git +cd OASIS_LINUX/src/server && npm install cd ../.. && ./oasis.sh ``` -## Relación con upstream +Abre `http://localhost:3000`. -Esta rama sigue las versiones de epsylon de cerca. El código propio vive separado -(`src/views/fork/`, `src/backend/fork_routes.js`, `src/models/karvan_model.js` y las -traducciones en `translations/fork/`) para que integrar cada versión nueva no arrastre -la interfaz de la rama. Sobre los ficheros de upstream solo hay enganches de una línea. +![Qué pasa al abrir Oasis](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/raw/img/esq/17-arquitectura-escritorio.png) + +Oasis levanta un servidor **en tu propia máquina**: el navegador es solo la ventana. Lo +único que sale a la red es la replicación, por el puerto 8008. + +### Varias identidades + +```sh +OASIS_ACCOUNT=trabajo ./oasis.sh # vive en ~/.trabajo, aislada de ~/.ssb +``` + +> ⚠ **No ejecutes esta rama y el Oasis oficial a la vez con la misma identidad.** +> Publicar desde dos sitios con el mismo `secret` **parte tu registro y lo deja +> inservible para siempre**. No es recuperable. + +--- + +## Documentación + +Todo lo de arriba, en detalle, está en la +**[wiki](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki)**: + +| | | +|---|---| +| [Entender Oasis](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Entender) | La red, el gossip, los saltos, los pubs, las tribus y el LARP | +| [Empezar desde cero](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Empezar) | Invitación, seguir gente, abrir tu blog o tu tienda | +| [Instalar](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Instalar) | Puesta en marcha y varias identidades | +| [Karvan](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Karvan) | Salas efímeras, paso a paso | +| [Llamadas](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Llamadas) | Cómo se llama y cómo montar un TURN | +| [Chats](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Chats) | La respuesta citada | +| [Temas](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Temas) | Cómo se ve con los cuatro temas | +| [Diferencias con móvil](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Diferencias) | Qué cambia respecto al repositorio hermano | +| [Estructura del código](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Estructura) | Dónde vive cada fichero y por qué ahí | +| [Si algo va mal](https://gitea.laenre.net/hacklab/OASIS_LINUX/wiki/Problemas) | Los fallos que han pasado de verdad | + +--- + +## El proyecto original + +Esta rama existe **gracias a** y **por encima de** el trabajo de epsylon. El código, la +arquitectura, los módulos y la red son suyos. + +- **Código:** https://github.com/epsylon/oasis +- **Proyecto:** https://solarnethub.com +- **Wiki:** https://wiki.solarnethub.com/socialnet/overview ## Licencia