# 📄 Guide d'Installation et Configuration OnlyOffice

Guide complet pour installer et configurer OnlyOffice Document Server avec Laravel et Vue.js.

## 🐳 Installation du serveur OnlyOffice

### Option 1 : Installation avec Docker (Recommandé)

#### Installation avec JWT (Production)

```bash
# Générer une clé secrète
SECRET_KEY=$(openssl rand -hex 32)

# Lancer avec JWT activé
docker run -i -t -d -p 80:80 \
  -e JWT_ENABLED=true \
  -e JWT_SECRET=${SECRET_KEY} \
  --add-host votre-domaine.local:host-gateway \
  --name onlyoffice \
  onlyoffice/documentserver

# Sauvegarder la clé secrète
echo "ONLYOFFICE_JWT_SECRET=${SECRET_KEY}" >> .env
```

### Option 2 : Installation manuelle (Ubuntu)

```bash
# Ajouter le repository OnlyOffice
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list

# Installer OnlyOffice
sudo apt-get update
sudo apt-get install onlyoffice-documentserver

# Vérifier l'installation
sudo systemctl status ds-*
```

### Vérification de l'installation

Ouvrez votre navigateur et accédez à :

```
http://localhost
```

## 🔐 Configuration de sécurité (JWT)

### Générer une clé secrète forte

```bash
# Option 1 : OpenSSL
openssl rand -hex 32

# Option 2 : PHP
php -r "echo bin2hex(random_bytes(32));"

# Option 3 : Laravel Artisan
php artisan key:generate --show
```

### Configurer le serveur OnlyOffice avec JWT

#### Docker

```bash
docker run -i -t -d -p 80:80 \
  -e JWT_ENABLED=true \
  -e JWT_SECRET=votre-cle-generee-ici \
  --name onlyoffice \
  onlyoffice/documentserver
```

#### Installation manuelle

Éditez `/etc/onlyoffice/documentserver/local.json` :

```json
{
  "services": {
    "CoAuthoring": {
      "secret": {
        "inbox": {
          "string": "votre-cle-generee-ici"
        },
        "outbox": {
          "string": "votre-cle-generee-ici"
        }
      },
      "token": {
        "enable": {
          "browser": true,
          "request": {
            "inbox": true,
            "outbox": true
          }
        }
      }
    }
  }
}
```

Redémarrez :

```bash
sudo supervisorctl restart all
```

---

## 🐛 Dépannage

### Problème : "Could not resolve host"

**Cause** : Le conteneur Docker ne peut pas accéder à votre serveur Laravel.

**Solution** :

```bash
# Recréer le conteneur avec extra_hosts
docker stop onlyoffice && docker rm onlyoffice

docker run -i -t -d -p 80:80 \
  -e JWT_ENABLED=true \
  -e JWT_SECRET=votre-cle \
  --add-host votre-domaine.local:host-gateway \
  --name onlyoffice \
  onlyoffice/documentserver
```

### Problème : "Impossible d'accéder au fichier"

**Solutions** :

1. Vérifiez que Laravel écoute sur toutes les interfaces :
```bash
php artisan serve --host=0.0.0.0 --port=8000
```

2. Testez l'accès depuis OnlyOffice :
```bash
docker exec -it onlyoffice curl -I http://votre-domaine.local:8000/api/v1/onlyoffice/download/FILE_ID
```

### Problème : Les modifications ne sont pas sauvegardées

**Vérifications** :

1. Le callback reçoit-il les requêtes ?
```bash
tail -f storage/logs/laravel.log | grep Callback
```

2. La clé du document change-t-elle après sauvegarde ?
```php
// Dans le callback, vérifiez que cette ligne est présente
$file->updated_at = now();
$file->save();
```

### Problème : Erreur JWT

**Solution** : Désactivez temporairement JWT pour tester :

```env
# .env
ONLYOFFICE_JWT_SECRET=
```

```bash
# Docker
docker run -i -t -d -p 80:80 \
  -e JWT_ENABLED=false \
  --name onlyoffice \
  onlyoffice/documentserver
```

### Problème : L'autosave ne fonctionne pas

**Vérifications** :

1. `forcesave: true` est dans la config
2. Le callback gère le status 6
3. Attendez 5 minutes (délai par défaut)

### Logs utiles

```bash
# Logs Laravel
tail -f storage/logs/laravel.log

# Logs OnlyOffice
docker logs -f onlyoffice

# Logs système OnlyOffice
docker exec -it onlyoffice tail -f /var/log/onlyoffice/documentserver/converter/out.log
```

---

## 📝 Formats supportés

### Documents texte (word)
- Microsoft Word : doc, docx, docm, dot, dotm, dotx
- OpenDocument : odt, ott, fodt
- Autres : rtf, txt, pdf, html, epub

### Tableurs (cell)
- Microsoft Excel : xls, xlsx, xlsm, xlt, xltm, xltx
- OpenDocument : ods, ots, fods
- Autres : csv

### Présentations (slide)
- Microsoft PowerPoint : ppt, pptx, pptm, pps, ppsx
- OpenDocument : odp, otp, fodp

---

## 📚 Ressources

- [Documentation officielle OnlyOffice](https://api.onlyoffice.com/editors/basic)
- [OnlyOffice GitHub](https://github.com/ONLYOFFICE/DocumentServer)
- [Forum OnlyOffice](https://forum.onlyoffice.com/)

---

**Dernière mise à jour** : Décembre 2024
