<?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>Allgemein &#8211; Stefan Meyer</title>
	<atom:link href="https://blog.meyer-luenen.de/category/allgemein/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.meyer-luenen.de</link>
	<description>Lose-Blatt-Sammlung</description>
	<lastBuildDate>Thu, 28 Aug 2025 12:32:10 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://i0.wp.com/blog.meyer-luenen.de/wp-content/uploads/2018/12/cropped-StM-Portrait-Raesfeld-600x600-removebg-2.png?fit=32%2C32&#038;ssl=1</url>
	<title>Allgemein &#8211; Stefan Meyer</title>
	<link>https://blog.meyer-luenen.de</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">148105417</site>	<item>
		<title>IP-Adresse vor dem Login anzeigen</title>
		<link>https://blog.meyer-luenen.de/2025/08/28/ip-adresse-vor-dem-login-anzeigen/</link>
		
		<dc:creator><![CDATA[Stefan]]></dc:creator>
		<pubDate>Thu, 28 Aug 2025 07:09:13 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Linux / Unix]]></category>
		<guid isPermaLink="false">https://blog.meyer-luenen.de/?p=866</guid>

					<description><![CDATA[Gerade bei lokalen virtuellen Testmaschinen kann es sinnvoll sein, die (sich wechselnde) lokale IP-Adresse vor dem login zu sehen, um z.B. von der lokalen Kommandozeile per ssh darauf zugreifen zu können. Guckst Du hier, &#8222;wie&#8220;&#8230; Hinweis: aus Sicherheitsgründen dieses nicht auf echten Servern machen &#8211; maximal bei lokalen VMs.Alles hier auf der VM durchführen als [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Gerade bei lokalen virtuellen Testmaschinen kann es sinnvoll sein, die (sich wechselnde) lokale IP-Adresse <strong>vor</strong> dem login zu sehen, um z.B. von der lokalen Kommandozeile per ssh darauf zugreifen zu können. Guckst Du hier, &#8222;wie&#8220;&#8230;</p>


<a class="wp-block-read-more" href="https://blog.meyer-luenen.de/2025/08/28/ip-adresse-vor-dem-login-anzeigen/" target="_self">Weiterlesen<span class="screen-reader-text">: IP-Adresse vor dem Login anzeigen</span></a>


<p>Hinweis: aus Sicherheitsgründen dieses nicht auf echten Servern machen &#8211; maximal bei lokalen VMs.<br>Alles hier auf der VM durchführen als sudo-User (dann mit sudo) oder als root (ohne sudo):</p>



<ol class="wp-block-list">
<li>Erstelle das Verzeichnis:<br><code>sudo mkdir -p /etc/issue.net.d</code></li>



<li>Erstelle die Datei <code>/etc/issue.net.d/ip-show.sh</code>:<br><code>sudo nano /etc/issue.net.d/ip-show.sh</code></li>



<li>Füge folgenden Inhalt ein:<br>!/bin/bash<br>IP=$(ip -4 addr show | grep -v &#8222;127.0.0.1&#8220; | grep -oP &#8218;(?&lt;=inet\s)\d+(.\d+){3}&#8216; | head -n1) <br>echo &#8222;System IP Address: $IP&#8220; &gt; /etc/issue</li>



<li>Mache das Script ausführbar:<br><code>sudo chmod +x /etc/issue.net.d/ip-show.sh</code></li>



<li>Erstelle das Verzeichnis für den systemd Service:<br><code>sudo mkdir -p /etc/systemd/system/getty@.service.d/</code></li>



<li>Erstelle die Datei <code>/etc/systemd/system/getty@.service.d/show-ip.conf</code>:<br><code>sudo nano /etc/systemd/system/getty@.service.d/show-ip.conf</code></li>



<li>Mit folgendem Inhalt:<br>[Service]<br>ExecStartPre=/etc/issue.net.d/ip-show.sh</li>



<li>Reload systemd und restart den getty service:<br>sudo systemctl daemon-reload<br>sudo systemctl restart getty@tty1.service</li>
</ol>



<p>Jetzt sollte die IP-Adresse vor dem Login angezeigt werden. Das Script wird beim Start des getty-Services ausgeführt und aktualisiert die <code>/etc/issue</code> Datei mit der aktuellen IP-Adresse.</p>



<p>Oder Du kopierst diesen ganzen Block und fügst ihn in deine Shell ein:</p>



<pre class="wp-block-code"><code>sudo mkdir -p /etc/issue.net.d
sudo tee /etc/issue.net.d/ip-show.sh &gt; /dev/null &lt;&lt; 'EOF'
#!/bin/bash
IP=$(ip -4 addr show | grep -v "127.0.0.1" | grep -oP '(?&lt;=inet\s)\d+(\.\d+){3}' | head -n1)
echo "System IP Address: $IP" &gt; /etc/issue
EOF
sudo chmod +x /etc/issue.net.d/ip-show.sh
sudo mkdir -p /etc/systemd/system/getty@.service.d/
sudo tee /etc/systemd/system/getty@.service.d/show-ip.conf &gt; /dev/null &lt;&lt; 'EOF'
&#91;Service]
ExecStartPre=/etc/issue.net.d/ip-show.sh
EOF
sudo systemctl daemon-reload
sudo systemctl restart getty@tty1.service</code></pre>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">866</post-id>	</item>
		<item>
		<title>EntityFramework.Core in eine .net Core Blazor WebApp integrieren</title>
		<link>https://blog.meyer-luenen.de/2023/09/02/entityframework-core-in-eine-net-core-blazor-webapp-integrieren/</link>
		
		<dc:creator><![CDATA[Stefan]]></dc:creator>
		<pubDate>Sat, 02 Sep 2023 12:20:13 +0000</pubDate>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<guid isPermaLink="false">https://blog.meyer-luenen.de/?p=685</guid>

					<description><![CDATA[1. Install necessary packages: For a Blazor Server App, you&#8217;d typically manage the EF Core functionality in the Server project. So, make sure you are working in the Server project directory or set the Server project as the default project in the Package Manager Console (PMC) in Visual Studio. Using the NuGet Package Manager or [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">1. Install necessary packages:</h3>



<p>For a Blazor Server App, you&#8217;d typically manage the EF Core functionality in the Server project. So, make sure you are working in the Server project directory or set the Server project as the default project in the Package Manager Console (PMC) in Visual Studio.</p>



<p>Using the NuGet Package Manager or the PMC, install the following packages:</p>



<ul class="wp-block-list">
<li><code>Microsoft.EntityFrameworkCore</code></li>



<li><code>Microsoft.EntityFrameworkCore.SqlServer</code></li>



<li><code>Microsoft.EntityFrameworkCore.Tools</code> (for migration tools)</li>
</ul>



<h3 class="wp-block-heading">2. Define your Model:</h3>



<p>Create classes that will define the structure of your database tables. Place these in the Shared or Server project, depending on your design decisions.</p>



<p>Example:</p>



<pre class="wp-block-preformatted"><code>public class Product
{
    public int ProductId { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}
</code></pre>



<h3 class="wp-block-heading">3. Create a DbContext:</h3>



<p>In the Server project, create a class that derives from <code>DbContext</code>:</p>



<pre class="wp-block-preformatted"><code>public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions&lt;AppDbContext&gt; options) : base(options) { }

    public DbSet&lt;Product&gt; Products { get; set; }
}
</code></pre>



<h3 class="wp-block-heading">4. Configure the Connection String:</h3>



<p>In the <code>appsettings.json</code> file in the Server project, add your connection string:</p>



<pre class="wp-block-preformatted"><code>{
  "ConnectionStrings": {
    "DefaultConnection": "</code>Server=Servername;Database=DatabaseName;user=UserId;password=secret;MultipleActiveResultSets=true;TrustServerCertificate=True;MultiSubnetFailover=True<code>"
  }
}
</code></pre>



<p>Replace <code>YourConnectionStringHere</code> with your MS SQL Server 2022 connection string.</p>



<h3 class="wp-block-heading">5. Register DbContext:</h3>



<p>In the <code>Startup.cs</code> (or <code>Program.cs</code> for newer versions) of your Server project, register the <code>DbContext</code> in the <code>ConfigureServices</code> method:</p>



<pre class="wp-block-code"><code>builder.<code>Services.AddDbContext&lt;AppDbContext>(options =><br>    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));</code></code></pre>



<p>(Do not forget to import EF Core)</p>



<h3 class="wp-block-heading">6. Create Initial Migration:</h3>



<p>In the PMC or terminal, navigate to the Server project directory and run:</p>



<pre class="wp-block-preformatted"><code>Add-Migration InitialCreate
</code></pre>



<p>This will scaffold a migration to create the initial set of tables for your model.</p>



<h3 class="wp-block-heading">7. Update the Database:</h3>



<p>Apply the migration to create the database schema:</p>



<pre class="wp-block-preformatted"><code>Update-Database
</code></pre>



<pre class="wp-block-preformatted"><code>
</code></pre>



<h3 class="wp-block-heading">8. Use the DbContext in your app:</h3>



<p>Now you can inject and use your <code>DbContext</code> in your pages, components, or services:</p>



<pre class="wp-block-preformatted">csharpCopy code<code>@inject AppDbContext _context

// ...

var products = await _context.Products.ToListAsync();
</code></pre>



<p>That&#8217;s the basic setup! As your app grows, you might add more entities, relationships, migrations, and other advanced EF Core features. Ensure you understand concepts like the lifecycle of a DbContext and how it tracks changes to entities to avoid issues when manipulating data.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">685</post-id>	</item>
		<item>
		<title>Zertifikatsanmeldung an sftp-Server</title>
		<link>https://blog.meyer-luenen.de/2023/06/26/zertificatsanmeldung-an-sftp-server/</link>
		
		<dc:creator><![CDATA[Stefan]]></dc:creator>
		<pubDate>Mon, 26 Jun 2023 07:52:02 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://blog.meyer-luenen.de/?p=607</guid>

					<description><![CDATA[To authenticate against an SFTP (SSH File Transfer Protocol) server using a certificate, you typically need an SSH key pair consisting of a private key and a corresponding public key. The private key remains on your local system, while the public key is uploaded to the SFTP server for authentication. Here&#8217;s a general outline of [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>To authenticate against an SFTP (SSH File Transfer Protocol) server using a certificate, you typically need an SSH key pair consisting of a private key and a corresponding public key. The private key remains on your local system, while the public key is uploaded to the SFTP server for authentication.</p>



<p>Here&#8217;s a general outline of the process:</p>



<ol class="wp-block-list">
<li>Generate an SSH key pair: Use a tool like <code>ssh-keygen</code> (available on most operating systems) to generate a key pair. This command typically generates a private key file (e.g., <code>id_rsa</code>) and a public key file (e.g., <code>id_rsa.pub</code>). Example command: <code>ssh-keygen -t rsa -b 4096</code></li>



<li>Provide the public key to the SFTP server: The public key needs to be added to the server&#8217;s authorized keys file. This process depends on the specific server and its configuration. It may involve copying the public key contents into a specific file or using an administration interface to upload the key.</li>



<li>Configure your SFTP client: In your SFTP client application (e.g., FileZilla, WinSCP, or command-line tools like <code>sftp</code> or <code>scp</code>), you&#8217;ll need to specify the private key file for authentication. The exact method of configuring this varies depending on the client you&#8217;re using.</li>
</ol>



<ul class="wp-block-list">
<li>In graphical SFTP clients: Look for an option to configure SSH keys or identity files. Provide the path to the private key file there.</li>



<li>In command-line clients: Use the <code>-i</code> flag followed by the path to the private key file. Example command: <code>sftp -i /path/to/private_key user@server</code></li>
</ul>



<ol class="wp-block-list">
<li>Connect to the SFTP server: With the private key configured, initiate a connection to the SFTP server using your client. It should use the private key for authentication and establish a secure connection.</li>
</ol>



<p>It&#8217;s worth noting that the specific steps may differ depending on the SFTP server software, client application, and operating system you&#8217;re using. It&#8217;s recommended to refer to the documentation or guides provided by your server and client for detailed instructions specific to your setup.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">607</post-id>	</item>
		<item>
		<title>Installation .net Core 6 Webserver auf Ubuntu 20.04 LTS (Turbo-Modus)</title>
		<link>https://blog.meyer-luenen.de/2022/03/01/installation-net-core-6-webserver-auf-ubuntu-20-04-lts-turbo-modus/</link>
		
		<dc:creator><![CDATA[Stefan]]></dc:creator>
		<pubDate>Tue, 01 Mar 2022 12:34:14 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://blog.meyer-luenen.de/?p=511</guid>

					<description><![CDATA[Vorbereitung des Servers WWW-User einrichten Das Web wird später NICHT unter Deinem Benutzer, mit dem Du gerade angemeldet bist ausgeführt und schon gar nicht unter root. Hierzu legen wir uns einen Benutzer an (www), der möglichste über keine Berechtigungen verfügt. Auf einem Testsystem wie demjenigen, welches wir gerade installieren verwenden wir jedoch sie sudo-Berechtigung, um [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Vorbereitung des Servers</h2>



<h3 class="wp-block-heading">WWW-User einrichten</h3>



<p>Das Web wird später NICHT unter Deinem Benutzer, mit dem Du gerade angemeldet bist ausgeführt und schon gar nicht unter root.</p>



<p>Hierzu legen wir uns einen Benutzer an (www), der möglichste über keine Berechtigungen verfügt. Auf einem Testsystem wie demjenigen, welches wir gerade installieren verwenden wir jedoch sie sudo-Berechtigung, um uns nicht immer umloggen oder mehrere Terminalfenster mit mehreren Anmeldungen aufzuführen (würde das Tutorial erschweren).</p>



<pre class="wp-block-code"><code>sudo adduser www</code></pre>



<p>Diesem ist ein vernünftiges (da es sich durch das Web später um einen sehr exponierten Benutzer handelt: SEHR vernünftiges) Passwort zu vergeben und der Rest kann ausgefüllt oder leer gelassen werden:</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="895" height="473" src="https://i0.wp.com/blog.meyer-luenen.de/wp-content/uploads/2022/03/image-1.png?resize=895%2C473&#038;ssl=1" alt="" class="wp-image-520" srcset="https://i0.wp.com/blog.meyer-luenen.de/wp-content/uploads/2022/03/image-1.png?w=895&amp;ssl=1 895w, https://i0.wp.com/blog.meyer-luenen.de/wp-content/uploads/2022/03/image-1.png?resize=300%2C159&amp;ssl=1 300w, https://i0.wp.com/blog.meyer-luenen.de/wp-content/uploads/2022/03/image-1.png?resize=768%2C406&amp;ssl=1 768w" sizes="(max-width: 895px) 100vw, 895px" /></figure>



<p>Jetzt (wie gesagt nur in der Testumgebung) den neuen User mit sudo-Rechten versehen:</p>



<pre class="wp-block-code"><code>sudo usermod -aG sudo www</code></pre>



<h3 class="wp-block-heading">(todo) Firewall installieren</h3>



<p></p>



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



<p>Quelle: https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04-de</p>



<p>Nun auf den neun angelegten Benutzer www umloggen (dann wird das Standard-Web auch schon mit diesem Benutzer angelegt).</p>



<pre class="wp-block-code"><code>su - www</code></pre>



<p>Nun nginx installieren</p>



<pre class="wp-block-code"><code>sudo apt install nginx</code></pre>



<h3 class="wp-block-heading">(todo) Firewall anpassen</h3>



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



<p>Wie immer zuerst den Server aktualisieren</p>



<pre class="wp-block-code"><code>sudo apt update
sudo apt upgrade</code></pre>



<p>Basierend auf dieser Quelle: https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu</p>



<p>Zuerst die Microsoft-Paketlisten dem System hinzufügen</p>



<pre class="wp-block-code"><code>wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb</code></pre>



<p>Dann die apsnetcore Runtime imstallieren</p>



<pre class="wp-block-code"><code>sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y aspnetcore-runtime-6.0</code></pre>



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



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">511</post-id>	</item>
		<item>
		<title>Rüstung selbst bauen</title>
		<link>https://blog.meyer-luenen.de/2021/04/07/ruestung-selbst-bauen/</link>
		
		<dc:creator><![CDATA[Stefan]]></dc:creator>
		<pubDate>Wed, 07 Apr 2021 16:00:57 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://blog.meyer-luenen.de/?p=465</guid>

					<description><![CDATA[Questbeschreibung]]></description>
										<content:encoded><![CDATA[
<p><a rel="noreferrer noopener" href="https://de.wowhead.com/quest=61473/beschafft-euch-eure-eigenen-materialien#english-comments" target="_blank">Questbeschreibung</a></p>



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">465</post-id>	</item>
		<item>
		<title>Shadowlands Erze</title>
		<link>https://blog.meyer-luenen.de/2021/01/23/shadowlands-erze/</link>
		
		<dc:creator><![CDATA[Stefan]]></dc:creator>
		<pubDate>Sat, 23 Jan 2021 10:53:40 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<guid isPermaLink="false">http://blog.meyer-luenen.de/?p=346</guid>

					<description><![CDATA[Shadowland-Erze und wo sie zu finden sind]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-table"><table><tbody><tr><td><strong>Erz</strong></td><td class="has-text-align-center" data-align="center"><strong>Bastion</strong></td><td class="has-text-align-center" data-align="center"><strong>Maldraxxus</strong></td><td class="has-text-align-center" data-align="center"><strong>Ardenwald</strong></td><td class="has-text-align-center" data-align="center"><strong>Revendreth</strong></td></tr><tr><td>Laestrit</td><td class="has-text-align-center" data-align="center">X</td><td class="has-text-align-center" data-align="center">X</td><td class="has-text-align-center" data-align="center">X</td><td class="has-text-align-center" data-align="center">X</td></tr><tr><td>Elethium</td><td class="has-text-align-center" data-align="center">X</td><td class="has-text-align-center" data-align="center">X</td><td class="has-text-align-center" data-align="center">X</td><td class="has-text-align-center" data-align="center">X</td></tr><tr><td>Solenium</td><td class="has-text-align-center" data-align="center">X</td><td class="has-text-align-center" data-align="center"></td><td class="has-text-align-center" data-align="center"></td><td class="has-text-align-center" data-align="center"></td></tr><tr><td>Oxxein</td><td class="has-text-align-center" data-align="center"></td><td class="has-text-align-center" data-align="center">X</td><td class="has-text-align-center" data-align="center"></td><td class="has-text-align-center" data-align="center"></td></tr><tr><td>Phaedrum</td><td class="has-text-align-center" data-align="center"></td><td class="has-text-align-center" data-align="center"></td><td class="has-text-align-center" data-align="center">X</td><td class="has-text-align-center" data-align="center"></td></tr><tr><td>Sinvyr</td><td class="has-text-align-center" data-align="center"></td><td class="has-text-align-center" data-align="center"></td><td class="has-text-align-center" data-align="center"></td><td class="has-text-align-center" data-align="center">X</td></tr></tbody></table></figure>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">346</post-id>	</item>
		<item>
		<title>Ruf bei Lucas</title>
		<link>https://blog.meyer-luenen.de/2019/03/05/ruf-bei-lucas/</link>
		
		<dc:creator><![CDATA[Stefan]]></dc:creator>
		<pubDate>Tue, 05 Mar 2019 15:20:27 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://blog.meyer-luenen.de/2019/03/05/ruf-bei-lucas/</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">242</post-id>	</item>
		<item>
		<title>Coole und extrem gute  Schriftart für Coding Editoren</title>
		<link>https://blog.meyer-luenen.de/2019/02/07/coole-und-extrem-gute-schriftart-fuer-coding-editoren/</link>
		
		<dc:creator><![CDATA[Stefan]]></dc:creator>
		<pubDate>Thu, 07 Feb 2019 20:54:28 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">http://blog.meyer-luenen.de/?p=237</guid>

					<description><![CDATA[https://sourcefoundry.org/hack/]]></description>
										<content:encoded><![CDATA[
<p><a href="https://sourcefoundry.org/hack/">https://sourcefoundry.org/hack/</a></p>



<p></p>



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">237</post-id>	</item>
	</channel>
</rss>
