imlauer.github.io en Tor, I2P y FreenetFecha: 2026-09-16 · Sistema: Arch Linux · Servidor: $HOME/imlauer.github.io (sitio estático)
Resultado final: el sitio publicado en Tor, I2P y Freenet (Hyphanet),
más el enlace a los mirrors agregado al index.
Este archivo es el registro de todo lo que se hizo. El “cómo” paso a paso está en
tutorial-sitios-ocultos.md.
| Red | URL pública | ¿Tu PC tiene que estar encendida? |
|---|---|---|
| Tor (onion v3) | http://5n2dh4gafm6qskpd6wm4us2m7zsxbwj4yicmmyowy7n7i34d4jkq5uid.onion/ |
Sí |
| I2P (eepsite) | http://lj5uiypfgrbuelzguwlb7smx6lqmxrzyd2o6rbu5sdyjahsznyxq.b32.i2p/ |
Sí |
| Freenet (freesite) | USK@GUETDi8oxvuY5VWnnpAIUa-FPKooO0bj-OBM0BgwYGw,CIhMEUnz1-SeZqd0UT0JpgleOzQ7y0Rv5r0rrUx-lAU,AQACAAE/imlauer/0/ |
No (vive en la red) |
/etc/systemd/system/imlauer-static.service sirviendo
~/imlauer.github.io en 127.0.0.1:8100.qbittorrent.sudo systemctl daemon-reload
sudo systemctl enable --now imlauer-static.service
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8100/ # → 200
tor ya venía instalado./etc/tor/torrc:
HiddenServiceDir /var/lib/tor/imlauer_site/
HiddenServicePort 80 127.0.0.1:8100
HiddenServiceVersion 3
sudo install -d -o tor -g tor /var/lib/tor/imlauer_site
sudo chmod 700 /var/lib/tor/imlauer_site
sudo systemctl reload tor # aplica el torrc nuevo
sudo cat /var/lib/tor/imlauer_site/hostname
5n2dh4gafm6qskpd6wm4us2m7zsxbwj4yicmmyowy7n7i34d4jkq5uid.onioncurl --socks5-hostname 127.0.0.1:9050 -s -o /dev/null -w '%{http_code}\n' \
http://5n2dh4gafm6qskpd6wm4us2m7zsxbwj4yicmmyowy7n7i34d4jkq5uid.onion/ # → 200
sudo systemctl enable tor.Problema encontrado: tras un fallo previo Tor tiraba
Job for tor.service failed (...) because a configured service was not started.
Se resolvió con sudo systemctl reset-failed tor && sudo systemctl start tor.
i2pd)sudo pacman -S i2pd # extra/i2pd 2.61.0
/etc/i2pd/tunnels.conf:
[imlauer-site]
type = server
host = 127.0.0.1
port = 8100
keys = imlauer-site.dat
sudo systemctl enable --now i2pd
.b32.i2p se obtuvo de la consola web
http://127.0.0.1:7070/?page=i2p_tunnels (túnel imlauer-site):
→ lj5uiypfgrbuelzguwlb7smx6lqmxrzyd2o6rbu5sdyjahsznyxq.b32.i2pcurl -x http://127.0.0.1:4444 -s -o /dev/null -w '%{http_code}\n' \
http://lj5uiypfgrbuelzguwlb7smx6lqmxrzyd2o6rbu5sdyjahsznyxq.b32.i2p/ # → 200
Nota: el primer intento dio 000: era warm-up del router (genera claves y
encuentra peers los primeros minutos). Al reconectar dio 200.
yay -S hyphanet falló compilando con JDK 26:
Unsupported class file major version 70 (Gradle 8.14.3 no soporta Java 26).sudo pacman -S jdk21-openjdk
yay -S hyphanet # hyphanet 0.7.5.1506-2 (AUR, compila desde fuente)
B41A6047FD6C57F9 de hyphanet.org)
para que pacman validara las fuentes.hyphanet con servicio freenet.service.sudo systemctl enable --now freenet.service
El nodo nuevo redirige a /wizard/; en vez del navegador se completó el
formulario /wiz/ por curl (opennet, conecta solo):
FP=$(curl -s http://127.0.0.1:8888/wiz/ | grep -oE 'formPassword" type="hidden" value="[^"]*"' | sed 's/.*value="//;s/"$//')
curl -s -o /dev/null -X POST http://127.0.0.1:8888/wiz/ \
--data-urlencode "formPassword=$FP" \
--data-urlencode "connectToStrangers=on" \
--data-urlencode "downLimit=4096" \
--data-urlencode "upLimit=2048" \
--data-urlencode "storage=1"
Resultado: hasCompletedWizard=true y opennet.enabled=true en
/etc/freenet/freenet.ini.
python3 -m venv ~/.fcpvenv
~/.fcpvenv/bin/pip install git+https://github.com/freenet/pyFreenet
venv persistente en ~/.fcpvenv (no se borra). Quedan disponibles
freesitemgr, fcpgenkey, fcpput, fcpgetdir, etc.
El repo completo pesa ~565 MB (incluye tinygrad-archive de ~301 MB), imposible
para Freenet. Se armó /tmp/imlauer con solo lo publicable:
mkdir -p /tmp/imlauer/blog
cd ~/imlauer.github.io
cp *.html *.css /tmp/imlauer/
cd blog && cp $(ls *.txt | grep -vE '^ZZZ|^:w' | grep -v 'test_airesacondicionados.txt') /tmp/imlauer/blog/
tinygrad-archive/, GeorgeHotzLinkedIn.png (6.1 MB),
2026geohot_comments_final.pdf (5.3 MB), george_hotz_linkedin.html (1.5 MB),
algunos .txt con nombres raros/no publicables.freesitemgr: manifiesto ~2 MB y ~896 archivos separados; copiamos
el blog tanto como *.txt individuales como en algún caso por bulks; quedó OK.mkdir -p ~/.freesitemgr
printf '\n\n\n\n' > /tmp/respuestas.txt
setsid nohup ~/.fcpvenv/bin/freesitemgr -v -l ~/freesitemgr.log add /tmp/imlauer < /tmp/respuestas.txt &
Resultado: el freesite imlauer quedó configurado y las inserciones en cola
(“All insert jobs are now on queue, ok”). Con 0 peers la subida real no progresa
(ver §7 “estado pendiente”).
Datos (guardados en ~/.freesitemgr/imlauer):
USK@GUETDi8oxvuY5VWnnpAIUa-FPKooO0bj-OBM0BgwYGw,CIhMEUnz1-SeZqd0UT0JpgleOzQ7y0Rv5r0rrUx-lAU,AQACAAE/imlauer/0USK@AKZlTzozMx~WC3M2ibL7WtvaTzrO8AAEWlzJ7QhtFyRQ,CIhMEUnz1-SeZqd0UT0JpgleOzQ7y0Rv5r0rrUx-lAU,AQECAAE/imlauer/0freesitemgr -c dio un bug de directorios inconsistentes → se usa la config
por defecto ~/.freesitemgr.freesitemgr add pide respuestas por stdin → se usó printf '\n\n\n\n'.freesitemgr guarda el progreso.| Archivo | Propósito |
|---|---|
~/montar-sitio-i2p.md |
Primer plan de I2P (y luego las 3 redes) |
/etc/systemd/system/imlauer-static.service |
Servidor web estático :8100 |
/etc/tor/torrc (líneas agregadas) |
Hidden service Tor → :8100 |
/etc/i2pd/tunnels.conf (agregado) |
Túnel eepsite imlauer-site → :8100 |
/var/lib/tor/imlauer_site/ |
Claves + hostname del onion |
/var/lib/i2pd/imlauer-site.dat |
Claves del eepsite |
/etc/freenet/freenet.ini |
Config Hyphanet (la reescribe el nodo) |
~/.fcpvenv/ |
venv con herramientas pyFreenet (freesitemgr) |
~/.freesitemgr/imlauer |
Estado y claves del freesite imlauer |
~/freesite-update.sh |
Script de re-insert del freesite (update imlauer) |
/tmp/imlauer |
Staging del freesite (~13 MB, regenerable) |
/tmp/freesitemgr.log (o ~/freesitemgr.log) |
Log de inserción |
~/imlauer.github.io/tutorial-sitios-ocultos.md |
Tutorial con el paso a paso de las 3 redes |
~/imlauer.github.io/BITACORA-montaje-sitios-ocultos.md |
Este documento |
Servicios habilitados de arranque:
systemctl is-enabled imlauer-static tor i2pd freenet # → enabled × 4
curl -s http://127.0.0.1:8888/network/ | grep -oiE 'connected to [0-9]+'
~/.fcpvenv/bin/freesitemgr -l ~/freesitemgr.log status imlauer
Se agregó al index principal ~/imlauer.github.io/index.html (después del
párrafo de email) una línea de mirrors con los enlaces a las tres redes:
<p><strong>Mirrors:</strong> also available on <a ...>Tor</a>
(<code>5n2dh4gafm6qskpd6wm4us2m7zsxbwj4yicmmyowy7n7i34d4jkq5uid.onion</code>),
<a ...>I2P</a> (<code>lj5uiypfgrbuelzguwlb7smx6lqmxrzyd2o6rbu5sdyjahsznyxq.b32.i2p</code>)
and <a ...>Freenet</a>. They only resolve inside each respective network.</p>
Se verificó con curl -s http://127.0.0.1:8100/ | grep -c b32.i2p → aparece.
Como Tor e I2P sirven la carpeta de git, este cambio ya quedó visible en las
tres redes de forma inmediata (en Freenet se verá en la próxima re-insert).
yay -G había descargado dentro del
repo (hyphanet/, python-pyfreenet3-git/). git status quedó limpio salvo
los archivos nuevos del tutorial y esta bitácora.index2.html no se tocó.curl -s -o /dev/null -w 'TOR:%{http_code}\n' --socks5-hostname 127.0.0.1:9050 http://5n2dh4gafm6qskpd6wm4us2m7zsxbwj4yicmmyowy7n7i34d4jkq5uid.onion/
curl -s -o /dev/null -w 'I2P:%{http_code}\n' -x http://127.0.0.1:4444 http://lj5uiypfgrbuelzguwlb7smx6lqmxrzyd2o6rbu5sdyjahsznyxq.b32.i2p/
Registro verificado con valores reales del nodo del usuario (2026-09-16).