# Login to GitHub Container Registry (GHCR)

## On the Server

### 1. Create GitHub Personal Access Token
Go to: https://github.com/settings/tokens

Click "Generate new token (classic)"

Select scopes:
- ✅ `read:packages` (required)
- ✅ `write:packages` (if you need to push)

Copy the token (starts with `ghp_`)

### 2. Login to GHCR

```bash
# On your server
echo YOUR_GITHUB_TOKEN | docker login ghcr.io -u franknstayn --password-stdin
```

Or export as environment variable:

```bash
export GITHUB_TOKEN=ghp_your_token_here
echo $GITHUB_TOKEN | docker login ghcr.io -u franknstayn --password-stdin
```

### 3. Pull the image

```bash
cd crew-infrastructure
docker compose pull slipmatz_web
docker compose up -d slipmatz_web
```

## Make Package Public (Alternative - No Auth Required)

If you want to avoid authentication:

1. Go to: https://github.com/franknstayn?tab=packages
2. Click on `slipmatz-web` package
3. Package settings (right sidebar)
4. "Change visibility" → Select "Public"
5. Confirm

Then you can pull without login:
```bash
docker compose pull slipmatz_web
```

## Recommended for Production

Store credentials securely:

```bash
# On server, add to ~/.bashrc or ~/.zshrc
export GITHUB_TOKEN=ghp_your_token_here

# Add to docker-compose.yml env
echo "GITHUB_TOKEN=$GITHUB_TOKEN" >> .env
```

Or use docker credential helper for permanent storage.
