175 lines
5.0 KiB
Markdown
175 lines
5.0 KiB
Markdown
|
|
# Noder — nextcloud collabora
|
||
|
|
|
||
|
|
Sex flödesnoder i paletten + en config. Alla sex pekar på samma **nc-collab-config** (kugghjul, inte i paletten). Utan config händer inget.
|
||
|
|
|
||
|
|
## Backends
|
||
|
|
|
||
|
|
| Backend | Typisk adress | Roll |
|
||
|
|
|---------|---------------|------|
|
||
|
|
| Nextcloud | `https://cloud.domain.name` | Filer (WebDAV) + Office-API (OCS) |
|
||
|
|
| Collabora CODE | `https://172.17.0.2:9980` | Konvertering (`/cool/...`) på Docker bridge |
|
||
|
|
|
||
|
|
Auth: **användarnamn + app-lösenord**. Inte kontolösen.
|
||
|
|
|
||
|
|
Standardutdata om du inte anger sökväg: `/Dokument/OfficeOut/`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Så hänger de ihop
|
||
|
|
|
||
|
|
```
|
||
|
|
nc-collab-config (URL + app-lösen)
|
||
|
|
│
|
||
|
|
┌────┼────┬────────────┐
|
||
|
|
▼ ▼ ▼ ▼
|
||
|
|
collabora-* nc-office collabora-wopi collabora-bridge
|
||
|
|
(direkt CODE) (NC OCS) (health/WOPI) (kedjor + sparar)
|
||
|
|
```
|
||
|
|
|
||
|
|
**Tumregel**
|
||
|
|
|
||
|
|
- PDF i Nextcloud → `collabora-bridge` **ncFileToPdf**
|
||
|
|
- Fylla mall i NC → **fillTemplateSave** eller `nc-office template:fillFields`
|
||
|
|
- Öppna i webbläsaren → `nc-office` **document:direct**
|
||
|
|
- Bara byta format i minnet → `collabora-convert`
|
||
|
|
- Se fältnamn → `collabora-extract` eller bridge **extractToPayload**
|
||
|
|
- Kolla att CODE lever → `collabora-wopi` **capabilities**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Gemensamma fält i msg
|
||
|
|
|
||
|
|
| Fält | Betydelse |
|
||
|
|
|------|-----------|
|
||
|
|
| `ncPath` | Sökväg i användarens filer, t.ex. `/Dokument/avtal.docx` |
|
||
|
|
| `fileId` | NC fil-id (slås upp från ncPath om saknas) |
|
||
|
|
| `payload` | Rådata redan i flödet (Buffer eller HTML) |
|
||
|
|
| `format` | pdf, png, docx, html, … |
|
||
|
|
| `destNcPath` | Exakt målsökväg |
|
||
|
|
| `destFolder` / `destName` | Mapp + namn (default `/Dokument/OfficeOut/`) |
|
||
|
|
| `fields` / `transform` | JSON att skriva in i mall |
|
||
|
|
| `templateNcPath` | Extra mall till convert |
|
||
|
|
| `compareNcPath` | Gammal version för diff-PDF |
|
||
|
|
| `operation` | Överstyr dropdown på noden |
|
||
|
|
|
||
|
|
Fel → `msg.error` + röd nod. Flödet dör inte tyst.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. collabora-convert
|
||
|
|
|
||
|
|
Gör om fil till annat format via CODE. Sparar **inte** i Nextcloud — utdata i `msg.payload` (Buffer).
|
||
|
|
|
||
|
|
**In:** `msg.payload` eller WebDAV GET `msg.ncPath`. Valfritt `templateNcPath`, `compareNcPath`, `format`.
|
||
|
|
|
||
|
|
**Ut:** `payload`, `filename`, `format`, `contentType`, `statusCode`.
|
||
|
|
|
||
|
|
```
|
||
|
|
inject { ncPath: "/Dokument/avtal.docx", format: "pdf" }
|
||
|
|
→ collabora-convert → debug
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. collabora-extract
|
||
|
|
|
||
|
|
Lista struktur (content controls, fält …). JSON ut, ingen fil.
|
||
|
|
|
||
|
|
**In:** samma källa som convert. Filter: nod eller `msg.filter` (default `contentcontrol`).
|
||
|
|
|
||
|
|
```
|
||
|
|
inject { ncPath: "/Mallar/avtal.docx" }
|
||
|
|
→ collabora-extract → function → collabora-transform
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. collabora-transform
|
||
|
|
|
||
|
|
Skriv värden i dokument via CODE. Kräver `msg.fields` eller `msg.transform`.
|
||
|
|
|
||
|
|
```
|
||
|
|
msg.ncPath = "/Mallar/avtal.docx"
|
||
|
|
msg.fields = { "Kund": "AB Exempel", "Datum": "2026-08-22" }
|
||
|
|
→ collabora-transform
|
||
|
|
```
|
||
|
|
|
||
|
|
Spara själv efteråt om filen ska ligga i NC.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. collabora-wopi
|
||
|
|
|
||
|
|
Hälsokoll och WOPI — inte konvertering.
|
||
|
|
|
||
|
|
| Operation | Syfte |
|
||
|
|
|-----------|--------|
|
||
|
|
| `capabilities` | Första test att CODE svarar |
|
||
|
|
| `discovery` | mime → editor-URL |
|
||
|
|
| `buildEditor` | `wopiSrc` + `token` → `editorUrl` |
|
||
|
|
| `checkFileInfo` / `getFile` | Felsökning |
|
||
|
|
|
||
|
|
Publik editor-URL går via Nextcloud (`collaboraPublicUrl`), inte intern IP.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. nc-office
|
||
|
|
|
||
|
|
Nextcloud richdocuments OCS — mallar, fält, editor-URL, assets.
|
||
|
|
|
||
|
|
| Operation | Kort |
|
||
|
|
|-----------|------|
|
||
|
|
| `templates:list` | Lista mallar |
|
||
|
|
| `templates:create` | Ny fil från mall |
|
||
|
|
| `template:extractFields` | Fält-JSON via NC |
|
||
|
|
| `template:fillFields` | Fyll + spara i NC |
|
||
|
|
| `document:direct` | `editorUrl` för inloggad användare |
|
||
|
|
| `document:public` | Samma med shareToken |
|
||
|
|
| `files:convert` | NC → NC konvertering |
|
||
|
|
| `assets:create` | Infogningslänk till öppen editor |
|
||
|
|
|
||
|
|
```
|
||
|
|
inject { ncPath: "/Dokument/avtal.docx" }
|
||
|
|
→ nc-office (document:direct) → debug editorUrl
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. collabora-bridge
|
||
|
|
|
||
|
|
Färdiga pipelines — det mesta i vardagsflöden.
|
||
|
|
|
||
|
|
| Operation | Gör |
|
||
|
|
|-----------|-----|
|
||
|
|
| `ncFileToPdf` | NC-fil → PDF i OfficeOut |
|
||
|
|
| `ncFileToPng` | Förhandsvisning |
|
||
|
|
| `ncFileToHtml` | HTML-export |
|
||
|
|
| `htmlToOffice` | HTML → docx/pdf … |
|
||
|
|
| `fillTemplateSave` | Mall + fält → spara i NC |
|
||
|
|
| `compareVersionsPdf` | Diff-PDF |
|
||
|
|
| `extractToPayload` | Fält-JSON i msg |
|
||
|
|
| `createAssetLink` | assetUrl |
|
||
|
|
|
||
|
|
```
|
||
|
|
inject { ncPath: "/Dokument/avtal.docx" }
|
||
|
|
→ collabora-bridge (ncFileToPdf)
|
||
|
|
→ debug destNcPath
|
||
|
|
```
|
||
|
|
|
||
|
|
Efter bridge kan du koppla dina befintliga OCS-noder (Talk, Mail, dela länk): först PDF i `/Dokument/OfficeOut/`, sedan dela.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Config: nc-collab-config
|
||
|
|
|
||
|
|
Skapas under kugghjul i Node-RED. Alla sex noder väljer samma config-instans.
|
||
|
|
|
||
|
|
| Fält | Exempel |
|
||
|
|
|------|---------|
|
||
|
|
| nextcloudUrl | `https://cloud.domain.name` |
|
||
|
|
| collaboraUrl | `https://172.17.0.2:9980` (bridge-IP, verifyTls=false) |
|
||
|
|
| collaboraPublicUrl | `https://cloud.domain.name` |
|
||
|
|
| username + app-lösenord | Nextcloud-inloggning |
|
||
|
|
|
||
|
|
IP för CODE detekteras vid `./install.sh` — se `.env.example`.
|