Ηλεκτρονικό Επιχειρείν · Εβδομάδα 5 · Εργασία εξαμήνου

Το δικό σου e-shop στο cloud

Η εργασία του εξαμήνου: από τον λογαριασμό στο Azure μέχρι ένα λειτουργικό ηλεκτρονικό κατάστημα με PrestaShop, με παράδοση την Εβδομάδα 9 (δείτε ανακοίνωση στο Open eClass). Τα βήματα 1–6 στήνουν την υποδομή (λογαριασμός, credits, εικονική μηχανή, εγκατάσταση) και γίνονται μέσα στην πρώτη εβδομάδα· τα βήματα 7–9 είναι η ίδια η εργασία: τι φτιάχνεις μέσα στο κατάστημα, domain και HTTPS, τα ορόσημα και τι παραδίδεις. Η πρόοδός σου στις λίστες ελέγχου αποθηκεύεται στον browser.

1. Λογαριασμός Microsoft με το πανεπιστημιακό email

Όλα ξεκινούν από έναν λογαριασμό Microsoft που είναι δεμένος με το @uom.edu.gr email σου. Αυτό είναι που αποδεικνύει αργότερα ότι είσαι φοιτητής και ξεκλειδώνει τα δωρεάν credits. Αν έχεις ήδη λογαριασμό Microsoft με προσωπικό email (Gmail, Outlook), μην τον χρησιμοποιήσεις: φτιάξε καινούργιο με το πανεπιστημιακό.

  1. Άνοιξε το azure.microsoft.com/free/students και πάτησε Start free. Στην οθόνη σύνδεσης διάλεξε No account? Create one!
  2. Δώσε το @uom.edu.gr email σου, όρισε κωδικό πρόσβασης, χώρα Ελλάδα και ημερομηνία γέννησης.
  3. Η Microsoft στέλνει κωδικό επαλήθευσης στο πανεπιστημιακό email. Αν δεν τον δεις σε λίγα λεπτά, έλεγξε την ανεπιθύμητη αλληλογραφία στο webmail του πανεπιστημίου.
Create one → δημιουργία λογαριασμού με @uom.edu.gr
«No account? Create one!» και μετά το @uom.edu.gr email
Κωδικός και ημερομηνία γέννησης
Κωδικός πρόσβασης, χώρα και ημερομηνία γέννησης
Επαλήθευση email
Ο κωδικός επαλήθευσης έρχεται στο @uom.edu.gr
ΠΡΟΣΟΧΗΧρησιμοποίησε παντού το ίδιο @uom.edu.gr email: στον λογαριασμό Microsoft, στην ακαδημαϊκή επαλήθευση και στο προφίλ του Azure. Αν τα μπερδέψεις, η προσφορά για φοιτητές δεν ενεργοποιείται.

2. Ακαδημαϊκή επαλήθευση (academic verification)

Η Microsoft πρέπει να επιβεβαιώσει ότι είσαι φοιτητής σε αναγνωρισμένο ίδρυμα. Η διαδικασία γίνεται μία φορά και ισχύει για έναν χρόνο· μετά ανανεώνεται όσο είσαι ενεργός φοιτητής.

  1. Στη φόρμα Academic Verification συμπλήρωσε όνομα και επώνυμο όπως στα μητρώα του πανεπιστημίου, χώρα Greece, και στο School name University of Macedonia (Πανεπιστήμιο Μακεδονίας, Θεσσαλονίκη).
  2. Στο School email address βάλε ξανά το @uom.edu.gr email. Το πεδίο Verification code είναι προαιρετικό, άφησέ το κενό.
  3. Λύσε το puzzle «δεν είμαι ρομπότ» και πάτησε Verify academic status. Θα λάβεις email από το Microsoft Academic Verification Team με σύνδεσμο επιβεβαίωσης, που λήγει σε 5 ημέρες.
  4. Μόλις δεις το Congratulations! Your academic status has been successfully verified, πάτησε Continue.
Φόρμα Academic Verification
Η φόρμα: ίδρυμα «University of Macedonia», email @uom.edu.gr
Puzzle και Verify academic status
Puzzle και «Verify academic status»
Congratulations, academic status verified
Η επιβεβαίωση
ΑΝ ΚΟΛΛΗΣΕΙΑν η επαλήθευση δεν περάσει αυτόματα, η Microsoft μπορεί να ζητήσει έγγραφο (π.χ. βεβαίωση φοίτησης ή φοιτητική ταυτότητα). Ανέβασέ το από το ίδιο σημείο· παίρνει συνήθως 1–3 εργάσιμες.

3. Τα 100 $ του Azure for Students

Το Azure for Students δίνει 100 $ σε credits για έναν χρόνο, χωρίς πιστωτική κάρτα, και περιλαμβάνει δωρεάν ποσότητες για μερικές υπηρεσίες. Τα credits είναι η «τράπεζά» σου για την εργασία: η εικονική μηχανή που θα φτιάξεις χρεώνεται από εκεί, γι' αυτό στο βήμα 6 θα δεις πώς να μην τα ξοδέψεις άσκοπα.

  1. Μπες στο portal.azure.com με τον λογαριασμό σου. Στην οθόνη «Welcome to Azure» πάτησε Explore κάτω από το Access student benefits.
  2. Αν σου ζητηθεί, αποδέξου τους όρους του Azure Dev Tools for Teaching (Accept and continue).
  3. Στο Education › Get started πάτησε Activate offer στο «Redeem student credits». Συμπλήρωσε το προφίλ: Country Greece, όνομα, επώνυμο, το @uom.edu.gr email, τηλέφωνο· το VAT ID το αφήνεις κενό. Αποδέξου το customer agreement και πάτησε Sign up.
  4. Μπορεί να ζητηθεί μία ακόμη επαλήθευση ταυτότητας με κωδικό στο email. Στο τέλος, στο Education › Overview, θα δεις Available credits: $100 out of $100. Αυτή η οθόνη είναι και ο τρόπος να παρακολουθείς πόσα έχουν μείνει.
Welcome to Azure: Access student benefits
«Access student benefits › Explore»
Education hub: Activate offer
Education › Get started › «Activate offer»
Προφίλ και Sign up
Το προφίλ και το «Sign up»
Available credits
Education › Overview: τα διαθέσιμα credits και πότε λήγουν (Οκτώβριος 2026)
ΜΕΤΑ ΑΠΟ ΕΝΑΝ ΧΡΟΝΟΤα credits λήγουν 12 μήνες μετά την ενεργοποίηση. Τότε το Education › Overview γράφει «Your free student credit has expired»: ξανακάνεις την ακαδημαϊκή επαλήθευση (ίδια φόρμα, ίδιο email) και η προσφορά ανανεώνεται με νέα credits.
ΓΙΑΤΙ ΟΧΙ GOOGLE CLOUD;Μπορείς να κάνεις την εργασία και σε Google Cloud (το σκριπτ του βήματος 5 τρέχει αυτούσιο). Η δωρεάν δοκιμή της Google όμως ζητά πιστωτική κάρτα, ενώ το Azure for Students όχι· γι' αυτό ο οδηγός ακολουθεί το Azure.

4. Η εικονική μηχανή (virtual machine)

Εδώ δένει η Εβδομάδα 3 με την πράξη: νοικιάζεις μία εικονική μηχανή (IaaS) σε data center της Microsoft και μέσα της θα τρέξει το e-shop. Θέλεις το φθηνότερο μέγεθος που αντέχει το PrestaShop 9: 2 GB μνήμης. Το 1 GB δεν φτάνει.

  1. Στο portal: Create a resource › Virtual machine › Create (ή αναζήτηση «Virtual machines» › Create).
  2. Στην καρτέλα Basics συμπλήρωσε τα παρακάτω και άφησε τα υπόλοιπα όπως είναι. Το Azure δοκιμάζει νέα εμφάνιση της φόρμας (preview)· τα πεδία είναι τα ίδια, απλώς αλλάζει η διάταξη.
Subscription
Azure for Students
Resource group
Create new → eshop-rg
Virtual machine name
eshop
Region
(Europe) North Europe ή West Europe
Availability options
No infrastructure redundancy required
Image
Ubuntu Server 24.04 LTS – x64 Gen2
Size
Standard_B1ms (1 vcpu, 2 GiB) ή B2als_v2 (2 vcpu, 4 GiB) · «See all sizes» αν δεν φαίνεται
Authentication type
SSH public key, Generate new key pair (ή Password· δεν θα το χρειαστείς)
Username
azureuser
Public inbound ports
Allow selected ports → HTTP (80) και SSH (22)
  1. Πάτησε Review + create και μετά Create. Αν διάλεξες SSH key, πάτησε Download private key and create resource και κράτησε το αρχείο.
  2. Μετά από 1–2 λεπτά: Go to resource. Στην οθόνη της VM σημείωσε τη Public IP address (π.χ. 52.158.34.20). Αυτή είναι η διεύθυνση του καταστήματός σου.
  3. Έλεγξε ότι η θύρα 80 είναι ανοιχτή: Networking › Network settings › στους inbound rules πρέπει να υπάρχει κανόνας για HTTP (80). Αν όχι, Create port rule › Inbound, Service: HTTP.
Η οθόνη της VM
Η οθόνη της VM: Status Running, Public IP, Size
Network settings με κανόνες HTTP και SSH
Networking › Network settings: κανόνες HTTP (80) και SSH (22)
Το resource group με τους 7 πόρους
Το resource group eshop-rg: μηχανή, IP, δίκτυο, δίσκος, κλειδί, όλα μαζί
ΤΙ ΚΟΣΤΙΖΕΙΗ B1ms κοστίζει περίπου 0,02 $ την ώρα, δηλαδή γύρω στα 15 $ τον μήνα αν μένει συνέχεια ανοιχτή, συν 1–2 $ για δίσκο και IP. Με 100 $ credits έχεις άνετα όλο το εξάμηνο, αρκεί να τη σταματάς όταν δεν δουλεύεις (βήμα 6).

5. Εγκατάσταση PrestaShop με ένα σκριπτ

Δεν χρειάζεται να συνδεθείς με SSH. Το Azure έχει το Run command: του δίνεις ένα σκριπτ και το τρέχει μέσα στη μηχανή. Το σκριπτ εγκαθιστά το Docker, κατεβάζει το επίσημο PrestaShop 9 μαζί με τη βάση δεδομένων του και τα ξεκινά. Μετά το κατάστημα είναι έτοιμο, όπως ακριβώς το demo της Εβδομάδας 4, αλλά δικό σου.

  1. Αντέγραψε το σκριπτ από κάτω (κουμπί Αντιγραφή) και επικόλλησέ το σε έναν επεξεργαστή κειμένου.
  2. Άλλαξε τις δύο πρώτες γραμμές: το email με το οποίο θα μπαίνεις στη διαχείριση και έναν δικό σου κωδικό (τουλάχιστον 8 χαρακτήρες, χωρίς κενά ή εισαγωγικά). Κράτησέ τα, θα τα χρειαστείς στο επόμενο βήμα.
  3. Στη VM: Operations › Run command › RunShellScript. Επικόλλησε όλο το σκριπτ στο πλαίσιο και πάτησε Run.
  4. Περίμενε μέχρι να εμφανιστεί η έξοδος (2–4 λεπτά). Στο τέλος γράφει τις διευθύνσεις του καταστήματος. Η ίδια η εγκατάσταση του PrestaShop συνεχίζει στο παρασκήνιο για άλλα 5–10 λεπτά.
ADMIN_MAIL="onoma@uom.edu.gr" # το email με το οποίο θα μπαίνετε στο back office ADMIN_PASSWD="Allaxte-Me-2026" # τουλάχιστον 8 χαρακτήρες, χωρίς κενά και χωρίς ' ή " set -e export DEBIAN_FRONTEND=noninteractive echo ">>> 1/4 Εγκατάσταση Docker" apt-get update -y apt-get install -y docker.io docker-compose-v2 curl systemctl enable --now docker echo ">>> 2/4 Εύρεση δημόσιας IP" IP=$(curl -s -m 5 -H Metadata:true "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2021-02-01&format=text" || true) if [ -z "$IP" ]; then IP=$(curl -s -m 5 -H "Metadata-Flavor: Google" "http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip" || true); fi if [ -z "$IP" ]; then IP=$(curl -s -m 5 https://ifconfig.me || true); fi echo " IP: $IP" echo ">>> 3/4 Αρχείο compose" mkdir -p /opt/eshop && cd /opt/eshop cat > compose.yaml <<EOF services: db: image: mariadb:11.4 restart: always environment: MARIADB_ROOT_PASSWORD: prestashop MARIADB_DATABASE: prestashop volumes: - dbdata:/var/lib/mysql shop: image: prestashop/prestashop:9.2-apache restart: always depends_on: - db ports: - "80:80" environment: DB_SERVER: db DB_USER: root DB_PASSWD: prestashop DB_NAME: prestashop PS_INSTALL_AUTO: 1 PS_DOMAIN: ${IP:-localhost} PS_COUNTRY: GR PS_LANGUAGE: en ADMIN_MAIL: $ADMIN_MAIL ADMIN_PASSWD: $ADMIN_PASSWD volumes: - psdata:/var/www/html volumes: dbdata: psdata: EOF echo ">>> 4/4 Εκκίνηση (το κατέβασμα και η εγκατάσταση παίρνουν 5-10 λεπτά)" docker compose up -d echo "==================================================================" echo " Κατάστημα (front office): http://$IP" echo " Διαχείριση (back office): http://$IP/admin.../ (βρες το ακριβές όνομα: βλ. οδηγό)" echo " Email: $ADMIN_MAIL" echo " Περιμένετε 5-10 λεπτά πριν ανοίξετε τη διεύθυνση." echo "=================================================================="
Operations › Run command
Operations › Run command › RunShellScript
Το σκριπτ τρέχει
Επικόλληση του σκριπτ και Run· «Script execution in progress»

Το ίδιο σκριπτ ως αρχείο: install-prestashop.sh. Σε Google Cloud ή άλλη Ubuntu VM τρέχει με sudo bash install-prestashop.sh.

Τι κάνει το σκριπτ, σε μία πρόταση το καθένα

Βρες τη διεύθυνση του back office

Για ασφάλεια, το PrestaShop 9 δίνει στον φάκελο διαχείρισης τυχαίο όνομα (π.χ. admin724xf8p3…), ώστε να μην τον μαντεύει κανείς. Μόλις ολοκληρωθεί η εγκατάσταση, τρέξε από το Run command το παρακάτω· τυπώνει τη διεύθυνση. Σημείωσέ την, θα τη χρειαστείς συνέχεια.

A=$(ls /var/lib/docker/volumes/eshop_psdata/_data | grep '^admin' | grep -v admin-api); echo "Back office: http://$(curl -s ifconfig.me)/$A/"

Έλεγχος προόδου

Αν μετά από 10 λεπτά η διεύθυνση δεν ανοίγει, τρέξε από το ίδιο Run command το παρακάτω και διάβασε τις τελευταίες γραμμές: όσο γράφει «Installing PrestaShop» περίμενε· αν γράφει «installation failed», στείλε μου την έξοδο.

cd /opt/eshop && docker compose ps && docker compose logs --tail 20 shop
ΑΝ ΘΕΣ ΝΑ ΞΕΚΙΝΗΣΕΙΣ ΑΠΟ ΤΗΝ ΑΡΧΗΤο παρακάτω σβήνει το κατάστημα και τη βάση του οριστικά και ξαναρχίζει την εγκατάσταση με τις ίδιες ρυθμίσεις: cd /opt/eshop && docker compose down -v && docker compose up -d

6. Πρώτη είσοδος και διαχείριση κόστους

Το κατάστημα (front office)

Άνοιξε http://<η IP σου> στον browser. Θα δεις το αρχικό κατάστημα με τα δείγματα προϊόντων, ίδιο με το demo.prestashop.com. Ο browser θα γράφει «Μη ασφαλές», γιατί δεν υπάρχει HTTPS· για την εργασία είναι εντάξει.

Η διαχείριση (back office)

Άνοιξε τη διεύθυνση που σου έδωσε η εντολή «Βρες τη διεύθυνση του back office» (http://<η IP σου>/admin…/) και μπες με το email και τον κωδικό που έβαλες στο σκριπτ. Από εδώ γίνονται όλα όσα είδαμε στην Εβδομάδα 4.

Το κατάστημα στην IP της VM
Το κατάστημα, όπως ανοίγει στην IP της μηχανής: θέμα Hummingbird και δείγματα προϊόντων
Σελίδα προϊόντος
Σελίδα προϊόντος με παραλλαγές και έκπτωση, ίδια με του demo
Σύνδεση στο back office
Σύνδεση στο back office με το email και τον κωδικό του σκριπτ
Dashboard του back office
Το Dashboard: PrestaShop 9.2, το δικό σου

Τρία πράγματα να κάνεις αμέσως

  1. Όνομα καταστήματος και στοιχεία: Shop Parameters › Contact › Stores (όνομα, email επικοινωνίας).
  2. Ελληνικά: International › Localization › Import a localization pack › Greece. Μετά International › Languages, ενεργοποίησε τα Ελληνικά και όρισέ τα προεπιλογή (Shop Parameters › General). Η γλώσσα του back office αλλάζει από το προφίλ σου, πάνω δεξιά.
  3. Σβήσε τα δείγματα όταν είσαι έτοιμος να βάλεις τα δικά σου: Catalog › Products › επιλογή όλων › Bulk actions › Delete, και το ίδιο στις κατηγορίες (εκτός της Home).

Για να μην ξοδέψεις τα credits

Auto-shutdown ρυθμισμένο στις 23:00
Operations › Auto-shutdown, ενεργό στις 23:00
ΕΛΕΓΧΟΣ ΚΟΣΤΟΥΣEducation › Overview δείχνει τα credits που απομένουν. Cost Management › Cost analysis δείχνει τι χρεώνει τι.

7. Η εργασία εξαμήνου: από το άδειο κατάστημα στην πρώτη παραγγελία

Διάλεξε τι θα πουλάει το κατάστημά σου (πραγματικό ή επινοημένο, αλλά συγκεκριμένο: όχι «ρούχα», αλλά «ρούχα για ορειβασία» ή «βιολογικά προϊόντα Χαλκιδικής»). Μετά, με τη σειρά που τα ρύθμιζες και στην Εβδομάδα 4, φτιάξε τα παρακάτω. Σε κάθε κάρτα βλέπεις πού βρίσκεται στο back office και τι παραδίδεις.

1. Ιδέα και ανταγωνισμός

Τι πουλάς, σε ποιον, γιατί online. Βρες 2–3 ελληνικά e-shop που πουλούν κάτι αντίστοιχο και σημείωσε τι κάνουν καλά (κατηγορίες, μεταφορικά, τρόποι πληρωμής).

Παραδοτέο: μισή σελίδα κειμένου με τα links.

2. Θέμα, λογότυπο, αρχική

Design › Theme & Logo

Ανέβασε λογότυπο και favicon. Άλλαξε τις εικόνες του carousel της αρχικής (Modules › Module Manager › Image slider › Configure) και το κείμενο του «Custom Text Block».

Παραδοτέο: screenshot της αρχικής σελίδας.

3. Κατηγορίες και μάρκες

Catalog › Categories · Catalog › Brands & Suppliers

Τουλάχιστον 3 κατηγορίες με υποκατηγορίες (2 επίπεδα) και 2 μάρκες. Σχεδίασε το δέντρο στο χαρτί πριν το περάσεις.

Παραδοτέο: το δέντρο κατηγοριών (screenshot ή λίστα).

4. Προϊόντα

Catalog › Products · Advanced Parameters › Import

Τουλάχιστον 12 προϊόντα με φωτογραφία, περιγραφή, τιμή και απόθεμα. Τα 2 με παραλλαγές (μέγεθος ή χρώμα, Combinations). Τα 6 να μπουν μαζικά από CSV (δείγμα στο Import › Download sample csv files › Products).

Παραδοτέο: το CSV αρχείο και screenshot της λίστας προϊόντων.

5. Αποστολή

Shipping › Carriers

Δύο μεταφορείς: «Παραλαβή από το κατάστημα» (δωρεάν) και «Courier» με κόστος ανά κλίμακα βάρους ή αξίας για τη ζώνη Ελλάδα και δωρεάν μεταφορικά πάνω από ένα ποσό (Shipping › Preferences).

Παραδοτέο: screenshot των κλιμάκων του courier.

6. Πληρωμή

Payment › Payment Methods

Ενεργά τουλάχιστον: τραπεζική κατάθεση (με δικά σου στοιχεία λογαριασμού, επινοημένα) και αντικαταβολή. Στο Payment › Preferences περιόρισε την αντικαταβολή μόνο στην Ελλάδα.

Παραδοτέο: screenshot των ενεργών τρόπων πληρωμής.

7. Έκπτωση

Catalog › Discounts › Cart Rules

Ένας κανόνας καλαθιού με κωδικό κουπονιού (π.χ. 10 % με ελάχιστο ποσό) και ένας κανόνας τιμών καταλόγου (Catalog Price Rules) για μία κατηγορία ή μάρκα.

Παραδοτέο: το όνομα του κουπονιού, για να το δοκιμάσω.

8. Δοκιμαστική παραγγελία

Front office › Checkout · Orders

Κάνε μια αγορά ως πελάτης από κινητό μέχρι το τέλος, με το κουπόνι. Μετά, στο back office, άλλαξε την κατάστασή της σε «Payment accepted» και μετά «Shipped».

Παραδοτέο: screenshot της παραγγελίας στο Orders με το ιστορικό καταστάσεων.

Αναστοχασμός (1 σελίδα)

Τι σε δυσκόλεψε περισσότερο και γιατί. Τι θα έλειπε ακόμη για να ανοίξει το κατάστημα αληθινά (π.χ. HTTPS και domain, σύνδεση με τράπεζα για κάρτες, τιμολόγηση και ΦΠΑ, πολιτική επιστροφών, GDPR, φωτογραφίες και περιγραφές για εκατοντάδες προϊόντα). Πού πήγε ο χρόνος σου: στο λογισμικό ή στο περιεχόμενο;

Και μετά: domain και HTTPS (βήμα 8)

Όταν το κατάστημα δουλεύει στην IP, δίνεις όνομα και λουκέτο. Είναι μέρος της εργασίας και περιγράφεται στο επόμενο βήμα.

Προαιρετικά, για επιπλέον μονάδες (έως +10 %)

Ελληνικά παντού

Ελληνική γλώσσα στο front office, μεταφρασμένες κατηγορίες και προϊόντα, ευρώ και ΦΠΑ 24 % σωστά ρυθμισμένα.

Κανάλι πώλησης

XML feed για Skroutz/BestPrice (με module ή δικό σου), ή σύνδεση με Facebook/Instagram ή Google από το Marketing.

ΣΥΜΒΟΥΛΗΜην αφήσεις τα προϊόντα για το τέλος. Το στήσιμο της μηχανής παίρνει μία ώρα· οι φωτογραφίες και οι περιγραφές παίρνουν τις υπόλοιπες. Αυτό είναι και το μάθημα της εργασίας.

8. Domain και HTTPS

Μέχρι εδώ το κατάστημα ανοίγει σε μια IP. Ένα κανονικό κατάστημα έχει όνομα (η Εβδομάδα 3) και λουκέτο (HTTPS). Και τα δύο είναι μέρος της εργασίας. Υπάρχουν δύο δρόμοι για το όνομα: ο εύκολος και ο «πραγματικός».

Α. Το DNS name του Azure

Δωρεάν, 1 λεπτό, χωρίς κατοχύρωση

Στην οθόνη της VM, δίπλα στο «DNS name: Not configured», πάτα Configure. Στο «DNS name label» γράψε ένα όνομα, π.χ. maria-eshop, και Apply. Το κατάστημα αποκτά τη διεύθυνση maria-eshop.spaincentral.cloudapp.azure.com, που δένει μόνιμα με τη μηχανή σου.

Αν το πεδίο δεν δέχεται κείμενο (μας συνέβη), άνοιξε το Cloud Shell (εικονίδιο τερματικού πάνω δεξιά, Bash, χωρίς storage) και δώσε: az network public-ip update -g eshop-rg -n eshop-ip --dns-name maria-eshop

Αρκεί για την εργασία. Το Β δείχνει επιπλέον την κατοχύρωση, όπως στην Εβδομάδα 3.

Β. Δωρεάν domain για φοιτητές

Δωρεάν για 1 χρόνο, κανονική κατοχύρωση

Το GitHub Student Developer Pack (εγγραφή με το @uom.edu.gr, έγκριση σε 1–7 ημέρες) δίνει ένα .me από τη Namecheap με πιστοποιητικό SSL, ένα .tech, ή ένα από τη Name.com (.app, .dev, .live…).

Κατοχυρώνεις το όνομα, μπαίνεις στο DNS του καταχωρητή και φτιάχνεις εγγραφή A με host @ (και μία για www) προς την IP της μηχανής. Μέχρι να «περάσει» το DNS: 5 λεπτά έως λίγες ώρες.

Και στις δύο περιπτώσεις: πες το και στο PrestaShop

Το PrestaShop «θυμάται» τη διεύθυνση με την οποία εγκαταστάθηκε (την IP) και ανακατευθύνει εκεί. Μόλις το νέο όνομα ανοίγει τη μηχανή σου, άλλαξέ το από το back office: Shop Parameters › Traffic & SEO › Set shop URL, πεδία Shop domain και SSL domain. Ή με μία εντολή από το Run command (βάλε το δικό σου όνομα):

D="maria-eshop.spaincentral.cloudapp.azure.com"; cd /opt/eshop && docker compose exec -T db mariadb -uroot -pprestashop prestashop -e "update ps_shop_url set domain='$D', domain_ssl='$D'; update ps_configuration set value='$D' where name in ('PS_SHOP_DOMAIN','PS_SHOP_DOMAIN_SSL')"

HTTPS: το λουκέτο, δωρεάν

Με δικό σου όνομα (Α ή Β) μπορείς να πάρεις δωρεάν πιστοποιητικό από το Let's Encrypt. Στο στήσιμό μας αυτό γίνεται βάζοντας μπροστά από το PrestaShop έναν μικρό server, τον Caddy, που ζητά το πιστοποιητικό μόνος του και το ανανεώνει αυτόματα. Δύο βήματα:

  1. Άνοιξε τη θύρα 443 στη μηχανή: VM › Networking › Network settings › Create port rule › Inbound, Service: HTTPS, Add.
  2. Τρέξε από το Run command το παρακάτω, αφού αλλάξεις την πρώτη γραμμή στο δικό σου όνομα. Σε 1–2 λεπτά το κατάστημα ανοίγει με https:// και λουκέτο· το http:// ανακατευθύνει μόνο του.
DOMAIN="uom-eshop-demo.spaincentral.cloudapp.azure.com" # ΑΛΛΑΞΤΕ ΤΟ: το δικό σας όνομα # ------------------------------------------------------------------------------------------- set -e cd /opt/eshop # 1) Το PrestaShop ακούει μόνο τοπικά, στη θύρα 8080· μπροστά του μπαίνει ο Caddy sed -i 's/ - "80:80"/ - "127.0.0.1:8080:80"/' compose.yaml # 2) Προσθήκη του Caddy στα services (πριν από το "volumes:") και του volume του if ! grep -q 'image: caddy' compose.yaml; then python3 - <<'PY' s=open('compose.yaml').read() caddy=''' caddy: image: caddy:2 restart: always network_mode: host volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddydata:/data ''' i=s.index('\nvolumes:\n') s=s[:i+1]+caddy+s[i+1:] if not s.rstrip().endswith('caddydata:'): s=s.rstrip('\n')+'\n caddydata:\n' open('compose.yaml','w').write(s) PY fi cat > Caddyfile <<EOC $DOMAIN { reverse_proxy 127.0.0.1:8080 { header_up X-Forwarded-Proto https } } EOC # 3) Το PrestaShop μαθαίνει το νέο όνομα και ότι έχει SSL docker compose exec -T db mariadb -uroot -pprestashop prestashop -e "update ps_shop_url set domain='$DOMAIN', domain_ssl='$DOMAIN'; update ps_configuration set value='$DOMAIN' where name in ('PS_SHOP_DOMAIN','PS_SHOP_DOMAIN_SSL'); update ps_configuration set value='1' where name in ('PS_SSL_ENABLED','PS_SSL_ENABLED_EVERYWHERE');" docker compose up -d echo "Σε 1-2 λεπτά: https://$DOMAIN"

Το ίδιο ως αρχείο: enable-https.sh. Από το Cloud Shell τρέχει και με μία γραμμή, χωρίς αντιγραφή: az vm run-command invoke -g eshop-rg -n eshop --command-id RunShellScript --scripts 'curl -fsSL https://kalampokis.github.io/ebusiness/Week5/enable-https.sh -o /opt/h.sh && sed -i "s/^DOMAIN=.*/DOMAIN=maria-eshop.spaincentral.cloudapp.azure.com/" /opt/h.sh && bash /opt/h.sh'

Το κατάστημα με HTTPS στο DNS name του Azure
Το ίδιο κατάστημα, τώρα με όνομα και λουκέτο (δοκιμάστηκε 21/10/2026)
ΓΙΑΤΙ ΔΟΥΛΕΥΕΙΤο Let's Encrypt δίνει πιστοποιητικό μόνο σε όποιον αποδείξει ότι ελέγχει το όνομα: ο Caddy απαντά σε μια «πρόκληση» στη θύρα 80 και 443 του ονόματός σου. Γι' αυτό χρειάζεται όνομα και όχι σκέτη IP, και γι' αυτό πρέπει να είναι ανοιχτή η 443.
ΑΝ ΔΕΝ ΒΓΕΙ ΛΟΥΚΕΤΟΈλεγξε με τη σειρά: ανοίγει το όνομα σε http://; (DNS) · είναι η 443 στους inbound rules; · τι λέει cd /opt/eshop && docker compose logs --tail 30 caddy.

9. Ορόσημα, παράδοση και βαθμολόγηση

Τρία ορόσημα

ΟρόσημοΠότεΤι πρέπει να υπάρχει
1. Το κατάστημα είναι onlineΕβδομάδα 6Βήματα 1–6 ολοκληρωμένα· στέλνεις στο eClass τη διεύθυνση του καταστήματος και την ιδέα (βήμα 7.1). Το όνομα και το HTTPS (βήμα 8) μέχρι το ορόσημο 2
2. Ο κατάλογοςΕβδομάδα 7–8Θέμα, κατηγορίες, μάρκες και τα προϊόντα (βήματα 7.2–7.4) στο κατάστημα· σύντομη επίδειξη στο μάθημα
3. Τελική παράδοσηΕβδομάδα 9 (δείτε ανακοίνωση στο Open eClass)Όλα τα βήματα, PDF και CSV στο eClass, το κατάστημα αναμμένο για τη βαθμολόγηση

Η ακριβής ημερομηνία παράδοσης είναι στην ανακοίνωση στο Open eClass. Τα ορόσημα 1 και 2 δεν βαθμολογούνται χωριστά, αλλά όποιος τα τηρεί φτάνει στο τέλος χωρίς άγχος· και ό,τι δεν δουλεύει, το βρίσκουμε νωρίς.

Τι παραδίδεις στο Open eClass στην τελική παράδοση

Πώς βαθμολογείται

ΚριτήριοΒάροςΤι κοιτάζω
Το κατάστημα λειτουργεί online10 %Ανοίγει, back office προσβάσιμο, λογαριασμός για τον διδάσκοντα
Ιδέα και ανταγωνισμός20 %Συγκεκριμένο κοινό και προϊόν, 2–3 σωστά παραδείγματα
Κατάλογος: θέμα, κατηγορίες, μάρκες, προϊόντα25 %Λογικό δέντρο, 12+ πλήρη προϊόντα, παραλλαγές, εισαγωγή από CSV
Αποστολή, πληρωμή, εκπτώσεις20 %Δύο μεταφορείς με κλίμακες, δωρεάν από ποσό, δύο τρόποι πληρωμής, κουπόνι που δουλεύει
Δοκιμαστική παραγγελία10 %Ολοκληρωμένη από κινητό, αλλαγές κατάστασης στο back office
Domain και HTTPS10 %Το κατάστημα ανοίγει σε όνομα, με λουκέτο, και το PrestaShop ξέρει το όνομά του
Αναστοχασμός5 %Τι έλειψε, πού πήγε ο χρόνος, τι θα άλλαζες
Προαιρετικά (ελληνικά, κανάλι πώλησης)έως +10 %Μόνο αν δουλεύουν· δεν αντικαθιστούν τα βασικά

Λίστα ελέγχου πριν παραδώσεις