Kubo: Implementación de IPFS en GO
La primera implementación de IPFS.
Kubo fue la primera implementación de IPFS y es la más utilizada en la actualidad. Implementación del sistema de archivos interplanetario : el estándar Web3 para direccionamiento de contenido, interoperable con HTTP. Así, impulsado por los modelos de datos de IPLD y libp2p para la comunicación en red. Kubo está escrito en Go.
Conjunto de características
Ejecuta un nodo IPFS como un servicio de red que forma parte de LAN y WAN DHT
Funcionalidad HTTP Gateway ( /ipfs
y /ipns
) para recuperación de contenido confiable y no confiable
Implementación de cliente y servidor de enrutamiento HTTP V1 ( /routing/v1
) para búsquedas de enrutamiento delegado
HTTP Kubo RPC API ( /api/v0
) para acceder y controlar el demonio
Interfaz de línea de comandos basada en ( /api/v0
) API RPC
WebUI para gestionar el nodo Kubo
Soporte de bloqueo de contenido para operadores de nodos públicos
Ver Lista
IPFS es un sistema de archivos global, versionado y de igual a igual. Combina buenas ideas de sistemas anteriores como Git, BitTorrent, Kademlia, SFS y la Web. Es como un único enjambre de BitTorrent, intercambiando objetos git. IPFS proporciona una interfaz tan simple como la web HTTP, pero con permanencia incorporada. También puedes montar el mundo en /ipfs.
Para obtener más información, consulte: https://docs.ipfs.tech/concepts/what-is-ipfs/
Antes de abrir un problema, considere usar una de las siguientes ubicaciones para asegurarse de abrir su hilo en el lugar correcto:
Errores de implementación de kubo (anteriormente llamado go-ipfs) en este repositorio.
Problemas de documentación en problemas de ipfs/docs.
Diseño IPFS en temas de ipfs/specs.
Exploración de nuevas ideas en temas de ipfs/notes.
Haga preguntas y conozca al resto de la comunidad en el Foro IPFS.
O chatea con nosotros.
Hitos en GitHub
¿Qué es Kubo?
¿Qué es IPFS?
Próximos hitos
Tabla de contenido
Problemas de seguridad
Requisitos mínimos del sistema
Instalar
Instalar ir
Descargar y compilar IPFS
Solución de problemas
Compilación cruzada
Puertos Mac
Nada
cerveza casera
chocolateado
Cuchara
ArchLinux
Gentoo Linux
Nada
solus
openSUSE
guix
Quebrar
PPA de Ubuntu
Actualizando
Usando actualización de ipfs
Descarga de compilaciones usando IPFS
Estibador
Binarios oficiales prediseñados
Paquetes de Linux no oficiales
Paquetes no oficiales de Windows
Paquetes no oficiales de MacOS
Construir desde la fuente
Empezando
Uso
Algunas cosas para probar
Solución de problemas
Paquetes
Desarrollo
Mapa de Subsistemas Implementados
CLI, HTTP-API, diagrama de arquitectura
Pruebas
Dependencias de desarrollo
Notas del desarrollador
Información del mantenedor
Contribuyendo
Licencia
Siga SECURITY.md
.
IPFS puede ejecutarse en la mayoría de los sistemas Linux, macOS y Windows. Recomendamos ejecutarlo en una máquina con al menos 4 GB de RAM y 2 núcleos de CPU (kubo es altamente paralelo). En sistemas con menos memoria, es posible que no sea completamente estable y usted corre bajo su propio riesgo.
Las instrucciones de descarga canónicas para IPFS se encuentran en: https://docs.ipfs.tech/install/. Se recomienda encarecidamente que siga esas instrucciones si no está interesado en trabajar en el desarrollo de IPFS.
Las imágenes oficiales están publicadas en https://hub.docker.com/r/ipfs/kubo/:
? Lanzamientos
Las etiquetas latest
y release
siempre apuntan a la última versión estable.
vN.NN
apunta a una etiqueta de versión específica
Estas son imágenes de grado de producción.
? También proporcionamos compilaciones experimentales para desarrolladores.
master-latest
siempre apunta al HEAD
de la rama master
master-YYYY-DD-MM-GITSHA
apunta a una confirmación específica de la rama master
Los desarrolladores utilizan estas etiquetas para pruebas internas, no están destinadas a usuarios finales ni a uso de producción.
$ docker pull ipfs/kubo:último$ docker run --rm -it --net=host ipfs/kubo:último
Para personalizar su nodo, pase la configuración necesaria a través de -e
o montando scripts en /container-init.d
.
Obtenga más información en https://docs.ipfs.tech/install/run-ipfs-inside-docker/
Los binarios oficiales están publicados en https://dist.ipfs.tech#kubo:
De eso:
Haga clic en el botón azul "Descargar Kubo" en el lado derecho de la página.
Abra/extraiga el archivo.
Mueva kubo ( ipfs
) a su ruta ( install.sh
puede hacerlo por usted).
Si no puede acceder a dist.ipfs.tech, también puede descargar kubo (go-ipfs) desde:
página de lanzamientos de GitHub de este proyecto
/ipns/dist.ipfs.tech
en la puerta de enlace dweb.link
IPFS tiene una herramienta de actualización a la que se puede acceder a través de ipfs update
. La herramienta no se instala junto con IPFS para mantener esa lógica independiente del código base principal. Para instalar la herramienta ipfs-update
, descárguela aquí.
Enumere las versiones disponibles de la implementación de Kubo (go-ipfs):
$ ipfs gato /ipns/dist.ipfs.tech/kubo/versions
Luego, para ver las compilaciones disponibles para una versión del comando anterior ( $VERSION
):
$ ipfs ls /ipns/dist.ipfs.tech/kubo/$VERSIÓN
Para descargar una compilación determinada de una versión:
$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # compilación darwin de 32 bits$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_ $VERSION_darwin-amd64.tar.gz # compilación darwin de 64 bits$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd compilación de 64 bits$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux- 386.tar.gz # compilación de linux de 32 bits $ ipfs obtener /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64.tar.gz # compilación de linux de 64 bits$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux- arm.tar.gz # linux arm build$ ipfs obtener /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # compilación de Windows de 64 bits
ArchLinux
Gentoo Linux
Nada
solus
openSUSE
guix
Quebrar
PPA de Ubuntu
# pacman -S kubo
https://wiki.gentoo.org/wiki/Kubo
# emerge -a net-p2p/kubo
https://packages.gentoo.org/packages/net-p2p/kubo
Con el administrador de paquetes puramente funcional Nix puedes instalar kubo (go-ipfs) así:
$ nix-env -i kubo
También puede instalar el paquete utilizando su nombre de atributo, que también es kubo
.
Paquete para Solus
$ sudo eopkg install kubo
También puedes instalarlo a través del centro de software de Solus.
Paquete comunitario para go-ipfs
El paquete comunitario para go-ipfs no está desactualizado.
Ya no es compatible; consulte la justificación en kubo#8688.
Página de inicio de PPA en Launchpad.
sudo add-apt-repository ppa:twdragon/ipfs actualización sudo apta sudo apto instalar ipfs-kubo
sudo suecho 'deb https://ppa.launchpadcontent.net/twdragon/ipfs/ubuntu <> main' >> /etc/apt/sources.list.d/ipfsecho 'deb-src https://ppa. launchpadcontent.net/twdragon/ipfs/ubuntu < > principal' >> /etc/apt/sources.list.d/ipfsexitsudo apt actualizar sudo apto instalar ipfs-kubo
donde <
es el nombre en clave de su distribución de Ubuntu (por ejemplo, jammy
para 22.04 LTS). Durante la primera instalación, el script de mantenimiento del paquete puede preguntarle automáticamente qué perfil de red, modelo de contabilidad de CPU y/o archivo de configuración de nodo existente desea utilizar.
NOTA : este método también puede funcionar con cualquier distribución compatible basada en Debian que tenga libc6
dentro y APT como administrador de paquetes.
chocolateado
Cuchara
Ya no es compatible; consulte la justificación en kubo#9341.
Scoop proporciona kubo como kubo
en su sección de "extras".
PD> cubo con cuchara agregar extras PD> instalar primicia kubo
Puertos Mac
Nada
cerveza casera
El paquete ipfs actualmente apunta a kubo (go-ipfs) y se encuentra en mantenimiento.
$ sudo port install ipfs
En macOS puedes utilizar el administrador de paquetes puramente funcional Nix:
$ nix-env -i kubo
También puede instalar el paquete utilizando su nombre de atributo, que también es kubo
.
También se mantiene una fórmula Homebrew ipfs.
$ brew install --formula ipfs
El sistema de compilación de kubo requiere Go y algunas herramientas de compilación POSIX estándar:
hacer GNU
git
GCC (o algún otro compilador C compatible) (opcional)
Para compilar sin GCC, compila con CGO_ENABLED=0
(por ejemplo, make build CGO_ENABLED=0
).
Si necesita actualizar: descargue la última versión de Go.
Necesitará agregar los directorios bin de Go a su variable de entorno $PATH
, por ejemplo, agregando estas líneas a su /etc/profile
(para una instalación en todo el sistema) o $HOME/.profile
:
export PATH=$PATH:/usr/local/go/bin export PATH=$PATH:$GOPATH/bin
(Si tiene problemas, consulte las instrucciones de instalación de Go).
$ git clone https://github.com/ipfs/kubo.git $ cd kubo $ make install
Alternativamente, puede ejecutar make build
para compilar el binario go-ipfs (almacenándolo en cmd/ipfs/ipfs
) sin instalarlo.
NOTA: Si recibe un error como "error fatal: stdlib.h: No existe tal archivo o directorio", le falta un compilador de C. Vuelva a ejecutar make
con CGO_ENABLED=0
o instale GCC.
Compilar para una plataforma diferente es tan simple como ejecutar:
make build GOOS=myTargetOS GOARCH=myTargetArchitecture
Hay instrucciones separadas disponibles para compilar en Windows.
Se requiere git
para go get
a buscar todas las dependencias.
Los administradores de paquetes suelen contener paquetes golang
desactualizados. Asegúrese de que go version
informe al menos 1.10. Consulte arriba para saber cómo instalar go.
Si está interesado en el desarrollo, instale también las dependencias de desarrollo.
Las finalizaciones de comandos de Shell se pueden generar con uno de los subcomandos ipfs commands completion
. Lea docs/command-completion.md para obtener más información.
Consulte la carpeta misc para saber cómo conectar IPFS a systemd o cualquier sistema de inicio que utilice su distribución.
Para comenzar a usar IPFS, primero debe inicializar los archivos de configuración de IPFS en su sistema, esto se hace con ipfs init
. Consulte ipfs init --help
para obtener información sobre los argumentos opcionales que necesita. Una vez completada la inicialización, puede usar ipfs mount
, ipfs add
y cualquiera de los otros comandos para explorar.
Prueba básica de que 'ipfs funciona' localmente:
echo "hello world" > hello ipfs add hello # This should output a hash string that looks something like: # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o ipfs cat
Para la interacción programática con Kubo, consulte nuestra lista de clientes HTTP/RPC.
Si ha instalado IPFS anteriormente y tiene problemas para que funcione una versión más nueva, intente eliminar (o hacer una copia de seguridad en otro lugar) de su directorio de configuración de IPFS (~/.ipfs de forma predeterminada) y vuelva a ejecutar ipfs init
. Esto reinicializará el archivo de configuración a sus valores predeterminados y borrará el almacén de datos local de cualquier entrada incorrecta.
Dirija sus preguntas generales y solicitudes de ayuda a nuestros foros.
Si cree que ha encontrado un error, consulte la lista de problemas y, si no ve su problema allí, venga a hablar con nosotros en el chat de Matrix o presente su propio problema.
Consulte la documentación de IPFS en GO.
Algunos lugares para comenzar con el código base:
Archivo principal: ./cmd/ipfs/main.go
Comandos CLI: ./core/commands/
Bitswap (el motor de comercio de datos): go-bitswap
libp2p
libp2p: https://github.com/libp2p/go-libp2p
DHT: https://github.com/libp2p/go-libp2p-kad-dht
IPFS: El comando Add
desmitificado
WIP : Este es un diagrama de arquitectura de alto nivel de los diversos subsistemas de esta implementación específica. Estar actualizado sobre cómo interactúan. Cualquiera que tenga sugerencias puede comentar aquí sobre cómo podemos mejorar esto.
Origen
Descripción: Punto significa "probablemente desaparezca". Las partes "heredadas" son envoltorios finos que envuelven algunos comandos para traducir entre el nuevo sistema y el antiguo. Las partes atenuadas en el diagrama del "demonio" están ahí para mostrar que el código es todo el mismo, solo que activamos y desactivamos algunas partes dependiendo de si estamos ejecutando en el cliente o en el servidor.
make test
Si realiza cambios en los buffers de protocolo, necesitará instalar el compilador de protocolos.
Encuentre más documentación para desarrolladores en docs
Kubo es mantenido por Shipyard.
Este repositorio es parte del triaje GO Triage de Shipyard.
Proceso de liberación
Nosotros ❤️ a todos nuestros colaboradores; ¡Este proyecto no sería lo que es sin ti! Si desea ayudar, consulte CONTRIBUTING.md.
Este repositorio se rige por el Código de conducta de IPFS.
Los miembros de la comunidad IPFS brindan soporte a Kubo en la categoría del foro de discusión aquí.
¿Necesita ayuda con el propio IPFS? Aprenda dónde obtener ayuda y soporte en https://ipfs.tech/help.
Este proyecto tiene doble licencia según los términos de Apache 2.0 y MIT:
Licencia Apache, Versión 2.0, (LICENCIA-APACHE o http://www.apache.org/licenses/LICENSE-2.0)
Licencia MIT (LICENCIA-MIT o http://opensource.org/licenses/MIT)