Autofac injecten

Da mich das eben ein paar Minuten gekostet hat, will ich das einmal festhalten.

Folgendes NuGet muss im Projekt inkludiert sein: Autofac.Extensions.DependencyInjection

HostApplication:
[crayon-6766e20e80e81331412985/]
WebApplication:
[crayon-6766e20e80e87872885499/]
 

 

 




Docker auf Windows installieren ohne Docker Desktop

Die DockerCLI und DockerEngine sind Freeware und OpenSource, im Business Bereich muss die Docker Desktop Anwendung erworben werden. Um Docker nutzen zu können, braucht man nicht unbedingt Docker Desktop. Auch wenn Docker Desktop einem bei der Einrichtung vieles einfacher macht. Hier soll eine Schritt für Schritt Anleitung folgen

Alle Schritte nutzen PowerShell oder meine Empfehlung „Windows Terminal Canary“

WSL (Windows-Subsystem für Linux )

Über WSL läuft eine Linux distro unter Windows.

hat man noch kein WSL installiert, kann über diesen Befehl eine Distro ausgewählt werden. Standard ist Ubuntu, ich nutze hier debian.
[crayon-6766e20e813ef390643427/]
um WSL zu installieren gibt man folgenden Befehl ein
[crayon-6766e20e813f3853650144/]
Da das Linux System CPU und RAM Resourcen verbraucht, kann man diese einschränken. Dazu wird eine .wslconfig Datei im Userverzeichnis erstellt
[crayon-6766e20e813f4909599679/]
In Windows Explorer %UserProfile% eingeben und die erstellte .wslconfig optional bearbeiten:
[crayon-6766e20e813f5413541633/]
jetzt wsl eingeben und wir befinden uns in der Kommandozeile von Linux

Als erstes sollte man die distro aktualisieren
[crayon-6766e20e813f7536686729/]

Optional: WSL Image verschieben

Es kann Sinnvoll sein, die WSL Images nicht im Standard Verzeichnis zu haben. Daher kann die WSL Image jederzeit umziehen.

  1. Name des WSL-Images bestimmen. In meinem Fall ist es „Debian“:
    [crayon-6766e20e813f8575697890/]
  2. als tar exportieren:
    [crayon-6766e20e813f9269072327/]
  3. In WSL das image lösen:
    [crayon-6766e20e813fa969405642/]
  4. 2 Verzeichnisse erstellen. Mein neues Verzeichnis ist D:\Docker\wsl
    [crayon-6766e20e813fb098864377/]
  5.  WSL herunterfahren:
    [crayon-6766e20e813fc496854995/]
  6. Import starten: wsl –import Debian
    [crayon-6766e20e813fd198020461/]
  7. Neues Image starten:
    [crayon-6766e20e813fe215317016/]
  8. Optional:
    [crayon-6766e20e81400614986187/]

Docker installieren und einrichten

Zunächst werden benötigte Repositories für das Generieren von Zertifikaten installiert und dann docker selbst. Wichtig: Die Zeilen hier unten so wie die sind nacheinander, Zeile für Zeile kopieren. Nicht mehrere Zeilen miteinander in das Terminal einfügen. Aufforderungen mit Y und Enter bestätigen
[crayon-6766e20e81401217814519/]
[crayon-6766e20e81402440101485/]
Docker Daemon starten. Wenn der nicht weiter geht, Terminal schließen und neuen Terminal mit wsl starten
[crayon-6766e20e81403566034247/]
Docker müsste jetzt installiert sein. (optional) Das testen wir, indem wir ein hello-world container laufen lassen:
[crayon-6766e20e81404936013420/]
Damit unser aktueller User nicht immer sudo eingeben muss, können wir ihn zu der Gruppe der Docker Administratoren hinzufügen. Evtl. ist die Gruppe bereits vorhanden, dann Meldung ignorieren.
[crayon-6766e20e81405419268400/]

Um sicherzustellen, dass Docker bei jeden Neustart läuft, folgende Befehle ausführen:

[crayon-6766e20e81406070532990/]
Damit auch der dockerd nach dem Start läuft, muss man ein script einfügen. systemctl kann man mit WSL leider nicht nutzen.

Wir legen fest, dass wie sudo bei dem aktuellen Benutzer Benutzer gehandhabt werden soll. Nämlich soll für dockerd kein Passwort erfragt werden:
[crayon-6766e20e81407127689407/]
ganz unten folgendes hinzufügen und Benutzer gegeben falls anpassen:
[crayon-6766e20e81409854785268/]
Jetzt müssen wir die bash bearbeiten, damit nach reboot das Skript ausgeführt wird
[crayon-6766e20e8140a473324368/]
mit „Bild runter“-Taste kann man bis ganz unten blättern und dort folgenden Code einfügen. Mit Strg+X, dann Y und Enter wieder raus:
[crayon-6766e20e8140c257133305/]
Shell neustarten:
[crayon-6766e20e8140d927112458/]
WSL beenden:
[crayon-6766e20e8140e554335272/]
und WSL reboot:
[crayon-6766e20e8140f339858134/]
Falls das nicht geht, kann ein Windows Job eingerichtet werden, der wsl automatisch bei Windows Start ausführt
[crayon-6766e20e81410857891900/]
Unter Aufgabenplanung in Windows diesen Task als „Unabhängig von der Benutzeranmeldung“ konfigurieren. Sonst funktioniert dieser Task nicht

Linux Docker, Windows bekannt machen

Docker läuft nun auf unserer WSL Linux Maschine. Das nützt uns wenig, da wir in PowerShell nicht immer auf die WSL Linux Maschine zugreifen wollen. Wir wollen einfach docker eingeben und damit die docker Instanz auf der Linux Maschine meinen. Daher erstellen wir jetzt die Brücke.

Zuerst müssen wir das in Linux erlauben. Folgender Befehl öffnet einen Editor:
[crayon-6766e20e81411218919557/]
dort mit Strg+V folgendes einfügen:
[crayon-6766e20e81412761101524/]
Mit Strg+X , dann Y und Enter speichern

Mit exit beenden wir die WSL Kommandozeile

Jetzt muss unter Windows eine Umgebungsvariable für diesen Docker Host angelegt werden (Terminal muss als Admin laufen):
[crayon-6766e20e81413384813223/]

Docker CLI unter Windows installieren

Wenn man bereits choco nutzt, geht das easy mit

[crayon-6766e20e81414983469401/]
Ansonsten hier herunterladen:

https://download.docker.com/win/static/stable/x86_64/

und unter einem Verzeichnis z.B. C:\DockerCli ablegen. Nun muss dieses Verzeichnis in den Umgebungsvariablen unter Path eingetragen werden

über folgenden Befehl müsste Docker nun aufrufbar sein
[crayon-6766e20e81415833659878/]

Man muss jetzt wissen, dass es nun 3 Ebenen gibt.

Windows -> WSL Linux -> Docker Container.

WSL hat für Windows automatisch ein mount in dem Ordner /mnt/ eingerichtet

Möchte man nun, dass der Container auf das Windows Verzeichnis C:\Temp bindet, so muss man stattdessen /mnt/c/Temp eingeben

Referenz:

Docker and WSL2 without Docker Desktop | by Romain Bruyère | Medium

files folders – Change the storage location of a WSL2 – Super User

How to automatically start the Docker daemon on WSL2 – NillsF blog

Portainer installieren mit SSL Zertifikat

Portainer über docker installieren
[crayon-6766e20e81416366830550/]
! Funktioniert noch nicht. Das Zertifikat wird vom Browser nicht anerkannt !

Zertifikat auf der Linux WSL erzeugen und das Zertifikat nach D:\Docker kopieren:
[crayon-6766e20e81417096306639/]
 




dotNet Docker veröffentlichen

  1. Wenn ein eigener nuget Server mit http verwendet wird, dann muss dort wo die sln liegt, eine NuGet.config angelegt werden:
    [crayon-6766e20e817d4820830568/]
  2. die csproj bearbeiten:
    [crayon-6766e20e817d9981551189/]
     
  3. Docker Desktop muss vorinstalliert sein und mit wsl2 laufen
    [crayon-6766e20e817dc185216633/]
  4. Https Zertifikat für Entwicklung erstellen: https://learn.microsoft.com/en-us/aspnet/core/security/docker-https?view=aspnetcore-8.0#running-pre-built-container-images-with-https
    [crayon-6766e20e817de698981419/]
     



Docker

Docker Desktop (AMD64)

Docker Desktop: The #1 Containerization Tool for Developers | Docker

In der Regel reicht auch nur die cli
[crayon-6766e20e81a12427411844/]
und Rancher Desktop
[crayon-6766e20e81a15374176878/]
 

Portainer

https://docs.portainer.io/start/install-ce/server/docker/wsl
[crayon-6766e20e81a16027103739/]
WebAdmin: https://localhost:9443/

Microsoft Sql Server

microsoft/mssql-server – Docker Image | Docker Hub
[crayon-6766e20e81a17672655802/]
Passwort setzen nicht vergessen

Im Container, unter volumes als bind, ein Verzeichnis einrichten, wo die backups liegen und wo die volumes liegen sollen

RabbitMQ

[crayon-6766e20e81a19215380986/]
WebAdmin: https://localhost:15672/

Benutzername: guest

Password: guest

Hashicorp/Vault
[crayon-6766e20e81a1a437339598/]
hashicorp/vault – Docker Image | Docker Hub

Weboberfläche: http://localhost:8200/




Discord Installation „a fatal javascript error occurred“

Das war die einzige Lösung, die funktionierte, um Discord zu installieren über choco:

I have a problem with discord, and its no the logo. : r/discordapp (reddit.com)

 

Dazu das Powershell-Script. Ausprobiert und getestet.
[crayon-6766e20e81bd0582695689/]
 

 




Jupyter unter Windows installieren

Mit Jupyter (Julia + Python) kann man interaktive Notebooks erstellen.

Ein Notebook besteht aus Cells, die entweder als Text (markdown) oder Code (Python, etc.) nacheinander erstellt werden können.

Der Code kann im Notebook ausgeführt werden und visuell dargestellt werden. Variablen können Code-Zelle übergreifend genutzt werden.

Damit der Code ausgeführt werden kann, wird ein Kernel benötigt, der wie ein Interpreter den Code verarbeitet und ausgibt.

Um Jupyter nutzen zu können, muss dieser zunächst installiert werden.

Installation Jupyter

Jupyter selbst benötigt Python und für die Installation den Python package manager, welcher in Python inkludiert ist.
[crayon-6766e20e81dbe883041581/]
Über den Befehl

[crayon-6766e20e81dc1439204718/]

wird der JupyterLab Server lokal gestartet. Dieser ist erreichbar unter http://127.0.0.1:8888

In der Konsole ist auch der Token hinterlegt, den man für die Ersteinrichtung benötigt.

Editoren

JupyterLab Web

Über http://127.0.0.1:8888 kommt man auf die Schaltzentrale von JupyterLab.

Dort kann man auch die Notebooks erstellen und bearbeiten

Azure Data Tool

My experience working with notebooks in Azure Data Studio – Data on Wheels – Kristyna Ferris & Steve Hughes (wordpress.com)

JupyterLab unterstützt von Haus aus nur Python als Kernel. Weitere Kernels müssen nachinstalliert werden.

Leider gibt es kein Kernel für SQL. Aber Azure Data Tools hat ein eingebautes Kernel für SQL Server.

Die Nutzung inkl. Copilot ist wirklich komfortabel.

VS Code

Für VsCode müssen die Jupyter Extensions heruntergeladen werden.

Über Strg + Shift + P kann eine neue Jupyter Datei erstellt werden.

Oben rechts in der Ecke wählt man „Select Kernel“ aus und gibt als Adresse http://127.0.0.1:8888 und das Passwort ein.

Danach kann man die Kernels aus JupyterLab nutzen

nteract

nteract ist ein weiterer Editor um Jupyter Notebooks zu erstellen. Dieser kann mit CodeMirror und Monaco arbeiten.

nteract: write your next code-driven story.

Weitere Kernel

[crayon-6766e20e81dc2533418900/]

.NET Interactive (C#, F#, PowerShell)

[crayon-6766e20e81dc4661938066/]




VS Code SQL Fenster horizontal ausrichten




Entity Framework EF – Tabellen Models generieren lassen

Alt + T -> „NU“ eingeben
[crayon-6766e20e81f8d198744794/]
 




Windows Powershell Dienst einrichten

[crayon-6766e20e820ee266179981/]
 




Nuxt 3 mit Keycloak autorisieren

In diesem Beitrag will ich eine Schritt für Schritt Anleitung geben, wie man Nuxt 3 mit Keycloak autorisiert.

Die Thematik um Autorisierung und Authentifizierung bedarf einer soliden Kenntnis in der Thematik. Ich empfehle daher unbedingt sich die Zeit zu nehmen und das folgende Video anzuschauen und sicher zu gehen, dass alles verstanden wurde:

Zum Ende füge ich weitere Lohnenswerte Links hinzu.

1. Keycloak installieren

  1. Keycloak herunterladen: downloads – Keycloak
  2. Zip-Datei entpacken und in das bin Verzeichnis wechseln. Dort eine Verknüpfung vom kc.bat erstellen, dann auf Eigenschaften und beim Ziel start-dev anhängen
  3. Verknüpfung starten und keycloak ist unter der Adresse http://localhost:8080 erreichbar. Dort einen neuen Admin User anlegen

2. Keycloak einrichten

  1. Keycloak Administarion console aufrufen über http://localhost:8080
  2. Neuen realm erstellen und nur Realm name eintragen. Wichtig! Keine Sonderzeichen benutzen
  3. Jetzt in dem angelegten realm einen neuen Client erstellen
  4.  User erstellen. Der Username reicht
  5. Zu dem User wechseln und folgende Sachen um Credentials ergänzen

3. nuxt 3 App aufsetzen

Installiertes nodeJs und pnpm sind Voraussetzung

  1. Visual studio Code starten und das prime-vue starter repository clonen: https://github.com/sfxcode/nuxt3-primevue-starter.git
  2. Verzeichnis auswählen wo die repo hin soll und mit öffnen bestätigen
  3. Wir wechseln zum Terminal und installieren sidebase nuxt-auth. Zur Zeit des Schreibens existiert auch eine 0.4.0 alpha Version. Diese Version verursacht aber Fehler mit Keycloak.:
    [crayon-6766e20e82270681358484/]
  4. nun in der nuxt.config.ts die modules ergänzen und nuxt mitteilen, dass Autorisierung auf jeder Seite gelten soll:
    [crayon-6766e20e82275978779542/]
  5. Jetzt muss unter server 2 Dateien erstellt werden: 1. server\auth\[…].ts
    [crayon-6766e20e82276245907141/]
    und 2. server\api\session.get.ts
    [crayon-6766e20e82277799136106/]
  6.  Eine weitere Datei muss angelegt werden für die Umgebungsvariablen: .env
    [crayon-6766e20e82279359434844/]
    Lasst euch ein Secret irgendwo generieren. Dieser String ist nur für Demozwecke!!!

    Wichtig ist, dass die lokale Adresse mit 127.0.0.1 angegeben wird. localhost oder 0.0.0.0 kann nicht aufgelöst werden. In den Url ist der real name enthalten.

Weitere Links

Schritt für Schritt Anleitung zur lokalen Einrichtung von Keycloak und einer Vue Applikation:

Security in Vuejs 3.0 with authentication and authorization by KeyCloak Part 1 | by Nicolas Barlatier | Dev Genius

Documentation Nuxt-Auth von Sidebase:

Quick Start · sidebase

Nuxt-Auth wurde von Next-Auth portiert. Fehlende Dokumentation kann hier nachgelesen werden:

Introduction | NextAuth.js (next-auth.js.org)

Ich nutze das prime-vue starter Paket, welches nuxt 3 inkludiert hat. Ich kann das Paket jeden nur empfehlen!

sfxcode/nuxt3-primevue-starter: Build your VUE.js App with Nuxt3 . First Class PrimeVUE support. Formkit Validation included. (github.com)

Für OAuth und OpenId Connectt gibt es Debugger. Der Author ist Nathon aus dem YouTube Video weiter oben.

OAuth 2.0 debugger (oauthdebugger.com)

OpenID Connect debugger (oidcdebugger.com)

Keycloak Dokumentation:

Documentation – Keycloak