# Installation Colima sur macOS (Homebrew + Fish)

Guide complet pour installer et configurer **Colima** comme runtime Docker sur macOS, avec le shell **Fish**. Colima remplace Docker Desktop : il fournit `dockerd` dans une petite VM Linux, gratuit et léger.

> **Contexte de ce guide** — Il résout aussi l'erreur :
> ```
> unable to get image 'getfider/fider:stable': failed to connect to the docker API at
> unix:///Users/humperdoo/.colima/default/docker.sock: ... connect: no such file or directory
> ```
> Cette erreur = le socket Docker de Colima n'existe pas, donc **la VM Colima n'est pas démarrée** (ou le contexte Docker pointe vers un socket inexistant). Voir [Réparer l'erreur](#5-réparer-lerreur-dockersock-no-such-file-or-directory).

---

## 0. Diagnostic rapide (le fix en 30 secondes)

Si tu veux juste régler l'erreur tout de suite :

```fish
colima status      # est-ce que la VM tourne ?
colima start       # si non, on la démarre
docker context use colima
docker ps          # doit répondre sans erreur
```

Si `colima` n'est pas installé, suis le guide complet ci-dessous.

---

## 1. Prérequis

- macOS (Intel ou Apple Silicon)
- [Homebrew](https://brew.sh) installé
- Shell **Fish** (`echo $SHELL` doit contenir `fish`)
- Docker Desktop **arrêté** s'il est présent (Colima et Docker Desktop se disputent le socket `docker.sock`). Quitte complètement Docker Desktop avant de continuer.

Vérifie Homebrew :

```fish
brew --version
```

---

## 2. Installation via Homebrew

```fish
brew install colima docker docker-compose
```

- `colima` — la VM + le runtime
- `docker` — le client CLI (`docker ...`)
- `docker-compose` — le plugin Compose (`docker compose ...`)

Vérifie les versions :

```fish
colima version
docker --version
docker compose version
```

---

## 3. Configuration du plugin Compose (Fish)

Homebrew installe `docker-compose` comme **plugin CLI**, mais Docker ne le trouve pas toujours seul. On déclare le dossier des plugins.

Crée le lien attendu par le client Docker :

```fish
mkdir -p ~/.docker/cli-plugins
ln -sfn (brew --prefix)/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose
```

Vérifie :

```fish
docker compose version
```

Si la commande répond, `docker compose pull` / `up` fonctionneront.

---

## 4. Démarrer Colima

Démarrage simple :

```fish
colima start
```

Démarrage recommandé avec des ressources confortables (ajuste selon ta machine) :

```fish
colima start --cpu 4 --memory 8 --disk 60
```

| Option       | Rôle                                  | Valeur conseillée |
|--------------|---------------------------------------|-------------------|
| `--cpu`      | cœurs CPU alloués à la VM              | 4                 |
| `--memory`   | RAM en Go                             | 8                 |
| `--disk`     | disque en Go                          | 60                |
| `--arch`     | `aarch64` (Apple Silicon) / `x86_64`  | auto              |

Les ressources sont mémorisées : les prochains `colima start` les réutilisent.

Vérifie que tout est lié :

```fish
colima status
docker context use colima
docker ps
```

`docker context use colima` indique au client Docker d'utiliser le socket de Colima (`~/.colima/default/docker.sock`). C'est ce qui manquait dans l'erreur d'origine.

---

## 5. Réparer l'erreur `docker.sock: no such file or directory`

L'erreur signifie que le client cherche `unix:///Users/humperdoo/.colima/default/docker.sock` mais le fichier n'existe pas. Causes et solutions, dans l'ordre :

**a) Colima n'est pas démarré** (cas le plus fréquent)

```fish
colima status      # "colima is not running" ?
colima start
```

**b) Le contexte Docker est mal réglé**

```fish
docker context ls            # repère le contexte "colima"
docker context use colima
```

**c) Une variable `DOCKER_HOST` traîne dans l'environnement Fish**

```fish
set -e DOCKER_HOST          # supprime la variable pour la session
```

Et si elle est définie en permanence, retire-la de `~/.config/fish/config.fish`.

**d) Le socket existe mais le contexte pointe ailleurs** — forcer manuellement :

```fish
set -gx DOCKER_HOST "unix://$HOME/.colima/default/docker.sock"
```

Puis re-teste :

```fish
docker ps
```

**e) Toujours cassé ?** Repartir propre :

```fish
colima delete        # supprime la VM (les volumes Docker nommés sont perdus)
colima start --cpu 4 --memory 8 --disk 60
docker context use colima
```

Une fois `docker ps` OK, relance ton projet :

```fish
docker compose pull
docker compose up -d
```

---

## 6. Démarrage automatique au login (optionnel)

Pour que Colima démarre tout seul à l'ouverture de session :

```fish
brew services start colima
```

Pour arrêter ce démarrage auto :

```fish
brew services stop colima
```

---

## 7. Commandes du quotidien

```fish
colima start            # démarrer la VM
colima stop             # arrêter (libère RAM/CPU)
colima status           # état
colima ssh              # shell dans la VM Linux
colima list             # lister les profils
docker ps               # conteneurs en cours
docker compose up -d    # lancer un projet en arrière-plan
docker compose down     # arrêter un projet
```

---

## 8. Dépannage rapide

| Symptôme | Cause probable | Solution |
|----------|----------------|----------|
| `docker.sock: no such file` | Colima pas démarré | `colima start` |
| `Cannot connect to the Docker daemon` | mauvais contexte | `docker context use colima` |
| `docker compose: command not found` | plugin non lié | refaire l'étape 3 |
| Conflit avec Docker Desktop | les deux tournent | quitter Docker Desktop |
| VM lente / manque de RAM | ressources trop basses | `colima stop` puis `colima start --memory 8` |
| Tout est cassé | VM corrompue | `colima delete` puis `colima start` |

---

## 9. Désinstallation (si besoin)

```fish
colima stop
colima delete
brew uninstall colima docker docker-compose
rm -rf ~/.colima ~/.docker/cli-plugins/docker-compose
```

---

*Runtime Docker partagé par tous les projets self-hosted (Fider, Firecrawl, OpenPanel). À démarrer avant tout `docker compose`.*
