Virtual DDNS Router
  • C# 85.4%
  • Dockerfile 14.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Mohammad Mahdi ee079d9cb5
Some checks failed
Build and Push Server Docker Image / build-server (push) Has been cancelled
Added LICENSE
2025-09-29 14:33:46 +03:30
.gitea/workflows Security is our #1 priority 2025-09-17 10:12:51 +03:30
VirtualDDNSRouter.Client Added AI generated README 2025-09-02 16:53:30 +03:30
VirtualDDNSRouter.Server Update README formatting for improved readability 2025-09-05 22:13:21 +03:30
.dockerignore Initial commit 2025-08-19 21:14:03 +03:30
.gitignore WIP - Add VirtualDDNSRouter.Client project with Docker support, YAML settings handling, and example configuration 2025-08-23 23:31:56 +03:30
compose.yaml WIP - Add VirtualDDNSRouter.Client project with Docker support, YAML settings handling, and example configuration 2025-08-23 23:31:56 +03:30
LICENSE Added LICENSE 2025-09-29 14:33:46 +03:30
README.md Added AI generated README 2025-09-02 16:53:30 +03:30
VirtualDDNSRouter.sln WIP - Add VirtualDDNSRouter.Client project with Docker support, YAML settings handling, and example configuration 2025-08-23 23:31:56 +03:30

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.

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
  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

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:

# Build the images
docker-compose build

# Run the services
docker-compose up

See the compose.yaml file for details.

Building from Source

If you prefer to build from source:

# 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 file for details.