https://github.com/d1ceward/scaleway-ddns
Simple Scaleway dynamic DNS service using API
https://github.com/d1ceward/scaleway-ddns
api crystal ddns scaleway
Last synced: 2 months ago
JSON representation
Simple Scaleway dynamic DNS service using API
- Host: GitHub
- URL: https://github.com/d1ceward/scaleway-ddns
- Owner: d1ceward
- License: mit
- Created: 2022-08-18T01:52:38.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-12-22T16:34:11.000Z (3 months ago)
- Last Synced: 2025-12-24T04:44:37.418Z (3 months ago)
- Topics: api, crystal, ddns, scaleway
- Language: Crystal
- Homepage: https://d1ceward.github.io/scaleway-ddns/
- Size: 299 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# scaleway-ddns (v2.1.1)

[](https://hub.docker.com/r/d1ceward/scaleway-ddns)
[](https://github.com/users/d1ceward/packages/container/package/scaleway-ddns)
[](https://github.com/d1ceward/scaleway-ddns/issues)
[](https://github.com/d1ceward/scaleway-ddns/blob/master/LICENSE)
Simple Scaleway dynamic DNS service by API written in Crystal.
:rocket: Suggestions for new improvements are welcome in the issue tracker.
## Installation and Usage
### Docker
You can run `scaleway-ddns` using Docker or Docker Compose. Replace example values with your actual configuration.
#### Docker Hub
Run directly from Docker Hub:
```shell
docker run -d \
--name scaleway-ddns \
-e SCW_SECRET_KEY="your-scaleway-secret-key" \
-e IDLE_MINUTES="10" \
-e DOMAIN_LIST="myfirstdomain.com,anotherone.com" \
-e ENABLE_IPV4="true" \
-e ENABLE_IPV6="false" \
d1ceward/scaleway-ddns:latest
```
#### GitHub Packages
Run from GitHub Container Registry:
```shell
docker run -d \
--name scaleway-ddns \
-e SCW_SECRET_KEY="your-scaleway-secret-key" \
-e IDLE_MINUTES="10" \
-e DOMAIN_LIST="myfirstdomain.com,anotherone.com" \
-e ENABLE_IPV4="true" \
-e ENABLE_IPV6="false" \
ghcr.io/d1ceward/scaleway-ddns:latest
```
#### Docker Compose
Recommended for multi-container setups or easier management:
```yaml
services:
scaleway_ddns:
image: d1ceward/scaleway-ddns:latest # Use Docker Hub image
# Or use GitHub Packages:
# image: ghcr.io/d1ceward/scaleway-ddns:latest
restart: unless-stopped
environment:
SCW_SECRET_KEY: your-scaleway-secret-key
IDLE_MINUTES: 10
DOMAIN_LIST: myfirstdomain.com,anotherone.com
ENABLE_IPV4: true # Optional, enables IPv4 address updates (default: true)
ENABLE_IPV6: false # Optional, enables IPv6 address updates (default: false)
```
**Environment Variables:**
- `SCW_SECRET_KEY` (**required**): Your Scaleway API secret key.
- `IDLE_MINUTES`: Minutes between IP checks (default: 60).
- `DOMAIN_LIST`: Comma-separated domains to update.
- `ENABLE_IPV4`: Set to `true` or `false` to enable/disable IPv4 updates.
- `ENABLE_IPV6`: Set to `true` or `false` to enable/disable IPv6 updates.
---
### Linux
Download the executable:
```shell
wget --no-verbose -O scaleway-ddns https://github.com/d1ceward/scaleway-ddns/releases/download/v2.1.1/scaleway-ddns-linux-amd64
```
Make it executable:
```shell
chmod +x scaleway-ddns
```
Run the service:
```shell
./scaleway-ddns run
```
Documentation available here : https://d1ceward.github.io/scaleway-ddns/
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/d1ceward/scaleway-ddns. By contributing you agree to abide by the Code of Merit.
1. Fork it ()
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## Development building and running
1. Install corresponding version of Crystal lang (cf: `.crystal-version` file)
2. Install Crystal dependencies with `shards install`
3. Build with `shards build`
The newly created binary should be at `bin/scaleway-ddns`
### Running tests
```shell
crystal spec
```
## Environment Variables
- `SCW_SECRET_KEY` (**required**): Secret key from Scaleway required for IP update.
- `IDLE_MINUTES`: Number of minutes of inactivity between IP checks (default: 60, min: 1, max: 1440).
- `DOMAIN_LIST`: Comma-separated list of domains to update (e.g., `example.com,another.com`).
- `ENABLE_IPV4`: Enables IPv4 address updates. Set to `false` to disable (default: `true`).
- `ENABLE_IPV6`: Enables IPv6 address updates. Set to `true` to enable (default: `false`).
## Contributors
- [d1ceward](https://github.com/d1ceward) - creator and maintainer