diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4b07482b..fb64785c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,12 +1,18 @@
 CHANGELOG
 =========
 
-In Development
---------------
+v0.40 (January 12, 2019)
+------------------------
 
-This is the first release for Ubuntu 18.04. This version and versions going forward can **only** be installed on Ubuntu 18.04; however, upgrades of existing Ubuntu 14.04 boxes to the latest version supporting Ubuntu 14.04 continue to work as normal.
+This is the first release for Ubuntu 18.04. This version and versions going forward can **only** be installed on Ubuntu 18.04; however, upgrades of existing Ubuntu 14.04 boxes to the latest version supporting Ubuntu 14.04 (v0.30) continue to work as normal.
 
-When **upgrading**, you **must upgrade your existing Ubuntu 14.04 Mail-in-a-Box box** to the latest release supporting Ubuntu 14.04 --- that's v0.30 --- first. If you are running an older version of Mail-in-a-Box which has an old version of ownCloud or Nextcloud, you will *not* be able to upgrade your data because older versions of ownCloud and Nextcloud that are required to perform the upgrade *cannot* be run on Ubuntu 18.04. To upgrade from Ubuntu 14.04 to Ubuntu 18.04, you **must create a fresh Ubuntu 18.04 machine** before installing this version. In-place upgrades of servers are not supported. Since Ubuntu's support for Ubuntu 14.04 has almost ended, everyone is encouraged to upgrade.
+When **upgrading**, you **must first upgrade your existing Ubuntu 14.04 Mail-in-a-Box box** to the latest release supporting Ubuntu 14.04 --- that's v0.30 --- before you migrate to Ubuntu 18.04. If you are running an older version of Mail-in-a-Box which has an old version of ownCloud or Nextcloud, you will *not* be able to upgrade your data because older versions of ownCloud and Nextcloud that are required to perform the upgrade *cannot* be run on Ubuntu 18.04. To upgrade from Ubuntu 14.04 to Ubuntu 18.04, you **must create a fresh Ubuntu 18.04 machine** before installing this version. In-place upgrades of servers are not supported. Since Ubuntu's support for Ubuntu 14.04 has almost ended, everyone is encouraged to create a new Ubuntu 18.04 machine and migrate to it.
+
+For complete upgrade instructions, see:
+
+https://discourse.mailinabox.email/t/mail-in-a-box-version-v0-40-and-moving-to-ubuntu-18-04/4289
+
+The changelog for this release follows.
 
 Setup:
 
@@ -17,7 +23,7 @@ Setup:
 Mail:
 
 * IMAP server-side full text search is no longer supported because we were using a custom-built `dovecot-lucene` package that we are no longer maintaining.
-* Sending email is now disabled on port 25 --- you must log in to port 587 to send email.
+* Sending email is now disabled on port 25 --- you must log in to port 587 to send email, per the long-standing mail instructions.
 * Greylisting may delay more emails from new senders. We were using a custom-built postgrey package previously that whitelisted sending domains in dnswl.org, but we are no longer maintaining that package.
 
 v0.30 (January 9, 2019)
diff --git a/README.md b/README.md
index c186a65d..300fe496 100644
--- a/README.md
+++ b/README.md
@@ -52,13 +52,13 @@ Clone this repository:
 	$ git clone https://github.com/mail-in-a-box/mailinabox
 	$ cd mailinabox
 
-_Optional:_ Download my PGP key and then verify that the sources were signed
-by me:
+_Optional:_ Download Josh's PGP key and then verify that the sources were signed
+by him:
 
 	$ curl -s https://keybase.io/joshdata/key.asc | gpg --import
 	gpg: key C10BDD81: public key "Joshua Tauberer <jt@occams.info>" imported
 
-	$ git verify-tag v0.30
+	$ git verify-tag v0.40
 	gpg: Signature made ..... using RSA key ID C10BDD81
 	gpg: Good signature from "Joshua Tauberer <jt@occams.info>"
 	gpg: WARNING: This key is not certified with a trusted signature!
@@ -67,19 +67,19 @@ by me:
 
 You'll get a lot of warnings, but that's OK. Check that the primary key fingerprint matches the
 fingerprint in the key details at [https://keybase.io/joshdata](https://keybase.io/joshdata)
-and on my [personal homepage](https://razor.occams.info/). (Of course, if this repository has been compromised you can't trust these instructions.)
+and on his [personal homepage](https://razor.occams.info/). (Of course, if this repository has been compromised you can't trust these instructions.)
 
 Checkout the tag corresponding to the most recent release:
 
-	$ git checkout v0.30
+	$ git checkout v0.40
 
 Begin the installation.
 
 	$ sudo setup/start.sh
 
-For help, DO NOT contact me directly --- I don't do tech support by email or tweet (no exceptions).
+For help, DO NOT contact Josh directly --- I don't do tech support by email or tweet (no exceptions).
 
-Post your question on the [discussion forum](https://discourse.mailinabox.email/) instead, where me and other Mail-in-a-Box users may be able to help you.
+Post your question on the [discussion forum](https://discourse.mailinabox.email/) instead, where maintainers and Mail-in-a-Box users may be able to help you.
 
 Contributing and Development
 ----------------------------
diff --git a/setup/bootstrap.sh b/setup/bootstrap.sh
index 90b43ce2..3442499d 100644
--- a/setup/bootstrap.sh
+++ b/setup/bootstrap.sh
@@ -12,15 +12,15 @@ if [ -z "$TAG" ]; then
 	# depends on the operating system. Existing Ubuntu 14.04 users need
 	# to be able to upgrade to the latest version supporting Ubuntu 14.04,
 	# in part because an upgrade is required before jumping to Ubuntu 18.04.
-	# New users on Ubuntu 18 need to get the latest version number too.
+	# New users on Ubuntu 18.04 need to get the latest version number too.
 	#
-	# Also, the system status checks read this script for TAG = to get
-	# (without the space, but if we put it in a comment it would confuse
-	# the status checks!) the latest version, so the first such line must
-	# be the one that we want to display in status checks.
+	# Also, the system status checks read this script for TAG = (without the
+	# space, but if we put it in a comment it would confuse the status checks!)
+	# to get the latest version, so the first such line must be the one that we
+	# want to display in status checks.
 	if [ "`lsb_release -d | sed 's/.*:\s*//' | sed 's/18\.04\.[0-9]/18.04/' `" == "Ubuntu 18.04 LTS" ]; then
 		# This machine is running Ubuntu 18.04.
-		TAG=v0.30
+		TAG=v0.40
 
 	elif [ "`lsb_release -d | sed 's/.*:\s*//' | sed 's/14\.04\.[0-9]/14.04/' `" == "Ubuntu 14.04 LTS" ]; then
 		# This machine is running Ubuntu 14.04.
@@ -30,6 +30,7 @@ if [ -z "$TAG" ]; then
 		echo "upgrading an existing Mail-in-a-Box --- great. After upgrading this"
 		echo "box, please visit https://mailinabox.email for notes on how to upgrade"
 		echo "to Ubuntu 18.04."
+		echo ""
 		TAG=v0.30
 
 	else