wiki: documentacion de la version de escritorio
Cinco paginas: portada, Karvan, llamadas, instalacion y estado. Con captura propia de la interfaz de escritorio, que es la del proyecto original —menu lateral por grupos— y no la rejilla de hexagonos del movil. Mismo aviso que en la wiki de movil: rama experimental, sin afiliacion, con enlace al repositorio oficial de epsylon y la indicacion de que los fallos se reportan aqui. Repetido en la cabecera de cada pagina. Karvan y Llamadas se comparten con la wiki de movil porque el modulo es el mismo; solo cambia el apartado de permisos, que en escritorio los pide el navegador y no hace falta envoltorio. La pagina de instalacion avisa de lo unico que puede destruir algo: ejecutar esta rama y el Oasis oficial a la vez con la misma identidad parte el registro para siempre.
parent
568dff529a
commit
8990bfb26c
6 changed files with 315 additions and 1 deletions
85
Home.md
85
Home.md
|
|
@ -1 +1,84 @@
|
||||||
init
|
# Oasis para escritorio — rama de desarrollo experimental
|
||||||
|
|
||||||
|
> # ⚠ ESTO NO ES OASIS OFICIAL
|
||||||
|
>
|
||||||
|
> Esta wiki documenta una **rama de desarrollo experimental** mantenida por el
|
||||||
|
> hacklab, **sin afiliación** con el proyecto original.
|
||||||
|
>
|
||||||
|
> ## El Oasis oficial es el de epsylon: https://github.com/epsylon/oasis
|
||||||
|
>
|
||||||
|
> Si quieres **usar Oasis de verdad, instala el oficial**. Lo que se documenta 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.**
|
||||||
|
|
||||||
|
Versión base: **Oasis 0.9.5**. Rama: `PRUEBAS`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Qué añade respecto al oficial
|
||||||
|
|
||||||
|
Una sola cosa, pero grande: **Karvan**, un módulo de salas efímeras con llamadas.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
El resto es Oasis 0.9.5 tal cual. La interfaz es la del proyecto original: el menú
|
||||||
|
lateral por grupos, no la rejilla de hexágonos, que es de la versión para móvil.
|
||||||
|
|
||||||
|
| | |
|
||||||
|
|---|---|
|
||||||
|
| **[Karvan](Karvan)** | Salas que viven solo en memoria y se autodestruyen |
|
||||||
|
| **[Llamadas](Llamadas)** | Audio y vídeo sobre WebRTC, sin servidores de terceros |
|
||||||
|
| **[Instalar](Instalar)** | Igual que el oficial |
|
||||||
|
| **[Estado](Roadmap)** | Qué funciona y qué no |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Instalación
|
||||||
|
|
||||||
|
Exactamente igual que el Oasis oficial:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd src/server && npm install
|
||||||
|
cd ../.. && ./oasis.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Karvan aparece en el menú lateral, en el grupo de comunicación, junto a los chats. Se
|
||||||
|
puede apagar desde `/modules` como cualquier otro módulo.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Relación con la versión para móvil
|
||||||
|
|
||||||
|
Hay un repositorio hermano, **OASIS_MOBILE**, con la versión de Android: misma base y
|
||||||
|
mismo módulo Karvan, pero con una interfaz distinta pensada para el pulgar.
|
||||||
|
|
||||||
|
El código de Karvan es el mismo en ambos. Lo que cambia es el enganche: aquí un enlace
|
||||||
|
en el menú lateral siguiendo el patrón del proyecto original, allí una rejilla de
|
||||||
|
hexágonos.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Cómo está organizado el código
|
||||||
|
|
||||||
|
El código propio vive separado de los ficheros del proyecto original:
|
||||||
|
|
||||||
|
```
|
||||||
|
src/models/karvan_model.js las salas y su ciclo de vida
|
||||||
|
src/views/karvan_view.js la interfaz de la sala
|
||||||
|
src/backend/fork_routes.js las rutas del módulo
|
||||||
|
src/backend/turnCredentials.js credenciales efímeras para TURN
|
||||||
|
src/client/public/js/karvan.js el cliente WebRTC del navegador
|
||||||
|
src/client/assets/styles/karvan.css los estilos del módulo
|
||||||
|
```
|
||||||
|
|
||||||
|
Sobre los ficheros de upstream solo hay **enganches de una línea**. El motivo:
|
||||||
|
epsylon publica una versión cada dos a cuatro días, y así cada una se integra sin
|
||||||
|
arrastrar nada.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Licencia
|
||||||
|
|
||||||
|
AGPL-3.0, la misma que el proyecto original.
|
||||||
|
|
|
||||||
42
Instalar.md
Normal file
42
Instalar.md
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
# Instalar
|
||||||
|
|
||||||
|
> ⚠ Rama experimental, no oficial. El Oasis oficial es
|
||||||
|
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
|
||||||
|
|
||||||
|
Igual que el Oasis oficial, porque es el mismo árbol con un módulo más.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://gitea.laenre.net/hacklab/OASIS_LINUX.git
|
||||||
|
cd OASIS_LINUX/src/server && npm install
|
||||||
|
cd ../.. && ./oasis.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Abre `http://localhost:3000`.
|
||||||
|
|
||||||
|
## Activar Karvan
|
||||||
|
|
||||||
|
Viene activado. Si no lo ves en el menú lateral, míralo en `/modules`.
|
||||||
|
|
||||||
|
## Configurar un TURN
|
||||||
|
|
||||||
|
Solo si quieres llamadas fuera de tu red local. En `src/configs/oasis-config.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"rtc": {
|
||||||
|
"stun": ["stun:tu.pub:3478"],
|
||||||
|
"turn": { "urls": ["turn:tu.pub:3478"], "secret": "<static-auth-secret>", "ttlSec": 3600 },
|
||||||
|
"relayOnly": false
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
De fábrica está vacío: **sin servidores de terceros**. Ver [Llamadas](Llamadas) para
|
||||||
|
el porqué y para cómo endurecer coturn.
|
||||||
|
|
||||||
|
## Si vienes del Oasis oficial
|
||||||
|
|
||||||
|
Tu identidad y tus datos están en `~/.ssb` y esta rama los usa igual. Aun así, **haz
|
||||||
|
copia de seguridad antes de probar**: es una rama experimental.
|
||||||
|
|
||||||
|
> ⚠ **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.
|
||||||
68
Karvan.md
Normal file
68
Karvan.md
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
# Karvan — salas efímeras
|
||||||
|
|
||||||
|
> ⚠ Rama experimental, no oficial. El Oasis oficial es
|
||||||
|
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
|
||||||
|
|
||||||
|
Salas de chat que **viven solo en memoria** y se destruyen solas. Nada se escribe en
|
||||||
|
disco ni en el registro de SSB.
|
||||||
|
|
||||||
|
|
||||||
|
## Cómo funciona
|
||||||
|
|
||||||
|
Al crear una sala eliges cuánto vive. A partir de ahí:
|
||||||
|
|
||||||
|
- **Se autodestruye por inactividad** (30 minutos por defecto) y **por tiempo
|
||||||
|
absoluto** (2 horas), lo que ocurra antes. El plazo absoluto no se renueva con la
|
||||||
|
actividad: la sala muere igual.
|
||||||
|
- Al vencer, **se borra todo**: mensajes, señales y la lista de miembros.
|
||||||
|
- Si reinicias Oasis, las salas desaparecen. Es lo correcto: solo existían en memoria.
|
||||||
|
|
||||||
|
## Quién puede entrar
|
||||||
|
|
||||||
|
**Quien tenga el enlace.** El identificador de la sala son 72 bits al azar y es la
|
||||||
|
única credencial que existe. No hay lista de miembros ni permisos.
|
||||||
|
|
||||||
|
Esto es deliberado —así una sala se comparte pegando un enlace— pero conviene tenerlo
|
||||||
|
claro: **cualquiera con el enlace entra**, y quien esté dentro puede pasárselo a otro.
|
||||||
|
|
||||||
|
Para invitar a un contacto sin pegar el enlace en ningún sitio, el botón de invitación
|
||||||
|
le manda un **mensaje privado de SSB** con el enlace dentro.
|
||||||
|
|
||||||
|
## Límites
|
||||||
|
|
||||||
|
Existen para que una sala no pueda tumbar el nodo:
|
||||||
|
|
||||||
|
| | |
|
||||||
|
|---|---|
|
||||||
|
| Mensajes que se conservan | 250 (los más recientes) |
|
||||||
|
| Salas a la vez | 100 |
|
||||||
|
| Miembros por sala | 50 |
|
||||||
|
| Tamaño de señalización | 16 KiB |
|
||||||
|
| Texto por mensaje | 2000 caracteres |
|
||||||
|
|
||||||
|
## Funciona sin JavaScript
|
||||||
|
|
||||||
|
El chat es utilizable **con JavaScript desactivado**: escribir manda un formulario y
|
||||||
|
la página se recarga sola cada diez segundos para traer los mensajes nuevos.
|
||||||
|
|
||||||
|
Con JavaScript activado se añade un canal directo entre navegadores, y entonces los
|
||||||
|
mensajes llegan al instante sin pasar por el servidor.
|
||||||
|
|
||||||
|
## Qué protege y qué no
|
||||||
|
|
||||||
|
**Protege**: los mensajes no tocan el disco, no entran en tu registro de SSB y
|
||||||
|
desaparecen solos. No queda rastro que replicar ni que incautar después.
|
||||||
|
|
||||||
|
**No protege**:
|
||||||
|
|
||||||
|
- El **servidor ve los mensajes** que pasan por él. Solo el canal directo entre
|
||||||
|
navegadores queda fuera de su alcance.
|
||||||
|
- Mientras la sala existe, sus **metadatos existen** en memoria: quién está dentro,
|
||||||
|
cuándo se creó.
|
||||||
|
- El **relay entre dispositivos** sí publica mensajes privados de SSB, que **son
|
||||||
|
permanentes**. Es lo que permite que una sala funcione entre tu móvil y tu
|
||||||
|
ordenador, pero conviene saberlo: eso ya no es efímero.
|
||||||
|
- Quien tenga el enlace entra, como se explica arriba.
|
||||||
|
|
||||||
|
Karvan sirve para conversaciones que no quieres conservar. **No es una herramienta
|
||||||
|
contra un adversario que ya controla tu dispositivo o el servidor.**
|
||||||
97
Llamadas.md
Normal file
97
Llamadas.md
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
# Llamadas de audio y vídeo
|
||||||
|
|
||||||
|
> ⚠ Rama experimental, no oficial. El Oasis oficial es
|
||||||
|
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
|
||||||
|
|
||||||
|
Dentro de una sala de [Karvan](Karvan) hay un botón de llamada. El audio y el vídeo
|
||||||
|
van **directamente entre los participantes** por WebRTC, cifrados de extremo a extremo
|
||||||
|
por el propio protocolo.
|
||||||
|
|
||||||
|
## Permisos de cámara y micrófono
|
||||||
|
|
||||||
|
En escritorio los pide el navegador directamente, la primera vez que inicias una
|
||||||
|
llamada. No hay nada especial que configurar.
|
||||||
|
|
||||||
|
En la versión de Android hizo falta un envoltorio propio para poder concederlos; aquí
|
||||||
|
no aplica.
|
||||||
|
|
||||||
|
## Sin servidores de terceros
|
||||||
|
|
||||||
|
Casi todas las aplicaciones con WebRTC traen configurado un servidor STUN público,
|
||||||
|
normalmente de Google. **Aquí no hay ninguno.**
|
||||||
|
|
||||||
|
El motivo: un servidor STUN aprende **la IP pública y el momento exacto de cada
|
||||||
|
consulta**. Con la configuración habitual, cada llamada le estaría diciendo a Google
|
||||||
|
que ese usuario está llamando ahora. En un proyecto con esta postura sobre la
|
||||||
|
privacidad, no se sostiene.
|
||||||
|
|
||||||
|
Por defecto solo se usan **candidatos host**: funciona en la misma red local y con
|
||||||
|
routers domésticos amables. Se prefiere degradar a nada antes que a un tercero.
|
||||||
|
|
||||||
|
## Si necesitas atravesar NAT
|
||||||
|
|
||||||
|
Con datos móviles o detrás de CGNAT hará falta un servidor TURN. La configuración va
|
||||||
|
en `oasis-config.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"rtc": {
|
||||||
|
"stun": ["stun:tu.pub:3478"],
|
||||||
|
"turn": {
|
||||||
|
"urls": ["turn:tu.pub:3478"],
|
||||||
|
"secret": "<el static-auth-secret de tu coturn>",
|
||||||
|
"ttlSec": 3600
|
||||||
|
},
|
||||||
|
"relayOnly": false
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Con `secret` se generan credenciales que **caducan solas** (mecanismo REST de coturn):
|
||||||
|
no hay usuarios que dar de alta y una credencial filtrada vale una hora.
|
||||||
|
|
||||||
|
Con `relayOnly: true` **toda** la media pasa por el TURN, de modo que ningún
|
||||||
|
participante ve la dirección IP del otro. Cuesta ancho de banda del servidor, pero es
|
||||||
|
lo que hay que activar si los participantes no deberían conocer sus IPs.
|
||||||
|
|
||||||
|
### Si montas el TURN, endurécelo
|
||||||
|
|
||||||
|
Un TURN mal configurado es un **relay abierto** hacia la red interna del servidor.
|
||||||
|
Como mínimo, en `turnserver.conf`:
|
||||||
|
|
||||||
|
```
|
||||||
|
use-auth-secret
|
||||||
|
static-auth-secret=<32 bytes aleatorios, fichero con permisos 600>
|
||||||
|
realm=<tu dominio>
|
||||||
|
fingerprint
|
||||||
|
|
||||||
|
no-loopback-peers
|
||||||
|
no-multicast-peers
|
||||||
|
denied-peer-ip=10.0.0.0-10.255.255.255
|
||||||
|
denied-peer-ip=172.16.0.0-172.31.255.255
|
||||||
|
denied-peer-ip=192.168.0.0-192.168.255.255
|
||||||
|
denied-peer-ip=169.254.0.0-169.254.255.255
|
||||||
|
denied-peer-ip=100.64.0.0-100.127.255.255
|
||||||
|
denied-peer-ip=127.0.0.0-127.255.255.255
|
||||||
|
denied-peer-ip=<LA IP PÚBLICA DEL PROPIO SERVIDOR>
|
||||||
|
|
||||||
|
user-quota=12
|
||||||
|
total-quota=1200
|
||||||
|
max-bps=1500000
|
||||||
|
```
|
||||||
|
|
||||||
|
La última línea de `denied-peer-ip` es la que casi todo el mundo olvida:
|
||||||
|
`no-loopback-peers` impide llegar a `127.0.0.1`, **pero no impide que alguien pida un
|
||||||
|
relay hacia la IP pública de tu propia máquina** y alcance así tu puerto de SSB o tu
|
||||||
|
servidor web. Sin esa línea, tu TURN es una puerta a tus propios servicios.
|
||||||
|
|
||||||
|
Compruébalo con `turnutils_uclient` contra una IP privada y contra la IP pública del
|
||||||
|
servidor: **las dos deben fallar**.
|
||||||
|
|
||||||
|
## Limitaciones honestas
|
||||||
|
|
||||||
|
- **Un participante = un nodo.** Dos pestañas del mismo Oasis comparten identidad y no
|
||||||
|
se enlazan entre sí. Para probar de verdad hacen falta dos nodos distintos.
|
||||||
|
- **Sin TURN, con datos móviles casi nunca conectará.** El CGNAT de los operadores lo
|
||||||
|
impide.
|
||||||
|
- La señalización pasa por el servidor de la sala: un servidor comprometido podría
|
||||||
|
colocarse en medio. La media va cifrada extremo a extremo, pero **quien controla la
|
||||||
|
señalización controla con quién crees que hablas**.
|
||||||
24
Roadmap.md
Normal file
24
Roadmap.md
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Estado
|
||||||
|
|
||||||
|
> ⚠ Rama experimental, no oficial. El Oasis oficial es
|
||||||
|
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
|
||||||
|
|
||||||
|
## Hecho
|
||||||
|
|
||||||
|
- Base **Oasis 0.9.5**, al día con el proyecto oficial.
|
||||||
|
- **[Karvan](Karvan)** con su enlace en el menú lateral, siguiendo el mismo patrón que
|
||||||
|
el resto de módulos.
|
||||||
|
- Estilos del módulo en su propia hoja, para que se vea igual con cualquier tema.
|
||||||
|
- **Sin STUN de terceros**, con configuración para TURN propio.
|
||||||
|
|
||||||
|
## Sin empezar
|
||||||
|
|
||||||
|
- Poner en marcha un TURN en un pub.
|
||||||
|
- Varias identidades en el mismo equipo con cambio desde la interfaz.
|
||||||
|
- Empaquetado `.deb` de esta rama.
|
||||||
|
|
||||||
|
## Diferencias con la versión para móvil
|
||||||
|
|
||||||
|
La versión de Android lleva además una interfaz propia (hexágonos, barra de accesos
|
||||||
|
rápidos) y algunos módulos recortados por peso. Aquí no: la interfaz es la del
|
||||||
|
proyecto original y están todos los módulos.
|
||||||
BIN
img/01-escritorio-menu.png
Normal file
BIN
img/01-escritorio-menu.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
Loading…
Add table
Add a link
Reference in a new issue