diff --git a/apps/duckdns/config.json b/apps/duckdns/config.json new file mode 100644 index 00000000..ccf6f9ff --- /dev/null +++ b/apps/duckdns/config.json @@ -0,0 +1,47 @@ +{ + "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, + "no_gui": true, + "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"], + "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" + } + ] +} diff --git a/apps/duckdns/docker-compose.yml b/apps/duckdns/docker-compose.yml new file mode 100644 index 00000000..44b4870c --- /dev/null +++ b/apps/duckdns/docker-compose.yml @@ -0,0 +1,18 @@ +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}/data/config:/config + restart: unless-stopped + networks: + - tipi_main_network diff --git a/apps/duckdns/metadata/description.md b/apps/duckdns/metadata/description.md new file mode 100644 index 00000000..8f4911d7 --- /dev/null +++ b/apps/duckdns/metadata/description.md @@ -0,0 +1,16 @@ +# 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. + +## 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. diff --git a/apps/duckdns/metadata/logo.jpg b/apps/duckdns/metadata/logo.jpg new file mode 100644 index 00000000..c7954e2d Binary files /dev/null and b/apps/duckdns/metadata/logo.jpg differ