A Dynamic DNS tool that updates changes to DNS services
A Blazor Server application for managing dynamic DNS updates. Keep your domains pointed at the right IP addresses, automatically.
- .NET 10.0 / Blazor Server (InteractiveServer mode)
- MudBlazor UI Framework
- SQLite with Entity Framework Core
- Basic Username/Password Authentication
- Serilog for Structured Logging
- .NET 10.0 SDK
- Docker & Docker Compose (for containerized development)
-
Copy environment file:
cp .env.example .env
-
Run the application:
cd StageZero dotnet run -
Access the app: https://localhost:5001
-
Copy environment file:
cp .env.example .env
-
Start everything:
docker-compose -f debug.docker-compose.yml up
-
Access the app: http://localhost:5000
StageZero/
├── StageZero/
│ ├── Application/ # UI Layer
│ │ ├── Areas/ # Feature areas (Home, etc.)
│ │ ├── Components/ # Shared components
│ │ └── Layout/ # MainLayout, AppVM
│ ├── Data/ # DbContext
│ ├── DataAdapters/ # Data access (Readers/Writers)
│ ├── Models/ # Domain entities
│ ├── Services/ # Business logic (Auth, etc.)
│ └── wwwroot/ # Static assets
├── debug.docker-compose.yml
├── .env.example
└── StageZero.sln
This project follows MVVM architecture:
- Views (Razor components) - Zero logic, bind to ViewModels
- ViewModels - UI state translation only
- Services - All business logic
- DataAdapters - Focused data access (Reader/Writer pattern)
The application uses a .env file for configuration. Copy .env.example to .env and configure as needed:
cp .env.example .envEmail Configuration (Optional):
To enable email verification for new user setup, configure SMTP settings in .env:
# Uncomment and configure these to enable email sending:
Email__SmtpHost=smtp.gmail.com
Email__SmtpPort=587
Email__SmtpUsername=your-email@gmail.com
Email__SmtpPassword=your-app-password
Email__FromEmail=your-email@gmail.com
Email__FromName=StageZeroGmail Setup:
- Enable 2-factor authentication on your Google account
- Generate an App Password: https://myaccount.google.com/apppasswords
- Use the App Password (not your regular password) in
Email__SmtpPassword
Note: If SMTP is not configured, verification codes will be logged to the console during development.
Each DNS provider (Cloudflare, etc.) can be individually enabled or disabled for updates:
- When adding a provider: Toggle "Enable DNS Updates" in the add provider dialog
- After adding: Use the toggle switch in the provider card header to enable/disable updates
When a provider is disabled:
- ✅ IP monitoring continues normally
- ✅ DNS records are still visible in the UI
- ❌ NO automatic DNS updates will be made for that provider
This is useful for:
- Testing without affecting production DNS
- Temporarily pausing updates for specific providers
- Development without valid DNS credentials
The project includes VS Code launch configuration with .env file support. To debug:
- Open the project in VS Code
- Press
F5or use the "Run and Debug" panel - Select ".NET Core Launch (web)"
The .env file will be automatically loaded when debugging.
- Dense header (no drawers)
- 80% body width, centered
- Scrollable content
SQLite is used for data storage. The database file is created automatically at StageZero.db.
MIT © CodeLifter LLC