<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Softwareentwicklung Archive - DasKIAS</title>
	<atom:link href="https://daskias.de/diy/softwareentwicklung/feed/" rel="self" type="application/rss+xml" />
	<link>https://daskias.de/diy/softwareentwicklung/</link>
	<description>DasKIAS - Suchbilder (Finde 6 Fehler im Suchbild), Wunschlisten und mehr</description>
	<lastBuildDate>Tue, 09 Jun 2026 18:27:26 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://daskias.de/wp-content/uploads/2026/04/cropped-dasKIAS_Logo-e1776622368598-1-32x32.png</url>
	<title>Softwareentwicklung Archive - DasKIAS</title>
	<link>https://daskias.de/diy/softwareentwicklung/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Softwareentwicklung – Betrieb und Aktualisierung selbst gehosteter Systeme</title>
		<link>https://daskias.de/diy/softwareentwicklung-betrieb-und-aktualisierung-selbst-gehosteter-systeme/</link>
					<comments>https://daskias.de/diy/softwareentwicklung-betrieb-und-aktualisierung-selbst-gehosteter-systeme/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 13:26:49 +0000</pubDate>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Aktualisierung]]></category>
		<category><![CDATA[Betrieb]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[Sonatype Nexus Repository]]></category>
		<guid isPermaLink="false">https://daskias.de/?p=1598</guid>

					<description><![CDATA[<p>Bildquelle: KI-generiert In unserem ersten Artikel zur Serie DIY / Softwareentwicklung haben wir aufgezeigt wie</p>
<p>Der Beitrag <a href="https://daskias.de/diy/softwareentwicklung-betrieb-und-aktualisierung-selbst-gehosteter-systeme/">Softwareentwicklung – Betrieb und Aktualisierung selbst gehosteter Systeme</a> erschien zuerst auf <a href="https://daskias.de">DasKIAS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://daskias.de/wp-content/uploads/2026/06/Softwareentwicklung-Betrieb_und_Aktualisierung_selbst_gehosteter_Systeme-1024x683.webp" alt="" class="wp-image-1603" srcset="https://daskias.de/wp-content/uploads/2026/06/Softwareentwicklung-Betrieb_und_Aktualisierung_selbst_gehosteter_Systeme-1024x683.webp 1024w, https://daskias.de/wp-content/uploads/2026/06/Softwareentwicklung-Betrieb_und_Aktualisierung_selbst_gehosteter_Systeme-300x200.webp 300w, https://daskias.de/wp-content/uploads/2026/06/Softwareentwicklung-Betrieb_und_Aktualisierung_selbst_gehosteter_Systeme-768x512.webp 768w, https://daskias.de/wp-content/uploads/2026/06/Softwareentwicklung-Betrieb_und_Aktualisierung_selbst_gehosteter_Systeme.webp 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><em>Bildquelle: KI-generiert</em></p>



<p class="wp-block-paragraph">In unserem <a href="https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird/" target="_blank" rel="noreferrer noopener">ersten Artikel</a> zur Serie DIY / Softwareentwicklung haben wir aufgezeigt wie eine Infrastruktur für selbst gehostete Softwareentwicklungskomponenten aussehen kann. Danach haben wir euch mitgenommen und aufgezeigt was für Probleme bei vermeintlich einfachen Aufgaben wie dem <a href="https://daskias.de/diy/softwareentwicklung/gitlab-ssd-super-gau/" target="_blank" rel="noreferrer noopener">Umzug auf eine SSD</a> passieren können. Nun wollen wir auf den Betrieb und die Aktualisierung der Komponenten eingehen. Im Kontext zunehmender Sicherheitsrisiken durch automatisierte Angriffe und KI-gestützte Tools ist ein aktueller Stand der Software essenziell um Schwachstellen zeitnah zu schließen.</p>



<p class="wp-block-paragraph">Im folgenden Beitrag betrachten wir das Thema exemplarisch am Beispiel der Artefaktverwaltung <a href="https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird#artefaktverwaltung" type="post" id="1521" target="_blank" rel="noreferrer noopener">Sonatype Nexus Repository</a>.</p>



<p class="wp-block-paragraph"><em>Komponenten für eine selbst gehostete Infrastruktur findet ihr unter: <a href="https://ezwl.de/wishlist/softwareentwicklung_infrastruktur" target="_blank" rel="noreferrer noopener">https://ezwl.de/wishlist/softwareentwicklung_infrastruktur</a>.</em></p>



<h2 class="wp-block-heading">Beispiel: Sonatype Nexus Repository</h2>



<p class="wp-block-paragraph">Zunächst orientieren wir uns am offiziellem Vorgehen des Softwareherstellers:<br><a href="https://help.sonatype.com/en/upgrade-nexus-repository.html" target="_blank" rel="noreferrer noopener">https://help.sonatype.com/en/upgrade-nexus-repository.html</a></p>



<p class="wp-block-paragraph">Auf Basis der Dokumentation leiten wir unser eigenes Vorgehen ab (zunächst manuell). Wichtig ist dabei die saubere Trennung in Installationsverzeichnis (z. B. <code>/opt/nexus</code>) und Datenverzeichnis (z. B. <code>/opt/sonatype-work/nexus-3</code>).</p>



<h3 class="wp-block-heading">Ablauf</h3>



<ul class="wp-block-list">
<li>Existiert eine neue Version?</li>



<li>Release Notes prüfen
<ul class="wp-block-list">
<li>Ist das Update für die eigene Umgebung relevant?</li>



<li>Sind manuelle Migrationsschritte erforderlich?</li>
</ul>
</li>



<li>Download und Entpacken der aktuellen Version </li>



<li>Service stoppen</li>



<li>Sicherung des Datenverzeichnisses </li>



<li>Vergleich von Konfigurationsdateien
<ul class="wp-block-list">
<li>(z. B. <code>nexus.vmoptions</code> und <code>jetty-https.xml</code>) </li>
</ul>
</li>



<li>Aktualisierung des Installationsverzeichnisses </li>



<li>Service starten und Log-Ausgabe prüfen</li>
</ul>



<h3 class="wp-block-heading">Beispielhafte Linux-Kommandos</h3>



<pre class="wp-block-code"><code>#Service stoppen
<code>systemctl stop nexus.service</code>
#Download der Software
<code>wget -P ~/Downloads/ https://download.sonatype.com/nexus/3/nexus-3.92.3-01-linux-aarch_64.tar.gz</code>
#Entpacken
<code>tar xzf ~/Downloads/nexus-3.92.3-01-linux-aarch_64.tar.gz</code>
#Verzeichnis prüfen
<code>ls -la ./nexus-3.92.3-01</code>
#Sicherung des Datenverzeichnis (inkl. DB)
<code>tar czf /mnt/nas/backup/nexus-backup-$(date +%F).tar.gz /opt/sonatype-work/nexus3</code>
#Löschen der alten Version / rollierendes Vorgehen
<code>rm -r /opt/nexus_old</code>
#Aktuelle Instanz umbenennen / bleibt erhalten
<code>mv /opt/nexus /opt/nexus_old</code>
#verschieben der neuen Dateien ins Installationsverzeichnis
<code>mv ~/Downloads/nexus-3.92.3-01 /opt/nexus</code>
#Setzen des Owners
<code>chown -R nexus:nexus /opt/nexus</code>
#Alten keystore kopieren / übernehmen
<code>cp /opt/nexus_old/etc/ssl/keystore.jks /opt/nexus/etc/ssl/</code>
#Überschreiben der Jetty-Konfiguration
<code>mv /opt/nexus/etc/jetty/jetty-https.xml /opt/nexus/etc/jetty/jetty-https.xml_oldcp /opt/nexus_old/etc/jetty/jetty-https.xml /opt/nexus/etc/jetty/</code>
#Start des Service
<code>systemctl start nexus.service</code>
#Prüfen / beobachten des Logs
<code>tail -f /opt/sonatype-work/nexus3/log/nexus.log</code></code></pre>



<p class="wp-block-paragraph"><em>Hinweis: Im Beispiel wird von einem wiederkehrenden Update-Zyklus ausgegangen, weshalb ein vorheriges Installationsverzeichnis unter Umständen bereits existiert.</em></p>



<h2 class="wp-block-heading">Fazit</h2>



<p class="wp-block-paragraph">Das beschriebene Vorgehen zeigt ein manuelles Update-Szenario für <a href="https://help.sonatype.com/en/sonatype-nexus-repository.html" target="_blank" rel="noreferrer noopener">Sonatype Nexus Repository</a> &#8211; konkret hier auf die Version <a href="https://help.sonatype.com/en/sonatype-nexus-repository-3-92-0-release-notes.html" target="_blank" rel="noreferrer noopener">3.92.3-01</a>.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="274" src="https://daskias.de/wp-content/uploads/2026/06/Sonatype-Nexus-Repository_3.92.3-01-1024x274.webp" alt="" class="wp-image-1606" srcset="https://daskias.de/wp-content/uploads/2026/06/Sonatype-Nexus-Repository_3.92.3-01-1024x274.webp 1024w, https://daskias.de/wp-content/uploads/2026/06/Sonatype-Nexus-Repository_3.92.3-01-300x80.webp 300w, https://daskias.de/wp-content/uploads/2026/06/Sonatype-Nexus-Repository_3.92.3-01-768x205.webp 768w, https://daskias.de/wp-content/uploads/2026/06/Sonatype-Nexus-Repository_3.92.3-01.webp 1359w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Zur weiteren Verbesserung bzw. für produktive Umgebungen bietet sich eine Automatisierung an, z. B. über Shell-Skripte, Cronjobs oder Tools wie Ansible.</p>



<p class="wp-block-paragraph">Eine Einführung in Ansible findet sich unter:<br><a href="https://www.redhat.com/de/topics/automation/learning-ansible-tutorial" target="_blank" rel="noreferrer noopener">Red Hat Ansible Tutorial</a></p>



<p class="wp-block-paragraph">Unseren nächsten Artikel planen wir die angerissene Automatisierung über Ansible.</p>
<p>Der Beitrag <a href="https://daskias.de/diy/softwareentwicklung-betrieb-und-aktualisierung-selbst-gehosteter-systeme/">Softwareentwicklung – Betrieb und Aktualisierung selbst gehosteter Systeme</a> erschien zuerst auf <a href="https://daskias.de">DasKIAS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://daskias.de/diy/softwareentwicklung-betrieb-und-aktualisierung-selbst-gehosteter-systeme/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GitLab SSD Super-Gau</title>
		<link>https://daskias.de/diy/softwareentwicklung/gitlab-ssd-super-gau/</link>
					<comments>https://daskias.de/diy/softwareentwicklung/gitlab-ssd-super-gau/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Sat, 09 May 2026 11:37:46 +0000</pubDate>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[GitLab]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[KI]]></category>
		<guid isPermaLink="false">https://daskias.de/?p=1574</guid>

					<description><![CDATA[<p>Bildquelle: KI-generiert KI-gestützte Rettung einer GitLab-Instanz In einem vorherigen Artikel zu Infrastrukturkomponenten der Softwareentwicklung hatten</p>
<p>Der Beitrag <a href="https://daskias.de/diy/softwareentwicklung/gitlab-ssd-super-gau/">GitLab SSD Super-Gau</a> erschien zuerst auf <a href="https://daskias.de">DasKIAS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://daskias.de/wp-content/uploads/2026/05/SSD-GitLab-Gau_Artikel-1-1024x683.webp" alt="" class="wp-image-1579" srcset="https://daskias.de/wp-content/uploads/2026/05/SSD-GitLab-Gau_Artikel-1-1024x683.webp 1024w, https://daskias.de/wp-content/uploads/2026/05/SSD-GitLab-Gau_Artikel-1-300x200.webp 300w, https://daskias.de/wp-content/uploads/2026/05/SSD-GitLab-Gau_Artikel-1-768x512.webp 768w, https://daskias.de/wp-content/uploads/2026/05/SSD-GitLab-Gau_Artikel-1.webp 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><em>Bildquelle: KI-generiert</em></p>



<h1 class="wp-block-heading">KI-gestützte Rettung einer GitLab-Instanz</h1>



<p class="wp-block-paragraph">In einem vorherigen Artikel zu Infrastrukturkomponenten der Softwareentwicklung hatten wir bereits erwähnt, dass unser Raspberry Pi auf eine SSD umgestellt werden sollte. Gesagt, getan: In Zeiten von KI wirkt vieles erstaunlich einfach. Der schnelle Startversuch erfolgte über das Klonen des Laufwerks und einen anschließenden Reboot.</p>



<p class="wp-block-paragraph">Was danach folgte, gehört allerdings zu den klassischen Momenten, die jedes DIY-Projekt früher oder später bereithält.</p>



<p class="wp-block-paragraph">Nach Anpassung der Bootreihenfolge und der UUIDs trat jedoch der Super-GAU ein: Das System bootete nicht mehr. Genau dieser Punkt gehört zum Basteln dazu – Dinge selbst umzusetzen bedeutet eben auch, Fehler zu provozieren, sie zu verstehen und daran zu wachsen. Dieser Artikel beschreibt genau diesen Weg und die dabei gewonnenen Erfahrungen.</p>



<p class="wp-block-paragraph">Nach einem kurzen Brainstorming fiel die Entscheidung für einen pragmatischen Ansatz: eine Neuinstallation von <a href="https://documentation.ubuntu.com/release-notes/26.04/" type="link" id="https://documentation.ubuntu.com/release-notes/26.04/" target="_blank" rel="noreferrer noopener">Ubuntu 26.04</a> auf der SSD und anschließend die Migration der bestehenden GitLab-Instanz. Das vorherige System basierte auf Ubuntu 24.04, wodurch einzelne Fallstricke vorprogrammiert waren.</p>



<p class="wp-block-paragraph">Wichtig dabei: Ein Backup der relevanten Daten war vorhanden, sodass kein kompletter Neuaufbau notwendig war. Genau hier liegt ein zentraler Punkt: Automatisierte Backups sind essenziell. Technische Defekte oder Probleme nach Softwareupdates sind keine Seltenheit.</p>



<h2 class="wp-block-heading">Vorgehen</h2>



<ul class="wp-block-list">
<li>Installation Ubuntu 26.04</li>



<li>Gitlab wiederhestellen</li>



<li>Backup durchführen und automatisieren</li>
</ul>



<h2 class="wp-block-heading">Installation Ubuntu 26.04</h2>



<p class="wp-block-paragraph">Mit Hilfe von <a href="https://www.raspberrypi.com/software/" type="link" id="https://www.raspberrypi.com/software/" target="_blank" rel="noreferrer noopener">Raspberry&nbsp;Pi&nbsp;Imager</a> ist das quasi ein Selbstläufer und bedeutet nur ein wenig Geduld.</p>



<h2 class="wp-block-heading">GitLab wiederherstellen</h2>



<p class="wp-block-paragraph">Zunächst wurde GitLab in der <a href="https://docs.gitlab.com/releases/18/gitlab-18-11-released/" type="link" id="https://docs.gitlab.com/releases/18/gitlab-18-11-released/" target="_blank" rel="noreferrer noopener">Version 18.11</a> neu installiert:</p>



<pre class="wp-block-code"><code>sudo apt install -y curl ca-certificates gnupg

curl -fsSL https://packages.gitlab.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/gitlab.gpg

echo "deb &#91;signed-by=/usr/share/keyrings/gitlab.gpg] https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ noble main" | sudo tee /etc/apt/sources.list.d/gitlab-ce.list

sudo EXTERNAL_URL="http://gitlab.local" apt install gitlab-ce
</code></pre>



<p class="wp-block-paragraph">Das neue System soll sich nahtlos in unsere bestehende <a href="https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird/#praxisbeispiel" type="link" id="https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird/#praxisbeispiel" target="_blank" rel="noreferrer noopener">Infrastruktur </a>integrieren. Daher soll der alte Zustand so gut wie möglich wiederhergestellt werden. Daher wurde die <code>gitlab.rb</code> anhand des Backups angeglichen. Zusätzlich wurden SSL-Zertifikate sowie die Datei <code>gitlab-secrets.json</code> übernommen.</p>



<p class="wp-block-paragraph">Das Verzeichnis <code>/var/opt/gitlab/</code> wurde aus dem Backup wiederhergestellt. Dabei traten zunächst Probleme mit den Dateiberechtigungen auf.</p>



<h3 class="wp-block-heading">Berechtigungen und Re-Konfiguration</h3>



<p class="wp-block-paragraph">Zur Behebung wurden die Verzeichnisberechtigungen korrigiert und anschließend erneut eine Re-Konfiguration durchgeführt. Der Befehl <code>gitlab-ctl reconfigure</code> setzt einige Berechtigungen automatisch, aber die Vorbedingungen müssen stimmen. Nach mehreren Versuchen funktionierte der Prozess stabil. Die Logs (<code>gitlab-ctl tail</code><em>)</em> lieferten die notwendigen Informationen welche Verzeichnisberechtigungen nicht korrekt waren.</p>



<h3 class="wp-block-heading">Probleme nach dem ersten Start</h3>



<p class="wp-block-paragraph"><strong>Finally?</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="520" height="412" src="https://daskias.de/wp-content/uploads/2026/05/GitLab_Instanz_Wiederhergestellt_Login.webp" alt="GitLab Login Screen" class="wp-image-1575" srcset="https://daskias.de/wp-content/uploads/2026/05/GitLab_Instanz_Wiederhergestellt_Login.webp 520w, https://daskias.de/wp-content/uploads/2026/05/GitLab_Instanz_Wiederhergestellt_Login-300x238.webp 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></figure>



<p class="wp-block-paragraph"><em>Bildquelle: Screenshot GitLab Anmeldebildschirm</em></p>



<p class="wp-block-paragraph">Nach dem ersten Moment der Erleichterung folgte schnell die Ernüchterung: Es wurden zunächst keine Projekte angezeigt. Im Adminbereich waren die Projekte jedoch vorhanden und auch die API-Endpunkte lieferten korrekte Ergebnisse. Die GitLab-Oberfläche selbst deutete dennoch auf ein weiter bestehendes Problem hin. Das Vorgehen ist also nicht gescheitert, erfordert aber weitere Schritte.</p>



<p class="wp-block-paragraph">Die Analyse der Logs führte zu folgenden Schritten:</p>



<pre class="wp-block-code"><code>sudo gitlab-rake gitlab:check
</code></pre>



<p class="wp-block-paragraph">Die dabei identifizierten Hinweise wurden umgesetzt und sind der Übernahme aus dem Backup geschuldet.</p>



<pre class="wp-block-code"><code>sudo gitlab-psql -d gitlabhq_production -c "ALTER DATABASE gitlabhq_production REFRESH COLLATION VERSION;"

sudo gitlab-rake db:migrate RAILS_ENV=production
</code></pre>



<h2 class="wp-block-heading">Ergebnis</h2>



<p class="wp-block-paragraph">Nach einem Neustart des GitLab-Services, erneutem Reconfigure und einem finalen Restart waren alle Projekte wieder verfügbar.</p>



<p class="wp-block-paragraph">Der abschließende Schritt war die Absicherung des Systems durch ein funktionierendes Backup sowie die Automatisierung zukünftiger Sicherungen. Gleichzeitig ergaben sich wichtige Lessons Learned: Zusätzlich zum Systembackup sollte auch ein dediziertes GitLab-Backup über <code>sudo gitlab-backup create STRATEGY=copy</code> fest in den Backup-Prozess integriert werden.</p>



<p class="wp-block-paragraph">In diesem Sinne: Always back up your data!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://daskias.de/wp-content/uploads/2026/05/GitLab_wiederhergestellt-1024x683.webp" alt="" class="wp-image-1576" srcset="https://daskias.de/wp-content/uploads/2026/05/GitLab_wiederhergestellt-1024x683.webp 1024w, https://daskias.de/wp-content/uploads/2026/05/GitLab_wiederhergestellt-300x200.webp 300w, https://daskias.de/wp-content/uploads/2026/05/GitLab_wiederhergestellt-768x512.webp 768w, https://daskias.de/wp-content/uploads/2026/05/GitLab_wiederhergestellt.webp 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><em>Bildquelle: KI-generiert</em></p>
<p>Der Beitrag <a href="https://daskias.de/diy/softwareentwicklung/gitlab-ssd-super-gau/">GitLab SSD Super-Gau</a> erschien zuerst auf <a href="https://daskias.de">DasKIAS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://daskias.de/diy/softwareentwicklung/gitlab-ssd-super-gau/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Softwareentwicklung – Wenn aus einer Idee etwas Ernstes wird</title>
		<link>https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird/</link>
					<comments>https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Mon, 27 Apr 2026 17:41:08 +0000</pubDate>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<guid isPermaLink="false">https://daskias.de/?p=1521</guid>

					<description><![CDATA[<p>Bildquelle: KI-generiert Vom Alleinkämpfer zum Teammitglied Wie so oft gilt: Sobald etwas eine bestimmte Größe</p>
<p>Der Beitrag <a href="https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird/">Softwareentwicklung – Wenn aus einer Idee etwas Ernstes wird</a> erschien zuerst auf <a href="https://daskias.de">DasKIAS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://daskias.de/wp-content/uploads/2026/04/DIY-Softwareentwicklung-Artikel-1024x683.webp" alt="" class="wp-image-1558" srcset="https://daskias.de/wp-content/uploads/2026/04/DIY-Softwareentwicklung-Artikel-1024x683.webp 1024w, https://daskias.de/wp-content/uploads/2026/04/DIY-Softwareentwicklung-Artikel-300x200.webp 300w, https://daskias.de/wp-content/uploads/2026/04/DIY-Softwareentwicklung-Artikel-768x512.webp 768w, https://daskias.de/wp-content/uploads/2026/04/DIY-Softwareentwicklung-Artikel.webp 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><em>Bildquelle: KI-generiert</em></p>



<h2 class="wp-block-heading">Vom Alleinkämpfer zum Teammitglied</h2>



<p class="wp-block-paragraph">Wie so oft gilt: Sobald etwas eine bestimmte Größe oder einen gewissen Reifegrad erreicht, wird es komplexer. Wer ein Softwareprojekt allein umsetzt, benötigt &#8211; abgesehen von einer Entwicklungsumgebung / IDE &#8211; erst einmal nichts weiter.</p>



<p class="wp-block-paragraph">Sobald ein Projekt im Team umgesetzt wird, sollten Zeit und Gedanken in eine gemeinsame Basis investiert werden. Gerade kleine Teams stehen dabei vor der Frage: Wie organisiert man das Ganze sinnvoll?</p>



<h2 class="wp-block-heading">Verfügbarkeit vs. Sicherheit</h2>



<p class="wp-block-paragraph">Ein zentraler Punkt dabei ist der Spagat zwischen Verfügbarkeit und Sicherheit. Dienste vollständig über die Cloud also direkt im Internet zu nutzen klingt dabei verlockend. Bedenken muss man dabei auch den Aspekt der Sicherheit. Ein Dienst im Internet ermöglicht eine Vielzahl an Angriffsflächen. Themen wie Datenschutz, Portscans, unzureichend gesicherte Dienste oder fehlende Verschlüsselung sollten nicht unterschätzt werden.</p>



<p class="wp-block-paragraph">Eine rein interne Infrastruktur mit Zugriff über VPN wirkt in kleinen Teams möglicherweise überdimensioniert, beschränkt jedoch die Angriffsvektoren rapide und senkt dadurch mögliche Risiken. </p>



<ul class="wp-block-list">
<li>Dienste sind nicht direkt aus dem Internet erreichbar</li>



<li>Zugriff kann gezielt eingeschränkt werden</li>



<li>Sensible Daten bleiben im eigenen Netzwerk</li>
</ul>



<p class="wp-block-paragraph">Gerade für kleine Teams kann das ein pragmatischer und sicherer Einstieg sein.</p>



<h2 class="wp-block-heading">DIY Infrastruktur für kleine Teams</h2>



<p class="wp-block-paragraph">Für den Start muss es nicht sofort eine komplexe Serverlandschaft sein. Oft reicht einfache und kostengünstige Hardware. Sei es ein alter Server, der nicht mehr genutzt wird oder wie <a href="https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird#praxisbeispiel" type="post" id="1521">wir später zeigen</a> ein Einplatinencomputer wie ein <a href="https://www.raspberrypi.com/" type="link" id="https://www.raspberrypi.com/" target="_blank" rel="noreferrer noopener">Raspberry Pi</a> oder andere PI Varianten (<a href="https://www.banana-pi.org/" type="link" id="https://www.banana-pi.org/" target="_blank" rel="noreferrer noopener">Banana Pi</a>, <a href="https://rockpi.org/" type="link" id="https://rockpi.org/" target="_blank" rel="noreferrer noopener">Rock Pi</a>, …). Sie bieten genügend Leistung für typische Aufgaben im Bereich der Softwareentwicklung für Teams und vieles Weitere.</p>



<p class="wp-block-paragraph">Wichtiger als die Hardware ist dabei ein durchdachtes Setup:</p>



<ul class="wp-block-list">
<li>Regelmäßige Updates</li>



<li>Absicherung von Zugängen (SSH-Keys statt Passwörter)</li>



<li>Firewall-Regeln</li>



<li>Backups</li>
</ul>



<h2 class="wp-block-heading">Unverzichtbare Werkzeuge</h2>



<h3 id="versionsverwaltung" class="wp-block-heading">Versionsverwaltung</h3>



<p class="wp-block-paragraph">Ein Versionsverwaltungssystem ist der erste und wichtigste Baustein. Waren früher Tools wie CVS und SVN beliebt wird heute häufig <a href="https://about.gitlab.com/de-de/" type="link" id="https://about.gitlab.com/de-de/" target="_blank" rel="noreferrer noopener">Gitlab</a> eingesetzt. Neben der eigentlichen Versionsverwaltung bietet es zusätzliche Funktionen, z. B.:</p>



<ul class="wp-block-list">
<li>Benutzer- und Rechteverwaltung</li>



<li>Issue-Tracking</li>



<li>CI/CD-Pipelines</li>
</ul>



<p class="wp-block-paragraph">Gerade die Rechteverwaltung ist ein wichtiger Sicherheitsaspekt, um den Zugriff auf Code gezielt zu steuern.</p>



<h3 class="wp-block-heading">Build- und Automatisierungsprozesse</h3>



<p class="wp-block-paragraph">Für automatisierte Builds und Deployments kann neben integrierten Lösungen (wie o. g. <a href="https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird#versionsverwaltung" type="post" id="1521">Gitlab</a>) auch ein separates Tool wie <a href="https://www.jenkins.io/" type="link" id="https://www.jenkins.io/" target="_blank" rel="noreferrer noopener">Jenkins </a>genutzt werden. Vorteile sind u. a.:</p>



<ul class="wp-block-list">
<li>ein schneller Einstieg</li>



<li>flexible Erweiterbarkeit</li>



<li>gute Dokumentation</li>
</ul>



<p class="wp-block-paragraph">Wichtig ist hierbei, auch die Build-Infrastruktur abzusichern, da sie häufig Zugriff auf sensible Daten (z. B. Zugangsdaten oder Schlüssel) hat.</p>



<h3 id="artefaktverwaltung" class="wp-block-heading">Artefaktverwaltung</h3>



<p class="wp-block-paragraph">Ein oft unterschätzter aber auch relevanter Faktor ist ein Artefakt-Repository wie <a href="https://help.sonatype.com/en/sonatype-nexus-repository.html" type="link" id="https://help.sonatype.com/en/sonatype-nexus-repository.html" target="_blank" rel="noreferrer noopener">Sonatype Nexus Repository</a>.</p>



<p class="wp-block-paragraph">Hier können:</p>



<ul class="wp-block-list">
<li>erzeugte Artefakte zentral bereitgestellt werden</li>



<li>externe Abhängigkeiten kontrolliert verwaltet werden</li>



<li>Versionen nachvollziehbar archiviert werden</li>
</ul>



<p class="wp-block-paragraph">Gerade aus Sicherheitssicht ist es sinnvoll, Abhängigkeiten nicht direkt aus dem Internet zu beziehen, sondern zentral geprüft bereitzustellen. Die Quellen lassen sich zudem gezielt beschränken.</p>



<h2 class="wp-block-heading">Security First</h2>



<p class="wp-block-paragraph">Die Sicherheit muss von Anfang an mitgedacht werden. Auch wenn es zunächst wie überflüssiger Aufwand wirkt &#8211; Security First sollte von vorne bedacht werden. Nachträgliche Anpassungen sind meist deutlich aufwendiger und schwerer zu implementieren.</p>



<p class="wp-block-paragraph">Einige grundlegende Maßnahmen:</p>



<ul class="wp-block-list">
<li>Dienste nicht unnötig öffentlich erreichbar machen</li>



<li>Zugriff über VPN oder eingeschränkte Netzwerke ermöglichen</li>



<li>Regelmäßige Updates und Patches einspielen</li>



<li>Backups automatisieren und regelmäßig testen</li>



<li>Zugriffe und Änderungen protokollieren</li>
</ul>



<h2 id="praxisbeispiel" class="wp-block-heading">Praxisbeispiel</h2>



<p class="wp-block-paragraph">Anhand unseres kleinen Teams beschreiben wir eine kompakte Infrastruktur im <a href="https://amzn.to/4e8nksb" type="link" id="https://amzn.to/4e8nksb" target="_blank" rel="noreferrer noopener">10-Zoll-Netzwerkschrank*</a>. Ein solcher Netzwerkschrank benötigt wenig Platz, sorgt für Ordnung, schützt die Hardware und ist in Verbindung mit den beschriebenen Raspberry Pi völlig ausreichend.</p>



<ul class="wp-block-list">
<li>Drei Raspberry Pi übernehmen unterschiedliche Aufgaben als zentrale Server</li>



<li>Ein <a href="https://amzn.to/4vZkVqg" type="link" id="https://amzn.to/4vZkVqg" target="_blank" rel="noreferrer noopener">NAS*</a> wird für Backups verwendet</li>



<li>Ein <a href="https://amzn.to/4ecObDA" target="_blank" rel="noreferrer noopener">Switch*</a> und <a href="https://amzn.to/4tuwkfY" target="_blank" rel="noreferrer noopener">Patchpanel*</a> sorgt für die interne Vernetzung</li>
</ul>



<p class="wp-block-paragraph"><em>Optional kann das Setup um eine <a href="https://amzn.to/4u6l6y6" type="link" id="https://amzn.to/4u6l6y6" target="_blank" rel="noreferrer noopener">USV*</a> erweitert werden (um z. B. Stromausfälle zu überbrücken)</em>.</p>



<p class="wp-block-paragraph">Die beschriebenen Infrasturktur-Services könnte man z. B. wie folgt aufteilen:</p>



<ul class="wp-block-list">
<li>Raspberry Pi 1: Versionsverwaltung (Gitlab)</li>



<li>Raspberry Pi 2: CI und Build-Prozesse (Jenkins) + Artefakt Repository (Nexus)</li>



<li>Raspberry Pi 3: Zusatzdienste wie Monitoring und VPN</li>
</ul>



<p class="wp-block-paragraph">Ein solcher Aufbau ist vergleichsweise kostengünstig, überschaubar in der Wartung und gleichzeitig flexibel genug für stetig wachsende Herausforderungen. </p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="760" height="1024" src="https://daskias.de/wp-content/uploads/2026/04/Praxisbeispiel-Infrastruktur-DasKIAS-760x1024.webp" alt="" class="wp-image-1556" srcset="https://daskias.de/wp-content/uploads/2026/04/Praxisbeispiel-Infrastruktur-DasKIAS-760x1024.webp 760w, https://daskias.de/wp-content/uploads/2026/04/Praxisbeispiel-Infrastruktur-DasKIAS-223x300.webp 223w, https://daskias.de/wp-content/uploads/2026/04/Praxisbeispiel-Infrastruktur-DasKIAS-768x1035.webp 768w, https://daskias.de/wp-content/uploads/2026/04/Praxisbeispiel-Infrastruktur-DasKIAS-1140x1536.webp 1140w, https://daskias.de/wp-content/uploads/2026/04/Praxisbeispiel-Infrastruktur-DasKIAS-1520x2048.webp 1520w, https://daskias.de/wp-content/uploads/2026/04/Praxisbeispiel-Infrastruktur-DasKIAS.webp 1900w" sizes="auto, (max-width: 760px) 100vw, 760px" /></figure>



<p class="wp-block-paragraph">Im Bild dargestellt ist unser – noch nicht ganz aufgeräumtes – Beispiel-Setup. Da die Infrastruktur kontinuierlich weiterentwickelt wird, erfolgt aktuell beispielsweise die Umstellung des Raspberry Pi für die Versionsverwaltung auf eine SSD, um neue Szenarien zu ermöglichen und für zukünftige Anforderungen besser gerüstet zu sein (fehlt daher im Bild).</p>



<p class="wp-block-paragraph">Für eine bessere Strukturierung bei optimaler Platzausnutzung bietet ein spezielles Raspberry Pi Rack z. B. von <a href="https://amzn.to/4o9FQDw">GeekPi an</a>*.</p>



<p class="wp-block-paragraph">* Affiliante Link: Als Amazon-Partner verdienen wir an qualifizierten Verkäufen. Weitere Infos unter&nbsp;<a href="https://partnernet.amazon.de/" target="_blank" rel="noreferrer noopener">partnernet.amazon.de</a></p>



<p class="wp-block-paragraph"></p>
<p>Der Beitrag <a href="https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird/">Softwareentwicklung – Wenn aus einer Idee etwas Ernstes wird</a> erschien zuerst auf <a href="https://daskias.de">DasKIAS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://daskias.de/diy/softwareentwicklung-wenn-aus-einer-idee-etwas-ernstes-wird/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
