# VirtualDDNSRouter (VDR) VirtualDDNSRouter (VDR) is a lightweight dynamic DNS router solution that consists of two components: - **Client**: Updates the server with the current IP address of a service - **Server**: Acts as a reverse proxy that redirects requests to the correct IP address This solution is particularly useful for accessing services running on dynamic IP addresses through consistent URLs. ## Quick Start (Recommended Method) The easiest way to use VDR is by downloading the pre-built binaries: 1. Download the latest release for your platform from [https://git.mahdium.ir/mahdium/VDR/releases/latest](https://git.mahdium.ir/mahdium/VDR/releases/latest) 2. Extract the archives for both client and server 3. Configure each component using the provided examples 4. Run the server and client applications ## Components - [Client Documentation](VirtualDDNSRouter.Client/README.md) - For updating IP addresses - [Server Documentation](VirtualDDNSRouter.Server/README.md) - For routing requests ## Architecture ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ VDR Client │ │ VDR Server │ │ Service │ │ │ │ │ │ │ │ • Periodically │◄──────►│ • Maintains IP │◄──────►│ • Running on │ │ updates IP │ │ mappings │ │ dynamic IP │ │ with server │ │ • Redirects to │ │ • Exposes port │ │ │ │ correct IP │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ ┌─────────────────┐ │ User │ │ │ │ • Accesses │ │ service via │ │ consistent │ │ URL │ └─────────────────┘ │ ▼ ┌─────────────────┐ │ VDR Server │ │ │ │ • Redirects to │ │ current IP │ └─────────────────┘ ``` ## Alternative Deployment Methods ### Using Docker You can also run VDR using Docker: ```bash # Build the images docker-compose build # Run the services docker-compose up ``` See the [compose.yaml](compose.yaml) file for details. ### Building from Source If you prefer to build from source: ```bash # For the server cd VirtualDDNSRouter.Server dotnet build dotnet run # For the client cd VirtualDDNSRouter.Client dotnet build dotnet run ``` ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.