From 2c931a1633c13fc9cbecee24be85300b3bfca93f Mon Sep 17 00:00:00 2001 From: Andrew Brereton Date: Fri, 18 Nov 2022 11:11:01 +1100 Subject: [PATCH] Adding gandi-livedns app --- README.md | 1 + apps/gandi-livedns/config.json | 72 +++++++++++++++++++++ apps/gandi-livedns/docker-compose.yml | 18 ++++++ apps/gandi-livedns/metadata/description.md | 60 +++++++++++++++++ apps/gandi-livedns/metadata/logo.jpg | Bin 0 -> 33997 bytes 5 files changed, 151 insertions(+) create mode 100644 apps/gandi-livedns/config.json create mode 100644 apps/gandi-livedns/docker-compose.yml create mode 100644 apps/gandi-livedns/metadata/description.md create mode 100644 apps/gandi-livedns/metadata/logo.jpg diff --git a/README.md b/README.md index 94af74f0..ce0ec8ce 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Filebrowser](https://github.com/filebrowser/filebrowser) - Web File Browser - [Firefly III](https://github.com/firefly-iii/firefly-iii) - A personal finances manager - [Freshrss](https://github.com/FreshRSS/FreshRSS) - A free, self-hostable RSS aggregator +- [gandi-livedns](https://github.com/jbbodart/gandi-livedns) - Update your Gandi DNS zone records with your WAN IP - [Ghost](https://github.com/TryGhost/Ghost) - Ghost - Turn your audience into a business - [Gitea](https://github.com/go-gitea/gitea) - Gitea - A painless self-hosted Git service - [Gotify](https://github.com/gotify/server) - Gotify - Simple server for sending and receiving notification messages diff --git a/apps/gandi-livedns/config.json b/apps/gandi-livedns/config.json new file mode 100644 index 00000000..774c8d2a --- /dev/null +++ b/apps/gandi-livedns/config.json @@ -0,0 +1,72 @@ +{ + "$schema": "../schema.json", + "name": "gandi-livedns", + "available": true, + "exposable": false, + "id": "gandi-livedns", + "tipi_version": 1, + "version": "latest", + "categories": ["network"], + "description": "The purpose of this container is to update DNS zone records using Gandi's LiveDNS (http://doc.livedns.gandi.net/) with your WAN IP. This image is extremely lightweight (Alpine Linux based) and has very few dependencies. The actual DNS update program is coded in shell script only.", + "short_desc": "Update your Gandi DNS zone records with your WAN IP", + "author": "jbbodart", + "source": "https://github.com/jbbodart/gandi-livedns", + "form_fields": [ + { + "type": "text", + "label": "Gandi API key", + "max": 24, + "min": 24, + "required": true, + "env_variable": "GANDI_LIVEDNS_APIKEY" + }, + { + "type": "text", + "label": "Record list (DNS records separated by ';'", + "required": true, + "env_variable": "GANDI_LIVEDNS_RECORD_LIST" + }, + { + "type": "text", + "label": "Domain (your Gandi domain name)", + "required": true, + "env_variable": "GANDI_LIVEDNS_DOMAIN" + }, + { + "type": "number", + "label": "Refresh interval in seconds (default 600)", + "required": false, + "env_variable": "GANDI_LIVEDNS_REFRESH_INTERVAL" + }, + { + "type": "number", + "label": "TTL in seconds (default 300)", + "required": false, + "env_variable": "GANDI_LIVEDNS_TTL" + }, + { + "type": "text", + "label": "Update A record (default yes)", + "required": false, + "env_variable": "GANDI_LIVEDNS_SET_IPV4" + }, + { + "type": "text", + "label": "Update AAAA record (default no)", + "required": false, + "env_variable": "GANDI_LIVEDNS_SET_IPV6" + }, + { + "type": "text", + "label": "Force the IPv4 address to be used in DNS A records", + "required": false, + "env_variable": "GANDI_LIVEDNS_FORCE_IPV4" + }, + { + "type": "text", + "label": "Force the IPv6 address to be used in DNS A records", + "required": false, + "env_variable": "GANDI_LIVEDNS_FORCE_IPV6" + } + ] +} diff --git a/apps/gandi-livedns/docker-compose.yml b/apps/gandi-livedns/docker-compose.yml new file mode 100644 index 00000000..f23bcc34 --- /dev/null +++ b/apps/gandi-livedns/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" +services: + gandi-livedns: + image: jbbodart/gandi-livedns:latest + container_name: gandi-livedns + restart: unless-stopped + environment: + APIKEY: ${GANDI_LIVEDNS_APIKEY} + RECORD_LIST: ${GANDI_LIVEDNS_RECORD_LIST} + DOMAIN: ${GANDI_LIVEDNS_DOMAIN} + REFRESH_INTERVAL: ${GANDI_LIVEDNS_REFRESH_INTERVAL} + TTL: ${GANDI_LIVEDNS_TTL} + SET_IPV4: ${GANDI_LIVEDNS_SET_IPV4} + SET_IPV6: ${GANDI_LIVEDNS_SET_IPV6} + FORCE_IPV4: ${GANDI_LIVEDNS_FORCE_IPV4} + FORCE_IPV6: ${GANDI_LIVEDNS_FORCE_IPV6} + networks: + - tipi_main_network diff --git a/apps/gandi-livedns/metadata/description.md b/apps/gandi-livedns/metadata/description.md new file mode 100644 index 00000000..fbb70fca --- /dev/null +++ b/apps/gandi-livedns/metadata/description.md @@ -0,0 +1,60 @@ +## gandi-livedns + +The purpose of this container is to update DNS zone records using Gandi's LiveDNS (http://doc.livedns.gandi.net/) with your WAN IP. + +This image is extremely lightweight (Alpine Linux based) and has very few dependencies. The actual DNS update program is coded in shell script only. + +### Configuration + +Mandatory variables: + +* APIKEY: your Gandi API key +* DOMAIN: your Gandi domain +* RECORD_LIST: DNS records to update separated by ";" + +Optional variables: + +* REFRESH_INTERVAL: Delay between updates (default: 10mn) +* TTL: Set Time To Live for records (default: 300) +* SET_IPV4: Update A record (default: yes) +* SET_IPV6: Update AAAA record (default: no) +* FORCE_IPV4: Force the IPv4 address to be used in DNS A records +* FORCE_IPV6: Force the IPv6 address to be used in DNS AAAA records + +### Examples + +The easiest way to run gandi-livedns is simply to *docker run* it from a computer in your network, leaving it running in the background with all the default settings. + +```shell +docker run -d \ + -e "APIKEY=" \ + -e "RECORD_LIST=blog;www;@" \ + -e "DOMAIN=your-gandi-hosted-domain.com" \ + jbbodart/gandi-livedns +``` + +This will update **blog.your-gandi-hosted-domain.com**, **www.your-gandi-hosted-domain.com**, and **your-gandi-hosted-domain.com** with your internet-facing IP (IPv4) every 10 minutes + +An equivalent setup using docker-compose could look like this: + +**docker-compose.yml** + +```yml +version: '3.7' +... + services: + ... + dyndns: + image: jbbodart/gandi-livedns + restart: unless-stopped + env_file: + - "dyndns.env" +``` + +**dyndns.env** + +```properties +APIKEY= +RECORD_LIST=blog;www;@ +DOMAIN=your-gandi-hosted-domain.com +``` diff --git a/apps/gandi-livedns/metadata/logo.jpg b/apps/gandi-livedns/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0457bc83e638499e562574ab9b35a2a36d857ac3 GIT binary patch literal 33997 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 literal 0 HcmV?d00001