diff --git a/README.md b/README.md index 966c5157..09b885e7 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..34af0641 --- /dev/null +++ b/apps/gandi-livedns/config.json @@ -0,0 +1,73 @@ +{ + "$schema": "../schema.json", + "name": "gandi-livedns", + "available": true, + "exposable": false, + "id": "gandi-livedns", + "port": 8134, + "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..3a53013c --- /dev/null +++ b/apps/gandi-livedns/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.7" +services: + gandi-livedns: + image: jbbodart/gandi-livedns:latest + container_name: gandi-livedns + restart: unless-stopped + ports: + - ${APP_PORT}:80 + 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 00000000..0457bc83 Binary files /dev/null and b/apps/gandi-livedns/metadata/logo.jpg differ