Files
ucl-datamatiker-learning_ob…/Portfolio/2026-09-01_Mit_lab–fra_opsætning_til_fejlfinding.md
2026-09-18 12:30:25 +08:00

9.7 KiB
Raw Permalink Blame History

Mit lab – fra simpel opsætning til fejlfinding

Dato: 01/9 2026 Læringsmål dækket: AI i softwareprojekter og Dataanalyse og databehandling

Som en del af mine to valgfag AI i softwareprojekter og Dataanalyse og databehandling har jeg arbejdet med at opbygge mit eget lab-miljø.

Formålet har ikke kun været at få nogle Docker-containere til at køre. Labbet er blevet en praktisk platform, hvor jeg kan eksperimentere, fejlsøge og koble teori til konkrete problemstillinger fra mit hotelprojekt.

Mit lab består blandt andet af:

  • PostgreSQL som database
  • Gitea som Git-server
  • Nginx som reverse proxy
  • Mailserver til håndtering af e-mail
  • Docker som grundlag for containerisering

På papiret ser opsætningen forholdsvis simpel ud. I praksis viste det sig hurtigt, at det er noget helt andet at få flere services til at fungere sammen.

Selve begrundelsen for valget af hver komponent (og de fravalgte alternativer) er dokumenteret i sin egen post: Processen i at vælge – teknologivalg til labbet.

🧩 Udfordringer, løsninger og reflektion

🔧 Da mailserveren ikke virkede

Jeg undersøgte systemet trin for trin. Jeg brugte blandt andet:

ss -tlpn

Kommandoen viste, hvilke TCP-porte der lyttede på serveren. Her opdagede jeg, at port 993, som bruges til IMAPS, ikke var åben.

Derefter undersøgte jeg konfigurationen inde i Docker-containeren:

docker exec mailserver doveconf -n | grep -A2 -E "^service imap-login|^ssl "

Det gav et vigtigt spor: problemet var relateret til SSL-certifikatet, hvilket betød, at IMAPS ikke blev startet korrekt.

💡 Løsningen

Jeg endte med at generere et certifikat til mailserveren ved hjælp af Certbot.

Efter certifikatet var på plads, kunne mailserveren starte IMAPS korrekt, og port 993 blev igen synlig på serveren.

Det interessante var derfor ikke kun selve løsningen. Det var processen:

Problem → undersøgelse → hypotese → test → ny viden → løsning

Det er netop denne proces, jeg gerne vil kunne dokumentere i min læring.

🔐 En anden vigtig læring – passwords og data

Jeg stødte også på problemer med passwords i mine Bash-scripts.

Passwords med specialtegn gav uventede resultater, når de blev sendt som parametre til funktioner. Det fik mig til at undersøge, hvordan Bash håndterer værdier, og hvordan jeg kunne ændre min tilgang.

Det gav mig en vigtig erfaring:

Data skal ikke bare kunne flyttes fra A til B – det skal ske på en måde, der er robust og sikker.

Det er særligt relevant i et hotel management-system, hvor systemet potentielt håndterer bookingdata og andre oplysninger, som kræver korrekt behandling og kontrol.

🔄 Kolbs læringscirkel i praksis

Arbejdet med labbet kan kobles direkte til Kolbs læringscirkel, som jeg bruger i begge mine læringsmål.

1. Konkret erfaring

En af de største udfordringer i labbet var mailserveren. Jeg fulgte først vejledningen fra mailserverens egen dokumentation, men løsningen fungerede ikke i mit miljø, og jeg fandt heller ikke en løsning ved at søge efter andre løsninger online. Det betød, at jeg selv måtte undersøge systemet trin for trin for at finde ud af, hvorfor IMAPS-tjenesten (port 993) ikke startede – se de tekniske detaljer under "Da mailserveren ikke virkede" ovenfor.

2. Refleksion

Jeg undersøger, med udgangspunkt i mailserver-problemet:

  • Hvad virkede ikke?

    IMAPS-tjenesten startede ikke – port 993 var lukket, selvom jeg fulgte mailserverens officielle opsætningsvejledning.

  • Hvor opstod fejlen?

    Inde i selve containeren, i SSL/TLS-konfigurationen: uden et gyldigt certifikat kunne imap-login-servicen ikke starte.

  • Hvilke antagelser havde jeg?

    Jeg antog, at en installation efter dokumentationen ville virke uden videre, og ledte derfor først efter en netværks-/portfejl frem for at mistænke certifikatet.

  • Hvilke værktøjer kunne hjælpe mig?

    ss -tlpn til at se hvilke porte der reelt lyttede, og docker exec ... doveconf -n til at læse den faktiske konfiguration inde i containeren i stedet for kun at læse dokumentation udefra.

  • Hvad kunne jeg gøre anderledes?

    Undersøge konfigurationen inde i containeren fra starten i stedet for at bruge tid på at søge efter færdige løsninger, og lade certifikat-generering med Certbot være en fast del af opsætningen fra begyndelsen.

    Meget af tiden gik med trial-and-error. Jeg kunne have sparet tid ved bare at finde en løsning på nettet, men så havde jeg ikke lært at debugge fejlen selv. Ved i stedet at bruge terminalkommandoerne til at spore årsagen har jeg nu en metode, jeg kan bruge igen – næste gang jeg ser problemet, ved jeg, hvor jeg skal lede.

3. Abstrakt begrebsliggørelse

Jeg kobler mine erfaringer til teori om blandt andet:

  • Docker og containerisering
  • netværk og porte
  • SSL/TLS
  • systemintegration
  • databehandling
  • fejlhåndtering
  • sikkerhed og privacy

På samme måde skal jeg i dataanalyse koble mine praktiske erfaringer til teori om datakvalitet, statistik, visualisering og sammenhænge. I AI-sporet kobles erfaringerne til blandt andet LLM'er, modelvalg, AI-evaluering og human-in-the-loop.

4. Aktiv eksperimenteren

Når jeg har fundet en mulig forklaring, ændrer jeg konfigurationen eller metoden og tester igen. Det giver en løbende proces:

Eksperiment → refleksion → teori → forbedring → nyt eksperiment

Det er den samme tilgang, jeg senere vil bruge, når jeg arbejder med hoteldata, AI-modeller og AI-baseret beslutningsstøtte.

🎯 Hvilke kernemål i læringsmål dækkes

Arbejdet med labbet opfylder ikke hele mine læringsmål alene. Tabellerne herunder viser, hvor meget hvert kerneområde er dækket lige nu: 🟢 dækkes helt, 🟡 dækkes delvist, 🔴 dækkes kun lidt eller slet ikke endnu.

Dataanalyse og databehandling

Kerneområde Vægt i læringsmål Dækning Begrundelse
Dataindsamling Stor 🟡 PostgreSQL er sat op, men der indsamles endnu ikke reelle hoteldata
Datastrukturering Stor 🟡 Databasen giver et sted at strukturere data, men skemaet til hoteldata er ikke designet endnu
Datakvalitet Stor 🔴 Ikke arbejdet med endnu – kræver et faktisk datasæt
Datarensning Stor 🔴 Ikke relevant før der er data at rense
Dataanalyse Stor 🔴 Ikke påbegyndt
Statistik Stor 🔴 Ikke påbegyndt
Deskriptiv statistik Stor 🔴 Ikke påbegyndt
Trends og mønstre Stor 🔴 Ikke påbegyndt
Sammenhænge mellem variable Stor 🔴 Ikke påbegyndt
Datavisualisering Stor 🔴 Ikke påbegyndt
Fortolkning af resultater Mindre 🔴 Ikke relevant endnu
Formidling af data Mindre 🔴 Denne post formidler proces, ikke data

Labbet bliver derfor ikke selve dataanalysen, men den platform hvor data senere kan opbevares og gøres tilgængelige for analyse.

AI i softwareprojekter

Kerneområde Vægt i læringsmål Dækning Begrundelse
Python for AI Stor 🔴 Kurset er ikke startet endnu i denne del af forløbet
Machine Learning Stor 🔴 Ikke påbegyndt
AI til fortolkning af data Stor 🔴 Ikke påbegyndt
Large Language Models (LLM) Stor 🔴 Ikke påbegyndt
Modelvalg og model comparison Stor 🔴 Ikke påbegyndt
Prompt engineering Stor 🔴 Ikke påbegyndt
Generativ AI Stor 🔴 Ikke påbegyndt
AI-baseret beslutningsstøtte Stor 🟡 Labbet lægger den tekniske forbindelse (data → software → AI), men selve beslutningsstøtten er ikke bygget
OCR Stor 🔴 Ikke påbegyndt
Feature extraction Stor 🔴 Ikke påbegyndt
Fortolkning af hoteldata Mindre 🔴 Ikke påbegyndt
Test og evaluering af AI-output Mindre 🔴 Ikke relevant endnu – ingen AI-output at teste
Fejlhåndtering og usikkerhed Mindre 🟢 Fejlsøgningen af mailserveren (port, SSL-certifikat) er direkte, dokumenteret træning i systematisk fejlhåndtering
Human-in-the-loop Mindre 🔴 Ikke relevant endnu
Privacy og ansvarlig AI Mindre 🟡 SSL-certifikater og robust password-håndtering i Bash er et skridt mod ansvarlig datahåndtering, men dækker endnu ikke AI-specifikke privacy-spørgsmål

Labbet dækker altså ikke de store, tunge AI-kerneområder som LLM'er eller modelvalg endnu – de kommer i senere poster, når Python-for-AI-kurset og LLM-eksperimenterne er i gang. Her lægges i stedet fundamentet: et miljø hvor AI senere kan integreres med hoteldata, og en solid træning i systematisk fejlhåndtering.

Det betyder, at labbet kan blive forbindelsen mellem:

Hoteldata → database → software → AI → beslutningsstøtte

🏨 Hvilken værdi kan det give et hotel management-system?

Når jeg ser på labbet i forhold til et hotel management-system som NF Hotel, handler værdien ikke kun om teknologien i sig selv.

En samlet teknisk platform kan eksempelvis understøtte:

  • sikker og struktureret håndtering af hoteldata
  • integration mellem forskellige services
  • automatiseret kommunikation via e-mail (ej efterspurgt af PO men kan være vigtigt for beslutningsstøtte)
  • adgang til data til analyse
  • integration af AI-funktioner
  • bedre grundlag for beslutningsstøtte

På længere sigt kan data fra systemet analyseres for eksempelvis at finde trends i belægning, sæsonvariationer, forskelle mellem hverdage og weekender eller sammenhænge mellem pris og belægning. Det er netop nogle af de analyseområder, der indgår i mit dataanalyse-læringsmål.

AI kan derefter bruges som et ekstra lag til at fortolke data og undersøge mulige forklaringer eller forbedringer.