diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ad321ff --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +_site/ +.git/ +.claude/ +node_modules/ +.sass-cache/ +.jekyll-metadata +*.md +!Gemfile +docker-compose.yml +.gitignore diff --git a/Brain.md b/Brain.md index a34cd8c..5bd6e23 100644 --- a/Brain.md +++ b/Brain.md @@ -4,9 +4,14 @@ Eine eigene Fotografie-Portfolio-Website basierend auf dem Template von rampatra/photography. Keine 1:1 Kopie, sondern eine individuell angepasste Version mit eigenen Anspruechen. -## Besitzer -- GitHub Repo: https://github.com/Kroonk/Photography.git -- Lokaler Pfad: d:\Vibecoding\Website\Photography +## Besitzer & Kontakt +- **Name**: Tom Misch +- **Marke**: Mischkomposition +- **Domain**: tom.mischlabs.de +- **E-Mail**: tom@mischlabs.de +- **Instagram**: @Mischkomposition +- **GitHub Repo**: https://github.com/Kroonk/Photography.git +- **Lokaler Pfad**: d:\Vibecoding\Website\Photography --- @@ -19,7 +24,8 @@ Keine 1:1 Kopie, sondern eine individuell angepasste Version mit eigenen Ansprue | Styling | SCSS -> kompiliertes CSS | | JS Libraries | jQuery, Poptrox (Lightbox), EXIF.js | | Build-Tool | Gulp (SCSS kompilieren, JS minifizieren, Bilder resizen) | -| Hosting | GitHub Pages (kostenlos) | +| Hosting | **UGREEN NAS (Docker)** via nginx | +| Containerisierung | Docker Multi-Stage (Jekyll Build + nginx) | | Fonts | FontAwesome, Google Fonts (Source Sans Pro) | | Paketmanager | npm (Node), Bundler (Ruby) | @@ -82,17 +88,44 @@ Photography/ | `gulp resize` | Bilder zu fulls (1024px) + thumbs (512px) | | `gulp` | Alles (build + resize) | +## Docker / NAS Hosting + +- **NAS**: UGREEN mit UGOS PRO +- **Port**: 8080 (Port 80 ist belegt) +- **Zugriff**: `http://NAS-IP:8080` -> spaeter `https://tom.mischlabs.de` +- **Domain**: tom.mischlabs.de (Reverse Proxy auf NAS einrichten) + +### Docker-Dateien +- `Dockerfile` - Multi-Stage: Ruby/Jekyll baut Site -> nginx serviert statische Dateien +- `docker-compose.yml` - Container-Definition, Port 8080:80, auto-restart +- `nginx.conf` - Webserver-Config mit Caching und Sicherheit +- `.dockerignore` - Haelt Build-Context klein (kein .git, node_modules etc.) + +### Docker-Befehle +| Befehl | Aktion | +|---|---| +| `docker compose up -d --build` | Container bauen und starten | +| `docker compose down` | Container stoppen | +| `docker compose logs -f` | Logs anzeigen | +| `docker compose up -d --build --force-recreate` | Neu bauen nach Aenderungen | + +### Deployment-Workflow +1. Aenderungen lokal machen (Bilder, Config, Design) +2. Git commit & push +3. Auf NAS: `git pull && docker compose up -d --build` +4. Fertig - Website aktualisiert + ## Anpassungs-Roadmap (TODO - mit Besitzer besprechen) +- [x] Titel, Subtitle, Autor anpassen (Mischkomposition / Tom Misch) +- [x] Social Media Links aktualisieren (Instagram: @Mischkomposition) +- [x] Sponsor-Bereich entfernen +- [x] Kontaktformular auf tom@mischlabs.de konfiguriert +- [x] Google Analytics vom Originalautor entfernt +- [x] Custom Domain: tom.mischlabs.de eingetragen - [ ] Eigene Bilder einpflegen -- [ ] Titel, Subtitle, Autor anpassen -- [ ] Social Media Links aktualisieren -- [ ] Footer-Text personalisieren +- [ ] Footer Bio-Text schreiben (optional) - [ ] Farbschema/Design anpassen -- [ ] Sponsor-Bereich entfernen -- [ ] Kontaktformular konfigurieren oder entfernen -- [ ] Custom Domain einrichten (optional) -- [ ] Google Analytics ID aendern oder entfernen - [ ] Eigene Kategorien/Alben erstellen (Feature-Erweiterung) --- diff --git a/CNAME b/CNAME index df9a98c..27a1d36 100644 --- a/CNAME +++ b/CNAME @@ -1 +1 @@ -photography.rampatra.com \ No newline at end of file +tom.mischlabs.de diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..997cd5c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# === Build-Phase: Jekyll kompiliert die statische Website === +FROM ruby:3.2-alpine AS builder + +RUN apk add --no-cache build-base + +WORKDIR /site + +COPY Gemfile ./ +RUN bundle install + +COPY . . + +RUN bundle exec jekyll build + +# === Serve-Phase: nginx liefert nur die fertigen Dateien aus === +FROM nginx:alpine + +COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=builder /site/_site /usr/share/nginx/html + +EXPOSE 80 diff --git a/Skill.md b/Skill.md index e4a0a35..d5669a9 100644 --- a/Skill.md +++ b/Skill.md @@ -44,7 +44,11 @@ Sage mir einen Befehl und ich fuehre den Skill aus. | `/save` | Aenderungen speichern | Git add + commit mit Nachricht | | `/push` | Zum Remote pushen | Aenderungen zu GitHub pushen | | `/status` | Git Status | Zeigt aktuellen Git-Status und Aenderungen | -| `/deploy` | Website deployen | Build + Push fuer GitHub Pages Deployment | +| `/deploy` | Website deployen | Build + Push + Docker rebuild auf NAS | +| `/docker-build` | Docker Container bauen | `docker compose up -d --build` ausfuehren | +| `/docker-stop` | Container stoppen | `docker compose down` | +| `/docker-logs` | Container Logs | `docker compose logs -f` anzeigen | +| `/docker-rebuild` | Komplett neu bauen | Container neu bauen und starten nach Aenderungen | ## Analyse & Info diff --git a/_config.yml b/_config.yml index 2aaab0e..565b723 100644 --- a/_config.yml +++ b/_config.yml @@ -1,30 +1,25 @@ # Base configs -baseurl: "https://photography.rampatra.com" -# baseurl: "" # Comment the above line and uncomment this to test the website locally +baseurl: "https://tom.mischlabs.de" image_fulls_loc: "/images/fulls" image_thumbs_loc: "/images/thumbs" -google_analytics: "UA-46465113-2" +# google_analytics: "" # Eigene ID hier eintragen wenn gewuenscht # UI configs -title: "Photography by Ram Patra" -subtitle: "See the world through my eyes!" -author: "Ram Patra" +title: "Tom Misch-komposition" +subtitle: "Mischkomposition" +author: "Tom Misch" header: - title: "Photography" - subtitle: "by Ram Patra" + title: "Mischkomposition" + subtitle: "by Tom Misch" footer: - name: "Hey there, my name is Ram" - bio: "I am a software developer and a tech aficionado. Love making teeny tiny apps solving tiny problems in life and now learning photography." - github: "Want a website like this for yourself for free? Just fork this repo on github ;)" + name: "Tom Misch" + bio: "" + contact: "tom@mischlabs.de" web_design: "AJ" social_urls: - twitter: "https://www.twitter.com/rampatra_" - instagram: "https://www.instagram.com/ram_patra" - dribbble: "https://dribbble.com/rampatra" - linkedin: "https://in.linkedin.com/in/ram-patra" - github: "https://www.github.com/rampatra" + instagram: "https://www.instagram.com/Mischkomposition" # Configure which exif data to display # Tag is the actual exif tag, icon is a fontawesome icon. Use JSON notation without line breaks -exif: '[{"tag": "Model", "icon": "fa fa-camera-retro"}, {"tag": "FNumber", "icon": "far fa-dot-circle"}, {"tag": "ExposureTime", "icon": "far fa-clock"}, {"tag": "ISOSpeedRatings", "icon": "fa fa-info-circle"}]' \ No newline at end of file +exif: '[{"tag": "Model", "icon": "fa fa-camera-retro"}, {"tag": "FNumber", "icon": "far fa-dot-circle"}, {"tag": "ExposureTime", "icon": "far fa-clock"}, {"tag": "ISOSpeedRatings", "icon": "fa fa-info-circle"}]' diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8b99ed3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +services: + photography: + build: . + container_name: photography-website + ports: + - "8080:80" + restart: unless-stopped diff --git a/index.html b/index.html index 48c7303..a71adb7 100644 --- a/index.html +++ b/index.html @@ -36,23 +36,9 @@ layout: default

{{ site.footer.name }}

+ {% if site.footer.bio and site.footer.bio != "" %}

{{ site.footer.bio }}

-

{{ site.footer.github }}

-
-
-

Sponsor

-
- -
- Turn your screen into a canvas when on video calls and articulate your thoughts better than - ever with the Presentify app. -
-
+ {% endif %}

Follow me on ...

@@ -107,8 +93,8 @@ layout: default
-

Get in touch

-
+

Kontakt

+
@@ -121,8 +107,8 @@ layout: default
    -
  • -
  • +
  • +
diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..bebba29 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,22 @@ +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + + # Caching fuer Bilder und Assets + location ~* \.(jpg|jpeg|png|gif|svg|ico|css|js|woff|woff2|ttf|eot|otf)$ { + expires 30d; + add_header Cache-Control "public, immutable"; + } + + # SPA-Fallback + location / { + try_files $uri $uri/ /index.html; + } + + # Sicherheit + location ~ /\. { + deny all; + } +} diff --git a/npmfile.js b/npmfile.js index 9c9bffc..53a118f 100644 --- a/npmfile.js +++ b/npmfile.js @@ -1,3 +1,3 @@ exports.printMsg = function() { - console.log("Visit http://photography.rampatra.com for a demo!"); -}; \ No newline at end of file + console.log("Mischkomposition - Photography by Tom Misch"); +}; diff --git a/package.json b/package.json index 88aad70..a980ae1 100644 --- a/package.json +++ b/package.json @@ -1,30 +1,26 @@ { - "name": "photography", - "version": "5.0.0", - "description": "A jekyll website for photographer cum developer", + "name": "mischkomposition", + "version": "1.0.0", + "description": "Mischkomposition - Photography Portfolio by Tom Misch", "main": "npmfile.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", - "url": "git+https://github.com/rampatra/photography.git" + "url": "git+https://github.com/Kroonk/Photography.git" }, "keywords": [ "photography", - "jekyll", - "website", - "template", - "website template", "portfolio", - "portfolio website" + "mischkomposition" ], - "author": "Ram Patra", + "author": "Tom Misch", "license": "GPL-3.0", "bugs": { - "url": "https://github.com/rampatra/photography/issues" + "url": "https://github.com/Kroonk/Photography/issues" }, - "homepage": "https://github.com/rampatra/photography#readme", + "homepage": "https://github.com/Kroonk/Photography#readme", "devDependencies": { "del": "^4.1.1", "gulp": "^4.0.2",