# Getting Started

> Turn your Linux server into a PaaS in 5 minutes.

Disco turns any Linux server (Hetzner, DigitalOcean, AWS, or a Raspberry Pi) into a private Platform-as-a-Service. You get a `git push` workflow and zero-downtime deployments running on your own hardware, managed by our hosted web dashboard.

This guide will walk you through setting up your server and deploying your first application in about 5 minutes.

### Prerequisites

Before you start, make sure you have:

* **A Linux Server:** We support **Ubuntu 24.04 LTS**. You need SSH access to this server.
* **A GitHub Account:** Disco uses GitHub for authentication and to pull your code.
* **A Domain Name (Optional):** Disco provides automatic subdomains, but you can use your own custom domain if you have one.

***

1. Install Disco on Your Server

   SSH into your server and run the installation script.

   ```bash
   # SSH into your server as root, or as ubuntu
   # ssh root@...

   # Run the install script
   curl -fsSL https://disco.cloud/install.sh | sh
   ```

   The script will install Docker, set up the Disco daemon, and provision a secure connection. When it finishes, you will see an output that looks like this:

   ```bash
   ...
   -> [6/7] Generating invite link...
   -> [7/7] Installation complete!

   Visit this URL to complete setup:

     https://dashboard.disco.cloud/i/...
   ```

   **Copy the URL from your terminal and open it in your browser.**

2. Connect Your GitHub Account

   When you open the link, you will be asked to log in with GitHub. This connects your GitHub account to the web dashboard, where you’ll be able to manage your Disco servers.

   ![GitHub Login Page](/docs/_astro/github-login.sGE5Gk2j_2juCfu.webp)

   Once logged in, you will be taken to your server’s dashboard.

   > **GitHub Permissions Warning**
   >
   > You may see a warning that the app will “Act on your behalf.” This is a generic message from GitHub for all apps. Disco only requests access to read your email address for login purposes.

3. Accept the Invite to your Server

   You will be asked to accept an invite to your Disco server (“Accept Invite?”). Click the **Accept Invite** button. You will land on the **Manage GitHub Access** page.

   ![Accept Invite Page](/docs/_astro/accept-invite.CzaEBPt6_Z2khUCb.webp)

4. Configure the GitHub App

   To deploy your code, your Disco server needs permission to read your repositories. You need to create and install a GitHub App.

   > **Caution**
   >
   > This step happens on GitHub, but you must return to the Disco dashboard to finish.

   1. On the Disco dashboard, you will see a **“Set up GitHub integration”** button. Click it.
   2. This will open GitHub in a new tab. Give the app a name (e.g., `Disco my-server`) and click **Create GitHub App**.
   3. On the next screen, click **Install**.
   4. Select the repositories you want to deploy (or select “All repositories”).

   After selecting the repositories, you should be brought back to the Disco dashboard.

5. Prepare Your Repository

   Disco needs two files in your repository to know how to build and run your app. If you don’t have them, create them now.

   > **Tip**
   >
   > Want to skip this step? You can fork our **[Example Flask Application](https://github.com/letsdiscodev/example-flask-site)** to get started immediately with a working repo. See [Supported Frameworks](/docs/frameworks) for more starter repos.

   `Dockerfile` tells Disco how to build your application image.

   **Dockerfile**

   ```dockerfile
   # Example for a Node.js app
   FROM node:latest
   WORKDIR /code

   COPY ./package.json /code/package.json
   COPY ./package-lock.json /code/package-lock.json
   RUN npm ci

   COPY . /code/.
   CMD ["node", "index.js"]
   ```

   `disco.json` tells Disco which service to expose to the internet.

   **disco.json**

   ```json
   {
       "version": "1.0",
       "services": {
           "web": {
               "port": 3000
           }
       }
   }
   ```

   * **`web`**: This service name is special. Disco will route public traffic to this service.
   * **`port`**: The internal port your app listens on (must match your app’s config).

   `disco.json` supports many more options for workers, health checks, and crons.

6. Deploy Your First Project

   Back in the Disco dashboard:

   1. You should be at the New Project form. Otherwise, click **Projects** in the left sidebar.
   2. **Name:** Give your project a name (e.g., `my-flask-app`).
   3. **Repository:** Select the GitHub repository you authorized in Step 3.
   4. Click **“Create Project”**.

   ![New Project Form](/docs/_astro/new-project.OrV5A7bR_1GRRtR.webp)

   Disco will now pull your code, build the Docker image, and start your application. You can watch the build logs stream in real-time.

**Success!** Once the build finishes, your app will be live at the URL displayed in the dashboard.