> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/el/odigos-diaxeirisis/admin-guide/installation/cloud-storage.md).

# Αποθήκευση στο νέφος

Το Chamilo 3.0 υποστηρίζει backends αποθήκευσης στο cloud για αρχεία που ανεβάζουν οι χρήστες μέσω του **Flysystem**, μιας βιβλιοθήκης αφαίρεσης συστήματος αρχείων PHP ενσωματωμένης στο Symfony. Αυτό σας επιτρέπει να αποθηκεύετε αρχεία σε υπηρεσίες cloud αντί για (ή επιπλέον του) τοπικού συστήματος αρχείων.

## Γιατί να χρησιμοποιήσετε αποθήκευση στο Cloud;

* **Κλιμάκωση** -- Η αποθήκευση στο cloud μεγαλώνει μαζί με την πλατφόρμα σας χωρίς διαχείριση χώρου δίσκου.
* **Αναπτύξεις πολλαπλών διακομιστών** -- Όταν εκτελούνται πολλοί διακομιστές ιστού πίσω από έναν εξισορροπητή φόρτου, η αποθήκευση στο cloud διασφαλίζει ότι όλοι οι διακομιστές έχουν πρόσβαση στα ίδια αρχεία.
* **Ανθεκτικότητα** -- Οι πάροχοι cloud προσφέρουν ενσωματωμένη πλεονασμό και αντίγραφα ασφαλείας.
* **Κόστος** -- Η αποθήκευση αντικειμένων είναι συχνά φθηνότερη ανά gigabyte από την αποθήκευση μπλοκ που συνδέεται με διακομιστές.

## Υποστηριζόμενοι πάροχοι

| Πάροχος                                 | Προσαρμογέας Flysystem                                    |
| --------------------------------------- | --------------------------------------------------------- |
| **Amazon S3**                           | `league/flysystem-aws-s3-v3`                              |
| **Google Cloud Storage**                | `league/flysystem-google-cloud-storage`                   |
| **Azure Blob Storage**                  | `azure-oss/storage-blob-flysystem`                        |
| **MinIO** (συμβατό με S3)               | Χρησιμοποιεί τον προσαρμογέα S3 με προσαρμοσμένο endpoint |
| **DigitalOcean Spaces** (συμβατό με S3) | Χρησιμοποιεί τον προσαρμογέα S3 με προσαρμοσμένο endpoint |
| **Τοπικό σύστημα αρχείων**              | Προεπιλογή, δεν απαιτούνται πρόσθετα πακέτα               |

## Εγκατάσταση

Το Chamilo συνοδεύεται ήδη από τους ακόλουθους προεγκατεστημένους παρόχους:

```bash
# Amazon S3
league/flysystem-aws-s3-v3

# Google Cloud Storage
league/flysystem-google-cloud-storage

# Azure Blob Storage
azure-oss/storage-blob-flysystem
```

## Διαμόρφωση

Το Chamilo κατανέμει τα αρχεία του σε αρκετά mounts Flysystem — **assets**, **assets cache**, **resources**, **resources cache**, **themes** και **plugins**. Κάθε mount μπορεί να στοχεύει διαφορετικό bucket ή container. Η διαμόρφωση cloud στο `config/packages/oneup_flysystem.yaml` επιλέγεται ανά περιβάλλον με συνθήκες `when@` και διαβάζει τις μεταβλητές που ορίζετε στο `.env`.

### Amazon S3

```bash
# .env — common credentials
AWS_S3_STORAGE_VERSION=latest
AWS_S3_STORAGE_REGION=eu-central-1
AWS_S3_STORAGE_ACCESS_KEY=your-access-key
AWS_S3_STORAGE_ACCESS_SECRET=your-secret-key

# Per-mount buckets (each mount can be a different bucket)
AWS_S3_STORAGE_ASSET_BUCKET=chamilo-assets
AWS_S3_STORAGE_ASSET_CACHE_BUCKET=chamilo-asset-cache
AWS_S3_STORAGE_RESOURCE_BUCKET=chamilo-resources
AWS_S3_STORAGE_RESOURCE_CACHE_BUCKET=chamilo-resource-cache
AWS_S3_STORAGE_THEMES_BUCKET=chamilo-themes
AWS_S3_STORAGE_PLUGINS_BUCKET=chamilo-plugins

# Optional path prefixes inside a bucket — useful to share buckets across portals
AWS_S3_STORAGE_ASSET_PREFIX=portal1/assets
AWS_S3_STORAGE_RESOURCE_PREFIX=portal1/resources
```

### Azure Blob Storage

```bash
# .env
AZURE_STORAGE_CONNECTION_STRING='DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...'
AZURE_STORAGE_ASSET_CONTAINER=asset-container
AZURE_STORAGE_ASSET_CACHE_CONTAINER=asset-cache-container
AZURE_STORAGE_RESOURCE_CONTAINER=resources-container
AZURE_STORAGE_RESOURCE_CACHE_CONTAINER=resources-cache-container
AZURE_STORAGE_THEMES_CONTAINER=themes-container
# Optional prefixes
AZURE_STORAGE_ASSET_PREFIX=optional/prefix
```

### Google Cloud Storage

Διαμορφώστε το GCS με τον ίδιο τρόπο όπως το S3, χρησιμοποιώντας μεταβλητές περιβάλλοντος ειδικές για GCS και ένα bucket ανά mount. Ανατρέξτε στο `oneup_flysystem.yaml` που συνοδεύει την έκδοσή σας για τα ακριβή ονόματα μεταβλητών — τεκμηριώνονται επίσης στο `.env`.

### MinIO (συμβατό με S3)

Το MinIO λειτουργεί μέσω του προσαρμογέα S3 με προσαρμοσμένο endpoint και διευθυνσιοδότηση τύπου path — ορίστε `AWS_S3_STORAGE_*` όπως για το S3 και προσθέστε το endpoint του MinIO και τις σημαίες path-style που υποστηρίζει το bundle.

### DigitalOcean Spaces (συμβατό με S3)

Το DigitalOcean Spaces είναι ξεχωριστή, φιλοξενούμενη υπηρεσία από το MinIO — δεν είναι MinIO εσωτερικά, αλλά εκθέτει το ίδιο API συμβατό με S3, επομένως λειτουργεί επίσης μέσω του προσαρμογέα S3: ορίστε `AWS_S3_STORAGE_*` όπως για το S3 και κατευθύνετε το `AWS_S3_STORAGE_ENDPOINT` (ή την ισοδύναμη μεταβλητή endpoint του bundle) στο περιφερειακό endpoint του Space σας, π.χ. `https://<region>.digitaloceanspaces.com`.

> Το πλήρες σύνολο ονομάτων μεταβλητών παρατίθεται στο αρχείο `.env.dist` που συνοδεύει το Chamilo. Αντιγράψτε στο `.env` σας μόνο τις γραμμές για τον πάροχο που χρησιμοποιείτε πραγματικά και καταργήστε τα σχόλια.

## Θέματα

Η προσάρτηση **themes** συμπεριφέρεται διαφορετικά από τις υπόλοιπες: τα θέματα που συνοδεύουν το Chamilo (`chamilo`, `chamilo3`) αποτελούν μέρος του κώδικα και βρίσκονται στο `var/themes`, που είναι ακριβώς ο κατάλογος που εξυπηρετεί ο προεπιλεγμένος τοπικός προσαρμογέας. Όταν κατευθύνετε την προσάρτηση themes σε ένα cloud container, το container ξεκινά κενό, οπότε λογότυπα, χρώματα και εικόνες θεμάτων λείπουν και η διεπαφή εμφανίζεται χωρίς στυλ.

Ανεβάστε τα συνοδευτικά θέματα στον ρυθμισμένο χώρο αποθήκευσης με:

```bash
php bin/console chamilo:remote-storage:upload-themes
```

| Επιλογή       | Αποτέλεσμα                                                              |
| ------------- | ----------------------------------------------------------------------- |
| `--dry-run`   | Αναφέρει τι θα ανέβαινε, χωρίς να γράψει τίποτα                         |
| `--overwrite` | Αντικαθιστά αρχεία που υπάρχουν ήδη στον απομακρυσμένο χώρο αποθήκευσης |

Τα αρχεία που υπάρχουν ήδη στο σύστημα αρχείων themes διατηρούνται εκτός αν δοθεί `--overwrite`, οπότε η επανεκτέλεση της εντολής δεν απορρίπτει ποτέ τα λογότυπα ή τα χρωματικά θέματα που ανέβασε ένας διαχειριστής μέσω **Διαχείριση > Ρυθμίσεις > Χρώματα**. Όταν το σύστημα αρχείων themes είναι ο τοπικός κατάλογος `var/themes`, η εντολή το εντοπίζει και δεν κάνει τίποτα, οπότε είναι ασφαλές να εκτελεστεί σε οποιαδήποτε εγκατάσταση.

Το Chamilo εκτελεί αυτή την εντολή από μόνο του στο τέλος του οδηγού εγκατάστασης και ξανά μετά από επιτυχή μετεγκατάσταση βάσης δεδομένων κατά την αναβάθμιση, ώστε τα νέα αρχεία θεμάτων να φτάνουν στον χώρο αποθήκευσης cloud χωρίς κανένα χειροκίνητο βήμα.

Δύο περιπτώσεις εξακολουθούν να απαιτούν να την εκτελέσετε χειροκίνητα:

* **Μετάβαση υπάρχουσας πλατφόρμας σε χώρο αποθήκευσης cloud**, καθώς σε εκείνο το σημείο δεν πραγματοποιείται εγκατάσταση ή αναβάθμιση.
* **Ανανέωση αρχείων θεμάτων που άλλαξαν σε νέα έκδοση**, με `--overwrite`. Οι αυτόματες εκτελέσεις δεν αντικαθιστούν ποτέ, ακριβώς ώστε να μην μπορούν να επαναφέρουν ένα λογότυπο που ανέβασε ένας διαχειριστής σε ένα συνοδευτικό θέμα· το τίμημα είναι ότι ένα `colors.css` ή `tiny-settings.js` που συνοδεύει τη νέα έκδοση δεν αντικαθιστά το αντίγραφο που βρίσκεται ήδη στο container.

## Μετεγκατάσταση υπαρχόντων αρχείων

Αν μεταβαίνετε από τοπικό χώρο αποθήκευσης σε χώρο αποθήκευσης cloud σε υπάρχουσα πλατφόρμα, πρέπει να μετεγκαταστήσετε τα υπάρχοντα αρχεία:

1. Ρυθμίστε τον νέο προσαρμογέα αποθήκευσης όπως περιγράφεται παραπάνω.
2. Αντιγράψτε τα υπάρχοντα αρχεία από τον τοπικό κατάλογο `var/upload/` στον κάδο (bucket) του χώρου αποθήκευσης cloud, διατηρώντας τη δομή καταλόγων.
3. Εκτελέστε `php bin/console chamilo:remote-storage:upload-themes` για να ανεβάσετε τα συνοδευτικά θέματα, όπως περιγράφεται παραπάνω.
4. Επαληθεύστε ότι τα αρχεία είναι προσβάσιμα μέσω της πλατφόρμας μετά τη μετεγκατάσταση.

## Δικαιώματα και πρόσβαση

Βεβαιωθείτε ότι ο κάδος του χώρου αποθήκευσης cloud **δεν είναι δημόσια προσβάσιμος**, εκτός αν χρειάζεστε ρητά δημόσια URL αρχείων. Το Chamilo εξυπηρετεί τα αρχεία μέσω του δικού του επιπέδου ελέγχου πρόσβασης, οπότε η άμεση δημόσια πρόσβαση στον κάδο είναι περιττή και αποτελεί κίνδυνο ασφαλείας.

Για S3, χρησιμοποιήστε πολιτική κάδου που περιορίζει την πρόσβαση στα διαπιστευτήρια IAM που ρυθμίστηκαν παραπάνω.

## Συμβουλές

* **Δοκιμάστε τοπικά με MinIO** πριν την ανάπτυξη σε πάροχο cloud -- το MinIO είναι ένας δωρεάν, συμβατός με S3 διακομιστής που μπορείτε να εκτελέσετε στο δικό σας μηχάνημα.
* **Το DigitalOcean Spaces** είναι μια φιλοξενούμενη εναλλακτική συμβατή με S3 αντί του Amazon S3, επιβεβαιωμένα λειτουργική με τον προσαρμογέα S3 του Chamilo.
* **Χρησιμοποιήστε αποκλειστικό κάδο** για το Chamilo αντί να μοιράζεστε κάδο με άλλες εφαρμογές.
* **Ρυθμίστε πολιτικές κύκλου ζωής** στον κάδο cloud για τη διαχείριση του κόστους αποθήκευσης (π.χ. μετακίνηση παλαιών αρχείων σε φθηνότερα επίπεδα αποθήκευσης).
