Installation de BaGet sous GNU\Linux (Distribution Debian)

BaGet (prononcé « baguette ») est un serveur NuGet et de un serveur de symboles léger. Il est open source, multiplateforme et prêt pour le cloud!

Vous trouverez la documentation complète de BaGet depuis cette url : https://loic-sharma.github.io/BaGet/.

Etape 1 – Installer Dotnet Sdk 3.1

Voici la procédure pour installer le Dotnet SDK 3.1

wget https://download.visualstudio.microsoft.com/download/pr/ec187f12-929e-4aa7-8abc-2f52e147af1d/56b0dbb5da1c191bff2c271fcd6e6394/dotnet-sdk-3.1.404-linux-x64.tar.gz
sudo mkdir -p "/usr/bin/dotnet-3.1" && sudo tar zxf dotnet-sdk-3.1.404-linux-x64.tar.gz -C "/usr/bin/dotnet-3.1"
sudo nano  ~/.bashrc
export DOTNET_ROOT=/usr/bin/dotnet-3.1
export PATH=$PATH:/usr/bin/dotnet-3.1
source  ~/.bashrc

Etape 2 – Installer Baget

cd /var/www
mkdir BagetServer
cd BagetServer
wget https://github.com/loic-sharma/BaGet/releases/download/v0.3.0-preview4/BaGet.zip
unzip BaGet.zip
rm BaGet.zip

Etape 3 – Editer le fichier appsettings.json

sudo nano appsettings.json
{
  "ApiKey": "hpumRCstvPUann5F",
  "Urls": "http://*:5002",
  "PackageDeletionBehavior": "HardDelete",
  "AllowPackageOverwrites": true,

  "Database": {
    "Type": "Sqlite",
    "ConnectionString": "Data Source=baget.db"
  },

  "Storage": {
    "Type": "FileSystem",
    "Path": ""
  },

  "Search": {
    "Type": "Database"
  },

  "Mirror": {
        "Enabled":  false,
        "PackageSource": "https://api.nuget.org/v3/index.json"
  },

  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Microsoft.Hosting.Lifetime": "Information",
        "Default": "Warning"
      }
    }
  }
}

Etape 4 – Installer le serveur web Nginx

sudo apt install nginx

Etape 5- Paramétrer le serveur web Nginx comme serveur proxy de Badget

sudo nano /etc/nginx/sites-enabled/default 
server {
        listen 51.255.165.236:80;
        server_name  mynuget.local;
        location / {
               proxy_pass         http://localhost:5002;
               proxy_http_version 1.1;
               proxy_set_header   Upgrade $http_upgrade;
               proxy_set_header   Connection keep-alive;
               proxy_set_header   Host $http_host;
               proxy_cache_bypass $http_upgrade;
      }

}

Etape 6 -Créer un utilisateur baget

sudo adduser bagetuser --system --no-create-home

Attribuer des droits utilisateur badget au dossier /var/www/BagetServer :

sudo chown -R bagetuser:$USER /var/www/BagetServer/

Etape 7 – Créer le service badget

sudo nano /etc/systemd/system/baget.service
sudo chown -R badgetuser:$USER /var/www/BagetServer/
[Unit]
Description=Baget service

[Service]
WorkingDirectory=/var/www/BagetServer
ExecStart=/usr/bin/dotnet-3.1/dotnet /home/christophe/Bureau/BagetServer/BaGet.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-baget  
User=bagetuser
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

Enregistrez le fichier et activez le service :

sudo systemctl enable baget.service

Démarrer le service :

sudo service baget restart

Etape 8-Redémarrer le serveur Nginx

sudo service nginx restart

Baget est dés lors accessible depuis l’url : http://mynuget.local/

Etape 9 – Ajouter un nouveau package

dotnet nuget push myLib.1.0.nupkg -s http://mynuget.local/v3/index.json -k hpumRCstvPUann5F

Dans cet exemple la clé d’API est : hpumRCstvPUann5F

Si vous voulez supprimer le package, il suffit de taper la commande suivante:

dotnet nuget delete myLib 1.0.0 -s http://mynuget.local/v3/index.json -k hpumRCstvPUann5F --non-interactive

Dans cet exemple la clé d’API est : hpumRCstvPUann5F

Vous trouverez un exemple d’utilisation du package myLib dans un projet console. Ce dernier est disponible sur mon dépôt Gitea :

https://gitea.brachet-christophe.fr/christophe/projet-utilisant-baget