# Self-Hosted Quickstart

This guide walks you through deploying Probo locally with Docker Compose and setting up your first compliance framework. You should be up and running in about 15 minutes.

For a managed service or a production Kubernetes deployment, [compare the deployment options](/docs/product/getting-started/choose-deployment).

## Prerequisites

- [Docker](https://docs.docker.com/get-started/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) installed on your machine
- [OpenSSL](https://www.openssl.org/) for generating local secrets

:::note
This quickstart creates a local evaluation environment at `http://localhost:8080`. For a production deployment with HTTPS, email delivery, backups, and monitoring, use the [full Docker Compose guide](/docs/deployment/self-hosting/docker-compose).
:::

## Deploy Probo

### 1. Clone the repository

```bash
git clone https://github.com/getprobo/probo.git
cd probo
```

### 2. Create the local environment

Generate the required secrets and application settings:

```bash
cat > .env <<EOF
PROBOD_ENCRYPTION_KEY=$(openssl rand -base64 32)
PROBOD_AUTH_COOKIE_SECRET=$(openssl rand -base64 32)
PROBOD_AUTH_PASSWORD_PEPPER=$(openssl rand -base64 32)
PROBOD_TRUST_AUTH_TOKEN_SECRET=$(openssl rand -base64 32)
PROBOD_BASE_URL=http://localhost:8080
PROBOD_API_ADDR=0.0.0.0:8080
PROBOD_API_CORS_ALLOWED_ORIGINS=http://localhost:8080
EOF
```

Keep `.env` private. These values protect encrypted data and authentication sessions.

### 3. Start the services

```bash
docker compose -f compose.prod.yaml up -d
```

This starts the Probo server, PostgreSQL, SeaweedFS, and the headless browser used for document generation.

### 4. Verify the deployment

```bash
curl --fail http://localhost:8080/healthz
docker compose -f compose.prod.yaml ps
```

The health request should succeed and each service should report a running or healthy state. If it does not, inspect the application logs:

```bash
docker compose -f compose.prod.yaml logs probo
```

### 5. Access the web interface

Open [http://localhost:8080](http://localhost:8080) in your browser. Create your account and log in.

### 6. Create your organization

After logging in, create your first organization. This is the top-level entity that contains all your compliance data.

### 7. Import a compliance framework

Navigate to the frameworks section and import the framework relevant to your business — for example, SOC 2 or ISO 27001. This gives you a set of controls to work with.

## Next Steps

You now have a running Probo instance with a compliance framework in place. From here, you can start mapping controls to your security practices, collecting evidence, and managing risks.

- [Set up your first framework](/docs/product/getting-started/first-organization-and-framework) — Continue with organization, framework, ownership, and evidence setup
- [Core Concepts](/docs/product/getting-started/core-concepts) — Understand the data model: frameworks, controls, internal controls, risks, and more
- [Configuration](/docs/deployment/configuration/overview) — Configure Probo for your environment
- [Single Sign-On](/docs/product/sso/overview) — Set up SSO with Google Workspace, Okta, or other SAML providers
- [Docker Compose (full guide)](/docs/deployment/self-hosting/docker-compose) — Complete deployment guide with production configuration, backups, and monitoring
