Ik sil fuortdaliks dúdlik meitsje dat ik gjin saakkundige bin op dit mêd, mar ik haw mear as ien kear ynteresse yn dizze technology sjen litten, mar besykje te spyljen mei it faak feroarsake wat pine. Hjoed begon ik wer te eksperimintearjen en krige wat resultaten dy't ik graach diele soe. Koartsein, it IPFS-ynstallaasjeproses en guon funksjes sille wurde beskreaun (alles waard dien op ubuntu, ik haw it net besocht op oare platfoarms). As jo misse wat IPFS is, wurdt it hjir yn wat detail skreaun: habr.com/en/post/314768
ynstelling
Foar de suverens fan it eksperimint stel ik foar om it direkt te ynstallearjen op ien of oare eksterne server, om't wy wat falkûlen sille beskôgje mei wurkjen yn lokale modus en op ôfstân. Dan wurdt it as winske noch lang net sloopt, folle is der net.
Opmerking: it is better om IPFS te ynstallearjen út namme fan 'e brûker dy't it it meast brûke moat. It feit is dat hjirûnder wy sille beskôgje de opsje fan mounting fia LONT en der binne subtiliteiten.
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
Ik vond de ynstallaasjemetoade it meast ipfs update.
Ynstallearje it mei it kommando
go get -v -u github.com/ipfs/ipfs-update
Dêrnei kinne jo de folgjende kommando's útfiere:
ipfs-update ferzjes - om alle beskikbere ferzjes te sjen foar download. ipfs-update ferzje - om de op it stuit ynstalleare ferzje te sjen (oant wy IPFS ynstalleare hawwe, sil it gjin wêze). ipfs-update ynstallearje lêste - ynstallearje de lêste ferzje fan IPFS. Ynstee fan respektivelik lêste kinne jo elke winske ferzje opjaan út 'e list mei beskikbere.
It ynstallearjen fan ipfs
ipfs-update install latest
Kontrolearje
ipfs --version
Direkt mei de ynstallaasje yn algemiene termen alles.
Start IPFS
Inisjalisaasje
Earst moatte jo inisjalisaasje útfiere.
ipfs init
As antwurd krije jo sa'n ding:
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
Hjir begjint neffens my it nijsgjirrige. De jonges yn it ynstallaasjestadium begjinne al har eigen technologyen te brûken. De foarnommen hash QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv wurdt net oanmakke spesifyk foar jo, mar genaaid yn de release. Dat is, foar de frijlitting, hawwe se in wolkomtekst tariede, it yn IPFS gien en it adres tafoege oan it ynstallearder. Ik tink it is hiel cool. En dit bestân (noch krekter de hiele map) kin no net allinnich lokaal besjoen wurde, mar ek op de offisjele gateway ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv. Tagelyk kinne jo der wis fan wêze dat de ynhâld fan de map op gjin inkelde manier feroare is, want as it feroare wie, dan soe de hash ek feroare wêze.
Trouwens, yn dit gefal hat IPFS wat oerienkomsten mei de ferzjekontrôletsjinner. As jo wizigingen meitsje yn 'e boarnebestannen fan' e map en de map opnij yn IPFS giet, dan sil it in nij adres krije. Tagelyk sil de âlde map krekt sa nergens hinne gean en sil beskikber wêze op it eardere adres.
Direkte lansearring
ipfs daemon
Jo moatte in antwurd krije as dit:
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
It iepenjen fan de doarren nei it ynternet
Jou omtinken oan dizze twa rigels:
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
No, as jo IPFS lokaal ynstalleare hawwe, dan sille jo tagong krije ta IPFS-ynterfaces mei lokale adressen en alles sil foar jo beskikber wêze (Bygelyks, localhost:5001/webui/). Mar as ynstalleare op in eksterne server, binne de poarten standert sletten foar it ynternet. Gateways twa:
Oant no kinne beide havens (5001 en 8080) iepene wurde foar eksperiminten, mar op in fjochtstsjinner moat fansels poarte 5001 sletten wurde mei in firewall. D'r is ek poarte 4001, dy't nedich is sadat oare leeftydsgenoaten jo kinne fine. It moat iepenlitten wurde foar oanfragen fan bûten.
Iepenje ~/.ipfs/config foar bewurkjen en fyn dizze rigels dêryn:
Feroarje 127.0.0.1 nei de ip fan jo tsjinner en bewarje it bestân, start dan ipfs op 'e nij (stopje it rinnende kommando mei Ctrl+C en begjin it opnij).
Moatte krije
...
WebUI: http://ip_вашего_сервера:5001/webui
Gateway (readonly) server listening on /ip4/ip_вашего_сервера/tcp/8080
As webui foar jo wurket, dan kinne de IPFS-ynstellingen der direkt yn wizige wurde, ynklusyf it besjen fan statistiken, mar hjirûnder sil ik konfiguraasjeopsjes direkt beskôgje fia it konfiguraasjetriem, wat oer it algemien net kritysk is. It is gewoan better om krekt te ûnthâlden wêr't de konfiguraasje is en wat dermei te dwaan, oars as it webgesicht net wurket, sil it dreger wêze.
In webynterface ynstelle om te wurkjen mei jo server
Hjir is de earste kûle, dy't sawat trije oeren duorre.
As jo IPFS op in eksterne tsjinner ynstalleare, mar IPFS net lokaal ynstalleare of útfierd hawwe, dan moatte jo in ferbiningsflater sjen as jo nei /webui yn 'e webynterface geane:
It feit is dat webui, nei myn miening, heul dûbelsinnich wurket. Earst besiket it te ferbinen mei de API fan 'e server wêr't de ynterface iepen is (basearre op it adres yn' e browser, fansels). en as it dêr net wurket, besiket it te ferbinen mei de lokale poarte. En as jo IPFS lokaal rinne, dan sil webui goed foar jo wurkje, allinich jo sille wurkje mei lokale IPFS, en net ekstern, hoewol jo webui op in eksterne server iepene hawwe. Dan uploade jo de bestannen, mar om ien of oare reden sjogge jo se net sa op in eksterne server ...
En as it net lokaal rint, dan krije wy in ferbiningsflater. Yn ús gefal is de flater wierskynlik troch CORS, dy't ek wurdt oanjûn troch webui, suggerearret it tafoegjen fan in konfiguraasje.
Wy starte ipfs op 'e nij en wy sjogge dat webui mei súkses ferbûn is (yn alle gefallen moat it, as jo de poarten iepene hawwe foar oanfragen fan bûten, lykas hjirboppe beskreaun).
No kinne jo mappen en bestannen direkt uploade fia de webynterface, en ek jo eigen mappen meitsje.
Montage fan it FUSE-bestânsysteem
Hjir is in aardich nijsgjirrige funksje.
Triemmen (lykas mappen), kinne wy net allinich tafoegje fia de webynterface, mar ek direkt yn 'e terminal, bygelyks
ipfs add test -r
added QmfYuz2gegRZNkDUDVLNa5DXzKmxxxxxxxxxx test/test.txt
added QmbnzgRVAP4fL814h5mQttyqk1aURxxxxxxxxxxxx test
De lêste hash is de hash fan 'e rootmap.
Mei dizze hash kinne wy in map iepenje op elke ipfs-knooppunt (dy't ús knooppunt kin fine en de ynhâld krije), wy kinne yn 'e webynterface op poarte 5001 of 8080, of wy kinne lokaal fia ipfs.
ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx
QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt
Mar jo kinne it noch iepenje as in gewoane map.
Litte wy twa mappen oanmeitsje oan 'e root en ús brûker rjochten jaan.
Jo kinne mappen op oare plakken oanmeitsje en it paad nei har opjaan fia de ipfs daemon parameters -mount -mount-ipfs /ipfs_path -mount-ipns /ipns_path
No lêzen út dizze map is wat ûngewoan.
ls -la /ipfs
ls: reading directory '/ipfs': Operation not permitted
total 0
Dat is, d'r is gjin direkte tagong ta de root fan dizze map. Mar jo kinne de ynhâld krije, de hash te kennen.
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
Tagelyk wurket sels automatyske foltôging binnen de map as it paad is oantsjutte.
Lykas ik hjirboppe sei, binne d'r subtiliteiten mei sa'n mounting: standert binne monteare FUSE-mappen allinich beskikber foar de hjoeddeistige brûker (sels root kin net fan sa'n map lêze, om net te sprekken fan oare brûkers yn it systeem). As jo dizze mappen beskikber meitsje wolle foar oare brûkers, dan moatte jo yn 'e konfiguraasje "FuseAllowOther": false feroarje yn "FuseAllowOther": wier. Mar dat is net alles. As jo IPFS as root útfiere, dan is alles OK. En as út namme fan in gewoane brûker (sels sudo), dan krije jo in flater
mount helper error: fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf
Yn dit gefal moatte jo /etc/fuse.conf bewurkje troch de #user_allow_other line te ûntkommen.
Nei dat, opnij starte ipfs.
Bekende problemen mei FUSE
It probleem is mear as ien kear opmurken dat nei it opnij starte fan ipfs mei mounting (en miskien yn oare gefallen), de /ipfs en /ipns mountpunten net beskikber wurde. D'r is gjin tagong ta har, en ls -la /ipfs lit sjen ???? yn de list fan rjochten.
Dizze oplossing fûn:
fusermount -z -u /ipfs
fusermount -z -u /ipns
Start dan ipfs op 'e nij.
It tafoegjen fan in tsjinst
Fansels is it rinnen yn 'e terminal allinich geskikt foar earste tests. Yn fjochtsmodus moat de daemon automatysk begjinne by it opstarten fan it systeem.
Meitsje út namme fan sudo it bestân /etc/systemd/system/ipfs.service en skriuw it:
USERNAME moat fansels ferfongen wurde troch jo brûker (en miskien sil it folsleine paad nei it ipfs-programma oars wêze foar jo (jo moatte it folsleine paad opjaan)).
Wy aktivearje de tsjinst.
sudo systemctl enable ipfs.service
Wy begjinne de tsjinst.
sudo service ipfs start
Kontrolearje de status fan 'e tsjinst.
sudo service ipfs status
Foar de suverens fan it eksperimint sil it mooglik wêze om de tsjinner yn 'e takomst opnij te begjinnen om te kontrolearjen dat ipfs automatysk mei súkses begjint.
It tafoegjen fan bekend foar ús feesten
Beskôgje in situaasje wêr't wy IPFS-knooppunten hawwe ynstalleare sawol op in eksterne server as lokaal. Op in eksterne server foegje wy wat bestân ta en besykje it lokaal fia IPFS te krijen troch CID. Wat barre sil? Fansels wit de lokale server nei alle gedachten neat oer ús eksterne server en sil gewoan besykje it bestân te finen troch CID troch alle IPFS-peers dy't der foar beskikber binne te "freegje" (wêrmei't it al slagge is om "bekend te meitsjen"). Dy sille op har beurt oaren freegje. En sa fierder, oant it bestân fûn is. Eins bart itselde as wy besykje it bestân fia de offisjele poarte te krijen ipfs.io. As jo gelok binne, sil it bestân yn in pear sekonden fûn wurde. En sa net, it sil net fûn wurde sels yn in pear minuten, dy't in protte ynfloed hat op it treast fan wurk. Mar wy witte wêr't dizze triem earst sil ferskine. Dus wêrom fertelle wy ús lokale server net fuortendaliks "Sykje dêr earst"? Blykber kin dit dien wurde.
1. Wy geane nei de tsjinner op ôfstân en sjogge yn 'e ~/.ipfs/config konfiguraasje
2. Run sudo-tsjinst ipfs-status en sykje dêryn nei Swarm-yngongen, bygelyks:
Swarm announcing /ip4/ip_вашего_сервера/tcp/4001
3. Wy foegje hjirfan it algemiene adres ta fan it formulier "/ip4/ip_your_server/tcp/4001/ipfs/$PeerID".
4. Foar betrouberens sille wy besykje dit adres ta te foegjen oan peers fia ús lokale webui.
5. As alles goed is, iepenje de lokale konfiguraasje ~ / .ipfs / config, fyn "Bootstrap" dêryn: [...
en foegje it ûntfongen adres earst ta oan de array.
IPFS opnij starte.
Litte wy no it bestân tafoegje oan 'e eksterne tsjinner en besykje it op' e lokale te freegjen. Moat fluch fleane.
Mar dizze funksjonaliteit is noch net stabyl. Sa fier as ik begryp, sels as wy spesifisearje it adres fan in peer yn Bootstrap, feroaret ipfs de list mei aktive ferbinings mei peers tidens operaasje. De diskusje dêroer en winsken oangeande de mooglikheid om fêste feesten oan te jaan is yn alle gefallen oan e gong hjir en it liket sabeare tafoegje wat funksjonaliteit oan [e-post beskerme]+
De list mei hjoeddeistige peers kin sawol yn 'e webui as yn' e terminal besjoen wurde.
ipfs swarm peers
En hjir en dêr kinne jo jo feest mei de hân tafoegje.
Oant dizze funksjonaliteit is ferbettere, kinne jo in ark skriuwe om te kontrolearjen op in ferbining mei de winske peer en, sa net, in ferbining ta te foegjen.
Redenearje
Under dyjingen dy't al bekend binne mei IPFS, binne d'r beide arguminten foar en tsjin IPFS. Yn prinsipe juster diskusje en frege my om wer yn IPFS te graven. En oangeande de hjirboppe neamde diskusje: ik kin net sizze dat ik sterk tsjin guon fan 'e arguminten bin fan dyjingen dy't sprieken (ik bin it allinich net iens mei it feit dat ien en in heale programmeurs IPFS brûke). Yn 't algemien hawwe beide gelyk op har eigen manier (benammen opmerking oer kontrôles lit jo tinke). Mar as wy de morele en juridyske beoardieling wegerje, wa sil dan in technyske beoardieling fan dizze technology jaan? Persoanlik haw ik in soarte fan ynderlik gefoel dat "dit ûndúdlik dien wurde moat, it hat bepaalde perspektyf." Mar wêrom krekt, der is gjin dúdlike formulearring. Lykas, as jo sjogge nei de besteande sintralisearre ark, dan binne se yn in protte opsichten fier foarút (stabiliteit, snelheid, behearberens, ensfh.). Dochs haw ik ien gedachte dy't logysk liket te wêzen en dy't hast net útfierd wurde kin sûnder sokke desintralisearre systemen. Fansels swaai ik te hurd, mar ik soe it sa formulearje: it prinsipe fan it fersprieden fan ynformaasje op it ynternet moat feroare wurde.
Lit my it útlizze. As jo dêr oer tinke, hawwe wy no ynformaasje ferspraat neffens it prinsipe "Ik hoopje dat dejinge oan wa't ik it jow it sil beskermje en it sil net ferlern gean of ûntfongen wurde troch dyjingen oan wa't it net bedoeld wie." As foarbyld is it maklik om ferskate posttsjinsten, wolkopslach, ensfh. En wêr komme wy mei út? Op Habré hub Ynformaasje Security is op 'e earste line en hast elke dei krije wy nijs oer in oar wrâldwide lek. Yn prinsipe, alle meast nijsgjirrige dingen wurde neamd yn <irony> prachtich lidwurd De simmer is hast foarby. D'r binne hast gjin útlekte gegevens oer. Dat is, de wichtichste ynternetgiganten wurde grutter, se sammelje mear en mear ynformaasje, en sokke lekken binne in soarte fan ynformaasje atoomeksplosjes. Dit is noch noait earder bard, en hjir is it wer. Tagelyk, hoewol in protte begripe dat d'r risiko's binne, sille se har gegevens trochgean oan bedriuwen fan tredden. Foarste plak is der net folle alternatyf, en twad, se tasizze dat se hawwe patched alle gatten en dit sil nea wer barre.
Hokker opsje sjoch ik? It liket my ta dat gegevens yn earste ynstânsje iepen ferspraat wurde moatte. Mar iepenheid yn dit gefal betsjuttet net dat alles maklik te lêzen wêze moat. Ik haw it oer de iepenheid fan opslach en distribúsje, mar net totale iepenheid yn it lêzen. Ik nim oan dat ynformaasje moat wurde ferspraat mei iepenbiere kaaien. Ommers, it prinsipe fan iepenbiere / privee kaaien is al âld, hast as it ynternet. As de ynformaasje net fertroulik is en bedoeld is foar in brede sirkel, dan wurdt it fuortendaliks mei in iepenbiere kaai oanlein (mar noch yn fersifere foarm, gewoan elkenien kin it ûntsiferje mei de beskikbere kaai). En sa net, dan is it oanlein sûnder in iepenbiere kaai, en de kaai sels wurdt oerdroegen oan wat moat hawwe tagong ta dizze ynformaasje. Tagelyk moat dejinge dy't it lêze moat allinich in kaai hawwe, en wêr't dizze ynformaasje te krijen is, hy moat net echt sweve - hy lûkt it gewoan út it netwurk (dit is it nije prinsipe fan distribúsje troch ynhâld, net troch adres).
Sa, foar in massa oanfal, oanfallers sille moatte krije in enoarm oantal privee kaaien, en dit is net wierskynlik te dwaan op ien plak. Dizze taak, sa't ik it sjoch, is dreger dan it hacken fan in bepaalde tsjinst.
En hjir is in oar probleem sletten: befêstiging fan auteurskip. No kinne jo op it ynternet in protte sitaten fine skreaun troch ús freonen. Mar wêr is de garânsje dat se it wiene dy't se skreaun hawwe? No, as elk sa'n rekord waard begelaat troch in digitale hantekening, soe it folle makliker wêze. En it makket net út wêr't dizze ynformaasje leit, it wichtichste ding is de hantekening, dy't, fansels, dreech te smedjen is.
En hjir is wat hjir ynteressant is: IPFS draacht al fersiferingsark (it is ommers boud op blockchain-technology). De privee kaai wurdt fuortendaliks oantsjutte yn de konfiguraasje.
Ik bin gjin feiligensspesjalist en kin net krekt witte hoe't ik it korrekt brûke moat, mar it liket my dat dizze kaaien wurde brûkt op it nivo fan útwikseling tusken IPFS-knooppunten. En ek js-ipfs en foarbyldprojekten lykas baan-dbdêr't it wurket orbit.chat. Dat is, teoretysk, elk apparaat (mobyl en net allinich) kin maklik wurde útrist mei syn eigen fersifering-ûntsifermasines. Yn dit gefal bliuwt it allinich foar elkenien om te soargjen foar it bewarjen fan har privee kaaien, en elkenien sil ferantwurdlik wêze foar har eigen feiligens, en net in gizelder wêze fan in oare minsklike faktor op guon superpopulêre ynternetgigant.
Allinnich registrearre brûkers kinne meidwaan oan 'e enkête. Ynlogge, asjebleaft.
Hawwe jo earder heard oer IPFS?
Ik haw nea heard fan IPFS, mar it liket nijsgjirrich
Haw net heard en wol net hearre
Heard mar net ynteressearre
Hearre, mar net begrepen, mar no liket it nijsgjirrich
Ik haw aktyf mei help fan IPFS foar in lange tiid.