Hay instancias que estan censuradas en https://search.joinpeertube.org (https://sepiasearch.org) por mas que esten agregadas en https://instances.joinpeertube.org no aparecen en los resultados.
Aparentemente la solucion de ese problema es esto:
¿Qué hace este programa?
Descubre instancias PeerTube rastreando la red de federación real, sin depender del índice oficial de Framasoft. Parte de nodos conocidos, les pregunta a quién siguen y quién los sigue, y así expande la lista en forma de grafo hasta encontrar todas las instancias accesibles — incluyendo las que están bloqueadas del índice oficial.
Cada instancia PeerTube expone dos endpoints públicos en su API REST:
GET /api/v1/server/following → lista de instancias que sigueGET /api/v1/server/followers → lista de instancias que la siguenEl programa arranca con una semilla (el índice oficial u otras instancias que vos le des), consulta esos dos endpoints en cada nodo, y por cada nodo nuevo que encuentra repite el proceso. Usa hasta 256 goroutines en paralelo. Al final imprime cuántos nodos encontró y cuántos son “nuevos” (no estaban en el índice oficial).
Importante: el código en Go también intenta postear los nodos nuevos al índice de Framasoft (instances.joinpeertube.org). Para tu caso (descubrir instancias censuradas) vas a querer filtrar la salida en lugar de dejar que haga el POST automático. Más adelante se explica cómo.
go (Go >= 1.18)gitjq para filtrar el output JSONsudo pacman -S go git
Verificar que Go está bien instalado:
go version
# Debería mostrar: go version go1.2x.x linux/amd64
git clone https://github.com/Jorropo/PeerTube-autoDiscover.git
cd PeerTube-autoDiscover
Revisar los archivos:
ls -la
# main.go go.mod README.md LICENSE .gitignore
Nota: el README menciona Python pero el código real está en Go. Ignorá las instrucciones de Python del README.
go build -o autodiscover main.go
Si todo sale bien, aparece el binario autodiscover en el directorio actual:
ls -lh autodiscover
# -rwxr-xr-x 1 tu_usuario tu_usuario 6.2M ... autodiscover
Esto usa instances.joinpeertube.org como punto de partida y rastrear toda la red que pueda alcanzar:
./autodiscover 2>errores.log | tee instancias_descubiertas.txt
stdout → lista de hostnames de instancias descubiertasstderr → logs del progreso y errores SSL (redirigidos a errores.log)tee → muestra en pantalla y guarda al mismo tiempoPasás uno o más nodos de arranque. Útil para explorar redes que no están en el índice oficial:
./autodiscover videos.icum.to 2>errores.log | tee instancias_descubiertas.txt
Múltiples semillas:
./autodiscover videos.icum.to otra-instancia.ejemplo.com 2>errores.log | tee instancias_descubiertas.txt
Abrí una segunda terminal y seguí los logs:
tail -f errores.log
Vas a ver líneas como:
2024/01/15 12:34:56 found nueva-instancia.com from videos.icum.to
2024/01/15 12:34:57 found otra-mas.net from nueva-instancia.com
...
2024/01/15 12:45:00 found 847 nodes, 612 good nodes and 235 new good nodes
Por defecto el programa intenta registrar los nodos nuevos en instances.joinpeertube.org. Si solo querés descubrir sin reportar nada, hay dos opciones:
# Bloquear salida hacia el servidor de Framasoft
sudo iptables -A OUTPUT -d instances.joinpeertube.org -j DROP
# Ejecutar el programa
./autodiscover videos.icum.to 2>errores.log | tee instancias.txt
# Después de terminar, quitar la regla
sudo iptables -D OUTPUT -d instances.joinpeertube.org -j DROP
Abrí main.go con tu editor y encontrá la función addToInstancesList. Reemplazá su contenido para que no haga nada:
func addToInstancesList(node string) {
defer wg.Done()
// POST desactivado - solo descubrimiento
fmt.Println(node)
}
Luego recompilá:
go build -o autodiscover main.go
Con este cambio, el programa imprime cada nodo descubierto en stdout a medida que los encuentra, en lugar de intentar registrarlos.
wc -l instancias.txt
videos.icum.to aparece en los resultadosgrep "videos.icum.to" instancias.txt
videos.icum.toEsto lo hacés directamente contra la API de esa instancia, sin necesitar el programa:
# Instancias que sigue videos.icum.to
curl -s "https://videos.icum.to/api/v1/server/following?count=100" | python3 -m json.tool
# Instancias que siguen a videos.icum.to
curl -s "https://videos.icum.to/api/v1/server/followers?count=100" | python3 -m json.tool
Si tenés jq instalado (sudo pacman -S jq), podés extraer solo los hostnames:
curl -s "https://videos.icum.to/api/v1/server/following?count=100" \
| jq -r '.data[].following.host'
sort -u instancias.txt > instancias_unicas.txt
Guardá este script como descubrir.sh:
#!/bin/bash
# descubrir.sh - Descubre instancias PeerTube desde una semilla
SEMILLA="${1:-}" # primer argumento, vacío = usa índice oficial
OUTFILE="instancias_$(date +%Y%m%d_%H%M%S).txt"
LOGFILE="errores_$(date +%Y%m%d_%H%M%S).log"
echo "=== PeerTube autoDiscover ==="
echo "Semilla: ${SEMILLA:-índice oficial}"
echo "Salida: $OUTFILE"
echo "Logs: $LOGFILE"
echo ""
if [ -n "$SEMILLA" ]; then
./autodiscover "$SEMILLA" 2>"$LOGFILE" | tee "$OUTFILE"
else
./autodiscover 2>"$LOGFILE" | tee "$OUTFILE"
fi
echo ""
echo "=== Resumen ==="
echo "Instancias encontradas: $(wc -l < "$OUTFILE")"
echo "Errores SSL (inofensivos): $(grep -c "ssl" "$LOGFILE" 2>/dev/null || echo 0)"
Darle permisos y ejecutar:
chmod +x descubrir.sh
# Con semilla específica
./descubrir.sh videos.icum.to
# Con el índice oficial como semilla
./descubrir.sh
Error: go: command not found
sudo pacman -S go
Muchos errores SSL en el log Son normales e inofensivos — son instancias con certificados mal configurados. El programa los cacha y sigue adelante.
El programa termina muy rápido sin resultados Probá con una semilla diferente:
./autodiscover framatube.org 2>errores.log
videos.icum.to no aparece en la red
Es posible que esa instancia no tenga follows/followers públicos o que haya deshabilitado esos endpoints. Verificá directamente:
curl -s "https://videos.icum.to/api/v1/server/following?count=1"
Si responde con {"total":0,"data":[]} o da error, esa instancia no está federada con nadie y el autodiscover no puede alcanzarla desde afuera.
El programa termina solo cuando agota todos los nodos alcanzables. Puede tardar varios minutos dependiendo de cuántas instancias haya en la red. El mensaje final en stderr dice cuántos encontró:
found 1247 nodes, 983 good nodes and 264 new good nodes
# 1. Instalar dependencias
sudo pacman -S go git
# 2. Clonar y compilar
git clone https://github.com/Jorropo/PeerTube-autoDiscover.git
cd PeerTube-autoDiscover
go build -o autodiscover main.go
# 3. Descubrir desde una instancia específica
./autodiscover videos.icum.to 2>errores.log | tee resultados.txt
# 4. Ver si la encontró
tail errores.log # progreso
grep "icum" resultados.txt # buscar en resultados