74 lines
2.7 KiB
Markdown
74 lines
2.7 KiB
Markdown
# msgreceiver — deployment instrukce
|
|
|
|
## Soubory
|
|
- Zdrojový skript: `U:\PythonProject\Janssen\EmailsImport\DockerCustomApp\app.py`
|
|
- Network share: `\\tower\appdata\msgreceiver\app.py`
|
|
- Unraid cesta: `/mnt/user/appdata/msgreceiver/`
|
|
|
|
## Přihlašovací údaje
|
|
- **Unraid SSH:** `root@192.168.1.76`, heslo: `7309208104`
|
|
- **Docker kontejner:** `msgreceiver`
|
|
|
|
## Postup při nové verzi app.py
|
|
|
|
### 1. Zkopírovat app.py na server
|
|
```powershell
|
|
Copy-Item "U:\PythonProject\Janssen\EmailsImport\DockerCustomApp\app.py" "\\tower\appdata\msgreceiver\app.py" -Force
|
|
```
|
|
|
|
### 2. Připojit se přes SSH a přebuildovat Docker (přes Python paramiko)
|
|
```python
|
|
import paramiko
|
|
c = paramiko.SSHClient()
|
|
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
|
c.connect('192.168.1.76', username='root', password='7309208104')
|
|
|
|
# Build
|
|
_, stdout, stderr = c.exec_command('docker build -t msgreceiver /mnt/user/appdata/msgreceiver/ 2>&1')
|
|
print(stdout.read().decode())
|
|
|
|
# Restart
|
|
_, stdout, stderr = c.exec_command('docker restart msgreceiver')
|
|
print(stdout.read().decode())
|
|
|
|
c.close()
|
|
```
|
|
|
|
> Poznámka: `sshpass` není na tomto Windows stroji k dispozici, Windows OpenSSH neumí neinteraktivní heslo — proto vždy použij **paramiko**.
|
|
|
|
## Struktura adresáře na serveru
|
|
```
|
|
/mnt/user/appdata/msgreceiver/
|
|
├── Dockerfile
|
|
├── app.py
|
|
├── requirements.txt
|
|
└── .env ← Dropbox credentials
|
|
```
|
|
|
|
## Dropbox konfigurace (.env)
|
|
Proměnné načítané z `.env`:
|
|
- `DROPBOX_APP_KEY`
|
|
- `DROPBOX_APP_SECRET`
|
|
- `DROPBOX_APP_REFRESH_TOKEN`
|
|
|
|
Upload cesta v Dropboxu: `/!!!Days/Downloads Z230/{filename}`
|
|
|
|
## API endpointy
|
|
Bearer token: `13e1bb01-9fd5-44a8-8ce9-4ee27133d340`
|
|
|
|
| Endpoint | Přijímá | Chování |
|
|
|---|---|---|
|
|
| `POST /upload` | `.msg` / `.emsg` | `.emsg` Fernet dešifruje → uloží `.msg` do `/msgs`, přeskočí pokud existuje; volitelně import do Graphu |
|
|
| `POST /upload-db` | `.db` / `.db.xz.enc` | **v2.1:** `.db.xz.enc` Fernet dešifruje + lzma rozbalí → plain `.db`; pak smaže staré `.db` v `/msgs/db` a uloží. Plain `.db` bere i nadále (zpětná kompatibilita) |
|
|
| `POST /upload-dropbox` | cokoliv | Nahraje do Dropboxu (overwrite) |
|
|
|
|
> **v2.1 (2026-06-10):** `/upload-db` umí komprimovanou+šifrovanou DB (`.db.xz.enc`)
|
|
> od `jnj_mailbox_sync >= v1.2`. Staré `.db` se smažou **až po** úspěšném
|
|
> dešifrování/rozbalení (při chybě zůstane poslední dobrá DB). Vyžaduje `lzma`
|
|
> (stdlib) — ověřeno v kontejneru. Nasazení = jen restart (app.py je bind-mount),
|
|
> bez rebuildu.
|
|
|
|
> **Pozn. k nasazení:** `app.py` je bind-mountovaný (`/mnt/user/appdata/msgreceiver` → `/app`),
|
|
> takže pro změnu KÓDU stačí přepsat soubor + `docker restart msgreceiver`.
|
|
> `docker build` je potřeba jen při změně `requirements.txt`.
|