# Guida Completa all'Installazione e Utilizzo di Fylo

**Fylo** è un File Manager web moderno e leggero in PHP sviluppato come **Software Libero / Open Source** da **[mylab76](https://mylab76.net)**. Sei libero di utilizzarlo, modificarlo, personalizzarlo e distribuirlo liberamente.

---

## 📋 Indice
1. [Caratteristiche Principali](#1-caratteristiche-principali)
2. [Requisiti del Server](#2-requisiti-del-server)
3. [Guida all'Installazione Passo-Passo](#3-guida-allinstallazione-passo-passo)
4. [Credenziali Predefinite e Primo Accesso](#4-credenziali-predefinite-e-primo-accesso)
5. [Come Usare Fylo](#5-come-usare-fylo)
   - [Navigazione e Cartelle](#navigazione-e-cartelle)
   - [Caricamento File (Upload)](#caricamento-file-upload)
   - [Gestione, Rinomina ed Eliminazione](#gestione-rinomina-ed-eliminazione)
   - [Gestione Utenti e Ruoli](#gestione-utenti-e-ruoli)
6. [Personalizzazione e Modifica del Codice](#6-personalizzazione-e-modifica-del-codice)
7. [Risoluzione dei Problemi (Troubleshooting)](#7-risoluzione-dei-problemi-troubleshooting)

---

## 1. Caratteristiche Principali

- **Nessun Database SQL richiesto:** archiviazione sicura su file JSON (`users.json`, `downloads.json`).
- **Autenticazione multi-utente:** supporto per ruoli `admin` (controllo completo) e `user` (consultazione/download).
- **Gestione completa dei file:** caricamento, creazione cartelle, rinomina ed eliminazione.
- **Anteprime e miniature:** supporto per immagini, documenti e archivio file.
- **Tracciamento download:** contatore automatico dei download per ciascun documento.
- **Interfaccia responsive:** accessibile da desktop, tablet e smartphone con Bootstrap 5.

---

## 2. Requisiti del Server

- **Server Web:** Apache, Nginx o LiteSpeed
- **PHP:** Versione 7.4 o superiore (consigliato PHP 8.1 / 8.2)
- **Estensioni PHP:**
  - `json` (inclusa di default)
  - `session` (inclusa di default)
  - `fileinfo` (per la validazione MIME type sicura)
  - `gd` (opzionale, per generare le miniature delle immagini)

---

## 3. Guida all'Installazione Passo-Passo

### 1. Caricamento dei file
Carica l'intera cartella `fylo` all'interno della directory del tuo server (es. `/var/www/mylab76.net/progetti/fylo/` o `public_html/progetti/fylo/`).

### 2. Configurazione dei permessi (Linux / Apache / Nginx)
Affinché PHP possa salvare i file e creare cartelle, assegna i permessi corretti da terminale:

```bash
# Entra nella cartella di installazione
cd /percorso/del/sito/progetti/fylo/

# Permessi su cartelle uploads e miniature
chmod -R 775 uploads/
chmod -R 775 thumbnails/

# Permessi sui file di database JSON e configurazione
chmod 664 users.json
chmod 664 downloads.json
chmod 664 .env
```

*(Se necessario, assegna la proprietà all'utente del web server, es: `chown -R www-data:www-data .`)*.

---

## 4. Credenziali Predefinite e Primo Accesso

1. Apri il browser e vai all'indirizzo dell'applicazione:
   👉 **`http://tuodominio.it/progetti/fylo/`**
2. Inserisci le credenziali di default:
   - **Username:** `admin`
   - **Password:** `admin123`
3. Clicca su **Login**.

> ⚠️ **IMPORTANTE:** Una volta effettuato il primo accesso, vai nella sezione **Gestione Utenti** e modifica la password dell'amministratore per mettere in sicurezza il sistema.

---

## 5. Come Usare Fylo

### Navigazione e Cartelle
- Nella **Dashboard** trovi la visualizzazione di tutti i file e cartelle.
- Clicca su una cartella per entrarvi: la barra superiore (Breadcrumb) ti mostrerà il percorso attuale.
- Gli amministratori possono creare nuove cartelle tramite l'apposito modulo *"Nuova Cartella"*.

### Caricamento File (Upload)
- Trascina i file nell'area di upload o selezionali tramite il pulsante **"Scegli file"**.
- Puoi caricare documenti PDF, immagini (JPG, PNG, GIF), fogli di calcolo, archivi ZIP/RAR e video.
- I limiti massimi di dimensione sono personalizzabili nel file `config.php` o `.env`.

### Gestione, Rinomina ed Eliminazione
- Accanto a ogni file o cartella trovi i pulsanti di azione rapida:
  - 📥 **Scarica:** scarica il file e aggiorna il contatore download.
  - ✏️ **Rinomina:** permette di modificare il nome del file mantenendone l'estensione.
  - 🗑️ **Elimina:** rimuove in modo sicuro il file dal server.

### Gestione Utenti e Ruoli
- Dalla scheda **Utenti** (riservata all'amministratore):
  - Creare nuovi utenti assegnando il ruolo `user` o `admin`.
  - Modificare password o indirizzi email esistenti.
  - Revocare l'accesso eliminando gli account non più necessari.

---

## 6. Personalizzazione e Modifica del Codice

Trattandosi di **Software Libero**, puoi modificare ogni singolo aspetto:

- **Configurazione Generale (`config.php` & `.env`):**
  - `MAX_FILE_SIZE_MB`: dimensione massima di upload (default: 50MB).
  - `ALLOWED_EXTENSIONS`: lista dei formati file consentiti.
- **Stile e Grafica (`assets/css/`):**
  - Personalizza colori, layout e branding secondo le tue esigenze.
- **Piè di pagina (`footer.php`):**
  - Personalizza i link e le informazioni aziendali.

---

## 7. Risoluzione dei Problemi (Troubleshooting)

| Problema | Causa Possibile | Soluzione |
| :--- | :--- | :--- |
| **Errore 404 Not Found** | URL con lettere maiuscole (`Fylo`) su Linux | Usa l'URL tutto minuscolo: `/progetti/fylo/` |
| **Upload fallito** | Permessi di scrittura mancanti su `uploads/` | Esegui `chmod 775 uploads/` |
| **Login non riuscito** | `users.json` non leggibile o bloccato | Verifica i permessi su `users.json` (664) |
| **File troppo grande** | Limiti imposti da `php.ini` | Aumenta `upload_max_filesize` e `post_max_size` |
| **Miniature non visibili** | Estensione PHP-GD non installata | Installa `php-gd` sul server (`sudo apt install php-gd`) |

---

*Fylo - Realizzato con passione da [mylab76](https://mylab76.net)*
