diff --git a/Install.md b/Install.md
new file mode 100644
index 0000000..5fc027d
--- /dev/null
+++ b/Install.md
@@ -0,0 +1,69 @@
+If you're using **ccls** for your own personal use and don't want to bother
+installing it, you don't have to. You will need to configure your editor to
+locate the `ccls` binary where it's built by CMake.
+
+If you'd like to install **ccls** into a separate location and clean up the
+build environment you can do so.
+
+## CMake install
+
+The CMake install rule will copy the **ccls** binary into the install prefix
+location set via `-DCMAKE_INSTALL_PREFIX=
`. By default `` will be
+`/usr/local`: note you may need to run the install with elevated privileges to
+write to this directory.
+
+After building you can run:
+
+```sh
+sudo cmake --build . --config Release --target install
+```
+
+(`sudo` is not necessary if you have write permissions to the installation
+directory). This will install **ccls** as `/bin/ccls` and also install
+the LLVM shared libraries (you do not need these unless you've set
+`-DUSE_SHARED_LLVM=ON` however).
+
+If you have `/bin` on your `PATH` then **ccls** should be found.
+
+## Shell Script Wrapper
+
+An alternative to installing `ccls` is to use a small shell script wrapper and
+put that on your `PATH`. This allows you to customize the invocation of
+`ccls`. It's especially useful for implementing relocatable installs, or for
+use with [[Editor Configuration]]s that don't make it easy to configure the
+server's startup.
+
+If you build in `$HOME/src/ccls/obj` using Ninja for example then you might
+create a shell script wrapper `ccls` like this:
+
+```sh
+#!/bin/sh
+exec "$HOME/src/ccls/obj/ccls" "$@"
+```
+
+(be sure to make the script executable!) You might want to add other options
+such as `--log-file=/tmp/ccls.out` to force logging. You may also want to add
+a `--init` option to set the resource directory as below. If you built `ccls`
+using shared libraries you might need to set `LD_LIBRARY_PATH` here before
+exec'ing `ccls`. And there are [[Debugging]] environment variables that might
+be useful to set as well.
+
+## Clang Resource Directory
+
+The Clang+LLVM shared library requires Clang system header files to be
+available otherwise indexing will fail silently. Clang searches for these
+headers in its _resource directory_. The `ccls` binary will be hard-coded to
+search for the resource directory where it was found by CMake during the build.
+
+If you downloaded Clang+LLVM as part of the build and you want to install
+**ccls** and delete the build directory, you need to copy the contents of the
+resource directory; for example something like:
+
+```sh
+sudo mkdir -p /usr/local/clang
+sudo cp -a clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/lib/clang/7.0.0/include /usr/local/clang
+```
+
+Then you must configure `ccls` to locate this directory by adding an option
+such as `--init='{"clang": {"resourceDir": "/usr/local/clang"}}'` (see
+[`resourceDir`](Customization#clangresourcedir) for more information).