{"id":22809,"date":"2025-09-04T19:55:34","date_gmt":"2025-09-04T17:55:34","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=22809"},"modified":"2025-09-20T21:41:18","modified_gmt":"2025-09-20T19:41:18","slug":"free-twgalleryserver-fuer-raspberry-pi-und-windows","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=22809","title":{"rendered":"Free TWGalleryServer f\u00fcr Raspberry Pi und Windows"},"content":{"rendered":"<p><a href=\"https:\/\/gitlab.com\/IT-Berater\/twgalleryserver\" target=\"_blank\">TWGalleryServer<\/a> ist ein leichtgewichtiger, quelloffener Medien\u2011Server von <a href=\"https:\/\/gitlab.com\/IT-Berater\/twgalleryserver\" target=\"_blank\">mir<\/a>, der Fotos als navigierbare Galerie im Netzwerk bereitstellt und bewusst auf einfache Bedienung sowie schlanke Abh\u00e4ngigkeiten setzt. Er richtet sich an technisch versierte Anwenderinnen und Anwender, die eine kontrollierbare, selbst hostbare L\u00f6sung bevorzugen. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/twgalleryserver-scaled.jpeg\" alt=\"\" width=\"2560\" height=\"2453\" class=\"aligncenter size-full wp-image-22811\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/twgalleryserver-scaled.jpeg 2560w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/twgalleryserver-300x287.jpeg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/twgalleryserver-1024x981.jpeg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/twgalleryserver-768x736.jpeg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/twgalleryserver-1536x1472.jpeg 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/twgalleryserver-2048x1962.jpeg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p><strong>Zweck und Einordnung<\/strong><\/p>\n<p><a href=\"https:\/\/gitlab.com\/IT-Berater\/twgalleryserver\" target=\"_blank\">TWGalleryServer<\/a> adressiert typische Anforderungen kleiner bis mittlerer Medienbest\u00e4nde: schnelle Bereitstellung, \u00fcbersichtliche Navigation, einfache Administration und hohe Datenhoheit durch Self\u2011Hosting. Das Projekt folgt der Philosophie, mit wenigen Bausteinen produktiv zu werden, statt auf schwergewichtige Plattformen mit gro\u00dfem Betriebs\u2011 und Wartungsaufwand zu setzen. <!--more--><\/p>\n<p><strong>Projektquelle und Struktur<\/strong><\/p>\n<p>Der Quellcode liegt in einem \u00f6ffentlichen Git\u2011Repository mit begleitender Wiki\u2011Struktur f\u00fcr Installations\u2011, Betriebs\u2011 und Integrationshinweise. Die Dokumentation ist in einem entwicklerfreundlichen Markdown\/AsciiDoc\u2011Stil gehalten, was Beitr\u00e4ge, Beispielkonfigurationen und Code\u2011nahe Anleitung erleichtert.<\/p>\n<p><strong>Entwicklungs\u2011 und Betriebsmodell<\/strong><\/p>\n<p>Die Entwicklung orientiert sich an g\u00e4ngigen Kollaborationsmustern moderner Plattformen: Versionskontrolle, Issues, Merge\u2011Requests und optional CI\/CD f\u00fcr Build\u2011 und Test\u2011Automatisierung. Dadurch lassen sich \u00c4nderungen nachvollziehbar umsetzen, Releases kapseln und Deployments reproduzierbar ausrollen.<\/p>\n<p><strong>Abgrenzung zu Enterprise\u2011L\u00f6sungen<\/strong><\/p>\n<p>Im Unterschied zu vollumf\u00e4nglichen DAM\u2011Systemen mit komplexen Rollen, Workern und hohen Systemanforderungen setzt TWGalleryServer auf moderate Ressourcenprofile und einfache Betriebsmodelle. Das reduziert Einstiegsh\u00fcrden und Betriebskosten \u2013 insbesondere dort, wo keine Hochlast, kein mehrstufiger Review\u2011Workflow und keine Spezial\u2011Integrationen erforderlich sind.<\/p>\n<p><strong>Zielgruppe<\/strong><\/p>\n<p>&#8211; Entwicklerinnen und Administratoren, die Self\u2011Hosting, Transparenz und Portabilit\u00e4t priorisieren.  <\/p>\n<p>&#8211; Java\u2011affines Publikum, das auf Linux\u2011Infrastrukturen (vom Homelab bis zum kleinen Server) mit klaren, skriptbaren Deployments arbeitet.  <\/p>\n<p>&#8211; Technische Redaktionen, Foto\u2011Communities und Vereine, die eine kontrollierte Galerie ohne Drittanbieter\u2011Cloud w\u00fcnschen.<\/p>\n<p><strong>Dokumentation und Workflow<\/strong><\/p>\n<p>Die Wiki\u2011Seiten dienen als lebende Dokumentation f\u00fcr Betrieb, Tuning und Integrationen (Reverse\u2011Proxy, Storage, Backup).<br \/>\nEin Code\u2011naher Docs\u2011Workflow f\u00f6rdert Pull\u2011Requests f\u00fcr Korrekturen und Best\u2011Practices. Standardisierte Prozesse erleichtern das Onboarding und die Pflege von Konfigurationen \u00fcber Umgebungen hinweg.<\/p>\n<p><strong>Praxisnutzen<\/strong><\/p>\n<p>&#8211; Selbsthosting und Datenhoheit: Medien verbleiben vollst\u00e4ndig unter eigener Kontrolle, geeignet f\u00fcr Heimnetz, Schule, Verein oder Labor.  <\/p>\n<p>&#8211; Schnelle Inbetriebnahme: Schlanke Abh\u00e4ngigkeiten und einfache Startmodi (Direktstart, Service\u2011Einbindung) erlauben kurze Time\u2011to\u2011Value.  <\/p>\n<p>&#8211; Wartungsarme Struktur: Wenige bewegliche Teile senken den operativen Overhead, Updates bleiben \u00fcberschaubar.<\/p>\n<p><strong>Raspberry\u2011Pi\u2011Support unter Linux mit Java<\/strong><\/p>\n<p>TWGalleryServer l\u00e4uft auch auf Raspberry\u2011Pi\u2011Systemen unter Linux (z.\u202fB. Raspberry\u202fPi\u202fOS) mit aktueller Java\u2011Laufzeitumgebung stabil und performant im Rahmen der Ger\u00e4teklasse. Dank ARM\u2011Support moderner OpenJDK\u2011Builds und moderater Ressourcenanforderungen eignet sich der Betrieb auf Pi\u2011Modellen ab 3B+ bis zu Pi\u202f4\/5 besonders f\u00fcr Home\u2011Lab\u2011 und Edge\u2011Szenarien.  <\/p>\n<p>&#8211; Voraussetzungen: Raspberry\u202fPi\u202fOS (oder ein anderes Debian\u2011basiertes ARM\u2011Linux), installierte Java\u2011Laufzeit (OpenJDK), Netzwerkzugriff und Dateispeicher f\u00fcr Medien.  <\/p>\n<p>&#8211; Deployment\u2011Muster: System aktualisieren, OpenJDK installieren, Repository klonen oder Release\u2011Artefakt beziehen, Start als Java\u2011Prozess oder systemd\u2011Service, Log\u2011 und Konfigurationspfade festlegen. <\/p>\n<p>&#8211; Storage\u2011Empfehlungen: Externe USB\u2011Laufwerke oder Netzwerk\u2011Shares f\u00fcr Medien einbinden, um SD\u2011Kartenverschlei\u00df zu minimieren und Kapazit\u00e4t zu erh\u00f6hen.  <\/p>\n<p>&#8211; Betriebshinweise: Optionalen Reverse\u2011Proxy (z.\u202fB. Nginx\/Caddy) f\u00fcr TLS\u2011Terminierung nutzen, regelm\u00e4\u00dfige Java\u2011 und System\u2011Updates einplanen, Backups der Medien\u2011 und Konfigurationsverzeichnisse automatisieren.<\/p>\n<p><strong>Integration in Entwicklungs\u2011Workflows<\/strong><\/p>\n<p>Die Arbeit mit Branches, Issues und Merge\u2011Requests erm\u00f6glicht transparente \u00c4nderungen an Konfiguration und Code. Optional l\u00e4sst sich ein einfacher Build\u2011\/Test\u2011Pfad etablieren, um Artefakte zu erstellen und automatisiert auf Zielsysteme \u2013 einschlie\u00dflich Raspberry\u202fPi \u2013 zu verteilen. Die begleitende Dokumentation dient als zentraler Wissensspeicher f\u00fcr Umgebungsvariablen, Ports, Medienpfade, Backup\u2011 und Security\u2011Routinen.<\/p>\n<p><strong>Empfehlungen f\u00fcr den Produktivbetrieb<\/strong><\/p>\n<p>&#8211; Sicherheit: H\u00e4rtung des Host\u2011Systems, minimale Exponierung nach au\u00dfen, TLS\u2011Absicherung \u00fcber einen Reverse\u2011Proxy, Log\u2011\u00dcberwachung und regelm\u00e4\u00dfig gepatchte Java\u2011Runtimes.  <\/p>\n<p>&#8211; Performance: Thumbnails\/Transcoding\u2011Strategie an Medienvolumen anpassen, Caching\u2011Header sinnvoll setzen, I\/O\u2011Flaschenh\u00e4lse vermeiden (USB\u2011SSD\/Netz\u2011Share).  <\/p>\n<p>&#8211; Wartung: Automatisierte Backups, wiederholbare Deployments (Skripte\/Ansible), strukturierte Release\u2011Notes und eine gepflegte Dokumentation.<\/p>\n<p>TWGalleryServer vereint damit eine bewusst einfache Architektur mit praxisnahem Self\u2011Hosting \u2013 von Windows bis hin zu Raspberry\u2011Pi\u2011Systemen \u2013, wodurch eine kontrollierte, ressourcenschonende Galerie\u2011Bereitstellung f\u00fcr Fotos m\u00f6glich wird.<\/p>\n<p><strong>Installation<\/strong><\/p>\n<p>Start mit <strong>java -jar de.wenzlaff.twgalleryserver-1.0.0-SNAPSHOT-jar-with-dependencies.jar -d .\/bilderVerzeichnis<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/GalleryServer-UML.jpeg\" alt=\"\" width=\"1106\" height=\"610\" class=\"aligncenter size-full wp-image-22831\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/GalleryServer-UML.jpeg 1106w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/GalleryServer-UML-300x165.jpeg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/GalleryServer-UML-1024x565.jpeg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/09\/GalleryServer-UML-768x424.jpeg 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Siehe weitere Infos <a href=\"https:\/\/gitlab.com\/IT-Berater\/twgalleryserver\" target=\"_blank\">hier<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TWGalleryServer ist ein leichtgewichtiger, quelloffener Medien\u2011Server von mir, der Fotos als navigierbare Galerie im Netzwerk bereitstellt und bewusst auf einfache Bedienung sowie schlanke Abh\u00e4ngigkeiten setzt. Er richtet sich an technisch versierte Anwenderinnen und Anwender, die eine kontrollierbare, selbst hostbare L\u00f6sung bevorzugen. Zweck und Einordnung TWGalleryServer adressiert typische Anforderungen kleiner bis mittlerer Medienbest\u00e4nde: schnelle Bereitstellung, \u00fcbersichtliche &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=22809\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eFree TWGalleryServer f\u00fcr Raspberry Pi und Windows\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,3897,5,79,4023,1023],"tags":[848,6217,2178,473,83,6216],"class_list":["post-22809","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java-programmierung","category-java","category-programmierung","category-python","category-raspberry-pi","tag-free","tag-gallery","tag-java","tag-programm","tag-server","tag-twgalleryserver"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22809"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22809\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22809"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22809"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}