diff --git a/nifi-registry-core/nifi-registry-bootstrap/src/main/java/org/apache/nifi/registry/bootstrap/RunNiFiRegistry.java b/nifi-registry-core/nifi-registry-bootstrap/src/main/java/org/apache/nifi/registry/bootstrap/RunNiFiRegistry.java
index 769d1c4..c3bc172 100644
--- a/nifi-registry-core/nifi-registry-bootstrap/src/main/java/org/apache/nifi/registry/bootstrap/RunNiFiRegistry.java
+++ b/nifi-registry-core/nifi-registry-bootstrap/src/main/java/org/apache/nifi/registry/bootstrap/RunNiFiRegistry.java
@@ -80,6 +80,7 @@
     public static final String DEFAULT_JAVA_CMD = "java";
     public static final String DEFAULT_PID_DIR = "bin";
     public static final String DEFAULT_LOG_DIR = "./logs";
+    public static final String DEFAULT_DOCS_DIR = "./docs";
 
     public static final String GRACEFUL_SHUTDOWN_PROP = "graceful.shutdown.seconds";
     public static final String DEFAULT_GRACEFUL_SHUTDOWN_VALUE = "20";
@@ -827,21 +828,32 @@
         final Map<String, String> props = new HashMap<>();
         props.putAll((Map) properties);
 
+        // Determine the working dir for launching the NiFi Registry process
+        // The order of precedence is:
+        // 1) Specified in bootstrap.conf via working.dir
+        // 2) NIFI_REGISTRY_HOME env variable
+        // 3) Parent of bootstrap config file's parent
+
+        final File workingDir;
         final String specifiedWorkingDir = props.get("working.dir");
-        if (specifiedWorkingDir != null) {
-            builder.directory(new File(specifiedWorkingDir));
-        }
-
+        final String nifiRegistryHome = System.getenv("NIFI_REGISTRY_HOME");
         final File bootstrapConfigAbsoluteFile = bootstrapConfigFile.getAbsoluteFile();
-        final File binDir = bootstrapConfigAbsoluteFile.getParentFile();
-        final File workingDir = binDir.getParentFile();
 
-        if (specifiedWorkingDir == null) {
-            builder.directory(workingDir);
+        if (!StringUtils.isBlank(specifiedWorkingDir)) {
+            workingDir = new File(specifiedWorkingDir.trim());
+        } else if (!StringUtils.isBlank(nifiRegistryHome)) {
+            workingDir = new File(nifiRegistryHome.trim());
+        } else {
+            final File binDir = bootstrapConfigAbsoluteFile.getParentFile();
+            workingDir = binDir.getParentFile();
         }
 
+        builder.directory(workingDir);
+
         final String nifiRegistryLogDir = replaceNull(System.getProperty("org.apache.nifi.registry.bootstrap.config.log.dir"), DEFAULT_LOG_DIR).trim();
 
+        final String nifiRegistryDocsDir = replaceNull(props.get("docs.dir"), DEFAULT_DOCS_DIR).trim();
+
         final String libFilename = replaceNull(props.get("lib.dir"), "./lib").trim();
         File libDir = getFile(libFilename, workingDir);
         File libSharedDir = getFile(libFilename + "/shared", workingDir);
@@ -944,6 +956,7 @@
         cmd.add("-Dnifi.registry.properties.file.path=" + nifiRegistryPropsFilename);
         cmd.add("-Dnifi.registry.bootstrap.config.file.path=" + bootstrapConfigFile.getAbsolutePath());
         cmd.add("-Dnifi.registry.bootstrap.listen.port=" + listenPort);
+        cmd.add("-Dnifi.registry.bootstrap.config.docs.dir=" + nifiRegistryDocsDir);
         cmd.add("-Dapp=NiFiRegistry");
         cmd.add("-Dorg.apache.nifi.registry.bootstrap.config.log.dir=" + nifiRegistryLogDir);
         cmd.add("org.apache.nifi.registry.NiFiRegistry");
diff --git a/nifi-registry-core/nifi-registry-jetty/src/main/java/org/apache/nifi/registry/jetty/JettyServer.java b/nifi-registry-core/nifi-registry-jetty/src/main/java/org/apache/nifi/registry/jetty/JettyServer.java
index c202a5b..0eb6d88 100644
--- a/nifi-registry-core/nifi-registry-jetty/src/main/java/org/apache/nifi/registry/jetty/JettyServer.java
+++ b/nifi-registry-core/nifi-registry-jetty/src/main/java/org/apache/nifi/registry/jetty/JettyServer.java
@@ -78,18 +78,20 @@
 
     private final NiFiRegistryProperties properties;
     private final CryptoKeyProvider masterKeyProvider;
+    private final String docsLocation;
     private final Server server;
 
     private WebAppContext webUiContext;
     private WebAppContext webApiContext;
     private WebAppContext webDocsContext;
 
-    public JettyServer(final NiFiRegistryProperties properties, final CryptoKeyProvider cryptoKeyProvider) {
+    public JettyServer(final NiFiRegistryProperties properties, final CryptoKeyProvider cryptoKeyProvider, final String docsLocation) {
         final QueuedThreadPool threadPool = new QueuedThreadPool(properties.getWebThreads());
         threadPool.setName("NiFi Registry Web Server");
 
         this.properties = properties;
         this.masterKeyProvider = cryptoKeyProvider;
+        this.docsLocation = docsLocation;
         this.server = new Server(threadPool);
 
         // enable the annotation based configuration to ensure the jsp container is initialized properly
@@ -373,7 +375,24 @@
         resourceHandler.setDirectoriesListed(false);
 
         // load the docs directory
-        final File docsDir = Paths.get("docs").toRealPath().toFile();
+        String docsDirectory = docsLocation;
+        if (StringUtils.isBlank(docsDirectory)) {
+            docsDirectory = "docs";
+        }
+
+        File docsDir;
+        try {
+            docsDir = Paths.get(docsDirectory).toRealPath().toFile();
+        } catch (IOException ex) {
+            logger.warn("Directory '" + docsDirectory + "' is missing. Some documentation will be unavailable.");
+            docsDir = new File(docsDirectory).getAbsoluteFile();
+            final boolean made = docsDir.mkdirs();
+            if (!made) {
+                logger.error("Failed to create 'docs' directory!");
+                startUpFailure(new IOException(docsDir.getAbsolutePath() + " could not be created"));
+            }
+        }
+
         final Resource docsResource = Resource.newResource(docsDir);
 
         // load the rest documentation
diff --git a/nifi-registry-core/nifi-registry-resources/src/main/resources/conf/bootstrap.conf b/nifi-registry-core/nifi-registry-resources/src/main/resources/conf/bootstrap.conf
index 637eb64..e4bf313 100644
--- a/nifi-registry-core/nifi-registry-resources/src/main/resources/conf/bootstrap.conf
+++ b/nifi-registry-core/nifi-registry-resources/src/main/resources/conf/bootstrap.conf
@@ -21,9 +21,15 @@
 # Username to use when running nifi-registry. This value will be ignored on Windows.
 run.as=
 
+# Configure the working directory for launching the NiFi Registry process
+# If not specified, the working directory will fall back to using the NIFI_REGISTRY_HOME env variable
+# If the environment variable is not specified, the working directory will fall back to the parent of this file's parent
+working.dir=
+
 # Configure where nifi-registry's lib and conf directories live
 lib.dir=./lib
 conf.dir=./conf
+docs.dir=./docs
 
 # How long to wait after telling nifi-registry to shutdown before explicitly killing the Process
 graceful.shutdown.seconds=20
diff --git a/nifi-registry-core/nifi-registry-runtime/src/main/java/org/apache/nifi/registry/NiFiRegistry.java b/nifi-registry-core/nifi-registry-runtime/src/main/java/org/apache/nifi/registry/NiFiRegistry.java
index 982b9ea..455ab9d 100644
--- a/nifi-registry-core/nifi-registry-runtime/src/main/java/org/apache/nifi/registry/NiFiRegistry.java
+++ b/nifi-registry-core/nifi-registry-runtime/src/main/java/org/apache/nifi/registry/NiFiRegistry.java
@@ -44,9 +44,11 @@
 
     public static final String NIFI_REGISTRY_PROPERTIES_FILE_PATH_PROPERTY = "nifi.registry.properties.file.path";
     public static final String NIFI_REGISTRY_BOOTSTRAP_FILE_PATH_PROPERTY = "nifi.registry.bootstrap.config.file.path";
+    public static final String NIFI_REGISTRY_BOOTSTRAP_DOCS_DIR_PROPERTY = "nifi.registry.bootstrap.config.docs.dir";
 
     public static final String RELATIVE_BOOTSTRAP_FILE_LOCATION = "conf/bootstrap.conf";
     public static final String RELATIVE_PROPERTIES_FILE_LOCATION = "conf/nifi-registry.properties";
+    public static final String RELATIVE_DOCS_LOCATION = "docs";
 
     private final JettyServer server;
     private final BootstrapListener bootstrapListener;
@@ -104,8 +106,10 @@
         SLF4JBridgeHandler.removeHandlersForRootLogger();
         SLF4JBridgeHandler.install();
 
+        final String docsDir = System.getProperty(NIFI_REGISTRY_BOOTSTRAP_DOCS_DIR_PROPERTY, RELATIVE_DOCS_LOCATION);
+
         final long startTime = System.nanoTime();
-        server = new JettyServer(properties, masterKeyProvider);
+        server = new JettyServer(properties, masterKeyProvider, docsDir);
 
         if (shutdown) {
             LOGGER.info("NiFi Registry has been shutdown via NiFi Registry Bootstrap. Will not start Controller");
