RC7: https://dist.ipfs.io/go-ipfs/v0.6.0-rc7
June 9th, 2020
ipfs-404.html 404 page support #4233.MIGRATION
This release contains a small config migration to enable QUIC by default. This migration will:
/p2p/Qm... syntax for multiaddrs instead of the /ipfs/Qm... syntax./ip4/0.0.0.0/tcp/1234, this migration will add a listen address for /ip4/0.0.0.0/udp/1234/quic.
Full Changelog
For each RC published in each stage:
version.go has been updatedChecklist:
make test)make test_go_lint)./bin/mkreleaselog to generate a nice starter listversion.go has been updatedgit merge vX.Y.Z).version.go to vX.(Y+1).0-dev.| Contributor | Commits | Lines ± | Files Changed |
|-------------------------|---------|-------------|---------------|
| vyzo | 217 | +7924/-2790 | 292 |
| Aarsh Shah | 25 | +3864/-1482 | 107 |
| Marten Seemann | 39 | +3486/-1525 | 61 |
| Dirk McCormick | 15 | +2949/-985 | 43 |
| Yusef Napora | 66 | +2622/-785 | 98 |
| Steven Allen | 84 | +2328/-849 | 142 |
| Raúl Kripalani | 20 | +2135/-706 | 53 |
| Louis Thibault | 2 | +1111/-4 | 4 |
| Will Scott | 15 | +717/-219 | 31 |
| Hector Sanjuan | 22 | +619/-177 | 49 |
| Michael Muré | 7 | +456/-213 | 17 |
| dependabot-preview[bot] | 46 | +542/-57 | 92 |
| David Dias | 11 | +426/-88 | 15 |
| Lukasz Zimnoch | 9 | +361/-49 | 13 |
| Peter Rabbitson | 7 | +247/-138 | 22 |
| Jakub Sztandera | 4 | +157/-104 | 9 |
| RubenKelevra | 12 | +83/-83 | 29 |
| JP Hastings-Spital | 1 | +145/-0 | 2 |
| Adin Schmahmann | 7 | +45/-32 | 9 |
| Marcin Rataj | 8 | +24/-39 | 8 |
| Tiger | 5 | +53/-8 | 6 |
| Akira | 2 | +35/-19 | 2 |
| Casey Chance | 2 | +31/-22 | 2 |
| Alan Shaw | 1 | +44/-0 | 2 |
| Jessica Schilling | 4 | +20/-19 | 7 |
| Gowtham G | 4 | +22/-14 | 6 |
| Edgar Aroutiounian | 3 | +16/-8 | 3 |
| Peter Wu | 2 | +12/-9 | 2 |
| Sawood Alam | 2 | +7/-7 | 2 |
| mawei | 2 | +5/-5 | 2 |
| decanus | 1 | +5/-5 | 1 |
| Alfonso Montero | 1 | +1/-5 | 1 |
| Johnny | 1 | +1/-1 | 1 |
| Ganesh Prasad Kumble | 1 | +1/-1 | 1 |
| Dominic Della Valle | 1 | +1/-1 | 1 |
| Corbin Page | 1 | +1/-1 | 1 |
| Bernhard M. Wiedemann | 1 | +1/-1 | 1 |
Would you like to contribute to the IPFS project and don't know how? Well, there are a few places you can get started:
help wanted label in the go-ipfs repoThe best place to ask your questions about IPFS, how it works and what you can do with it is at discuss.ipfs.io. We are also available at the #ipfs channel on Freenode, which is also accessible through our Matrix bridge.
When I read the code right, this fix should be included as well, right @marten-seemann?
@RubenKelevra That fix is already contained in v0.15.7, which was released with go-libp2p-quic-transport v0.3.7.
@marten-seemann ah! was thrown off by the two different commit IDs for the same fix. Thanks for the fast response :)
RC1 has been released: https://dist.ipfs.io/go-ipfs/v0.6.0-rc1
If this turns out to be not a noise issue, we probably want to fix it before shipping 0.6.
This bugfix in badger might be worth including since the badger datastores are running out of disk space eventually without it.
This bugfix in badger for high memory usage while GC'ing should be included as well.
@Stebalien wrote:
Although you're right, this could very much be a large cause of the "killing routers" problem. I also think there may be a simple solution we can get into the next release (attempting now).
Will we change the default settings in this release to include the server-filters, to fix #7300 and #3320 as well as https://github.com/ipfs/go-ipfs/issues/6932 and https://github.com/libp2p/go-libp2p/issues/436? :)
Unfortunately, those badger fixes haven't been backported to version 1 yet.
Will we change the default settings in this release to include the server-filters
No, unfortunately that would prevent nodes from dialing each other on a private network.
The proposed fix here is to avoid dialing private addresses as part of queries on the public DHT. However, that hasn't been implemented yet. But there are some tricky edge cases here and we haven't implemented it yet.
Well, local nodes are quite unlikely to find each other through the DHT. So it makes no sense to announce the private IPs at all, doesn't it? 🤔
The swarm filter on the other hand could be overruled by manual 'swarm connect' and peers which was found via mDNS.
If a user really wants to connect peers from the same or different private subnets, he/she should use either 'swarm connect' or add them to the bootstrap nodes list.
So it boils down to just filter IPs while learning them from other peers or reading them from the DHT.
The proposed fix here is to avoid dialing private addresses as part of queries on the public DHT.
^^
The proposed fix here is to avoid dialing private addresses as part of queries on the public DHT.
^^
Alright, maybe I've read that a bit too fast :grin:
Unfortunately, those badger fixes haven't been backported to version 1 yet.
I created a tracking issue upstream - they might not be aware :)
Hello early testers, we now have a fully featured and tested RC online for public testing: https://dist.ipfs.io/go-ipfs/v0.6.0-rc6
Please be aware that this RC contains a config migration. It should run pretty much instantaneously, but it will add add QUIC listener addresses to your configs by default when upgrading from the previous release.
We also recommend that you try out the often requested "peering" (sometimes called friending, bonding, etc.) feature. This feature allows specifying a set of peers to keep open connections to at all times (useful for, e.g., connecting a gateway and a storage cluster).
Early Testers:
The peering support makes me so happy.
Peering doesn't seem to work for me, unless i got the syntax completely wrong (a full example in the docs would help).
I just get Error: error loading plugins: failure to decode config: invalid character '}' looking for beginning of object key string
go-ipfs 0.6.0-rc7 is out with two changes:
Swarm.Transports section for configuring transports. You can use this to prefer or disable the new noise transport, or disable the new QUIC transport if necessary. This section replaces the Experimental.OverrideSecurityTransports option present in the last RC.This will almost certainly be the final RC in this release cycle. Please test widely. I'm hoping to cut a final release before the end of the week, if possible.
It seems a migration isn't automatically run when upgrading to 0.6.0
I used ipfs-update to go from 0.5.1 -> 0.6.0-RC1 -> 0.6.0
0.6.0-RC1 was working fine.
But after moving to 0.6.0, running IPFS with ipfs stats repo gives the error Error: ipfs repo needs migration
I can't find any information in ipfs --help or ipfs repo --help on how to migrate the repo.
That's strange. ipfs-update should do this for you. IPFS was probably running when you ran ipfs-update and, unfortunately, we don't run the migration in that case.
The simplest way to run the migration is to start the daemon with ipfs daemon --migrate.
I had stopped the daemon, still got the log to show it. ipfs-update usually fails to replace the binary if the daemon is still running.

Thanks, running ipfs daemon --migrate did fix the issue.
Feedback on this, it seems like you should be able to run the migration without needing to run the daemon. e.g. ipfs repo migrate. Instead of needing to run the daemon, stopping it, and then restarting the system service.
Ah. I assume your systemd unit sets IPFS_PATH?
I had stopped the daemon, still got the log to show it. ipfs-update usually fails to replace the binary if the daemon is still running.
On linux? What version of ipfs-update are you using?
Feedback on this, it seems like you should be able to run the migration without needing to run the daemon. e.g. ipfs repo migrate. Instead of needing to run the daemon, stopping it, and then restarting the system service.
https://github.com/ipfs/go-ipfs/issues/7471
Agreed.
Ubuntu 20.0.4

ipfs was installed initially using sudo ipfs-update install latest, so that it put it into /usr/local/bin/ipfs
And just to cover all bases, this is the systemd entry, which references it also from /usr/local/bin/ipfs. Which was stopped before using ipfs-update to bring it up to the latest.
[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub
User=ipfs-admin
[Install]
WantedBy=multi-user.target
Ok, got it. The issue is that sudo ipfs-update runs ipfs-update as root (with HOME=/root and IPFS_PATH=/root/.ipfs). Your systemd unit runs IPFS as ipfs-admin with IPFS_PATH=/path/to/ipfs-admin-home/.ipfs.
Unfortunately, this isn't something we can readily solve in ipfs update itself. The best we can do is make migrations less painful.
For now, I recommend passing the --migrate flag in the systemd unit. See https://github.com/ipfs/go-ipfs/blob/master/misc/systemd/ipfs.service for an example.
@aschmahmann could you create a 0.7.0 release issue and close this one?
Most helpful comment
Hello early testers, we now have a fully featured and tested RC online for public testing: https://dist.ipfs.io/go-ipfs/v0.6.0-rc6
Please be aware that this RC contains a config migration. It should run pretty much instantaneously, but it will add add QUIC listener addresses to your configs by default when upgrading from the previous release.
We also recommend that you try out the often requested "peering" (sometimes called friending, bonding, etc.) feature. This feature allows specifying a set of peers to keep open connections to at all times (useful for, e.g., connecting a gateway and a storage cluster).
Early Testers: