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 00000000..c7954e2d Binary files /dev/null and b/apps/duckdns/metadata/logo.jpg differ