autoNAS / README.md
Newer Older
420 lines | 15.843kb
Bogdan Timofte authored 3 months ago
1
# AutoNAS v3.0 - Sistem de Montare Automată cu Unified Interface
2

            
3
AutoNAS este un sistem inteligent pentru montarea automată a diskurilor externe cu configurarea IP-urilor, exporturilor NFS și **arhitectura revoluționară Background Import** pentru import scalabil de camere digitale. Sistemul detectează automat conectarea diskurilor USB/SATA externe, le montează, configurează IP-uri pe interfețe de rețea și exportă conținutul prin NFS.
4

            
5
## 🎉 **Nouă în v3.0: Clean User Interface**
6
- **🚀 Scriptul Unificat** - Un singur script `autonas` pentru toate operațiunile
7
- **⚡ Interfață Curată** - Doar comanda `autonas` vizibilă în autocomplete
8
- **🔄 Background Import** - Import-uri în background fără timeout constraints
9
- **📊 Cod Optimizat** - 47% reducere cod prin eliminarea duplicărilor
Bogdan Timofte authored 2 weeks ago
10
- **🗂️ Scripturi Organizate** - Toate scripturile interne ascunse în `/usr/local/lib/xdev/autonas/`
Bogdan Timofte authored 3 months ago
11

            
12
## 🌟 **Interfața Curată AutoNAS**
13

            
14
### Comanda Principală (Singura Vizibilă)
15
```bash
16
autonas <command> [options]
17
```
18
*Doar comanda `autonas` apare în autocomplete - toate scripturile interne sunt ascunse*
19

            
20
### Operațiuni Disponibile
21
```bash
22
# Operațiuni Diskuri
Bogdan Timofte authored 3 months ago
23
autonas attach <uuid|name|mount_point>   # Montează disk automat
24
autonas detach <uuid|name|mount_point>   # Demontează disk
Bogdan Timofte authored 3 months ago
25
autonas list                  # Listează diskurile configurate
26

            
27
# Management Configurații
28
autonas add [uuid]            # Adaugă configurație nouă
29
autonas show                  # Afișează toate device-urile detectate
30
autonas status               # Status sistem complet
31

            
32
# Utilități
33
autonas --help              # Ajutor complet
34
```
35

            
36
### Avantaje Interfață Curată
37
- **Un singur command vizibil** - doar `autonas` în autocomplete
38
- **Interfață consistentă** pentru toate operațiunile
39
- **Cod optimizat** cu 47% reducere prin eliminarea duplicărilor
Bogdan Timofte authored 2 weeks ago
40
- **Scripturi organizate** - toate utilitarele interne în `/usr/local/lib/xdev/autonas/`
Bogdan Timofte authored 3 months ago
41
- **Logging unificat** cu tag-uri comune
42

            
43
## 🚀 Instalare în Cluster
44

            
45
AutoNAS este destinat exclusiv pentru instalare pe cluster de servere prin sistemul de deploy remote:
46

            
47
```bash
48
# Clonează repository-ul
49
git clone <repository-url> autoNAS
50
cd autoNAS
51
```
52

            
53
## 🌐 Deploy Remote
54

            
55
AutoNAS folosește exclusiv deploy remote pentru instalarea și managementul pe nodurile cluster-ului:
56

            
57
```bash
58
# Instalare completă pe toate serverele (192.168.2.91-93)
59
./deploy.sh install
60

            
61
# Dezinstalare completă de pe toate serverele
62
./deploy.sh uninstall
63

            
64
# Instalare doar pe server specific
65
./deploy.sh install 192.168.2.91
66

            
67
# Management servicii
68
./deploy.sh start      # Pornește serviciile
69
./deploy.sh restart    # Restartează serviciile
70
./deploy.sh stop       # Oprește serviciile
71
./deploy.sh status     # Verifică statusul
72
```
73

            
74
### Caracteristici Deploy:
75
- ✅ **Instalare exclusiv cluster** - destinat doar pentru noduri multiple
76
- ✅ **Verificare host status** - testează disponibilitatea cu ping
77
- ✅ **Conectivitate SSH** - validează accesul prin chei SSH
78
- ✅ **Transfer eficient** - sincronizare cu rsync
79
- ✅ **Error handling** - management robust al erorilor
80
- ✅ **Logging colorat** - feedback clar pentru fiecare operație
81

            
Bogdan Timofte authored 2 weeks ago
82
## 📦 Layout standardizat
83

            
84
AutoNAS este aliniat la layout-ul comun `xdev`, cu două excepții deliberate:
85
- configul cluster-shared rămâne în `/etc/pve/autonas`
86
- mount points și datele montate rămân în `/mnt/autonas`
87

            
88
Layout instalat pe host:
89
- comandă operator: `/usr/local/sbin/autonas`
90
- runtime intern: `/usr/local/lib/xdev/autonas`
91
- uninstall canonic: `/usr/local/lib/xdev/autonas/uninstall.sh`
92
- wrapper uninstall: `/usr/local/sbin/xdev-autonas-uninstall`
93
- defaults: `/etc/default/xdev-autonas`
94
- docs: `/usr/local/share/doc/xdev/autonas`
95

            
96
Observație operațională:
97
- `autonas.service` și `autonas-boot-scan.service` rămân intenționat ordonate înainte de `remote-fs.target` și `umount.target`, pentru ca exporturile NFS locale să nu dispară înainte ca mount-urile Proxmox dependente să se demonteze la shutdown
98
- pentru mount-urile Proxmox self-hosted, installerul generează și un drop-in `nfs-server.service.d/50-autonas-self-hosted-proxmox.conf` care adaugă ordering explicit față de unitățile `mnt-pve-*.mount` identificate din `storage.cfg`; contextul complet este urmărit în issue-ul de cluster `ISSUE-2026-002`
99

            
100
Metoda standard pentru install/uninstall pe un singur nod:
101

            
102
```bash
103
sudo ./setup.sh --local
104
sudo ./setup.sh 192.168.2.91
105
sudo ./setup.sh --uninstall 192.168.2.91
106
```
107

            
Bogdan Timofte authored 3 months ago
108
### Pregătirea pentru Deploy:
109
1. **Configurează cheile SSH** pe serverele țintă
110
2. **Testează conectivitatea**: `./deploy.sh status`
111
3. **Deploy complet**: `./deploy.sh install`
112

            
113
## 📋 Funcționalități Principale
114

            
115
### 🔌 Detectare Automată
116
- **Detectare prin udev** pentru diskuri USB, SATA externe și USB-to-SATA bridges
117
- **Suport pentru multiple tipuri** de device-uri (removable, ATA cu USB properties)
118
- **Detectare inteligentă** bazată pe UUID filesystem
119

            
120
### 🗂️ Trei Tipuri de Configurare
121

            
122
#### 1. **NFS Share Complet** (acces de rețea)
123
```bash
124
autonas add <uuid>  # Selectează [1] - NFS share complet
125
```
126
- Montare automată + configurare IP + export NFS
127
- Acces complet de rețea pentru alte mașini
128
- Perfect pentru backup servere și storage partajat
129

            
130
#### 2. **Montare Locală Simplă** (doar local)
131
```bash
132
autonas add <uuid>  # Selectează [2] - Montare locală
133
```
134
- Doar mount point local, fără IP și NFS
135
- Ideal pentru storage local rapid
136
- Perfect pentru backup-uri și scratch space
137

            
138
#### 3. **Import Cameră Automat** (procesare media)
139
```bash
140
autonas add <uuid>  # Selectează [3] - Import cameră
141
```
142
- Mount → import media files → unmount automat
143
- Organizare automată cu EXIF și UTC conversion
144
- Background processing fără timeout constraints
145

            
146
### 🌐 Configurație NFS Optimizată
147
```
148
*(rw,all_squash,insecure,async,no_subtree_check,anonuid=0,anongid=0)
149
```
150

            
151
### 🔄 Management Inteligent
152
- **Configurare prin UUID** pentru identificare precisă
153
- **Protecția configurațiilor** utilizatorului la reinstalare
154
- **Logging detaliat** pentru debugging și monitorizare
155
- **Error handling robust** cu mesaje informative
156

            
157
## 📊 Comenzi de Management Rapide
158

            
159
### Flux de Lucru Tipic
160
```bash
161
# 1. Detectează UUID-ul diskului conectat
162
autonas show
163

            
164
# 2. Configurează diskul (interactiv)
165
autonas add <uuid>
166

            
167
# 3. Verifică statusul
168
autonas list
169
autonas status
170

            
171
# 4. Monitorizează log-urile
172
journalctl -t autonas -f
173
```
174

            
175
### Configurare Rapidă Exemplu
176
```bash
177
# Conectează diskul și detectează UUID
178
$ autonas show
179
Available storage devices:
180
[1] /dev/sdb1 → UUID: 920fe1b7-4091-4d6a-bab8-2f48d8d704bc (ext4, 1.8TB)
181

            
182
# Configurează pentru NFS
183
$ sudo autonas add 920fe1b7-4091-4d6a-bab8-2f48d8d704bc
184
Input name: backup-disk
185
Configuration type: [1] NFS share complet
186
Input IP: 192.168.10.25
187
Input interface: thunderbridge
188
✓ Configuration added and disk mounted!
189

            
190
# Verifică rezultatul
191
$ autonas list
192
Configured disks:
193
[1] backup-disk (920fe1b7-4091-4d6a-bab8-2f48d8d704bc) → NFS: 192.168.10.25
194
```
195

            
196
## 📷 Camera Import Automation
197

            
198
AutoNAS v3.0 introduce arhitectura revoluționară **Background Import** pentru import automat scalabil de camere digitale:
199

            
200
### 🔄 Background Import Architecture
201
- **Service-Based Import** - Separare completă mount/import prin systemd services
202
- **Unlimited Duration** - Import-uri fără timeout constraints (testat cu 300+ files)
203
- **Auto-Unmount** - Workflow complet automat mount → import → unmount
204
- **UTC Conversion** - Conversie perfectă UTC → Local Time pentru EXIF
205

            
206
### Configurare Camera Import
207
```bash
208
# Configurează camera pentru import automat
209
autonas add <camera-uuid>
210
# Selectează [3] - Import cameră automat
211
# Setează destinația: /mnt/storage/photos
212
```
213

            
214
### Workflow Automat Camera
215
1. **Conectare cameră** → AutoNAS detectează UUID-ul configurat ca IMPORT
216
2. **Montare temporară** → Mount point temporar creat automat
217
3. **Background Import** → Service separat procesează fișiere fără timeout
218
4. **Organizare EXIF** → Sortare automată pe date din metadate
219
5. **Auto-Cleanup** → Demontare automată după finalizare
220

            
221
## 🚨 Troubleshooting Rapid
222

            
223
### Disk nu se detectează
224
```bash
225
journalctl -t autonas -f                    # Monitorizează log-urile
226
autonas show                                # Verifică device-urile detectate
227
udevadm monitor --subsystem-match=block     # Debug udev
228
```
229

            
230
### Probleme NFS
231
```bash
232
autonas status                 # Verifică configurația
233
showmount -e localhost         # Verifică export-urile
234
systemctl status nfs-kernel-server
235
```
236

            
237
### Probleme de Montare
238
```bash
239
autonas list                   # Verifică configurațiile
Bogdan Timofte authored 3 months ago
240
autonas test <uuid|name|mount_point>  # Testează configurația specifică
Bogdan Timofte authored 3 months ago
241
mount | grep autonas          # Verifică mount-urile active
242
```
243

            
244
## ⚙️ Arhitectura AutoNAS v3.0
245

            
246
### 📁 Organizarea Scripturilor
247
```
Bogdan Timofte authored 2 weeks ago
248
/usr/local/sbin/
249
└── autonas                        # Singura comandă vizibilă utilizatorului
Bogdan Timofte authored 3 months ago
250

            
Bogdan Timofte authored 2 weeks ago
251
/usr/local/lib/xdev/autonas/
252
├── autonas-core.sh                # Biblioteca centrală
Bogdan Timofte authored 3 months ago
253
├── autonas-boot-scan.sh           # Scanner la bootare
254
├── autonas-disk-handler.sh        # Handler evenimente disk
255
├── autonas-media-importer.sh      # Importer automat media
Bogdan Timofte authored 2 weeks ago
256
├── autonas-network-handler.sh     # Handler evenimente rețea
Bogdan Timofte authored 3 months ago
257
├── autonas-udev-wrapper.sh        # Wrapper pentru udev
Bogdan Timofte authored 2 weeks ago
258
└── uninstall.sh                   # Uninstaller sistem
Bogdan Timofte authored 3 months ago
259
```
260

            
261
### 🎯 Single Source of Truth
262
- **Zero duplicare cod** - toate funcțiile în `autonas-core.sh`
263
- **Interfață unificată** - toate operațiunile prin comanda `autonas`
264
- **Scripturi ascunse** - experiență utilizator curată
265

            
266
### 📊 Realizări v3.0
267
- **47% reducere cod** - ~2,300 linii eliminate prin refactorizare completă
268
- **Comandă unică vizibilă** - doar `autonas` în autocomplete
269
- **Organizare profesională** - toate utilitarele ascunse dar funcționale
270
- **Integrare completă** - toate serviciile și regulile actualizate
271

            
272
## ⚙️ Note Importante
273

            
274
1. **Rulează ca root**: Toate comenzile AutoNAS necesită `sudo`
275
2. **Configurații persistente**: Diskurile configurate se montează automat la conectare
276
3. **Cleanup automat**: Demontarea curăță automat mount points, IP-uri și export-uri NFS
277
4. **Siguranță date**: Dezinstalarea păstrează toate datele și configurațiile
Bogdan Timofte authored 2 weeks ago
278
5. **Script organizare**: Doar `autonas` vizibil - toate utilitarele în `/usr/local/lib/xdev/autonas/`
Bogdan Timofte authored 3 months ago
279

            
280
## 🎯 Use Cases Rapide
281

            
282
- **🌐 NFS Backup Server**: Disk extern → detectare automată → export NFS instant
283
- **📁 Storage Local**: Backup-uri locale rapide fără configurare rețea
284
- **📷 Import Camere**: Conectare cameră → import automat → organizare EXIF
285
- **🔧 Development**: Mixed storage (local + NFS) pentru workflow-uri complexe
286

            
287
---
288

            
289
**AutoNAS v3.0 - Clean Command Interface pentru Montare Automată** 🚀
290

            
291
*Doar comanda `autonas` vizibilă - interfață profesională și curată*
292

            
293
##  Camera Import Automation
294

            
295
AutoNAS v3.0 introduce arhitectura revoluționară **Background Import** pentru import automat scalabil de camere digitale cu workflow complet `mount → import → unmount`.
296

            
297
### 🚀 **NOUĂ ARHITECTURĂ BACKGROUND IMPORT**
298
- **🔄 Service-Based Architecture** - Separare completă mount/import prin systemd services
299
- **⚡ Unlimited Duration** - Import-uri fără timeout constraints (comprobat cu 300+ files)
300
- **🛠️ Auto-Unmount** - Demontare automată după finalizarea import-ului
301
- **📊 Production Tested** - Validat cu camere reale Garmin (302 files, 100% success rate)
302

            
303
### Caracteristici Camera Import
304
- **🎯 Background Services** - Import rulează în servicii systemd separate fără timeout
305
- **Detectare automată** a structurilor de foldere pentru camere (DCIM, PRIVATE, MP_ROOT)
Bogdan Timofte authored 2 weeks ago
306
- **Carduri SD/MMC GoPro** - detectare automată pentru carduri expuse ca `/dev/mmcblkNpM`
Bogdan Timofte authored 3 months ago
307
- **Import cu EXIF** - organizare automată pe baza metadatelor temporale cu UTC conversion
Bogdan Timofte authored 2 weeks ago
308
- **GoPro MP4** - preferă timestamp-ul filesystem/THM/LRV și sincronizează metadata importată în modul unattended
Bogdan Timofte authored 3 months ago
309
- **Multiple formate suportate**: MP4, MOV, JPG, JPEG, PNG, ARW, DNG, MP4, AVI, MKV
310
- **Organizare automată pe date** din EXIF/QuickTime tags cu conversie UTC → Local Time
311
- **Dry-run mode** pentru testare fără modificarea fișierelor
312
- **Progress tracking** cu statistici detaliate
313
- **Cleanup GLV files** pentru camerele Garmin
314
- **Scalabilitate Production** - Testat cu sute de fișiere fără probleme
315

            
316
### Format Configurație IMPORT
317
```
Bogdan Timofte authored 2 weeks ago
318
UUID:NAME:IMPORT:IMPORT:MOUNT_POINT:DESTINATION_PATH
Bogdan Timofte authored 3 months ago
319
```
320

            
321
**Exemplu configurație:**
322
```
Bogdan Timofte authored 2 weeks ago
323
1234-5678:camera-garmin:IMPORT:IMPORT:/mnt/autonas/camera-garmin:/mnt/storage/photos
324
766C-1A0F:gopro-sd:IMPORT:IMPORT:/mnt/autonas/gopro-sd:/mnt/autonas/ext01/@Camera/gopro
Bogdan Timofte authored 3 months ago
325
```
326

            
327
### Workflow Import Automat (Background Architecture)
328

            
329
1. **Conectare cameră** → AutoNAS detectează UUID-ul configurat ca IMPORT
330
2. **Montare temporară** → Attach service montează în mount point temporar
331
3. **Background Import Launch** → Manager lansează direct `run_background_import()` process
332
4. **Import nelimitat** → Background service procesează fișiere fără timeout constraints
333
5. **Organizare EXIF** → Fișierele sunt sortate pe date din metadate (UTC → Local Time)
334
6. **Auto-Cleanup** → Background service apelează detach după finalizare
335
7. **Demontare automată** → Camera este demontată automat
336
8. **Mount cleanup** → Mount point temporar este curățat
337

            
338
**Avantaje Arhitectură Background:**
339
- ✅ **Scalabilitate infinită** - Nu există timeout-uri systemd pentru import
340
- ✅ **Robustețe** - Service separation previne crash-uri în mount operations
341
- ✅ **Monitorizare** - Log-uri separate pentru fiecare etapă
342
- ✅ **Production Ready** - Testat cu 302 fișiere, import complet în 36 minute
343

            
344
### Configurare Camera Import
345

            
346
```bash
347
# Adaugă configurație pentru cameră
348
autonas-config.sh add
349

            
350
# Selectează UUID-ul camerei
351
# Input UUID: 1234-5678
352

            
353
# Selectează tipul de configurare
354
# [3] - Import cameră automat
355

            
356
# Setează numele camerei
357
# Input name: camera-garmin
358

            
359
# Setează destinația pentru import
360
# Input destination: /mnt/storage/photos
361

            
362
# Script personalizat (opțional, default: autonas-camera-import.sh)
363
# Input script: [ENTER pentru default]
364
```
365

            
366
### Script Import Personalizat
367

            
368
Poți crea propriul script de import:
369

            
370
```bash
371
#!/bin/bash
372
# /usr/local/bin/my-camera-import.sh
373

            
374
MOUNT_POINT="$1"
375
DESTINATION="$2"
376
DISK_NAME="$3"
377

            
378
# Exemplu: Import specific pentru Canon
379
find "$MOUNT_POINT" -name "*.CR3" -exec cp {} "$DESTINATION/RAW/" \;
380
find "$MOUNT_POINT" -name "*.JPG" -exec cp {} "$DESTINATION/JPEG/" \;
381

            
382
echo "Import completed for $DISK_NAME"
383
exit 0
384
```
385

            
386
### Testare Configuration
387

            
388
```bash
389
# Listează configurațiile
390
autonas-config.sh list
391

            
392
# Testează configurația IMPORT
393
autonas-config.sh test camera-uuid
394

            
395
# Monitorizează log-urile
396
journalctl -t autonas -f
397
```
398

            
399
### Camera Import Script (autonas-camera-import.sh)
400

            
401
Script-ul default oferă:
402
- **Auto-detectare** structuri DCIM, PRIVATE, MP_ROOT
403
- **EXIF processing** cu exiftool pentru date precise
404
- **Organizare automată** în foldere YYYY-MM-DD
405
- **Redenumire intelligentă** cu timestamp-uri
406
- **Multiple opțiuni**: --dry-run, --verbose, --limit N
407
- **Error handling** robust cu logging detaliat
408

            
409
```bash
410
# Manual import test
411
autonas-camera-import.sh /mnt/camera /dest/path camera-name --dry-run --verbose
412
```
413

            
414
---
415

            
416
**AutoNAS v3.0 - Clean Command Interface pentru Montare Automată** 🚀
417

            
418
*Doar comanda `autonas` vizibilă - interfață profesională și curată*
419

            
Bogdan Timofte authored 3 months ago
420
*Dezvoltat pentru ecosistemul Proxmox/Debian cu focus pe automatizare și siguranța datelor*