(install-ovh)=

# Installing on OVH

## Goal

By the end of this tutorial, you should have a JupyterHub with some admin
users and a user environment with packages you want installed running on
[OVH](https://www.ovh.com).

## Pre-requisites

1. An OVH account.

## Step 1: Installing The Littlest JupyterHub

Let's create the server on which we can run JupyterHub.

1.  Log in to the [OVH Control Panel](https://www.ovh.com/auth/).

2.  Click the **Public Cloud** button in the navigation bar.

    ```{image} ../images/providers/ovh/public-cloud.png
    :alt: Public Cloud entry in the navigation bar
    ```

3.  If you don't have an OVH Stack, you can create one by clicking on the following button:

    ```{image} ../images/providers/ovh/create-ovh-stack.png
    :alt: Button to create an OVH stack
    ```

4.  Select a name for the project:

    ```{image} ../images/providers/ovh/project-name.png
    :alt: Select a name for the project
    ```

5.  If you don't have a payment method yet, select one and click on "Create my project":

    ```{image} ../images/providers/ovh/payment.png
    :alt: Select a payment method
    ```

6.  Using the **Public Cloud interface**, click on **Create an instance**:

    ```{image} ../images/providers/ovh/create-instance.png
    :alt: Create a new instance
    ```

7.  **Select a model** for the instance. A good start is the **S1-4** model under **Shared resources** which comes with 4GB RAM, 1 vCores and 20GB SSD.

8.  **Select a region**.

9.  Select **Ubuntu 22.04** as the image:

    ```{image} ../images/providers/ovh/distribution.png
    :alt: Select Ubuntu 22.04 as the image
    ```

10. OVH requires setting an SSH key to be able to connect to the instance.
    You can create a new SSH by following
    [these instructions](https://help.github.com/en/enterprise/2.16/user/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).
    Be sure to copy the content of the `~/.ssh/id_rsa.pub` file, which corresponds to the **public part** of the SSH key.

11. Select **Configure your instance**, and select a name for the instance.
    Under **Post-installation script**, copy the text below and paste it in the text box.
    Replace `<admin-user-name>` with the name of the first **admin user** for this
    JupyterHub. This admin user can log in after the JupyterHub is set up, and
    can configure it to their needs. **Remember to add your username**!

    ```bash
    #!/bin/bash
    curl -L https://tljh.jupyter.org/bootstrap.py \
      | sudo python3 - \
        --admin <admin-user-name>
    ```

    :::{note}
    See [](/topic/installer-actions) if you want to understand exactly what the installer is doing.
    [](/topic/customizing-installer) documents other options that can be passed to the installer.
    :::

    ```{image} ../images/providers/ovh/configuration.png
    :alt: Add post-installation script
    ```

12. Select a billing period: monthly or hourly.

13. Click the **Create an instance** button! You will be taken to a different screen,
    where you can see progress of your server being created.

    ```{image} ../images/providers/ovh/create-instance.png
    :alt: Select suitable hostname for your server
    ```

14. In a few seconds your server will be created, and you can see the **public IP**
    used to access it.

    ```{image} ../images/providers/ovh/public-ip.png
    :alt: Server finished creating, public IP available
    ```

15. The Littlest JupyterHub is now installing in the background on your new server.
    It takes around 5-10 minutes for this installation to complete.

16. Check if the installation is complete by copying the **public ip**
    of your server, and trying to access it with a browser. This will fail until
    the installation is complete, so be patient.

17. When the installation is complete, it should give you a JupyterHub login page.

    ```{image} ../images/first-login.png
    :alt: JupyterHub log-in page
    ```

18. Login using the **admin user name** you used in step 6, and a password. Use a
    strong password & note it down somewhere, since this will be the password for
    the admin user account from now on.

19. Congratulations, you have a running working JupyterHub!

## Step 2: Adding more users

```{include} add-users.md

```

## Step 3: Install conda / pip packages for all users

```{include} add-packages.md

```
