EasyVault 0.1.1
dotnet add package EasyVault --version 0.1.1
NuGet\Install-Package EasyVault -Version 0.1.1
<PackageReference Include="EasyVault" Version="0.1.1" />
<PackageVersion Include="EasyVault" Version="0.1.1" />
<PackageReference Include="EasyVault" />
paket add EasyVault --version 0.1.1
#r "nuget: EasyVault, 0.1.1"
#:package EasyVault@0.1.1
#addin nuget:?package=EasyVault&version=0.1.1
#tool nuget:?package=EasyVault&version=0.1.1
EasyVault
Live: easyvault.belov.us - The key you enter will encrypt your secrets (Easy)
Lightweight, self‑contained Zero-Trust secrets service — a single Docker image with a built‑in Web UI. Run the container, open the UI, enter any encryption key and manage secrets without extra setup.
What's inside
- Single image, built‑in UI (served from the same server at
/
). - AES‑256 (PBKDF2‑SHA256) at rest; only a SHA‑512 of the password is stored.
- Per‑secret IP and User‑Agent allowlists (wildcards supported).
- SQLite by default; migrations apply automatically.
- Health check at
/api/v1/health
. - Minimal .NET SDK (Dictionary or typed mapping).
Quick start (UI‑first)
In Docker (locally):
# Build the image
docker build -t easyvault:local -f .\Sources\EasyVault.Server\Dockerfile .\Sources
# Run the container
docker run --name easyvault -p 8080:8080 -v easyvault_data:/data easyvault:local
# Open the UI
# Go to http://localhost:8080 and manage secrets from the admin panel.
Local run without Docker (optional):
cd .\Sources\EasyVault.Server
dotnet run
By default the server listens on 8080
. The UI is available at /
. DB path: /data/easyvault.db
(for Docker).
Configuration (optional)
Settings in Sources/EasyVault.Server/appsettings.json
:
{
"SqliteConnectionString": "Data Source=/data/easyvault.db;Cache=Shared;Foreign Keys=True;Pooling=True;Mode=ReadWriteCreate;"
}
You can override these with ASP.NET Core environment variables.
API (brief)
- Create/update vault (encrypt and save) — the UI does this for you:
POST /api/v1/vault/{password}
Content-Type: application/json
[
{
"keyId": "b7c1e6b6-4321-4c9c-1234-0bb2d6bf9b4a",
"appName": "MyApp",
"values": { "DB_PASSWORD": "supersecret", "API_TOKEN": "abcdef" },
"allowedAddresses": ["127.0.0.1", "10.0.*"],
"allowedUserAgents": ["PostmanRuntime", "MyService/*"]
}
]
- Get secrets by
keyId
(allowed by IP/UA; vault must be unsealed, the UI handles unseal):
GET /api/v1/vault/secrets/{keyId}?format=json|plain
format=json
— returns{ "KEY": "VALUE" }
.format=plain
— returns strings likeKEY=VALUE
.
Also available: GET /api/v1/vault/{password}
— decrypts the latest vault for this password and unseals in‑memory cache.
Note: the password ({password}
) is used only for encryption/decryption and is not stored (only its SHA‑512 hash).
.NET SDK (optional)
Client usage example:
using EasyVault.SDK;
var client = new EasyVaultClient("http://localhost:8080", new Guid("b7c1e6b6-1234-4c9c-4321-0bb2d6bf9b4a"));
// Key-value dictionary
var map = client.GetSecrets();
// Typed mapping by property names (case-insensitive)
var typed = client.GetSecrets<MySecrets>();
public class MySecrets
{
public string DB_PASSWORD { get; set; } = string.Empty;
public string API_TOKEN { get; set; } = string.Empty;
}
Development
- Server:
Sources/EasyVault.Server
— ASP.NET Core 9.0, SQLite. - Web client (optional):
Sources/easyvault.client
— Vite + React. - Tests:
Sources/EasyVault.Tests
.
cd .\Sources
dotnet build
dotnet test
# frontend (optional)
cd .\easyvault.client; npm i; npm run dev
License
MIT. See LICENSE file.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.Extensions.Configuration (>= 9.0.8)
- System.Configuration.ConfigurationManager (>= 9.0.8)
- System.Text.Json (>= 9.0.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.