Berehala argituko dut ez naizela aditua arlo honetan, baina behin baino gehiagotan erakutsi dudala teknologia honen inguruan interesa, baina horrekin jolasten saiatzeak sarritan mina ematen zuen. Gaur berriro esperimentatzen hasi naiz eta partekatu nahiko nituzkeen emaitza batzuk lortu ditut. Laburbilduz, IPFS instalazio-prozesua eta ezaugarri batzuk deskribatuko dira (dena ubuntu-n egin zen, ez dut beste plataforma batzuetan probatu). IPFS zer den galdu bazenuen, zehatz-mehatz idatzita dago hemen: habr.com/eu/post/314768
Instalazio-
Esperimentuaren garbitasuna lortzeko, kanpoko zerbitzariren batean berehala instalatzea gomendatzen dut, tokiko moduan eta urruneko moduan lan egiteak arazo batzuk kontuan hartuko baititugu. Gero, nahi izanez gero, luzaroan ez da eraitsiko, ez dago askorik.
Oharra: hobe da gehien erabili behar duen erabiltzailearen izenean IPFS instalatzea. Kontua da jarraian bidez muntatzeko aukera aztertuko dugula FUSE eta sotiltasunak daude.
cd ~
curl -O https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz
tar xvf go1.12.9.linux-amd64.tar.gz
sudo chown -R root:root ./go
sudo mv go /usr/local
rm go1.12.9.linux-amd64.tar.gz
Horren ondoren, komando hauek exekutatu ditzakezu:
ipfs-eguneratu bertsioak - Deskargatzeko eskuragarri dauden bertsio guztiak ikusteko. ipfs-eguneratu bertsioa - unean instalatutako bertsioa ikusteko (IPFS instalatuta daukagun arte, ez da bat ere izango). ipfs-update instalatu azkena - instalatu IPFS-ren azken bertsioa. Azkenengoaren ordez, hurrenez hurren, eskuragarri daudenen zerrendatik nahi duzun edozein bertsio zehaztu dezakezu.
ipfs instalatzen
ipfs-update install latest
check
ipfs --version
Zuzenean instalazioarekin termino orokorrean dena.
Hasi IPFS
Hasieraketa
Lehenik eta behin hasieratzea egin behar duzu.
ipfs init
Erantzun gisa, honelako zerbait jasoko duzu:
ipfs init
initializing IPFS node at /home/USERNAME/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmeCWX1DD7HnXXXXXXXXXXXXXXXXXXXXXXXXxxx
to get started, enter:
ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
Hello and Welcome to IPFS!
██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗ ███████╗
██║██╔═══╝ ██╔══╝ ╚════██║
██║██║ ██║ ███████║
╚═╝╚═╝ ╚═╝ ╚══════╝
If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!
-------------------------------------------------------
| Warning: |
| This is alpha software. Use at your own discretion! |
| Much is missing or lacking polish. There are bugs. |
| Not yet secure. Read the security notes for more. |
-------------------------------------------------------
Check out some of the other files in this directory:
./about
./help
./quick-start <-- usage examples
./readme <-- this file
./security-notes
Hemen, nire ustez, hasten da interesgarria. Instalazio fasean dauden mutilak beren teknologiak erabiltzen hasiak dira dagoeneko. Proposatutako hash QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv ez da zuretzat bereziki sortu, bertsioan josi baizik. Hau da, kaleratu baino lehen, ongietorri testu bat prestatu zuten, IPFSra isuri eta helbidea instalatzaileari gehitu zioten. Oso polita iruditzen zait. Eta fitxategi hau (zehatzago, karpeta osoa) orain lokalean ez ezik, atebide ofizialean ere ikus daiteke. ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv. Aldi berean, ziur egon zaitezke karpetaren edukia ez dela inola ere aldatu, izan ere, aldatu izan balitz, hash-a ere aldatuko litzateke.
Bide batez, kasu honetan, IPFS-k antzekotasun batzuk ditu bertsio-kontroleko zerbitzariarekin. Karpetaren iturburu-fitxategietan aldaketak egiten badituzu eta berriro karpeta IPFSra isurtzen baduzu, helbide berri bat jasoko du. Aldi berean, karpeta zaharra ez da inora joango horrela eta bere aurreko helbidean egongo da eskuragarri.
Abio zuzena
ipfs daemon
Horrelako erantzuna jaso beharko zenuke:
ipfs daemon
Initializing daemon...
go-ipfs version: 0.4.22-
Repo version: 7
System version: amd64/linux
Golang version: go1.12.7
Swarm listening on /ip4/x.x.x.x/tcp/4001
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
Interneti ateak irekitzea
Erreparatu bi lerro hauei:
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Orain, IPFS lokalean instalatu baduzu, orduan IPFS interfazeetara sartuko zara tokiko helbideak erabiliz eta dena eskuragarri izango duzu (Adibidez, localhost:5001/webui/). Baina kanpoko zerbitzari batean instalatuta dagoenean, lehenespenez, ateak Interneterako itxita daude. Bi pasabideak:
Orain arte, bi portuak (5001 eta 8080) esperimentuak egiteko ireki daitezke, baina borroka zerbitzari batean, noski, 5001 ataka suebaki batekin itxi behar da. 4001 ataka ere badago, beste kideek zu aurkitu ahal izateko beharrezkoa dena. Kanpoko eskaerei zabalik utzi behar da.
Ireki ~/.ipfs/config editatzeko eta aurkitu lerro hauek bertan:
Aldatu 127.0.0.1 zure zerbitzariaren ip-ra eta gorde fitxategia, ondoren berrabiarazi ipfs (gelditu exekutatzen ari den komandoa Ctrl+C-rekin eta hasi berriro).
Lortu beharko luke
...
WebUI: http://ip_вашего_сервера:5001/webui
Gateway (readonly) server listening on /ip4/ip_вашего_сервера/tcp/8080
Orain kanpoko interfazeak erabilgarri egon beharko lirateke.
Webui-k zuretzat funtzionatzen badu, IPFS ezarpenak zuzenean alda daitezke bertan, estatistikak ikustea barne, baina jarraian konfigurazio-aukerak zuzenean kontuan hartuko ditut konfigurazio-fitxategiaren bidez, oro har ez da kritikoa. Hobe da konfigurazioa zehatz-mehatz non dagoen eta harekin zer egin behar den gogoratzea, bestela web-aurpegiak funtzionatzen ez badu, zailagoa izango da.
Web interfaze bat konfiguratzea zure zerbitzariarekin lan egiteko
Hona hemen lehen zuloa, hiru ordu inguru iraun zuena.
IPFS kanpoko zerbitzari batean instalatu baduzu, baina IPFS lokalean instalatu edo exekutatu ez baduzu, web interfazeko /webui-ra zoazenean, konexio-errore bat ikusiko zenuke:
Kontua da webuik, nire ustez, oso anbiguoki funtzionatzen duela. Lehenik eta behin, interfazea irekita dagoen zerbitzariaren APIra konektatzen saiatzen da (arakatzailearen helbidean oinarrituta, noski). eta hor ez badu funtzionatzen, tokiko atebidera konektatzen saiatzen da. Eta IPFS lokalean exekutatzen baduzu, webui-k ondo funtzionatuko dizu, zuk bakarrik IPFS lokalarekin lan egingo duzu, eta ez kanpokoa, webui kanpoko zerbitzari batean ireki duzun arren. Gero fitxategiak kargatzen dituzu, baina arrazoiren batengatik ez dituzu horrela ikusten kanpoko zerbitzari batean...
Eta lokalean exekutatzen ez bada, konexio errore bat jasoko dugu. Gure kasuan, errorea ziurrenik CORS delakoa da, webui-k ere adierazten duena, konfigurazio bat gehitzea iradokitzen duena.
ipfs berrabiarazten dugu eta webui arrakastaz konektatu dela ikusten dugu (edozein kasutan, beharko luke, kanpotik egindako eskaeren ateak ireki badituzu, goian azaldu bezala).
Orain karpetak eta fitxategiak zuzenean igo ditzakezu web interfazearen bidez, baita zure karpetak sortu ere.
FUSE fitxategi-sistema muntatzea
Hona hemen ezaugarri nahiko interesgarri bat.
Fitxategiak (baita karpetak ere), web interfazearen bidez ez ezik, zuzenean terminalean ere gehi ditzakegu, adibidez.
ipfs add test -r
added QmfYuz2gegRZNkDUDVLNa5DXzKmxxxxxxxxxx test/test.txt
added QmbnzgRVAP4fL814h5mQttyqk1aURxxxxxxxxxxxx test
Azken hash-a erro karpetaren hash-a da.
Hash hau erabiliz, karpeta bat ireki dezakegu edozein ipfs nodotan (gure nodoa aurkitu eta edukia lor dezakeena), 5001 edo 8080 atakan web interfazean edo ipfs bidez lokalean.
ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx
QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt
Baina oraindik ireki dezakezu karpeta arrunt bat bezala.
Sor ditzagun bi karpeta errotik eta eman ditzagun eskubideak gure erabiltzaileari.
Karpetak beste leku batzuetan sor ditzakezu eta horien bidea zehaztu ipfs daemon parametroen bidez -mount -mount-ipfs /ipfs_path -mount-ipns /ipns_path
Orain karpeta honetatik irakurtzea ezohikoa da.
ls -la /ipfs
ls: reading directory '/ipfs': Operation not permitted
total 0
Hau da, ez dago karpeta honen errorako sarbide zuzenik. Baina edukia lor dezakezu, hash-a ezagututa.
ls -la /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx
total 0
-r--r--r-- 1 root root 10 Aug 31 07:03 test.txt
cat /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx/test.txt
test
test
Aldi berean, auto-osaketa ere karpeta barruan funtzionatzen du bidea zehazten denean.
Goian esan dudan bezala, halako muntaketarekin txukuntasunak daude: lehenespenez, muntatutako FUSE karpetak uneko erabiltzailearentzat bakarrik daude eskuragarri (root-ek ere ezingo du horrelako karpetatik irakurri, sistemako beste erabiltzaile batzuk ahaztu gabe). Karpeta hauek beste erabiltzaile batzuen eskura jarri nahi badituzu, konfigurazioan "FuseAllowOther": false "FuseAllowOther": true aldatu behar duzu. Baina hori ez da guztia. IPFS root gisa exekutatzen baduzu, dena ondo dago. Eta erabiltzaile arrunt baten izenean (nahiz eta sudo), orduan errore bat jasoko duzu
mount helper error: fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf
Kasu honetan, /etc/fuse.conf editatu behar duzu #user_allow_other lerroari iruzkinak kenduz.
Horren ondoren, berrabiarazi ipfs.
FUSE-ren arazo ezagunak
Arazoa behin baino gehiagotan nabaritu da ipfs muntaketarekin berrabiarazi ondoren (eta agian beste kasu batzuetan), /ipfs eta /ipns muntatze-puntuak erabilgarri ez direla. Ez dago haietarako sarbiderik, eta ls -la /ipfs erakusten du ???? eskubideen zerrendan.
Irtenbide hau aurkitu du:
fusermount -z -u /ipfs
fusermount -z -u /ipns
Ondoren, berrabiarazi ipfs.
Zerbitzu bat gehitzea
Noski, terminalean martxan jartzea hasierako probetarako soilik da egokia. Borroka moduan, daemonak automatikoki abiatu beharko luke sistema abiaraztean.
Sudo-ren izenean, sortu /etc/systemd/system/ipfs.service fitxategia eta idatzi bertan:
ERABILTZAILEA, noski, zure erabiltzailearekin ordezkatu behar da (eta agian ipfs programaren bide osoa ezberdina izango da zuretzat (bide osoa zehaztu behar duzu)).
Zerbitzua aktibatzen dugu.
sudo systemctl enable ipfs.service
Zerbitzua hasten dugu.
sudo service ipfs start
Zerbitzuaren egoera egiaztatzea.
sudo service ipfs status
Esperimentuaren garbitasuna lortzeko, etorkizunean zerbitzaria berrabiarazi ahal izango da ipfs automatikoki behar bezala abiarazten dela egiaztatzeko.
Guretzat ezagunak diren jaiak gehitzea
Demagun egoera bat non IPFS nodoak instalatuta ditugun kanpoko zerbitzari batean zein lokalean. Kanpoko zerbitzari batean, fitxategi batzuk gehitzen ditugu eta IPFS bidez lortzen saiatzen gara lokalean CID bidez. Zer gertatuko da? Jakina, tokiko zerbitzariak ziurrenik ez daki gure kanpoko zerbitzariari buruz ezer eta CID bidez fitxategia bilatzen saiatuko da eskuragarri dauden IPFS pareko guztiei "galdetuz" (horiekin jada "ezagutzea" lortu du). Horiek, berriz, besteei galdetuko diete. Eta horrela, fitxategia aurkitu arte. Egia esan, gauza bera gertatzen da fitxategia atebide ofizialetik lortzen saiatzen garenean ipfs.io. Zortea baduzu, fitxategia segundo gutxitan aurkituko duzu. Eta ez bada, minutu gutxiren buruan ere ez da aurkituko, eta horrek asko eragiten du laneko erosotasunean. Baina badakigu non agertuko den fitxategi hau lehenik. Beraz, zergatik ez diogu berehala esaten gure tokiko zerbitzariari "Bilatu bertan lehenik"? Antza denez, hori egin daiteke.
1. Urruneko zerbitzarira joan eta ~/.ipfs/config konfigurazioan begiratuko dugu
2. Exekutatu sudo service ipfs status eta bilatu Swarm sarrerak bertan, adibidez:
Swarm announcing /ip4/ip_вашего_сервера/tcp/4001
3. Hortik "/ip4/ip_your_server/tcp/4001/ipfs/$PeerID" formako helbide orokorra gehitzen dugu.
4. Fidagarritasuna lortzeko, helbide hau parekideei gehitzen saiatuko gara gure tokiko webuiaren bidez.
5. Dena ondo badago, ireki tokiko konfigurazioa ~ / .ipfs / config, bilatu bertan "Bootstrap": [...
eta gehitu lehenik jasotako helbidea matrizeari.
Berrabiarazi IPFS.
Orain gehi dezagun fitxategia kanpoko zerbitzarian eta saia gaitezen lokalean eskatzen. Azkar hegan egin beharko luke.
Baina funtzionalitate hau oraindik ez da egonkorra. Ulertzen dudanez, Bootstrap-en pareko baten helbidea zehazten badugu ere, ipfs-ek parekideekin duten konexio aktiboen zerrenda aldatzen du funtzionamenduan zehar. Edonola ere, abian da festa iraunkorrak zehazteko aukeraren inguruko eztabaida eta nahiak Hemen eta badirudi ustez gehitu funtzionalitate batzuk [posta elektroniko bidez babestua]+
Uneko parekideen zerrenda webuian zein terminalean ikus daiteke.
Funtzionalitate hau hobetu arte, tresna bat idatz dezakezu nahi duzun parekidearekin konexioa egiaztatzeko eta, hala ez bada, konexio bat gehitzeko.
Arrazoiketa
Dagoeneko IPFS ezagutzen dutenen artean, IPFSren aldeko eta aurkako argudioak daude. Funtsean, atzo eztabaida eta IPFS-n berriro sakontzera bultzatu ninduen. Eta goian aipatutako eztabaidari dagokionez: ezin dut esan hitz egin zutenen edozein argudioren aurka gogor aurka egiten dudanik (ez nago ados programatzaile batek eta erdiek IPFS erabiltzen dutelako bakarrik). Oro har, biek arrazoi dute beren erara (batez ere txekeei buruzko iruzkinak pentsarazten dizu). Baina balorazio morala eta juridikoa baztertzen badugu, nork emango du teknologia honen balorazio teknikoa? Pertsonalki, nolabaiteko barne-sentsazioa daukat: "hau zalantzarik gabe egin behar da, aurreikuspen batzuk ditu". Baina zergatik zehazki, ez dago formulazio argirik. Esaterako, dauden tresna zentralizatuei erreparatuz gero, alderdi askotan urrun daude (egonkortasuna, abiadura, kudeagarritasuna, etab.). Hala ere, badut zentzua dirudien pentsamendu bat eta nekez inplementa daitekeena horrelako sistema deszentralizaturik gabe. Noski, gogorregi ari naiz kulunkatzen, baina horrela formulatuko nuke: Interneten informazioa zabaltzeko printzipioa aldatu behar da.
Utzidazu azaltzen. Pentsatzen baduzu, orain, “espero dut eman diodanak babestuko duela eta ez galdu edo jaso nahi ez dutenek” printzipioaren arabera banatutako informazioa dugu. Adibide gisa, erraza da hainbat posta-zerbitzu, hodeiko biltegiratze eta abar kontuan hartzea. Eta zertan geratzen gara? Habré zentroan Informazioaren Segurtasuna lehen lerroan dago eta ia egunero jasotzen dugu mundu mailako beste filtrazio bati buruzko berriak. Printzipioz, gauza interesgarrienak <ironia> zoragarrian ageri dira Artikulu Ia amaitu da uda. Ez da ia filtratu gabeko daturik geratzen. Hau da, Interneteko erraldoi nagusiak gero eta handiagoak dira, gero eta informazio gehiago pilatzen ari dira, eta halako filtrazioak informazio-leherketa atomiko moduko bat dira. Hau ez da inoiz gertatu, eta hemen dago berriro. Aldi berean, askok arriskuak daudela ulertzen duten arren, euren datuak hirugarren enpresei fidatzen jarraituko dute. Lehenik eta behin, ez dago alternatiba handirik, eta bigarrenik, zulo guztiak adabakitu dituztela agintzen dute eta hori ez dela berriro gertatuko.
Zein aukera ikusten dut? Datuak hasiera batean modu irekian banatu behar direla iruditzen zait. Baina irekitasuna kasu honetan ez du esan nahi dena irakurtzeko erraza izan behar denik. Biltegiratze eta banaketaren irekitasunaz ari naiz, baina ez irakurketan erabateko irekitasunaz. Suposatzen dut informazioa gako publikoekin banatu behar dela. Azken finean, gako publiko/pribatuen printzipioa zaharra da jada, ia Internet bezala. Informazioa isilpekoa ez bada eta zirkulu zabal baterako pentsatuta badago, berehala jartzen da gako publiko batekin (baina oraindik zifratuta, edonork deszifratu dezake eskuragarri dagoen gakoarekin). Eta ez bada, orduan gako publikorik gabe jartzen da, eta gakoa bera informazio horretarako sarbidea izan behar duen horretara transferitzen da. Aldi berean, irakurri behar duenak giltza bat besterik ez luke izan behar, eta informazio hori nondik lortu, ez luke benetan igo behar - saretik ateratzen du (hau da edukien arabera banatzeko printzipio berria, ez arabera). helbidea).
Horrela, eraso masibo bat egiteko, erasotzaileek gako pribatu kopuru handi bat lortu beharko dute, eta hori nekez egingo da leku batean. Zeregin hau, nik ikusten dudanez, zerbitzu jakin bat hackeatzea baino zailagoa da.
Eta hemen beste arazo bat itxita dago: egilearen berrespena. Orain Interneten gure lagunek idatzitako aipu asko aurki ditzakezu. Baina non dago bermea beraiek idatzi zituztenak? Orain, halako erregistro bakoitza sinadura digital batekin batera egongo balitz, askoz errazagoa izango litzateke. Eta ez du axola non dagoen informazio hori, gauza nagusia sinadura da, eta hori, noski, zaila da faltsutzea.
Eta hona hemen interesgarria dena: IPFS-k dagoeneko enkriptatzeko tresnak daramatza (azken finean, blockchain teknologian eraikia dago). Gako pribatua berehala zehazten da konfigurazioan.
Ez naiz segurtasun espezialista eta ezin dut zehatz-mehatz nola erabili behar bezala, baina iruditzen zait gako hauek IPFS nodoen arteko truke mailan erabiltzen direla. Eta, gainera js-ipfs eta adibide gisako proiektuak orbita-dbzeinetan lan egiten duen orbita.txat. Hau da, teorikoki, gailu bakoitza (mugikorra eta ez bakarrik) erraz horni daiteke bere zifratze-deszifratze makinaz. Kasu honetan, bakoitzak bere gako pribatuak gordetzeaz arduratzea besterik ez da geratzen, eta bakoitzak bere segurtasunaren ardura izango du, eta ez da beste giza faktore baten bahitua izango Interneteko erraldoi super ezagun batean.
Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.
Entzun al duzu IPFSri buruz lehenago?
Inoiz ez dut IPFSrik entzun, baina interesgarria dirudi
Ez dut entzun eta ez dut entzun nahi
Entzun baina ez interesatu
Entzun, baina ez ulertu, baina orain interesgarria dirudi
IPFS aktiboki erabiltzen dut denbora luzez.
69 erabiltzailek eman dute botoa. 13 erabiltzaile abstenitu ziren.