diff --git a/lib/src/command/lish.dart b/lib/src/command/lish.dart
index 2dbd6dc..f33a529 100644
--- a/lib/src/command/lish.dart
+++ b/lib/src/command/lish.dart
@@ -62,7 +62,8 @@
         negatable: false,
         help: 'Publish without confirmation if there are no errors.');
     argParser.addOption('server',
-        help: 'The package server to which to upload this package.');
+        help: 'The package server to which to upload this package.',
+        hide: true);
   }
 
   Future<void> _publish(List<int> packageBytes) async {
@@ -116,6 +117,16 @@
 
   @override
   Future runProtected() async {
+    if (argResults.wasParsed('server')) {
+      await log.warningsOnlyUnlessTerminal(() {
+        log.message(
+          '''
+The --server option is deprecated. Use `publish_to` in your pubspec.yaml or set
+the \$PUB_HOSTED_URL environment variable.''',
+        );
+      });
+    }
+
     if (force && dryRun) {
       usageException('Cannot use both --force and --dry-run.');
     }
diff --git a/lib/src/command/uploader.dart b/lib/src/command/uploader.dart
index dc28eca..f80419c 100644
--- a/lib/src/command/uploader.dart
+++ b/lib/src/command/uploader.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:io';
 
 import '../command.dart';
 import '../exceptions.dart';
@@ -28,8 +29,10 @@
 
   UploaderCommand() {
     argParser.addOption('server',
-        defaultsTo: cache.sources.hosted.defaultUrl,
-        help: 'The package server on which the package is hosted.');
+        defaultsTo: Platform.environment['PUB_HOSTED_URL'] ??
+            'https://pub.dartlang.org',
+        help: 'The package server on which the package is hosted.\n',
+        hide: true);
     argParser.addOption('package',
         help: 'The package whose uploaders will be modified.\n'
             '(defaults to the current package)');
@@ -37,6 +40,15 @@
 
   @override
   Future<void> runProtected() async {
+    if (argResults.wasParsed('server')) {
+      await log.warningsOnlyUnlessTerminal(() {
+        log.message(
+          '''
+The --server option is deprecated. Use `publish_to` in your pubspec.yaml or set
+the \$PUB_HOSTED_URL environment variable.''',
+        );
+      });
+    }
     if (argResults.rest.isEmpty) {
       log.error('No uploader command given.');
       printUsage();
diff --git a/lib/src/source/hosted.dart b/lib/src/source/hosted.dart
index d8c3ef7..84810a2 100644
--- a/lib/src/source/hosted.dart
+++ b/lib/src/source/hosted.dart
@@ -62,10 +62,10 @@
     var url = io.Platform.environment['PUB_HOSTED_URL'];
     if (url == null) return null;
     var uri = Uri.parse(url);
-    if (uri.scheme?.isEmpty ?? true) {
+    if (!uri.isScheme('http') && !uri.isScheme('https')) {
       throw ConfigException(
-          '`PUB_HOSTED_URL` must include a scheme such as "https://". '
-          '$url is invalid');
+          '`PUB_HOSTED_URL` must have either the scheme "https://" or "http://". '
+          '"$url" is invalid.');
     }
     return url;
   }
diff --git a/test/get/hosted/explain_bad_hosted_url_test.dart b/test/get/hosted/explain_bad_hosted_url_test.dart
new file mode 100644
index 0000000..c4b2e77
--- /dev/null
+++ b/test/get/hosted/explain_bad_hosted_url_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:test/test.dart';
+
+import '../../descriptor.dart' as d;
+import '../../test_pub.dart';
+
+void main() {
+  test('Complains nicely about invalid PUB_HOSTED_URL', () async {
+    await d.appDir({'foo': 'any'}).create();
+
+    // Get once so it gets cached.
+    await pubGet(
+        environment: {'PUB_HOSTED_URL': 'abc://bad_scheme.com'},
+        error: contains(
+            'PUB_HOSTED_URL` must have either the scheme "https://" or "http://".'),
+        exitCode: 78);
+
+    await pubGet(
+        environment: {'PUB_HOSTED_URL': ''},
+        error: contains(
+            'PUB_HOSTED_URL` must have either the scheme "https://" or "http://".'),
+        exitCode: 78);
+  });
+}
diff --git a/test/lish/does_not_publish_if_private_with_server_arg_test.dart b/test/lish/does_not_publish_if_private_with_server_arg_test.dart
index 96cc1f5..d446ec5 100644
--- a/test/lish/does_not_publish_if_private_with_server_arg_test.dart
+++ b/test/lish/does_not_publish_if_private_with_server_arg_test.dart
@@ -18,8 +18,10 @@
     await d.dir(appPath, [d.pubspec(pkg)]).create();
 
     await runPub(
-        args: ['lish', '--server', 'http://example.com'],
-        error: startsWith('A private package cannot be published.'),
-        exitCode: exit_codes.DATA);
+      args: ['lish'],
+      error: startsWith('A private package cannot be published.'),
+      environment: {'PUB_HOSTED_URL': 'http://example.com'},
+      exitCode: exit_codes.DATA,
+    );
   });
 }
diff --git a/test/lish/force_cannot_be_combined_with_dry_run_test.dart b/test/lish/force_cannot_be_combined_with_dry_run_test.dart
index aabdcfb..ea46ead 100644
--- a/test/lish/force_cannot_be_combined_with_dry_run_test.dart
+++ b/test/lish/force_cannot_be_combined_with_dry_run_test.dart
@@ -2,9 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:test/test.dart';
-
 import 'package:pub/src/exit_codes.dart' as exit_codes;
+import 'package:test/test.dart';
 
 import '../descriptor.dart' as d;
 import '../test_pub.dart';
@@ -14,16 +13,15 @@
 
   test('--force cannot be combined with --dry-run', () async {
     await runPub(args: ['lish', '--force', '--dry-run'], error: '''
-          Cannot use both --force and --dry-run.
-          
-          Usage: pub publish [options]
-          -h, --help       Print this usage information.
-          -n, --dry-run    Validate but do not publish the package.
-          -f, --force      Publish without confirmation if there are no errors.
-              --server     The package server to which to upload this package.
+Cannot use both --force and --dry-run.
 
-          Run "pub help" to see global options.
-          See https://dart.dev/tools/pub/cmd/pub-lish for detailed documentation.
-          ''', exitCode: exit_codes.USAGE);
+Usage: pub publish [options]
+-h, --help       Print this usage information.
+-n, --dry-run    Validate but do not publish the package.
+-f, --force      Publish without confirmation if there are no errors.
+
+Run "pub help" to see global options.
+See https://dart.dev/tools/pub/cmd/pub-lish for detailed documentation.
+''', exitCode: exit_codes.USAGE);
   });
 }
diff --git a/test/pub_uploader_test.dart b/test/pub_uploader_test.dart
index 1de8708..f1967e0 100644
--- a/test/pub_uploader_test.dart
+++ b/test/pub_uploader_test.dart
@@ -5,12 +5,11 @@
 import 'dart:async';
 import 'dart:convert';
 
+import 'package:pub/src/exit_codes.dart' as exit_codes;
 import 'package:shelf/shelf.dart' as shelf;
 import 'package:test/test.dart';
 import 'package:test_process/test_process.dart';
 
-import 'package:pub/src/exit_codes.dart' as exit_codes;
-
 import 'descriptor.dart' as d;
 import 'test_pub.dart';
 
@@ -19,8 +18,6 @@
 
 Usage: pub uploader [options] {add/remove} <email>
 -h, --help       Print this usage information.
-    --server     The package server on which the package is hosted.
-                 (defaults to "https://pub.dartlang.org")
     --package    The package whose uploaders will be modified.
                  (defaults to the current package)
 
@@ -30,8 +27,11 @@
 
 Future<TestProcess> startPubUploader(PackageServer server, List<String> args) {
   var tokenEndpoint = Uri.parse(server.url).resolve('/token').toString();
-  var allArgs = ['uploader', '--server', tokenEndpoint, ...args];
-  return startPub(args: allArgs, tokenEndpoint: tokenEndpoint);
+  var allArgs = ['uploader', ...args];
+  return startPub(
+      args: allArgs,
+      tokenEndpoint: tokenEndpoint,
+      environment: {'PUB_HOSTED_URL': tokenEndpoint});
 }
 
 void main() {
diff --git a/test/test_pub.dart b/test/test_pub.dart
index 45d47c2..c98dcb8 100644
--- a/test/test_pub.dart
+++ b/test/test_pub.dart
@@ -336,8 +336,11 @@
 Future<PubProcess> startPublish(PackageServer server,
     {List<String> args}) async {
   var tokenEndpoint = Uri.parse(server.url).resolve('/token').toString();
-  args = ['lish', '--server', server.url, ...?args];
-  return await startPub(args: args, tokenEndpoint: tokenEndpoint);
+  args = ['lish', ...?args];
+  return await startPub(
+      args: args,
+      tokenEndpoint: tokenEndpoint,
+      environment: {'PUB_HOSTED_URL': server.url});
 }
 
 /// Handles the beginning confirmation process for uploading a packages.
