Running Divinium Officium
Goal for this page is to document all the different components that are used to run Divinium Officium (DO), to deploy new servers for production deployment of DivinumOfficium. The codebase for this website is DivinumOfficium/divinum-officium.
The flow for getting code commit updates running onto the actual
- Code committed to DivinumOfficium/divinum-officium
- Github sends webhook to Docker Hub, which builds and stores the image
- Webserver is configured, with
ouroborosrunning in a container, to check every few minutes for a new image from Docker Hub. When it finds a new image, it pulls and runs the new image.
Initial tests showed that the automated commit to deploy pipeline was under 10 minutes.
Divinium Officium's technical information defines how the data files are defined, how to run the program and nuances of file contents and exceptions. The download files page defines the different ways the DO files can be used, including running DO in a Docker container.
Ansible is used to define, create and manages the servers which run DO.
The Ansible playbook.yml file is the definition file that Ansible runs to set up a new server running Divinium Officium. Some highlights:
- Using canonical repo for Ubuntu
- Image configured to use Ubuntu's "unattended-upgrades" package, which will apply the latest stable packages from Ubuntu
- If a reboot is needed for security patches, Ubuntu will reboot in the middle of the night
Note that Ansible operates on servers over your existing SSH credentials, so Ansible should be installed on your local workstation, and then use it to SSH into the remote instances and configure them. For more information on this, consult the Ansible documentation.
The application is built by Docker Hub, and the build image is stored there, publicly accessible for anyone to pull. The docker hub account is connected to the github repo, to rebuild in real time on new commits. Additionally, PR branches are tested against the build before merging.
Divinium Officium is hosted on Google Cloud Platform (GCP). Please contact email@example.com for any issues or questions.
There is no monitoring yet, but this is a desired thing we would like to add.