• Copy URL to clipboard
README

AutoNAS v3.0 - Sistem de Montare Automată cu Unified Interface

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.

🎉 Nouă în v3.0: Clean User Interface

  • 🚀 Scriptul Unificat - Un singur script autonas pentru toate operațiunile
  • ⚡ Interfață Curată - Doar comanda autonas vizibilă în autocomplete
  • 🔄 Background Import - Import-uri în background fără timeout constraints
  • 📊 Cod Optimizat - 47% reducere cod prin eliminarea duplicărilor
  • 🗂️ Scripturi Organizate - Toate scripturile interne ascunse în /usr/local/lib/xdev/autonas/

🌟 Interfața Curată AutoNAS

Comanda Principală (Singura Vizibilă)

autonas <command> [options]

Doar comanda autonas apare în autocomplete - toate scripturile interne sunt ascunse

Operațiuni Disponibile

# Operațiuni Diskuri
autonas attach <uuid|name|mount_point>   # Montează disk automat
autonas detach <uuid|name|mount_point>   # Demontează disk
autonas list                  # Listează diskurile configurate

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

# Utilități
autonas --help              # Ajutor complet

Avantaje Interfață Curată

  • Un singur command vizibil - doar autonas în autocomplete
  • Interfață consistentă pentru toate operațiunile
  • Cod optimizat cu 47% reducere prin eliminarea duplicărilor
  • Scripturi organizate - toate utilitarele interne în /usr/local/lib/xdev/autonas/
  • Logging unificat cu tag-uri comune

🚀 Instalare în Cluster

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

# Clonează repository-ul
git clone <repository-url> autoNAS
cd autoNAS

🌐 Deploy Remote

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

# Instalare completă pe toate serverele (192.168.2.91-93)
./deploy.sh install

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

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

# Management servicii
./deploy.sh start      # Pornește serviciile
./deploy.sh restart    # Restartează serviciile
./deploy.sh stop       # Oprește serviciile
./deploy.sh status     # Verifică statusul

Caracteristici Deploy:

  • Instalare exclusiv cluster - destinat doar pentru noduri multiple
  • Verificare host status - testează disponibilitatea cu ping
  • Conectivitate SSH - validează accesul prin chei SSH
  • Transfer eficient - sincronizare cu rsync
  • Error handling - management robust al erorilor
  • Logging colorat - feedback clar pentru fiecare operație

📦 Layout standardizat

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

Layout instalat pe host: - comandă operator: /usr/local/sbin/autonas - runtime intern: /usr/local/lib/xdev/autonas - uninstall canonic: /usr/local/lib/xdev/autonas/uninstall.sh - wrapper uninstall: /usr/local/sbin/xdev-autonas-uninstall - defaults: /etc/default/xdev-autonas - docs: /usr/local/share/doc/xdev/autonas

Observație operațională: - 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 - 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

Metoda standard pentru install/uninstall pe un singur nod:

sudo ./setup.sh --local
sudo ./setup.sh 192.168.2.91
sudo ./setup.sh --uninstall 192.168.2.91

Pregătirea pentru Deploy:

  1. Configurează cheile SSH pe serverele țintă
  2. Testează conectivitatea: ./deploy.sh status
  3. Deploy complet: ./deploy.sh install

📋 Funcționalități Principale

🔌 Detectare Automată

  • Detectare prin udev pentru diskuri USB, SATA externe și USB-to-SATA bridges
  • Suport pentru multiple tipuri de device-uri (removable, ATA cu USB properties)
  • Detectare inteligentă bazată pe UUID filesystem

🗂️ Trei Tipuri de Configurare

1. NFS Share Complet (acces de rețea)

autonas add <uuid>  # Selectează [1] - NFS share complet
  • Montare automată + configurare IP + export NFS
  • Acces complet de rețea pentru alte mașini
  • Perfect pentru backup servere și storage partajat

2. Montare Locală Simplă (doar local)

autonas add <uuid>  # Selectează [2] - Montare locală
  • Doar mount point local, fără IP și NFS
  • Ideal pentru storage local rapid
  • Perfect pentru backup-uri și scratch space

3. Import Cameră Automat (procesare media)

autonas add <uuid>  # Selectează [3] - Import cameră
  • Mount → import media files → unmount automat
  • Organizare automată cu EXIF și UTC conversion
  • Background processing fără timeout constraints

🌐 Configurație NFS Optimizată

*(rw,all_squash,insecure,async,no_subtree_check,anonuid=0,anongid=0)

🔄 Management Inteligent

  • Configurare prin UUID pentru identificare precisă
  • Protecția configurațiilor utilizatorului la reinstalare
  • Logging detaliat pentru debugging și monitorizare
  • Error handling robust cu mesaje informative

📊 Comenzi de Management Rapide

Flux de Lucru Tipic

# 1. Detectează UUID-ul diskului conectat
autonas show

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

# 3. Verifică statusul
autonas list
autonas status

# 4. Monitorizează log-urile
journalctl -t autonas -f

Configurare Rapidă Exemplu

# Conectează diskul și detectează UUID
$ autonas show
Available storage devices:
[1] /dev/sdb1 → UUID: 920fe1b7-4091-4d6a-bab8-2f48d8d704bc (ext4, 1.8TB)

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

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

📷 Camera Import Automation

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

🔄 Background Import Architecture

  • Service-Based Import - Separare completă mount/import prin systemd services
  • Unlimited Duration - Import-uri fără timeout constraints (testat cu 300+ files)
  • Auto-Unmount - Workflow complet automat mount → import → unmount
  • UTC Conversion - Conversie perfectă UTC → Local Time pentru EXIF

Configurare Camera Import

# Configurează camera pentru import automat
autonas add <camera-uuid>
# Selectează [3] - Import cameră automat
# Setează destinația: /mnt/storage/photos

Workflow Automat Camera

  1. Conectare cameră → AutoNAS detectează UUID-ul configurat ca IMPORT
  2. Montare temporară → Mount point temporar creat automat
  3. Background Import → Service separat procesează fișiere fără timeout
  4. Organizare EXIF → Sortare automată pe date din metadate
  5. Auto-Cleanup → Demontare automată după finalizare

🚨 Troubleshooting Rapid

Disk nu se detectează

journalctl -t autonas -f                    # Monitorizează log-urile
autonas show                                # Verifică device-urile detectate
udevadm monitor --subsystem-match=block     # Debug udev

Probleme NFS

autonas status                 # Verifică configurația
showmount -e localhost         # Verifică export-urile
systemctl status nfs-kernel-server

Probleme de Montare

autonas list                   # Verifică configurațiile
autonas test <uuid|name|mount_point>  # Testează configurația specifică
mount | grep autonas          # Verifică mount-urile active

⚙️ Arhitectura AutoNAS v3.0

📁 Organizarea Scripturilor

/usr/local/sbin/
└── autonas                        # Singura comandă vizibilă utilizatorului

/usr/local/lib/xdev/autonas/
├── autonas-core.sh                # Biblioteca centrală
├── autonas-boot-scan.sh           # Scanner la bootare
├── autonas-disk-handler.sh        # Handler evenimente disk
├── autonas-media-importer.sh      # Importer automat media
├── autonas-network-handler.sh     # Handler evenimente rețea
├── autonas-udev-wrapper.sh        # Wrapper pentru udev
└── uninstall.sh                   # Uninstaller sistem

🎯 Single Source of Truth

  • Zero duplicare cod - toate funcțiile în autonas-core.sh
  • Interfață unificată - toate operațiunile prin comanda autonas
  • Scripturi ascunse - experiență utilizator curată

📊 Realizări v3.0

  • 47% reducere cod - ~2,300 linii eliminate prin refactorizare completă
  • Comandă unică vizibilă - doar autonas în autocomplete
  • Organizare profesională - toate utilitarele ascunse dar funcționale
  • Integrare completă - toate serviciile și regulile actualizate

⚙️ Note Importante

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

🎯 Use Cases Rapide

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

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

Doar comanda autonas vizibilă - interfață profesională și curată

Camera Import Automation

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

🚀 NOUĂ ARHITECTURĂ BACKGROUND IMPORT

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

Caracteristici Camera Import

  • 🎯 Background Services - Import rulează în servicii systemd separate fără timeout
  • Detectare automată a structurilor de foldere pentru camere (DCIM, PRIVATE, MP_ROOT)
  • Carduri SD/MMC GoPro - detectare automată pentru carduri expuse ca /dev/mmcblkNpM
  • Import cu EXIF - organizare automată pe baza metadatelor temporale cu UTC conversion
  • GoPro MP4 - preferă timestamp-ul filesystem/THM/LRV și sincronizează metadata importată în modul unattended
  • Multiple formate suportate: MP4, MOV, JPG, JPEG, PNG, ARW, DNG, MP4, AVI, MKV
  • Organizare automată pe date din EXIF/QuickTime tags cu conversie UTC → Local Time
  • Dry-run mode pentru testare fără modificarea fișierelor
  • Progress tracking cu statistici detaliate
  • Cleanup GLV files pentru camerele Garmin
  • Scalabilitate Production - Testat cu sute de fișiere fără probleme

Format Configurație IMPORT

UUID:NAME:IMPORT:IMPORT:MOUNT_POINT:DESTINATION_PATH

Exemplu configurație: 1234-5678:camera-garmin:IMPORT:IMPORT:/mnt/autonas/camera-garmin:/mnt/storage/photos 766C-1A0F:gopro-sd:IMPORT:IMPORT:/mnt/autonas/gopro-sd:/mnt/autonas/ext01/@Camera/gopro

Workflow Import Automat (Background Architecture)

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

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

Configurare Camera Import

# Adaugă configurație pentru cameră
autonas-config.sh add

# Selectează UUID-ul camerei
# Input UUID: 1234-5678

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

# Setează numele camerei
# Input name: camera-garmin

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

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

Script Import Personalizat

Poți crea propriul script de import:

#!/bin/bash
# /usr/local/bin/my-camera-import.sh

MOUNT_POINT="$1"
DESTINATION="$2"
DISK_NAME="$3"

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

echo "Import completed for $DISK_NAME"
exit 0

Testare Configuration

# Listează configurațiile
autonas-config.sh list

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

# Monitorizează log-urile
journalctl -t autonas -f

Camera Import Script (autonas-camera-import.sh)

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

# Manual import test
autonas-camera-import.sh /mnt/camera /dest/path camera-name --dry-run --verbose

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

Doar comanda autonas vizibilă - interfață profesională și curată

Dezvoltat pentru ecosistemul Proxmox/Debian cu focus pe automatizare și siguranța datelor