From 623d406fc55a26c666166b22b870b14f109f21fd Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Mon, 26 Aug 2024 18:34:21 +0200 Subject: [PATCH] blogpost: Migrating From Brave to IPFS Desktop (#693) Co-authored-by: Daniel Norman <1992255+2color@users.noreply.github.com> Co-authored-by: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> --- package-lock.json | 12 +- src/_blog/2024-brave-migration-guide.md | 173 ++++++++++++++++++ ...wallet-the-future-of-the-browser-wallet.md | 3 +- src/_blog/how-we-put-ipfs-in-brave.md | 1 + ...ve-native-access-to-the-distributed-web.md | 1 + src/assets/brave2desktop.jpg | Bin 0 -> 40651 bytes 6 files changed, 183 insertions(+), 7 deletions(-) create mode 100644 src/_blog/2024-brave-migration-guide.md create mode 100644 src/assets/brave2desktop.jpg diff --git a/package-lock.json b/package-lock.json index a709c2479..5642362a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6364,9 +6364,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001549", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz", - "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==", + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "dev": true, "funding": [ { @@ -30071,9 +30071,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001549", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz", - "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==", + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "dev": true }, "caseless": { diff --git a/src/_blog/2024-brave-migration-guide.md b/src/_blog/2024-brave-migration-guide.md new file mode 100644 index 000000000..5cfb7e428 --- /dev/null +++ b/src/_blog/2024-brave-migration-guide.md @@ -0,0 +1,173 @@ +--- +title: 'Migrating from Brave to IPFS Desktop' +description: 'Complete Guide to Migrating Your IPFS Data' +date: 2024-08-22 +header_image: '/brave2desktop.jpg' +tags: +- brave +- browsers +- IPFS Desktop +--- + + +In [2021](https://brave.com/blog/ipfs-support/), IPFS maintainers worked with the Brave team to add native support for IPFS in the Brave Browser. This was the first deep integration of an IPFS node in a browser. + +After over three years, the Brave team [decided](https://github.com/brave/brave-browser/issues/37735) to remove support for running IPFS node as we could not find a mutually agreeable set of terms to make this integration sustainable. The removal was implemented in the latest stable release ([v1.69.153](https://github.com/brave/brave-browser/blob/56f6418ac301a4b015c1188786f6f4497b6ac393/CHANGELOG_DESKTOP.md#169153)) which shipped on Aug 22nd. + +While this change may be disappointing for some, it presents an opportunity to adopt a more robust and flexible IPFS setup. + +This guide will walk you through the process of moving your IPFS data from Brave to [IPFS Desktop](https://github.com/ipfs/ipfs-desktop), ensuring you don't lose any of your important files, and keep access to IPFS resources in your browser. + +## Why Migrate? + +- **Imminent Removal:** The IPFS node feature in Brave is being [phased out](https://github.com/brave/brave-browser/issues/37735#issuecomment-2247764368) and will happen once you update to v1.69.153 or later. Although upgrading will not delete data associated with the IPFS node, migration is necessary to ensure uninterrupted access to your IPFS data, especially if you pinned something, or published with IPNS. +- **Improved Functionality:** Migrating to a standalone IPFS solution like IPFS Desktop offers several advantages: + 1. Automatic security and performance updates without relying on browser updates. + 2. Ability to customize your IPFS node configuration, no vendor-specific overrides. + 3. Browser-agnostic background service, allowing your node to run independently of any specific browser. + 4. Easy access to your files in [WebUI](https://github.com/ipfs/ipfs-webui/#readme) via system status bar icon, and right-click file manager integration (on Windows). + +### Time Investment + +Migrating your IPFS node is a relatively quick process. Most users can complete the transition in 5 to 15 minutes, depending on their familiarity with IPFS and their system configuration. + +## Prerequisites + +Before we begin, you'll need to install two key components that will replace the functionality that was in Brave with an IPFS stack that will still work in Brave, but also in most other browsers. + +- [IPFS Desktop](https://docs.ipfs.tech/install/ipfs-desktop/) is a full node application that runs [Kubo](https://github.com/ipfs/kubo/) on your computer, managing your IPFS repository and providing a graphical interface for IPFS operations. Download IPFS Desktop by following the [install guide here](https://docs.ipfs.tech/install/ipfs-desktop/#install-instructions). Choose the appropriate version for your operating system ([Windows](https://docs.ipfs.tech/install/ipfs-desktop/#windows), [macOS](https://docs.ipfs.tech/install/ipfs-desktop/#macos), or [Linux](https://docs.ipfs.tech/install/ipfs-desktop/#ubuntu)) and follow the installation instructions. +- [IPFS Companion](https://docs.ipfs.tech/install/ipfs-companion/) is a browser extension that allows you to interact with IPFS content directly from your web browser, load it from your local IPFS node, and keep provisional support for `ipfs://` and `ipns://` in address bar. The easiest way to install IPFS Companion is through your browser's specific [extensions and add-ons store](https://docs.ipfs.tech/install/ipfs-companion/#install). + +## Moving the Brave IPFS Repository + +The IPFS repository, often referred to as `$IPFS_PATH` (aka `~/.ipfs`), contains all your IPFS data, IPNS keys, and PeerID identify of your IPFS node. Brave's IPFS Node used the same repository format as Kubo, making migration to IPFS Desktop relatively easy. + +If you did not use IPFS Desktop before, you can simply swap `.ipfs` created by IPFS Desktop with the one from your Brave node. This is the simplest way of migrating your node, all data, pins, IPNS keys, addresses and PeerID will remain the same and IPNS publishing will continue working. + +First, we need to locate your Brave IPFS repository. The configuration directory for the Brave managed IPFS node can be found in the browser’s profile directory in a subfolder named `brave_ipfs`. You can find your IPFS directory by opening `brave://version/`, finding "Profile Path", and replacing `/Default` with `/brave_ipfs`: + + +- Windows: `%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\brave_ipfs` + - example: `C:\Users\YOURUSERNAME\AppData\Local\BraveSoftware\Brave-Browser\User Data\brave_ipfs` +- macOS: `~/Library/Application Support/BraveSoftware/Brave-Browser/brave_ipfs` + - example: `/Users/YOURUSERNAME/Library/Application Support/BraveSoftware/Brave-Browser/brave_ipfs` +- Linux: `~/.config/BraveSoftware/Brave-Browser/brave_ipfs` + - example: `/home/YOURUSERNAME/.config/BraveSoftware/Brave-Browser/brave_ipfs` + +To confirm you've found the right directory, open `brave_ipfs/config` and write down the value of `PeerID`, it will act as unique identifier of your Brave repository. + +Now, we'll move this repository to the default location for IPFS Desktop: + +- Windows: `%USERPROFILE%/.ipfs` + - example: `C:\Users\YOURUSERNAME\.ipfs` +- macOS: `~/.ipfs` + - example: `/Users/YOURUSERNAME/.ipfs` +- Linux: `~/.ipfs` + - example: `/home/YOURUSERNAME/.ipfs` + +Before proceeding, make sure the `.ipfs` directory does not exist at the destination. If you already had `.ipfs`, shut down IPFS Desktop and rename `.ipfs` to `.ipfs.old` as a precaution to avoid data loss. + +Now, move the `brave_ipfs` directory from Brave profile, to the location expected by IPFS Desktop. + +You can use the following commands in your terminal or command prompt: + +For Windows: + +``` +IF NOT EXIST "%USERPROFILE%\.ipfs" MOVE "%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\brave_ipfs" "%USERPROFILE%\.ipfs" +``` + +For macOS: +``` +test ! -d ~/.ipfs && mv ~/Library/Application\ Support/BraveSoftware/Brave-Browser/brave_ipfs ~/.ipfs +``` + +Linux: +``` +test ! -d ~/.ipfs && mv ~/.config/BraveSoftware/Brave-Browser/brave_ipfs ~/.ipfs +``` + +## Starting IPFS Desktop with Migrated IPFS Repository + +Once move is completed, you can confirm it was successful if `.ipfs/config` exists in your home directory, and includes `PeerID` of your Brave node. + +If `.ipfs/config` exists, you can now start IPFS Desktop. If everything went as expected, your IPFS node should start and run without Brave. + +## Optional: Adjusting Configuration + +Brave-integrated IPFS node had some drawbacks. The access to WebUI was hidden behind `brave://ipfs-internal`. DNSLink detection was based on HTTP header rather than DNS TXT lookup. Running IPFS node required the Brave browser to be open for content and IPNS announcements to function, and in early days did not even start `ipfs daemon` before `ipfs://` was used for the first time, leading to content from local repository not being provided to IPFS Mainnet peers. Repository cache was artificaially limited to 1GiB in size, and evicted along with browser cache, degrading the utility of peers cohosting casually browsed data. + +Switching to IPFS Desktop+Companion solves most of these shortcomings, however you may need to adjust some settings to get full benefit of a standalone IPFS node. + +### Updating Cache Size + +[`Datastore.StorageMax`](https://github.com/ipfs/kubo/blob/master/docs/config.md#datastorestoragemax) controls how much space is allocated to data that is not pinned, such as visited IPFS websites, or other content you've viewed but do not want to pin forever. Having a bigger cache improves the data availability on the network, making websites more resilient. + +To increase IPFS block cache size ([`Datastore.StorageMax`](https://github.com/ipfs/kubo/blob/master/docs/config.md#datastorestoragemax)) from 1GB to at least 100GB (the current default in Kubo): +``` +$ ipfs config Datastore.StorageMax +1GB +$ ipfs config Datastore.StorageMax 100GB ~ +``` + +### Updating RPC URL in IPFS Companion + +Brave used custom ports: `45001` for RPC and `48080` for Gateway. + +If IPFS Companion browser extension does not detect your node after migrating repository from Brave, you need to update RPC and Gateway URLs in Companion preferences. + +- Change the **Kubo RPC URL** from `http://127.0.0.1:5001` to `http://127.0.0.1:45001` +- Change the **Local Gateway** from `http://127.0.0.1:8080` to `http://127.0.0.1:48080` + +Alternative is to update `.ipfs/config` and replace all occurences of `45001` with `5001` and `48080` with `8080`. Make sure you do not have anything listening on these ports before you make the change. + +## Conclusion + +Congratulations! You've successfully migrated your IPFS data from Brave to IPFS Desktop. + +If you encountered any challenges during the migration process or need further assistance, please don't hesitate to leave a comment in the thread below. The community is here to help, and your feedback can also assist others who might be going through the same process. + +## FAQ + +### Is it possible to move `brave_ipfs` to a different location than `.ipfs`? + +Yes, but you need to set the `IPFS_PATH` environment variable before running IPFS Desktop to point at the new location. + +See [How does IPFS Desktop select the IPFS repo location?](https://github.com/ipfs/ipfs-desktop/?tab=readme-ov-file#how-does-ipfs-desktop-select-the-ipfs-repo-location) + +### Where can I find FAQ/Troubleshooting for IPFS Desktop? + +See [github.com/ipfs/ipfs-desktop/#faq--troubleshooting](https://github.com/ipfs/ipfs-desktop/?tab=readme-ov-file#faq--troubleshooting) + +### Can Kubo be used instead? + +Yes, advanced users who are comfortable with command-line can use [Kubo](https://docs.ipfs.tech/install/command-line/) instead of IPFS Desktop, and run it against a custom `IPFS_PATH` to run a headless daemon, or perform selective manual migration via CLI. + +### How to export my Files (MFS) with Kubo CLI? + +To export contents of MFS to a CAR, run the following commands: +``` +$ export IPFS_PATH=/path/to/brave_ipfs +$ export MFS_ROOT="$(ipfs files stat / | head -1)" +$ ipfs dag export $MFS_ROOT > mfs-backup.car +``` + +Then, it can be imported on another node and added to MFS there: + +``` +$ export IPFS_PATH=/path/to/some/other/.ipfs +$ ipfs dag import ./mfs-backup.car +$ ipfs files cp /ipfs/$MFS_ROOT /brave_mfs_backup +$ ipfs pin rm $MFS_ROOT +``` + +Note: low-level pin (created by `dag import`) can be removed (`pin rm`) after import because presence in MFS is enough to protect data from garbage-collection. + +### How to manually migrate my IPNS names with Kubo CLI? + +To export IPNS keys, and re-publish with them, see `ipfs key --help` and `ipfs name --help`. + +### How to fix `Error: ipfs repo needs migration, please run migration tool.` ? + +IPFS Desktop should run migrations the first time you start, but if you use Kubo CLI +you may need to run `ipfs daemon --migrate=true` once, to upgrade to latest version. diff --git a/src/_blog/a-brave-new-wallet-the-future-of-the-browser-wallet.md b/src/_blog/a-brave-new-wallet-the-future-of-the-browser-wallet.md index c7cb512c6..d08750edb 100644 --- a/src/_blog/a-brave-new-wallet-the-future-of-the-browser-wallet.md +++ b/src/_blog/a-brave-new-wallet-the-future-of-the-browser-wallet.md @@ -8,6 +8,7 @@ permalink: brave-new-wallet translationKey: '' header_image: "/ipfs-blog-brave-2021-07-23.jpg" tags: +- brave - browsers - API @@ -72,4 +73,4 @@ Introducing (a sneak peek of) the Brave Wallet. The Brave Wallet will launch wit **NFT Support.** Users can view their complete NFT collections directly in the wallet. -Keep an eye out for more updates about the Brave Wallet, coming to the Brave browser this year! \ No newline at end of file +Keep an eye out for more updates about the Brave Wallet, coming to the Brave browser this year! diff --git a/src/_blog/how-we-put-ipfs-in-brave.md b/src/_blog/how-we-put-ipfs-in-brave.md index 18b541c72..ac34011fa 100644 --- a/src/_blog/how-we-put-ipfs-in-brave.md +++ b/src/_blog/how-we-put-ipfs-in-brave.md @@ -4,6 +4,7 @@ permalink: '/2021-01-21-how-we-put-ipfs-in-brave/' translationKey: '' tags: - browsers + - brave header_image: '/2021-01-21-how-we-put-ipfs-in-brave.jpg' title: How we put IPFS in Brave description: diff --git a/src/_blog/ipfs-in-brave-native-access-to-the-distributed-web.md b/src/_blog/ipfs-in-brave-native-access-to-the-distributed-web.md index b7d660606..ee2f2ba90 100644 --- a/src/_blog/ipfs-in-brave-native-access-to-the-distributed-web.md +++ b/src/_blog/ipfs-in-brave-native-access-to-the-distributed-web.md @@ -3,6 +3,7 @@ date: 2021-01-19 permalink: '/2021-01-19-ipfs-in-brave/' translationKey: '' tags: + - brave - browsers header_image: '/2021-01-19-ipfs-in-brave.png' title: IPFS in Brave - Native Access to the Distributed Web diff --git a/src/assets/brave2desktop.jpg b/src/assets/brave2desktop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb00427784aeac28ae7052932e0b66df73419e0b GIT binary patch literal 40651 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

jO*_$cbndaNjZYFUl61 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 Q>(iHhb#s?~bwi2&+3)kDX#fBK literal 0 HcmV?d00001