# Configuration Basics

The section contains basic information about configuring settings for a JupyterHub deployment. The [Technical Reference](../reference/index.html) documentation provides additional details.

This section will help you learn how to:

  • generate a default configuration file, jupyterhub_config.py

  • start with a specific configuration file

  • configure JupyterHub using command line options

  • find information and examples for some common deployments

## Generate a default config file

On startup, JupyterHub will look by default for a configuration file, jupyterhub_config.py, in the current working directory.

To generate a default config file, jupyterhub_config.py:

`bash jupyterhub --generate-config `

This default jupyterhub_config.py file contains comments and guidance for all configuration variables and their default values. We recommend storing configuration files in the standard UNIX filesystem location, i.e. /etc/jupyterhub.

## Start with a specific config file

You can load a specific config file and start JupyterHub using:

`bash jupyterhub -f /path/to/jupyterhub_config.py `

If you have stored your configuration file in the recommended UNIX filesystem location, /etc/jupyterhub, the following command will start JupyterHub using the configuration file:

`bash jupyterhub -f /etc/jupyterhub/jupyterhub_config.py `

The IPython documentation provides additional information on the [config system](http://ipython.readthedocs.io/en/stable/development/config.html) that Jupyter uses.

## Configure using command line options

To display all command line options that are available for configuration:

```bash

jupyterhub –help-all

```

Configuration using the command line options is done when launching JupyterHub. For example, to start JupyterHub on 10.0.1.2:443 with https, you would enter:

```bash

jupyterhub –ip 10.0.1.2 –port 443 –ssl-key my_ssl.key –ssl-cert my_ssl.cert

```

All configurable options may technically be set on the command-line, though some are inconvenient to type. To set a particular configuration parameter, c.Class.trait, you would use the command line option, --Class.trait, when starting JupyterHub. For example, to configure the c.Spawner.notebook_dir trait from the command-line, use the --Spawner.notebook_dir option:

`bash jupyterhub --Spawner.notebook_dir='~/assignments' `

## Configure for various deployment environments

The default authentication and process spawning mechanisms can be replaced, and specific [authenticators](./authenticators-users-basics.html) and [spawners](./spawners-basics.html) can be set in the configuration file. This enables JupyterHub to be used with a variety of authentication methods or process control and deployment environments. [Some examples](../reference/config-examples.html), meant as illustration, are: