Tabla de Contenidos
ZeroNet
ZeroNet es una red de internet descentralizada, donde los usuarios se conectan a través del protocolo P2P (Peer-to-peer) Bittorrent y usa la criptografía de Bitcoin.
Hace mucho tiempo que no se actualiza la versión oficial de ZeroNet. A día de hoy se recomienda el siguiente Fork:
Características
- Plataforma de distribución web alternativa.
- Uso de criptografía asimétrica (clave pública y clave privada).
- Centrada en la velocidad, usabilidad y la experiencia de usuario.
- No es un competidor de Freenet o I2P.
- No es más anónimo que BitTorrent (aunque se puede usar Tor para ocultar la IP).
- No es un reemplazo para el modelo actual basado en cliente-servidor.
- CDN Instantáneo. El contenido se distribuye por todo el mundo.
- Democrático. Sin coste de infraestructura y oportunidad para todo el mundo.
- Imposible modificar tu web sin la clave privada.
- Sin código de servidor (backend). Todo se ejecuta desde JavaScript.
- Clonado sencillo y rápido de cualquier sitio en ZeroNet.
- Webs 100 % transparentes. Cualquiera puede auditar el funcionamiento.
- Un sitio de ZeroNet permanece online mientras haya al menos 1 peer sirviéndolo.
- Imposible de apagar: no está en ningún sitio porque está en cualquier sitio
- Las webs se actualizan en tiempo real
- Las webs de ZeroNet pueden clonarse con un simple clic.
- Autorización sin contraseña usando clave pública/privada
- Servidor SQL integrado con sincronización P2P: permite desarrollo sencillo de webs dinámicas
ZeroNet comenzó a desarrollarse a finales de 2014
Funcionamiento
Cada web en ZeroNet se identifica con la clave pública. Cuando solicitamos un sitio, ZeroNet pregunta qué direcciones IP tienen una copia de dicho sitio y, en caso afirmativo, nos las envía. Luego se solicita el fichero content.json que contiene todos los nombres de fichero y firma del sitio que queremos descargar. Si todo está correcto, se descargará el resto del sitio (imágenes, ficheros HTML, CSS…)
Tan pronto visitamos una web en ZeroNet, ya la estamos compartiendo para que otros se la descarguen de nosotros también.
Si hay una versión nueva de un sitio que hayamos visitado, nos llegará el nuevo content.json y se comparará con lo que tenemos. Si es más nuevo, se enviará los ficheros modificados para tener la última versión automáticamente.
Criptografía asimétrica
ZeroNet se basa en la criptografía asimétrica. Cuando creamos un sitio en ZeroNet, obtenemos una clave privada y una pública.
Clave privada:
- Solo la tienes tú
- Permite firmar nuevo contenido para tu web
- Sin registro central. La clave nunca sale de tu ordenador.
- Imposible modificar tu sitio sin esta clave
Clave pública.
- Es la dirección de tu web
- Permite a cualquiere verificar si la web o sus archivos fueron creados por el propietario de la web
- Cada fichero descargado es verificado con esta clave, haciendo imposible que se inserte código malicioso o modificaciones no permitidas.
Versiones
- ZeroNet: original, sin desarrollo activo y vulnerable.
- Web oficial: https://zeronet.io/
- Repositorio de código: https://github.com/HelloZeroNet/ZeroNet/
- ZeroNetX: derivado (fork) de la original
- Web oficial: https://zeronet.dev
- Repositorio de código: https://github.com/canewsin/ZeroNet
- zeronet-conservancy: derivado de la original con mejoras en el diseño
- Repositorio de código: https://github.com/zeronet-conservancy/zeronet-conservancy
Instalación
Docker
ZeroNetX
Ejemplo de docker-compose.yml para usar con Docker Compose:
version: "3"
services:
zeronet:
image: canewsin/zeronet
container_name: zeronetx
volumes:
- ./data:/root/data
ports:
- 26117:26117
- 43110:43110
restart: unless-stopped
Versión ZeroNet (antigua y abandonada):
version: "3" services: zeronet: image: nofish/zeronet container_name: zeronet volumes: - ./data:/root/data ports: - 15441:15441 - 0.0.0.0:43110:43110 restart: unless-stopped
Actualizaciones
Es posible actualizar ZeroNetX desde la web. Cuando nos aparezca el aviso de una nueva versión (en la parte superior), al pulsar en él, nos llevará a una web donde podremos hacer la actualización.
Tor
Por defecto, ZeroNet no es anónima, aunque los usuarios pueden ocultar sus direcciones IP mediante la funcionalidad incorporada de navegación por Tor.
Zites
Se conocen como zites a las webs de ZeroNet
- ZeroHello:
1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D. Página inicial y gestor de sitios visitados. - ZeroBlog:
1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8. Publicación de blog. - ZeroTalk:
1TaLkFrMwvbNsooF4ioKAY9EuxTBTjipT. Foro de demostración. - ZeroMail:
1MaiL5gfBM1cyb4a8e3iiL8L5gXmoAJu27. Mensajería. - ZeroMe:
1MeFqFfFFGQfa1J3gJyYYUvb5Lksczq7nH. Red social tipo Twitter. - ReactionGIFs:
1Gif7PqWTzVWDQ42Mo7np3zXmGAo3DXc7h. - ZeroChat:
1AvF5TpcaamRNtqvN1cnDEWzNmUtD47Npg. Chat. - ZeroMusic:
1MusicXkuN2pk5hRdmroeyaCLDJtzTicpB. Compartición de música. - ZeroWiki:
138R53t3ZW7KDfSfxVpWUsMXgwUnsDNXLP - ZeroNet Tutorials:
1Jtjb5CU9aod4jtz8hF5NPPqFKofRSsb4x - ZeroWiki (new version):
1LX2wiouHctuUXtu5WkVM9TJJ3YoL6gAfm - ZeroWiki (español):
1FwbupJhHcnFWGXuu3bn5VxcRVW9tx2tDQ - ZeroList:
0list.bit. Directorio de zites subidos por los usuarios. - ZeroSitesX:
Sites.ZeroNetX.bit. Directorio de zites subidos por los usuarios. - ZeroSites:
Sites.ZeroNetwork.bit. Directorio de zites subidos por los usuarios. - ZeroTalk en Español:
165eqHdoQfyf7CVGqtVCGNDvMBZhwVSJBL - Subir archivos:
1Ef3VukSd8BDRkEJG42d9MEwYcaWN4pGcL. - Lista Ramses (ACE Stream):
13aNmBWAkWzaXT1Hva4B9kpJW1nWFjFF4X - Lista electroperra (ACE Stream):
1EoakGCUsHZrjMe9V86PBktkzn8T7LK2rG - Lista Icastresana (ACE Stream):
12Yeki2J1iXKurXSqL5JupkBjp1P4eYuEw - Lista de Mcfly (ACE Stream):
1KcqzADvtoqporMtYbfv6fJRGFKMrXpNNB - Syncronite:
15CEFKBRHFfAP9rmL6hhLmHoXrrgmw4B5o. Para añadir más trackers (básicamente añadir{data_dir}/15CEFKBRHFfAP9rmL6hhLmHoXrrgmw4B5o/cache/1/Syncronite.htmlen la sección “Trackers files” de la configuración de ZeroNet). - NullPaste:
1MgHVPCE1ve6QfKrgsqCURzRj72HrRWioz. Alternative Pastebin - Scribe:
Blog.ZeroNetX.bit. Blog del proyecto ZeroNetX.
Algunos contenidos de interés:
- ¿Qué es exactamente ZeroNet?:
17bgZrb8wENTgnQaeUbtEdDMBZEkBkdvCX - Crear un sitio en ZeroNet desde 0 en 2 minutos:
1EMcXwk7qQdY3pbj86A98gZHjDBNRrscdL/?Post:38:Crear+un+sitio+en+ZeroNet+desde+0+en+2+minutos - ¿Cómo cambiar el ávatar de tu blog?:
125XDCqa8KRMhcZxr4FH7E7g7ZZNiBucVv/?Post:3:¿Cómo+cambiar+el+ávatar+de+tu+blog+ - The All-Night Bookstore and Cafe:
13gLfTixjjktySEGHBMnmrQu4qMJpoRuXw - Básico ZeroNet:
179uFLUhYrJQmbuiZyRyBLaurks3eQW9fB/?Post:4:Básico+ZeroNet - TeknoLógico:
1CxmVewr5vzkxN4f5z1r7PwDHcsvTeJu4e - Greenborn:
12MvshpZTujGZpGH42GLbX16N4e6aDboaz - Zeronet para principiantes (ZeroTalk en español):
165eqHdoQfyf7CVGqtVCGNDvMBZhwVSJBL/?Topic:1_14jLtdaKH8s52LfNspTMvV1BX7rr3Ritcu/ZeroNet+para+principiantes
Publicar zite (línea de comandos)
zeronet.py siteCreate
Veremos una salida similar a:
- Starting ZeroNet... - Libsecpk256k1 loaded: Lib in 0.022s - Version: 0.7.2 r4555, Python 3.8.2 (default, Jul 18 2020, 19:35:03) [GCC 9.2.0], Gevent: 20.9.0 - Generating new privatekey (use_master_seed: True)... - Generated using master seed from users.json, site index: 30960570 - ---------------------------------------------------------------------- - Site private key: 0KCtYhpx8EXtn7VLnAPepTvJYuEhqgkkK0JLEFKgb3PDPXT28Q1 - !!! ^ Save it now, required to modify the site ^ !!! - Site address: 13aNiF62yNPzvVRwc3GoirscYqJ9lxe3H7 - ----------------------------------------------------------------------- Creating directory structure... SiteManager Loading sites... (cleanup: True, startup: False) FileServer Getting random port in range 10000-40000... FileServer Found unused random port: 13541 SiteManager Added 155 sites in 0.237s Db#1:ContentDb Loaded 18191 optional files: 54523.04MB, downloaded: 19.30MB in 0.075s - Creating content.json... Site:13zNiF..A3H2 ContentDb not initialized, load files from filesystem... Site:13zNiF..A3H2 File content.json not exist yet, loading default values... Site:13zNiF..A3H2 Extending content.json with: postmessage_nonce_security Site:13zNiF..A3H2 Extending content.json with: address_index Site:13zNiF..A3H2 Opening site data directory: ./data/13zNiF62yNPzvVRwc3GPirscYKJ9JxA3H2/... Site:13zNiF..A3H2 - index.html Site:13zNiF..A3H2 Adding timestamp and sha512sums to new content.json... Site:13zNiF..A3H2 Verifying private key... Site:13zNiF..A3H2 Correct 13aNiF62yNPzvVRwc3GoirscYqJ9lxe3H7 in valid signers: ['13aNiF62yNPzvVRwc3GoirscYqJ9lxe3H7'] Site:13zNiF..A3H2 Signing content.json... Site:13zNiF..A3H2 Saving to content.json... Site:13zNiF..A3H2 File content.json signed! SiteManager Loading sites... (cleanup: False, startup: False) - Site created!
Lo importante es:
- ---------------------------------------------------------------------- - Site private key: 0KCtYhpx8EXtn7VLnAPepTvJYuEhqgkkK0JLEFKgb3PDPXT28Q1 - !!! ^ Save it now, required to modify the site ^ !!! - Site address: 13aNiF62yNPzvVRwc3GoirscYqJ9lxe3H7 - ----------------------------------------------------------------------
Eso indica que la dirección de nuestro sitio será 13zNiF62yNPzvVRwc3GPirscYKJ9JxA3H2. La private key será la clave privada que debemos conservar para poder hacer modificaciones solo nosotros.
Ahora tendremos creada la estructura y los ficheros necesarios para comenzar a modificar nuestro nuevo sitio en el directorio ./data/13aNiF62yNPzvVRwc3GoirscYqJ9lxe3H7
Una vez hechos los cambios, firmamos los ficheros para que los peers puedan verificar que los cambios los ha hecho el propietario del sitio.
zeronet.py siteSign 13aNiF62yNPzvVRwc3GoirscYqJ9lxe3H7 ... - Signing site: 13zNiF62yNPzvVRwc3GPirscYKJ9JxA3H2... Site:13zNiF..A3H2 Opening site data directory: ./data/13zNiF62yNPzvVRwc3GPirscYKJ9JxA3H2/... Site:13zNiF..A3H2 - index.html Site:13zNiF..A3H2 - [SKIPPED] content.json Site:13zNiF..A3H2 Adding timestamp and sha512sums to new content.json... Site:13zNiF..A3H2 Verifying private key... Site:13zNiF..A3H2 Correct 13aNiF62yNPzvVRwc3GoirscYqJ9lxe3H7 in valid signers: ['13aNiF62yNPzvVRwc3GoirscYqJ9lxe3H7'] Site:13zNiF..A3H2 Signing content.json... Site:13zNiF..A3H2 Saving to content.json... Site:13zNiF..A3H2 File content.json signed!
Finalmente, tenemos que informar a los peers de las modificaciones, así que publicamos con:
zeronet.py sitePublish 13aNiF62yNPzvVRwc3GoirscYqJ9lxe3H7
Publicar zite (versión gráfica)
Nos situamos en la página principal (Dashboard) de nuestra instalación de ZeroNet: http://127.0.0.1:43110/. Pulsamos sobre los tres puntos verticales que hay al lado del logo y elegimos Create new, empty site.
Esto creará un nuevo zite en el directorio data de nuestra instalación de ZeroNet. El nuevo zite estará en un directorio donde podremos realizar los cambios que queramos. Cuando hayamos terminado y queramos publicarlo, nos aparecerá un botón en la parte inferior derecha que pone Sign & Publish que nos permitirá firmar los cambios (para asegurarse de que somos los propietarios) y los publicará
Poner capturas de todo esto
Es posible que tengamos que habilitar el puerto 15441 (o el que usemos en la opción --fileserver_port) en el router si no nos funciona correctamente el UPnP.
Recursos
- Proxies:
- AceZeroProxy: acceder a sitios de ZeroNet sin usar ZeroNet (no permite añadir nuevos sitios).
- Proxy ZeroNetX: acceder a sitios de ZeroNet sin usar ZeroNet (no permite añadir nuevos sitios).
- https://0net-preview.com (no permite añadir nuevos sitios)
