{"id":17026441,"url":"https://github.com/zapthedingbat/create-dev-server","last_synced_at":"2026-05-13T23:34:29.140Z","repository":{"id":49543191,"uuid":"225154650","full_name":"zapthedingbat/create-dev-server","owner":"zapthedingbat","description":"Development server configuration","archived":false,"fork":false,"pushed_at":"2025-03-12T20:05:24.000Z","size":8208,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T03:02:25.791Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zapthedingbat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-01T12:04:21.000Z","updated_at":"2020-12-02T10:56:05.000Z","dependencies_parsed_at":"2023-01-23T11:45:59.166Z","dependency_job_id":"dfe718c4-b7bc-4125-b0de-b49d152e512b","html_url":"https://github.com/zapthedingbat/create-dev-server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zapthedingbat%2Fcreate-dev-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zapthedingbat%2Fcreate-dev-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zapthedingbat%2Fcreate-dev-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zapthedingbat%2Fcreate-dev-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zapthedingbat","download_url":"https://codeload.github.com/zapthedingbat/create-dev-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245007239,"owners_count":20546143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T07:32:43.625Z","updated_at":"2025-10-30T13:02:18.986Z","avatar_url":"https://github.com/zapthedingbat.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Create Development Server\n\nThis repository is a reference for setting up a basic development server running\nDocker swarm on CentOS. It can be used to quickly deploy containerised projects\nfor tools, development and testing.\n\n**This configuration is not intended to run, consumer facing, production\nsystems.** If you want to run production systems you might want to consider\nKubernetes as a managed service like\n[GKE](https://cloud.google.com/kubernetes-engine/),\n[AKS](https://azure.microsoft.com/en-us/services/kubernetes-service/) or\n[EKS](https://aws.amazon.com/eks/)\n\n## Host Machine\n\nThe host machine will run the docker engine in swarm mode. This can be a\nvirtualised or physical server. Add an `automation` user with SSH access and\n`sudo` permissions.\n\n- [Bare Metal](./docs/bare-metal-host.md)\n- [EC2 Instance](./docs/ec2-host.md)\n- [Hyper-V](./docs/hyper-v-host.md)\n\n## Docker Engine\n\nInstall Docker engine community edition on the server.\n\nAt the time of writing there is no official Centos 8 docker package. So we are\nfollowing the steps to work around this here\n[How to Install Docker on CentOS 8](https://linoxide.com/linux-how-to/how-to-install-docker-on-centos/).\nThe official instructions for installing docker on older versions of Centos can\nbe found here https://docs.docker.com/install/linux/docker-ce/centos/\n\n```\nsudo dnf -y install dnf-plugins-core\nsudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo\nsudo dnf -y install docker-ce --nobest\n```\n\nStart docker service and confirm that it has started\n\n```\nsudo systemctl enable --now docker\nsystemctl status docker\n```\n\nAdd the `automation` user to the `docker` group so it can execute `docker`\ncommands without `sudo`\n\n```\nsudo usermod -aG docker automation\n```\n\nNow log out and back in as the `automation` user for the group membership to\ntake effect.\n\nYou might need to disable the firewall service\n\n```\nsudo systemctl disable firewalld\n```\n\nInitialize a swarm mode\n\n```\ndocker swarm init\n```\n\n## Public internet access\n\n#### DNS\n\nYou might want to setup up a wildcard DNS record on a public domain or sub\ndomain that you own pointing to the public IP address of your server. e.g\n`*.example.com` or `*.myserver.example.com`.\n\n## Continuous Integration\n\n### Terraform\n\nWe'll use Terrafrom to\n[apply insfastructure changes using CI](https://learn.hashicorp.com/terraform/development/running-terraform-in-automation).\nThis means infrascructure changes are not made interactivly from developers\nmacheines but, instead are applied by the CI server as the result of changes\nbeing made to the description of the infrastructure in version control.\n\nTerraform maintains\n[it's own representation of state in a remote store](https://www.terraform.io/docs/state/remote.html).\nWhen the desired state of the infrastructure is changed, it compares the desired\nstate with it's own version of the state to determine what actions to take to\nreach the desired state.\n\nTerraform can kinda' bootstrap the creation of the remote store itself and then\nstart using it for state storage.\n\n#### Cloud platfrom automation user\n\nA cloud platfrom provider like AWS to can be used for Terraform remote state and\nservices like DNS, or starage. We want to use terrafrom to manage as much of our\ninfrastructure as possable so we'll need to give terrafrom the permissions it\nneeds to make changes in our cloud platform provider.\n\nCreate a user in your cloud provider that will be used by the CI server to apply\nterrafrom and create, update and delete resources. We'll call the user\n`automation` for consistancy.\n\n- [Amazon Web Services](./docs/aws-automation-user.md)\n- [Microsoft Azure](./docs/azure-automation-user.md)\n- [Google Cloud Platform](./docs/gcp-automation-user.md)\n\n#### Docker automation user\n\nWe also have the `automation` user on the Docker swarm host machine. The\ncredentials of this user are used to connect and apply changes to the docker\nservices configuration.\n\n```\ndocker_ssh_user = \"automation\"\ndocker_ssh_host = \"example.com\"\ndocker_ssh_port = 22\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzapthedingbat%2Fcreate-dev-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzapthedingbat%2Fcreate-dev-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzapthedingbat%2Fcreate-dev-server/lists"}