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