# 🐋Docker / Docker Compose + Dockge Setup Guide (Debian 12 Bookworm)

### Prerequisites

- Debian Bookworm
- Root or sudo privileges
- Internet access

---

### 1. 🔄 Update the System

```bash
apt update && apt upgrade -y
```

---

### 2. 📦 Install Dependencies

```bash
apt install apt-transport-https ca-certificates curl software-properties-common gnupg2 -y
```

---

### 3. 🔑 Add Docker GPG Key and Repository

> **Note:**<span style="white-space: pre-wrap;"> </span>`<span class="editor-theme-code">apt-key</span>`<span style="white-space: pre-wrap;"> is deprecated. A better method is to store the key in </span>`<span class="editor-theme-code">/etc/apt/keyrings/</span>`, but this follows the legacy method used in the original steps.

```bash
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list
```

---

### 4. 🐳 Install Docker Engine + Compose Plugin

```bash
apt update && apt install docker-ce -y
```

This installs:

- Docker Engine
- Docker CLI
- Docker Compose plugin (`<span class="editor-theme-code">docker compose</span>`)
- <span style="white-space: pre-wrap;">Supporting packages like </span>`<span class="editor-theme-code">containerd.io</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">iptables</span>`, etc.

---

### 5. 🚀 Enable Docker on Boot

```bash
systemctl enable docker
```

---

### <span style="white-space: pre-wrap;">6. 🧱 (Optional) Install Legacy </span>`<span class="editor-theme-code">docker-compose</span>`<span style="white-space: pre-wrap;"> Binary</span>

```bash
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
```

---

### 7. 📁 Set Up Dockge (Docker Container Manager)

```bash
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
docker compose up -d
```

This:

- Creates project directories
- <span style="white-space: pre-wrap;">Downloads the </span>`<span class="editor-theme-code">compose.yaml</span>`<span style="white-space: pre-wrap;"> for Dockge</span>
- Deploys Dockge using Docker Compose

<span style="white-space: pre-wrap;">Once running, Dockge will be available via Docker (check </span>`<span class="editor-theme-code">docker ps</span>`<span style="white-space: pre-wrap;"> for ports).</span>

---

### ✅ Result

- Docker installed and running
- Docker Compose (v1 and plugin) available
- <span style="white-space: pre-wrap;">Dockge deployed and managing stacks under </span>`<span class="editor-theme-code">/opt/stacks</span>`

---

### 💡 Notes

- <span style="white-space: pre-wrap;">If </span>`<span class="editor-theme-code">apt-key</span>`<span style="white-space: pre-wrap;"> shows a deprecation warning, consider migrating the key to </span>`<span class="editor-theme-code">/etc/apt/keyrings/docker.gpg</span>`<span style="white-space: pre-wrap;"> and referencing that path in the </span>`<span class="editor-theme-code">.list</span>`<span style="white-space: pre-wrap;"> file.</span>
- <span style="white-space: pre-wrap;">Dockge stores stacks in </span>`<span class="editor-theme-code">/opt/stacks</span>`. You can start new apps here using Dockge's web UI.
- <span style="white-space: pre-wrap;">Port for Dockge is defined in the </span>`<span class="editor-theme-code">compose.yaml</span>`.