From c508d313fde7893ef2aacdcd6d94395426a8c0e1 Mon Sep 17 00:00:00 2001 From: Sturdy <91910406+apollo-sturdy@users.noreply.github.com> Date: Tue, 6 Feb 2024 13:53:54 +0100 Subject: [PATCH] feat: Add Duck DNS --- apps/duckdns/config.json | 48 ++++++++++++++++++++++++++ apps/duckdns/docker-compose.arm64.yml | 20 +++++++++++ apps/duckdns/docker-compose.yml | 20 +++++++++++ apps/duckdns/metadata/description.md | 32 +++++++++++++++++ apps/duckdns/metadata/logo.jpg | Bin 0 -> 33377 bytes 5 files changed, 120 insertions(+) create mode 100644 apps/duckdns/config.json create mode 100644 apps/duckdns/docker-compose.arm64.yml create mode 100644 apps/duckdns/docker-compose.yml create mode 100644 apps/duckdns/metadata/description.md create mode 100644 apps/duckdns/metadata/logo.jpg diff --git a/apps/duckdns/config.json b/apps/duckdns/config.json new file mode 100644 index 00000000..13916c71 --- /dev/null +++ b/apps/duckdns/config.json @@ -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" + } + ] + } diff --git a/apps/duckdns/docker-compose.arm64.yml b/apps/duckdns/docker-compose.arm64.yml new file mode 100644 index 00000000..83f9dcae --- /dev/null +++ b/apps/duckdns/docker-compose.arm64.yml @@ -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 diff --git a/apps/duckdns/docker-compose.yml b/apps/duckdns/docker-compose.yml new file mode 100644 index 00000000..a679877c --- /dev/null +++ b/apps/duckdns/docker-compose.yml @@ -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 diff --git a/apps/duckdns/metadata/description.md b/apps/duckdns/metadata/description.md new file mode 100644 index 00000000..00edc73e --- /dev/null +++ b/apps/duckdns/metadata/description.md @@ -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-\ | +| arm64 | ✅ | arm64v8-\ | +| 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. diff --git a/apps/duckdns/metadata/logo.jpg b/apps/duckdns/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c7954e2d07c17ce20b499d9192c636515144920d GIT binary patch literal 33377 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 Ie3_~L5C3Ypx&QzG literal 0 HcmV?d00001