Η εργασία του εξαμήνου: από τον λογαριασμό στο 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), μην τον χρησιμοποιήσεις: φτιάξε καινούργιο με το πανεπιστημιακό.
Δώσε το @uom.edu.gr email σου, όρισε κωδικό πρόσβασης, χώρα Ελλάδα και ημερομηνία γέννησης.
Η Microsoft στέλνει κωδικό επαλήθευσης στο πανεπιστημιακό email. Αν δεν τον δεις σε λίγα λεπτά, έλεγξε την ανεπιθύμητη αλληλογραφία στο webmail του πανεπιστημίου.
«No account? Create one!» και μετά το @uom.edu.gr emailΚωδικός πρόσβασης, χώρα και ημερομηνία γέννησης
Ο κωδικός επαλήθευσης έρχεται στο @uom.edu.gr
ΠΡΟΣΟΧΗΧρησιμοποίησε παντού το ίδιο @uom.edu.gr email: στον λογαριασμό Microsoft, στην ακαδημαϊκή επαλήθευση και στο προφίλ του Azure. Αν τα μπερδέψεις, η προσφορά για φοιτητές δεν ενεργοποιείται.
2. Ακαδημαϊκή επαλήθευση (academic verification)
Η Microsoft πρέπει να επιβεβαιώσει ότι είσαι φοιτητής σε αναγνωρισμένο ίδρυμα. Η διαδικασία γίνεται μία φορά και ισχύει για έναν χρόνο· μετά ανανεώνεται όσο είσαι ενεργός φοιτητής.
Στη φόρμα Academic Verification συμπλήρωσε όνομα και επώνυμο όπως στα μητρώα του πανεπιστημίου, χώρα Greece, και στο School name University of Macedonia (Πανεπιστήμιο Μακεδονίας, Θεσσαλονίκη).
Στο School email address βάλε ξανά το @uom.edu.gr email. Το πεδίο Verification code είναι προαιρετικό, άφησέ το κενό.
Λύσε το puzzle «δεν είμαι ρομπότ» και πάτησε Verify academic status. Θα λάβεις email από το Microsoft Academic Verification Team με σύνδεσμο επιβεβαίωσης, που λήγει σε 5 ημέρες.
Μόλις δεις το Congratulations! Your academic status has been successfully verified, πάτησε Continue.
Η φόρμα: ίδρυμα «University of Macedonia», email @uom.edu.gr
Puzzle και «Verify academic status»Η επιβεβαίωση
ΑΝ ΚΟΛΛΗΣΕΙΑν η επαλήθευση δεν περάσει αυτόματα, η Microsoft μπορεί να ζητήσει έγγραφο (π.χ. βεβαίωση φοίτησης ή φοιτητική ταυτότητα). Ανέβασέ το από το ίδιο σημείο· παίρνει συνήθως 1–3 εργάσιμες.
3. Τα 100 $ του Azure for Students
Το Azure for Students δίνει 100 $ σε credits για έναν χρόνο, χωρίς πιστωτική κάρτα, και περιλαμβάνει δωρεάν ποσότητες για μερικές υπηρεσίες. Τα credits είναι η «τράπεζά» σου για την εργασία: η εικονική μηχανή που θα φτιάξεις χρεώνεται από εκεί, γι' αυτό στο βήμα 6 θα δεις πώς να μην τα ξοδέψεις άσκοπα.
Μπες στο portal.azure.com με τον λογαριασμό σου. Στην οθόνη «Welcome to Azure» πάτησε Explore κάτω από το Access student benefits.
Αν σου ζητηθεί, αποδέξου τους όρους του Azure Dev Tools for Teaching (Accept and continue).
Στο Education › Get started πάτησε Activate offer στο «Redeem student credits». Συμπλήρωσε το προφίλ: Country Greece, όνομα, επώνυμο, το @uom.edu.gr email, τηλέφωνο· το VAT ID το αφήνεις κενό. Αποδέξου το customer agreement και πάτησε Sign up.
Μπορεί να ζητηθεί μία ακόμη επαλήθευση ταυτότητας με κωδικό στο email. Στο τέλος, στο Education › Overview, θα δεις Available credits: $100 out of $100. Αυτή η οθόνη είναι και ο τρόπος να παρακολουθείς πόσα έχουν μείνει.
«Access student benefits › Explore»Education › Get started › «Activate offer»Το προφίλ και το «Sign up»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 δεν φτάνει.
Στο portal: Create a resource › Virtual machine › Create (ή αναζήτηση «Virtual machines» › Create).
Στην καρτέλα 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)
Πάτησε Review + create και μετά Create. Αν διάλεξες SSH key, πάτησε Download private key and create resource και κράτησε το αρχείο.
Μετά από 1–2 λεπτά: Go to resource. Στην οθόνη της VM σημείωσε τη Public IP address (π.χ. 52.158.34.20). Αυτή είναι η διεύθυνση του καταστήματός σου.
Έλεγξε ότι η θύρα 80 είναι ανοιχτή: Networking › Network settings › στους inbound rules πρέπει να υπάρχει κανόνας για HTTP (80). Αν όχι, Create port rule › Inbound, Service: HTTP.
Η οθόνη της VM: Status Running, Public IP, SizeNetworking › Network settings: κανόνες HTTP (80) και SSH (22)
Το 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, αλλά δικό σου.
Αντέγραψε το σκριπτ από κάτω (κουμπί Αντιγραφή) και επικόλλησέ το σε έναν επεξεργαστή κειμένου.
Άλλαξε τις δύο πρώτες γραμμές: το email με το οποίο θα μπαίνεις στη διαχείριση και έναν δικό σου κωδικό (τουλάχιστον 8 χαρακτήρες, χωρίς κενά ή εισαγωγικά). Κράτησέ τα, θα τα χρειαστείς στο επόμενο βήμα.
Στη VM: Operations › Run command › RunShellScript. Επικόλλησε όλο το σκριπτ στο πλαίσιο και πάτησε Run.
Περίμενε μέχρι να εμφανιστεί η έξοδος (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 › RunShellScriptΕπικόλληση του σκριπτ και Run· «Script execution in progress»
Το ίδιο σκριπτ ως αρχείο: install-prestashop.sh. Σε Google Cloud ή άλλη Ubuntu VM τρέχει με sudo bash install-prestashop.sh.
Τι κάνει το σκριπτ, σε μία πρόταση το καθένα
Docker: ένας τρόπος να τρέχουν έτοιμα «πακέτα» λογισμικού (containers) χωρίς να εγκαθιστάς PHP, Apache και MySQL ένα-ένα.
compose.yaml: η περιγραφή των δύο containers, του PrestaShop και της βάσης MariaDB, και πώς συνδέονται.
PS_INSTALL_AUTO: το PrestaShop εγκαθίσταται μόνο του, με χώρα Ελλάδα και τον δικό σου κωδικό διαχειριστή.
Βρες τη διεύθυνση του back office
Για ασφάλεια, το PrestaShop 9 δίνει στον φάκελο διαχείρισης τυχαίο όνομα (π.χ. admin724xf8p3…), ώστε να μην τον μαντεύει κανείς. Μόλις ολοκληρωθεί η εγκατάσταση, τρέξε από το Run command το παρακάτω· τυπώνει τη διεύθυνση. Σημείωσέ την, θα τη χρειαστείς συνέχεια.
Αν μετά από 10 λεπτά η διεύθυνση δεν ανοίγει, τρέξε από το ίδιο Run command το παρακάτω και διάβασε τις τελευταίες γραμμές: όσο γράφει «Installing PrestaShop» περίμενε· αν γράφει «installation failed», στείλε μου την έξοδο.
ΑΝ ΘΕΣ ΝΑ ΞΕΚΙΝΗΣΕΙΣ ΑΠΟ ΤΗΝ ΑΡΧΗΤο παρακάτω σβήνει το κατάστημα και τη βάση του οριστικά και ξαναρχίζει την εγκατάσταση με τις ίδιες ρυθμίσεις: 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 της μηχανής: θέμα Hummingbird και δείγματα προϊόντωνΣελίδα προϊόντος με παραλλαγές και έκπτωση, ίδια με του demoΣύνδεση στο back office με το email και τον κωδικό του σκριπτΤο Dashboard: PrestaShop 9.2, το δικό σου
Τρία πράγματα να κάνεις αμέσως
Όνομα καταστήματος και στοιχεία: Shop Parameters › Contact › Stores (όνομα, email επικοινωνίας).
Ελληνικά: International › Localization › Import a localization pack › Greece. Μετά International › Languages, ενεργοποίησε τα Ελληνικά και όρισέ τα προεπιλογή (Shop Parameters › General). Η γλώσσα του back office αλλάζει από το προφίλ σου, πάνω δεξιά.
Σβήσε τα δείγματα όταν είσαι έτοιμος να βάλεις τα δικά σου: Catalog › Products › επιλογή όλων › Bulk actions › Delete, και το ίδιο στις κατηγορίες (εκτός της Home).
Για να μην ξοδέψεις τα credits
Σταμάτα τη μηχανή όταν δεν δουλεύεις: στην οθόνη της VM πάτησε Stop. Σταματημένη (deallocated) δεν χρεώνει υπολογιστικό χρόνο, μόνο τον δίσκο (κάτω από 1 $ τον μήνα). Με Start επανέρχεται σε 1–2 λεπτά, με το κατάστημα όπως το άφησες.
Auto-shutdown: Operations › Auto-shutdown › Enabled: On, ώρα 11:00 PM, ζώνη (UTC+02:00) E. Europe, Save. Έτσι δεν θα ξεχαστεί ποτέ ανοιχτή.
Η IP μπορεί να αλλάξει μετά από Stop/Start, αν είναι δυναμική (η προεπιλογή της φόρμας είναι Static, οπότε συνήθως δεν αλλάζει). Αν αλλάξει, το κατάστημα συνεχίζει να «θυμάται» την παλιά: τρέξε από το Run command cd /opt/eshop && docker compose exec -T db mariadb -uroot -pprestashop prestashop -e "update ps_shop_url set domain='ΝΕΑ_IP', domain_ssl='ΝΕΑ_IP'; update ps_configuration set value='ΝΕΑ_IP' where name in ('PS_SHOP_DOMAIN','PS_SHOP_DOMAIN_SSL')" με τη νέα IP στη θέση του ΝΕΑ_IP.
Μετά τη βαθμολόγηση διάγραψε το resource group eshop-rg (σβήνει μηχανή, δίσκο, IP, όλα μαζί).
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».
Τουλάχιστον 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, που ζητά το πιστοποιητικό μόνος του και το ανανεώνει αυτόματα. Δύο βήματα:
Άνοιξε τη θύρα 443 στη μηχανή: VM › Networking › Network settings › Create port rule › Inbound, Service: HTTPS, Add.
Τρέξε από το 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'
Το ίδιο κατάστημα, τώρα με όνομα και λουκέτο (δοκιμάστηκε 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 στην τελική παράδοση
Ένα PDF (5–8 σελίδες) με: τη διεύθυνση του καταστήματος (https://όνομα) και του back office, το email και τον κωδικό ενός δεύτερου λογαριασμού διαχειριστή που φτιάχνεις για μένα (Advanced Parameters › Team › Add new employee, προφίλ SuperAdmin), την ιδέα (βήμα 1), τα screenshots των βημάτων 2–8, το όνομα του κουπονιού, και τον αναστοχασμό.
Το CSV των προϊόντων.
Η μηχανή πρέπει να είναι αναμμένη την εβδομάδα της βαθμολόγησης· θα μπω στο κατάστημα και στο back office και θα κάνω μια παραγγελία με το κουπόνι σου.
Πώς βαθμολογείται
Κριτήριο
Βάρος
Τι κοιτάζω
Το κατάστημα λειτουργεί online
10 %
Ανοίγει, back office προσβάσιμο, λογαριασμός για τον διδάσκοντα
Ιδέα και ανταγωνισμός
20 %
Συγκεκριμένο κοινό και προϊόν, 2–3 σωστά παραδείγματα
Κατάλογος: θέμα, κατηγορίες, μάρκες, προϊόντα
25 %
Λογικό δέντρο, 12+ πλήρη προϊόντα, παραλλαγές, εισαγωγή από CSV
Αποστολή, πληρωμή, εκπτώσεις
20 %
Δύο μεταφορείς με κλίμακες, δωρεάν από ποσό, δύο τρόποι πληρωμής, κουπόνι που δουλεύει
Δοκιμαστική παραγγελία
10 %
Ολοκληρωμένη από κινητό, αλλαγές κατάστασης στο back office
Domain και HTTPS
10 %
Το κατάστημα ανοίγει σε όνομα, με λουκέτο, και το PrestaShop ξέρει το όνομά του