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
2022-08-06 07:52:11 -05:00

My Docker Setup

Scripting my way into the Docker world. I was unable to find a good tutorial on using and managing containers so this is what made sense to me based on practice with docker-compose. I am still new-ish to Docker and am likely to make mistakes, but you're welcome to learn with me. ;)

Disclaimer

Currently the project only focuses on apt based operating systems.

Other README's

Each ./Config/PROJECT/ folder also contains its own README file with specific information to running that sub project. This file's job is to cover the general Docker installation. The others then contain details on their program setup.

How To Use

Most of these commands benefit from being root. Something like a sudo su - if you feel comfortable with it. Otherwise be aware that using sudo may cause file permission conflicts when interacting with the configuration files and folders.

Install the project dependencies.

apt install git bash

Clone the project. You may choose anywhere, but /opt/Docker is recommended.

git clone https://github.com/hyperling/docker /opt/Docker

Load the environment variables.

source /opt/Docker/source.env

Install docker to the system using the official repos.

install.sh

Create an area to add a new product.

create.sh PROJECT_NAME

Edit the project's details.

vi /opt/Docker/Config/PROJECT_NAME/docker-compose.yml

Start all of the docker projects.

start.sh

Cross your fingers and hope to profit!

Folders

Config

Compose projects are set up here. Each folder should have a docker-compose.yml file set up.

Volumes

The data of the files go here if the Config is done correctly. I think this should be easier to remember than /var/lib/docker/volumes when it comes time for migrations. Hopefully all that'd be needed is to rsync /opt/Docker and run install.sh and then start.sh on the new server. You are welcome to use a directory other than /opt/Docker, this project is location agnostic.

bin

Scripts to help make life easier. Some are pretty basic, but others do nice things like handle the container IDs.

  • install.sh : Install dependencies on a new server with apt.
  • create.sh : Create a new folder with the needed yml file.
  • start.sh : Start all compose containers.
  • stop.sh : Stop all compose containers.
  • get_logs.sh : Create log files rather than using the docker log command or searching in /var/whatever.
  • uninstall.sh : If something goes wrong and you'd like to start from scratch without provisioning a new server then this should do the job.
Description
docker-compose setup with an abundance of scripts. Setups for Nextcloud, OnlyOffice, a reverse proxy, DNS server, dynamic DNS maintainer, etc.
Readme
Languages
Shell 68.4%
DIGITAL Command Language 24.9%
Dockerfile 6.1%
HTML 0.6%