Chad f205dbfcd5
Add DNS Server, Many Other Fixes/Enhancements (#12)
* Add 443 just in case since docker ps is showing it as active.

* Add two new projects.

* Add pre-testing content for DNS.

* Initial untested stab at the GitLab config.

* This project uses build, image name is not needed.

* Cleanup, untested guess at how to handle the variables in the pipe section.

* Filled out all files for DNS. Ready for testing.

* This seems to work, Ubuntu is hoarding port 53 though even though local services are shut off.

* `dnsmasq` container is testing successfully now.

* Don't allow a run unless the config files exist.

* Correct the crontab entry so that $RANDOM works correctly.

* Certs were not being saved by LetsEncrypt for Nginx correctly. Should be working now.

* Do not allow disabled folders into Git.

* Do not allow disabled folders into Git, 2.

* Do not allow disabled folders into Git, 3.

* Do not allow disabled folders into Git, 4.

* Do not allow disabled folders into Git, 5.

* Do not allow disabled folders into Git, 6.

* Don't add logs from anywhere.

* Add ping and dig to Nextcloud container for troubleshooting.

* Fix tabs.

* Make unfinished suffix consistent.

* Clean whitespace.

* Multiple names for a single IP address.

* Add 2nd example domain from hosts file.

* Add caching program Redis for Nextcloud.

* Add REDIS_HOST variable for automatic setup through config/redis.config.php.

* Upgrade to compose version 3.

* Move OnlyOffice to Nextcloud area.

* Change container name.

* Add container_name to all compose services.

* Shorten names for Nextcloud services.

* Comment possible OO fixes while trying to get container to use DNS.

* Remove OnlyOffice setting tests.

* Do not commit .env files, only their examples.

* Move OnlyOffice to be its own configuration again. Add sourcing of DNS settings so that local traffic routes correctly.

* Fix source file, BASH_SROUCE did not work without the shebang. Also fix bug for when it sees `..` and assumes current directory.

* dns.env file did not work out, env_file: element not being read before dns: element. Using folder-specific .env files instead, seems to be loaded before dns: element. Also move other values to the env files for better password privacy.

* Keep commands for cleaning up environment in one file.

* Update examples.

* Fix cd moving the user to the file's directory.

* Add note for user to set up the env file.

* Replace README files by unhiding the example files.

* Still need to specify the variables in the environment: element.

* Add header variable.

* Place host above database.

* Fix "JWS" typo.

* Do not use the HEADER parameter.

* Add vim to fix packages.

* Forget about the manual DNS servers for a minute, ensure host is set up properly first. Ubuntu is happy but Debian is not.

* Try using the host network explicitly.

* Temporarily give up on having Nextcloud server see local OnlyOffice server. Works when they are different machines but need them together.
2023-08-21 22:07:46 +00:00

2.1 KiB

Dynamic DNS Updater

This script is meant to be added to cron if you are using afraid.org as your dynamic DNS provider. Similar may be possible with sites such as dyn.org or noip.com but are currently not supported in this project. Links to some of these product's self-built solutions can be found below.

Afraid.org Version 2 Instructions

  1. Install this project.

    git clone https://github.com/Hyperling/docker $PROJECT_DIR
    
  2. Add your user key to $PROJECT_DIR/Config/DynamicDNS/private.key. The key can be found on this page after signing in.

  3. Add this line to the system's cron scheduling using a command like crontab -e. The sleep waits anywhere from 0 to 55 minutes due to the Random/10.

    @hourly bash -c 'sleep $(( $RANDOM / 10 )); $PROJECT_DIR/Config/DynamicDNS/update_dns.sh'
    

TESTING

Please ensure all testing is done with the test or dry run flags. If you run this for your private key outside of your network then your Dynamic DNS may become inaccurate. This program is only intended to be run in a production manner on the network which needs the Dynamic DNS pointing towards it.

Example

$ ./update_dns.sh -4
Updated DOMAIN from 1:2:3:4:5:6:7:8 to 1.2.3.4
HTTP200
Status 0 is acceptable.
$ ./update_dns.sh -6
Updated DOMAIN from 1.2.3.4 to 1:2:3:4:5:6:7:8
HTTP200
Status 0 is acceptable.

Afraid.org Version 1 Instructions

Add one of these to your crontab. Basically what the script does without fancy options and checks. Please be concious of how often you knock on the servers, and preferably add a 30-45 second sleep so that you do not hit near :00 seconds.

*/4 * * * * sleep 28; curl http://freedns.afraid.org/dynamic/update.php?YOUR_V1_KEY_GOES_HERE
*/7 * * * * sleep 42; wget -O http://freedns.afraid.org/dynamic/update.php?YOUR_V1_KEY_GOES_HERE

Other Dynamic DNS Hosts

No-IP.org Instructions

Please see the official guide on installing the Dynamic Update Client (DUC).

https://my.noip.com/dynamic-dns/duc