feat: Add Duck DNS

This commit is contained in:
Sturdy 2024-02-06 13:53:54 +01:00
parent 47cfbc19b1
commit c508d313fd
No known key found for this signature in database
5 changed files with 120 additions and 0 deletions

48
apps/duckdns/config.json Normal file
View File

@ -0,0 +1,48 @@
{
"name": "Duck DNS",
"available": true,
"port": 8026,
"exposable": false,
"id": "duckdns",
"description": "Duck DNS is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice",
"tipi_version": 1,
"version": "b14c520a-ls8",
"categories": ["network"],
"short_desc": "Duck DNS is a free Dynamic DNS service",
"author": "linuxserver.io",
"source": "https://github.com/linuxserver/docker-duckdns",
"website": "https://docs.linuxserver.io/images/docker-duckdns/",
"supported_architectures": ["arm64", "amd64"],
"uid": 1000,
"gid": 1000,
"form_fields": [
{
"type": "text",
"label": "Subdomains (comma separated). E.g. `mydomain1,mydomain2`.",
"max": 1024,
"min": 3,
"required": true,
"env_variable": "DUCKDNS_SUBDOMAINS"
},
{
"type": "password",
"label": "DuckDNS Token",
"max": 128,
"min": 3,
"required": true,
"env_variable": "DUCKDNS_TOKEN"
},
{
"type": "text",
"label": "Update IP (blank, ipv4, ipv6 or both). Setting this value uses external Cloudflare whoami service. Omitting the field uses DuckDNS for detection and only supports IPv4.",
"required": false,
"env_variable": "DUCKDNS_UPDATE_IP"
},
{
"type": "boolean",
"label": "Enable logging",
"required": false,
"env_variable": "DUCKDNS_ENABLE_LOG_FILE"
}
]
}

View File

@ -0,0 +1,20 @@
version: "3.9"
services:
duckdns:
container_name: duckdns # Should be exact same name as "id" field in config.json
image: lscr.io/linuxserver/duckdns:arm64v8-b14c520a-ls8 # Try to avoid "latest" tag. As it may break configs in the future.
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
- SUBDOMAINS=${DUCKDNS_SUBDOMAINS}
- TOKEN=${DUCKDNS_TOKEN}
- UPDATE_IP=${DUCKDNS_UPDATE_IP}
- LOG_FILE=${DUCKDNS_ENABLE_LOG_FILE}
volumes:
- ${APP_DATA_DIR}:/config
ports:
- ${APP_PORT}:80
restart: unless-stopped
networks:
- tipi_main_network

View File

@ -0,0 +1,20 @@
version: "3.9"
services:
duckdns:
container_name: duckdns # Should be exact same name as "id" field in config.json
image: lscr.io/linuxserver/duckdns:b14c520a-ls8 # Try to avoid "latest" tag. As it may break configs in the future.
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
- SUBDOMAINS=${DUCKDNS_SUBDOMAINS}
- TOKEN=${DUCKDNS_TOKEN}
- UPDATE_IP=${DUCKDNS_UPDATE_IP}
- LOG_FILE=${DUCKDNS_ENABLE_LOG_FILE}
volumes:
- ${APP_DATA_DIR}:/config
ports:
- ${APP_PORT}:80
restart: unless-stopped
networks:
- tipi_main_network

View File

@ -0,0 +1,32 @@
# DuckDNS
[Duckdns](https://duckdns.org/) is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.
[![duckdns](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/duckdns.png)](https://duckdns.org/)
## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/duckdns:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are:
| Architecture | Available | Tag |
| :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | ❌ | |
## Application Setup
- Go to the [duckdns website](https://duckdns.org/), register your subdomain(s) and retrieve your token
- Create a container with your subdomain(s) and token. If you own user.duckdns.org, you put `SUBDOMAINS=user` you would NOT put a sub subdomain like overseerr from overseerr.user.ducksdns.org
- It will update your IP with the DuckDNS service every 5 minutes (with a random jitter)
## Notice regarding automatic detection
Using the `UPDATE_IP` variable whatever its value (`ipv4`, `ipv6` or `both`) uses external *Cloudflare whoami* service to detect public IP addresses.
**Be aware that using this variable will query a third-party service other than DuckDNS.**
Omitting the `UPDATE_IP` variable uses DuckDNS for detection and only supports IPv4.

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB