Closed
Description
IPFS on Desktop
Installation & Setup
IPFS installation
- Verify going to
brave://ipfs
and clicking onInstall and start
installs and shows the latestgo-ipfs
release, via theVersion:
section underNode info
.
Seed profile
- Load
ipns://en.wikipedia-on-ipfs.org
. - Choose
Use a Brave local IPFS node
. - Run the
IPNS Keys
(add/rotate) section. - Run the
Import and Sharing
(page, image, text, video) section.
go-updater node update
- Verify, using the above profile, that restarting Brave with
--use-dev-goupdater-url
, and clicking onRestart
viabrave://ipfs
downloads and installs the latest in-development (release) candidate. - Confirm that
Method to resolve IPFS resources
isBrave local IPFS node
inbrave://settings/ipfs
. - Confirm that keys and imports are intact, post-migration.
- Confirm that
brave://ipfs-internals
showsNode is not running
underIPFS node status
, with aStart
button. - Click on
Start
. - Confirm the node starts, and paths and version info are correct.
Config
- Verify changing
Maximum IPFS cache size (GB)
on thebrave://settings/ipfs
page (setMethod to resolve IPFS resources
toBrave local IPFS node
onbrave://settings/ipfs
), the new value is reflected on the diagnostic page (brave://ipfs
) in theRepo Stats -> Size
section.
Diagnostic page (brave://ipfs
)
- Verify loading
brave://ipfs
redirects tobrave://ipfs-internals
. - Verify, on a clean profile, visiting
brave://ipfs
will present you with anInstall and start
button, which will install and start an IPFS local node. Confirm you seeNode is running
underIPFS node status
,Stop
,Restart
, andMy Node
buttons, and a dynamically updatingConnected peers:
count. - Verify that clicking
Stop
temporarily clears all statistics, paths, and config information. - Verify that clicking
Start
populates all statistics, paths, and config information, and you seeStop
,Restart
, andMy Node
buttons, along with a dynamically updatingConnected peers:
count. - Verify that clicking
Restart
clears and then repopulates all stats, paths, and config information, and you seeStop
,Restart
, andMy Node
buttons, along with a dynamically updatingConnected peers:
count. - Verify that clicking on
(details)
to the right ofConnected peers:
takes you to thePEERS
pane of127.0.0.1:45002/ipfs/bafy..../#/
and you see a global map with a dynamically updating peer count and listing, below. - Verify that clicking on
Perform a garbage collection sweep
resets and repopulates theObjects:
andSize:
stats beneathRepo Stats
. - Verify that clicking
My Node
takes you to theStatus
pane of the IPFS dashboard, with a URL similar to127.0.0.1:45002/ipfs/bafy..../#/
, where you seeConnected to IPFS
, MB count of files shared, and dynamically updating peers count, as well as yourPEER ID
andAGENT
.
Import and Sharing
-
Prerequisites: Brave local IPFS node launched and local gateway configured. On a new profile, loading
ipns://en.wikipedia-on-ipfs.org
and clickingUse a Brave local IPFS node
on the interstitial page will set you up.Importing a page via IPFS
- Load
wikipedia.org
. Context-click the page and selectImport to IPFS > This page
. - Verify the content is downloaded and imported successfully.
- Verify the import folder is opened upon successful import.
- Verify the shareable link is copied to the clipboard and opens when pasting it into a new tab.
Importing linked content
- Load
https://search.brave.com/search?q=hiddenmickeys&source=desktop
. Context-click the first link there and selectImport to IPFS > Linked content
. - Verify the content is downloaded and imported successfully.
- Verify the import folder is opened upon successful import.
- Verify the shareable link is copied to the clipboard and opens when pasting it into a new tab.
Importing selected audio
- Load
https://samplelib.com/sample-mp3.html
. Context-click any audio file and selectImport to IPFS > Selected audio
. - Verify the audio is downloaded and imported successfully.
- Verify the import folder opens upon successful import.
- Verify the shareable link is copied to the clipboard and opens when pasting it into a new tab.
Importing selected image
- Verify you are able to import an image by visiting
search.brave.com
, right-clicking on the logo, and choosingImport to IPFS > Selected image.
- Verify the image is downloaded and imported successfully.
- Verify the import folder opens upon successful import.
- Verify the shareable link is copied to the clipboard, and pasting the link in a new tab opens it.
Importing selected text
- Load
https://lipsum.com/
and make a text selection. Context-click and chooseImport Selected Text to IPFS
. - Verify the text is wrapped into a file with id like
file_1
and the imported text is readable inside the file. - Verify the import folder opens upon successful import.
- Verify the shareable link is copied to the clipboard and opens when pasting it into a new tab.
Importing selected video
- Load the Big Buck Bunny test file. Verify you are able to import the video via context menu
Import to IPFS > Selected video
. - Verify the video is downloaded and imported successfully.
- Verify the import folder opens upon successful import.
- Verify the shareable link is copied to the clipboard and opens when pasting in a new tab.
Note: For the other types, downloading from the IPFS webui (My Node) and ensuring they still play in a media player, is enough.
Sharing a local file using IPFS (without IPNS keys)
- Verify the IPFS item is available in the main app menu. Go to
IPFS -> Share Local File Using IPFS
select and import any local file. - Verify the file is downloaded and imported successfully,
- Verify the import folder is opened upon successful completion.
- Verify the shareable link starting with
https://dweb.link/ipfs/
is copied to the clipboard, and opens when pasting into a new tab. - Share the following filetypes:
- .txt
- .json
- .mpeg
- .mp3
- .mp4
- .ogg
- .webm
Sharing a local folder using IPFS (without IPNS keys)
- Go to
IPFS -> share Local Folder Using IPFS
, and select and import any local folder. - Verify the whole folder is downloaded and imported successfully.
- Verify the import folder opens upon successful import.
- Verify the shareable link is copied to the clipboard, and opens when pasting into a new tab.
- Load
Address bar
Badge shown only when IPFS support is enabled
- Verify, on a new profile, you can load
https://en.wikipedia-on-ipfs.org
, switchMethod to resolve IPFS resources
to eitherGateway
orBrave local IPFS node
inbrave://settings/ipfs
, and then see anIPFS
badge/icon in the URL bar.
Badge on a public gateway
- Verify that loading
https://dweb.link/ipfs/QmT5NvUtoM5nWFfrQdVrFtvGfKFmG7AHE8P34isapyhCxX/wiki/Mars.html
redirects you seamlessly tohttps://bafybeicgmdpvw4duutrmdxl4a7gc52sxyuk7nz5gby77afwdteh3jc5bqa.ipfs.dweb.link/wiki/Mars.html
, and there's anIPFS
badge/button in the URL bar. Confirm that clickingIPFS
goes toipfs://bafybeicgmdpvw4duutrmdxl4a7gc52sxyuk7nz5gby77afwdteh3jc5bqa/wiki/Mars.html
. - Verify that loading
https://ipfs.io/ipns/libp2p.io/
shows anIPFS
button in the URL bar, and clicking it redirects toipns://libp2p.io/
. Confirm it resolves and loads.
Badge on DNSlink websites
- Verify clicking on the
IPFS
badge/button onhttps://en.wikipedia-on-ipfs.org/wiki/Asia/#Economy
loadsipns://en.wikipedia-on-ipfs.org/wiki/Asia/#Economy
in a new tab. - Verify clicking on the
IPFS
badge/button onhttps://blog.ipfs.io/24-uncensorable-wikipedia
loadsipns://blog.ipfs.io/24-uncensorable-wikipedia/
in a new tab.
Protocol info popup
- Load
ipns://brantly.eth
while usingBrave local IPFS node
for the resolver, and confirm there's a clickable info badge "IPFS" to the left of the URL, with on click pop-up that saysThis content was loaded over the IPFS protocol.
Automatic redirects to IPFS
- Via
brave://settings/ipfs
, setRedirect IPFS resources to the configured IPFS gateway
toOn
.- Load
https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR
and confirm it redirects toipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
. - Load
https://en.wikipedia-on-ipfs.org/wiki/
and confirm it redirects toipns://en.wikipedia-on-ipfs.org/wiki/
.
- Load
IPFS Companion
- Verify that toggling
IPFS Companion
toOn
viabrave://settings/ipfs
prompts you to install the extension. After clickingAdd extension
, confirm you get a notification that IPFS Companion was added to Brave, and are then taken to theSet your IPFS preference
interstitial page. - Verify that clicking on the puzzle-piece icon on the browser toolbar, then
IPFS Companion
, will load a popup.- Click on the gears (settings) icon and confirm it loads the
Companion Preferences
page. - Click on
My Node
and confirm it opens the same ipfs-webui interface asMy Node
atbrave://ipfs-internals
- Click on the gears (settings) icon and confirm it loads the
IPFS URLs
- Ensure each of the following IPFS URLs load over both
Gateway
andBrave local IPFS node
modes:-
ipfs://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq/wiki/Vincent_van_Gogh.html#Life
-
ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi/
-
ipfs://QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki/Tokyo_National_Museum.html
-
ipfs:QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
-
IPNS URLs
- Ensure each of the following IPNS URLs load over both
Gateway
andBrave local IPFS node
modes:-
ipns://en.wikipedia-on-ipfs.org
-
ipns://en.wikipedia-on-ipfs.org/wiki/Tokyo#Islands
-
ipns://docs.ipfs.io
-
ipns://brantly.eth
(ENS) -
ipns://vitalik.eth
(ENS) -
ipns://brad.crypto
(Unstoppable Domains)
-
Gateway choice
The interstitial page
- Confirm a fresh profile has
Method to resolve IPFS resources
set toAsk
inbrave://settings/ipfs
.- Verify visiting
ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
loads the interstitial page. - Verify visiting
ipns://en.wikipedia-on-ipfs.org
in a new tab loads the same interstitial page.- Verify selecting
Use a public gateway
loadshttps://dweb.link/ipns/en.wikipedia-on-ipfs.org/wiki/
which then redirect to unique Origin athttps://en-wikipedia--on--ipfs-org.ipns.dweb.link/wiki/
. - Verify selecting
Use a Brave local IPFS node
loadsipns://en.wikipedia-on-ipfs.org/wiki/
.
- Verify selecting
- Verify visiting
Public Path gateway
- Verify, on a new profile, you can't change the IPFS public gateway address to
https://cloudflare-ipfs.com/
viaSettings -> IPFS -> IPFS public gateway address -> Change
. - An error stating
Only a valid IPFS gateway with Origin isolation enabled can be used in Brave
is displayed (example).
Public Subdomain Gateway
- Verify, on a new profile, you can change the IPFS public gateway address to
https://{YOUR-PUBLIC-GATEWAY}
viaSettings -> IPFS -> IPFS public gateway address -> Change
. Refer to the IPFS public-gateway list. - Verify opening
ipns://en.wikipedia-on-ipfs.org/wiki/
and selectingUse a public gateway
loadshttps://{YOUR-PUBLIC-GATEWAY}/ipns/en.wikipedia-on-ipfs.org/wiki/
which then redirect to unique Origin athttps://en-wikipedia--on--ipfs-org.ipns.{YOUR-PUBLIC-GATEWAY}/wiki/
Verify loadshttps://cf-ipfs.com/ipns/en.wikipedia-on-ipfs.org/wiki/
which then redirect to unique Origin athttps://en-wikipedia--on--ipfs-org.ipns.{YOUR-PUBLIC-GATEWAY}/wiki/
.
Protocol system handler/OS integration
ipfs://
- Verify (
Windows
) that pressingWin+R
, typingopen ipfs://bafkreigcnxudvpojjfwncmauociy5q46zsq46oe66cxbyzie3imabuoege
, and pressingEnter
opens Brave and loads an HTML page with the wordPASS
. - Verify (
macOS
): opening Terminal, and typingopen ipfs://bafkreigcnxudvpojjfwncmauociy5q46zsq46oe66cxbyzie3imabuoege
, and pressingEnter
opens Brave and loads an HTML page with the wordPASS
. - Verify (
Linux
) that opening a shell and typingxdg-open ipfs://bafkreigcnxudvpojjfwncmauociy5q46zsq46oe66cxbyzie3imabuoege
and pressingEnter
opens Brave and loads an HTML page with the wordPASS
.
ipns://
- Verify (
Windows
) that pressingWin+R
, typingopen ipns://en.wikipedia-on-ipfs.org/wiki/Tokyo#Islands
, and pressingEnter
opens Brave and loads an HTML page scrolled to the headerIslands
. - Verify (
macOS
): opening Terminal, and typingopen ipns://en.wikipedia-on-ipfs.org/wiki/Tokyo#Islands
, and pressingEnter
opens Brave and loads an HTML page scrolled to the headerIslands
. - Verify (
Linux
) that opening a shell and typingxdg-open ipns://en.wikipedia-on-ipfs.org/wiki/Tokyo#Islands
, and pressingEnter
opens Brave and loads an HTML page scrolled to the headerIslands
.
Peers
-
Prerequisites: Brave local IPFS node launched and local gateway configured on two machines, locally networked (LAN, can be over Wi-Fi).
Adding
; see issue 15567 for full setup steps- Verify when you go to
brave://settings/ipfs/peers
and click on theAdd
button, it prompts you to enter a new peer-connection string. Confirm that entering an incorrect string yieldsThis name is not valid
upon clickingSubmit
. (Acceptable ones are only CIDs or something like**/p2p/**
format.) - Verify if a peer is added and node is started, it proposes to restart node to apply changes.
- Verify the Brave local IPFS node is restarted by clicking
Restart
button; happen it shows error message and suggests to see more on diagnostic page. - Verify that
Peering.Peers
section of IPFS node config file got updated (either viaMy Node → Settings → IPFS Config
or by manually inspectingbrave_ipfs/config
file).
Removing
- Verify a peer can be removed by clicking on the Trash icon in the peer line.
- Verify when you go to
IPNS Keys
-
Prerequisites: Brave local IPFS node launched and local gateway configured. Go to
Settings -> IPFS
, there should be an availableSet up your IPNS keys
option, which opensbrave://settings/ipfs/keys
Publishing a local file using an IPNS key
- (after brave/brave-browser#16998 lands) Verify you're able to share a local file via
IPFS -> Share local file using IPNS -> self
. - Verify once the file is imported, the import folder is opened and the file can be downloaded.
- Once the import is successful, verify a shareable link starting with
https://dweb.link/ipns/
is copied to the clipboard by opening a new tab and pasting from the context menu orCTRL+V
. - Verify you see the IPNS key (e.g.
k51q...
) before the?filename=filename.ext
from the copied text.
Publishing a local folder using an IPNS key
- (after brave/brave-browser#16998 lands) Verify you're able to share a local folder via
IPFS > Share local folder using IPNS -> self
. - Verify once the file is imported, the import folder is opened and the file can be downloaded.
- Once the import is successful, verify a shareable link starting with
https://dweb.link/ipns/
is copied to clipboard by opening a new tab and pasting from context menu orCTRL+V
. - Verify you see the IPNS key (e.g.
k51q...
) before the?filename=filename.ext
from the copied text.
Importing keys
- Verify adding a new key by clicking on the
Import
button and choosing an existing key file to import. - Verify imported key is available with entered name; verify entering
self
will yieldThis name cannot be used
. - Verify you cannot import keys with the same name; each key name must be unique.
Publishing content with IPNS key
- Verify keys are available in all import menus in order to pin content by selected key; the import link should contain the selected key.
Add/Remove/Rotate keys
- Verify when you click
Add
, it prompts for a key name and generates a new key. - Verify clicking on
Add
and entering an existing key name shows aThis name cannot be used
error message. - Verify clicking on the Rotate key icon for the
self
key prompts for a key name. Enter a valid, unique name and clickRotate
. Confirm the key is created with your entered name, original hash, and a newself
key (with a new hash value) is generated. - Verify clicking on the 3-dots menu to the right of a key gives you two options:
Export key
andRemove key
. ChooseExport key
and confirm you get prompted to save the key. ClickSave
and ensure the key is saved to disk. Delete the key frombrave://settings/ipfs/keys
and now clickAdd
to confirm the same key as the original is added from disk. - Verify clicking on the 3-dots menu and choosing
Remove key
removes the key from the UI.
- (after brave/brave-browser#16998 lands) Verify you're able to share a local file via
IPFS on Android
Public Gateway Setting
- Verify
IPFS Gateway
option is available underBrave Shields & Privacy
. - Verify the setting is enabled by default.
- Verify disable/enable setting is retained between browser launch/restarts.
- Verify setting state is retained during upgrade.
IPFS/IPNS URI
- Verify visiting
ipfs://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq/wiki/Vincent_van_Gogh.html
for the first time triggers IPFS interstitial page to select public gateway to load the URI.- Verify selecting
Use a public gateway
loadshttps://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq.ipfs.dweb.link/wiki/Vincent_van_Gogh.html
via public gateway.
- Verify selecting
- Verify visiting
ipns://brad.crypto
brings up IPFS interstitial page (ipfs://QmTiqc12wo2pBsGa9XsbpavkhrjFiyuSWsKyffvZqVGtut
)- Verify selecting
Use a public gateway
loadshttps://bafybeicp7gd7s4oljtcesmd7e6vypunw26mv3f5ass5ud7b6jrfebc4ux4.ipfs.dweb.link/
via public gateway.
- Verify selecting
- Verify when setting is disabled, loading an
ipfs://
URI oripns://
URI doesn't show any interstitial page. - Verify
ipfs://
URI oripns://
URI doesn't load on a private tab even when the setting is enabled.