https://github.com/cibrandocampo/ovh-dyndns-client
DynDNS Client for OVH
https://github.com/cibrandocampo/ovh-dyndns-client
ipify-python network ovh-api
Last synced: 4 months ago
JSON representation
DynDNS Client for OVH
- Host: GitHub
- URL: https://github.com/cibrandocampo/ovh-dyndns-client
- Owner: cibrandocampo
- License: mit
- Created: 2022-04-07T18:16:46.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2026-03-01T02:26:05.000Z (5 months ago)
- Last Synced: 2026-03-01T05:55:56.576Z (5 months ago)
- Topics: ipify-python, network, ovh-api
- Language: Python
- Homepage:
- Size: 384 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DynDNS Client for OVH
*Your IP changes. Your domains shouldn't.* Point your OVH domains to a dynamic IP and forget about it — one container, no external dependencies, your server, your rules.

---
## A closer look — How it works?
### Hosts — one entry per domain record

Each host corresponds to a DynHost entry in your OVH control panel. Add as many as you need — subdomains, multiple domains, different zones — each with its own OVH credentials. The client updates them all in parallel on every IP change.
Creating a host takes seconds: hostname, OVH username, and password. That is all the client needs to keep the record in sync. Hosts can be edited or removed at any time without restarting the service.
---
### Settings — tune the behaviour without touching a config file

The check interval and log verbosity can be adjusted from the web interface at any time — no restart, no editing environment variables. Lower the interval if your IP changes frequently; raise it if you want to reduce external API calls.
Log level controls how much detail appears in the container logs, useful when troubleshooting a failed update or verifying that a specific host was reached.
---
## Features
- **Web Interface** — Manage hosts, view status and history from a browser
- **REST API** — Full-featured API with JWT authentication
- **SQLite Database** — Persistent storage, no external dependencies
- **Auto-updates** — Detects IP changes and updates DNS records automatically
- **Auto-retry** — Failed updates are retried on the next cycle
- **Docker-ready** — Multi-architecture support (amd64, arm64, arm/v7)
---
## Quick Start
1. **Create `docker-compose.yaml`:**
```yaml
services:
ovh-dyndns-client:
image: cibrandocampo/ovh-dyndns-client:stable
container_name: ovh-dyndns-client
restart: always
environment:
- JWT_SECRET=your-secret-key-min-32-chars-long!
ports:
- "8000:8000"
volumes:
- ./data:/app/data
```
2. **Run:**
```bash
docker compose up -d
```
3. **Access:** Open http://localhost:8000
Default credentials: `admin` / `admin` (password change required on first login)
---
## Quality
Every change goes through a CI pipeline (GitHub Actions) with no shortcuts:
- **Lint**: ruff check — enforces code style and catches common errors
- **Format**: ruff format — consistent formatting across the codebase
- **Tests**: pytest with a minimum **90% coverage** gate enforced in CI
The Codecov badge at the top of this page reflects the current state.
---
## Docker images
Pre-built multi-arch images (linux/amd64, linux/arm64, linux/arm/v7) are published to Docker Hub automatically.
| Tag | When |
|-----|------|
| `latest` | Every push to `main` |
| `stable` + `vX.Y.Z` | On GitHub release |
Images are also rebuilt weekly to pick up base-image and dependency security patches.
---
## Documentation
- [API Reference](https://github.com/cibrandocampo/ovh-dyndns-client/blob/main/docs/API.md) — REST API endpoints and examples
- [Configuration](https://github.com/cibrandocampo/ovh-dyndns-client/blob/main/docs/CONFIGURATION.md) — Environment variables and settings
- [Development](https://github.com/cibrandocampo/ovh-dyndns-client/blob/main/docs/DEVELOPMENT.md) — Architecture, dev setup, and Claude Code workflow
## Development
The development environment runs entirely inside Docker — no Python on the host. See [docs/DEVELOPMENT.md](https://github.com/cibrandocampo/ovh-dyndns-client/blob/main/docs/DEVELOPMENT.md) for the full setup, including how to run tests, linters, and install the pre-commit hook.
## Built with Claude Code
This project is developed with [Claude Code](https://claude.ai/code), Anthropic's AI coding assistant. Custom skills and commands are provided in `.claude/` to maintain project conventions and support a structured dev workflow. See [docs/DEVELOPMENT.md](https://github.com/cibrandocampo/ovh-dyndns-client/blob/main/docs/DEVELOPMENT.md#claude-code) for details.
## Links
- [GitHub Repository](https://github.com/cibrandocampo/ovh-dyndns-client)
- [Docker Hub](https://hub.docker.com/r/cibrandocampo/ovh-dyndns-client)
- [OVH DynHost Documentation](https://docs.ovh.com/gb/en/domains/hosting_dynhost/)
## Support
- **Issues**: [GitHub Issues](https://github.com/cibrandocampo/ovh-dyndns-client/issues)
- **Email**: [hello@cibran.es](mailto:hello@cibran.es)
## License
Released under the [MIT License](LICENSE) © 2022 Cibrán Docampo Piñeiro.
You are free to **use**, **modify**, **distribute**, and **self-host** this software — personally or commercially — as long as the original copyright notice is preserved. No warranty is provided.