Private S3 Storage

Github Project Stars Travis CI build status Documentation Status Github Issue Tracking Github LatestRelease

For hosting a private S3 Object storage we use at, created with Terraform and configured with Ansible.



For Interaction with the Hetzner API, you must be define a environment variable with the name HCLOUD_TOKEN. This Variable will be used from the Terraform Hetzner Cloud Provider, and the hcloud Dynamic Ansible Inventory plugin.

export HCLOUD_TOKEN=$(pass internet/

For the Dependency Management it is recommedet to use a seperated virtual env like:

virtualenv -p python3 ~/venvs/ansible-vagrant
source ~/venvs/ansible-vagrant/bin/activate
pip install -r requirements.txt
pre-commit install


The Terraform Source at the ./infrastructure folder, is splitted into two different Steps.
Firstly ./infrastructure/longterm_elements for manage the Hetzner Project and the Storage Volume, so be carefull when you call terraform destroy, you lost all your Stored Data!
The second part are located at ./infrastructure/minio_env, here we attach the Storage volume and create the computing instance. terraform destory only delete the Computing Instance! The Storage Volume are not removed, so all your data are safe!
Both parts used self written Terraform Modules from nolte/terraform-infrastructure-modules as wrapper for the Terraform hcloud provider.


For Installation and Maintenance, we use Ansible with a Dynamic Inventory. We splitted the production used inventory from the playbook Repository. For define the Inventory Location you can use a environment variable export ANSIBLE_INVENTORY=$(pwd)/inventory/prod/, or the -i parameter. At this Git Repository, you will only find MinIO Specific Configuration steps. For the base configutation we use the nolte/ansible_playbook-baseline-online-server scripts, like base firewall configruations or install Docker.

For quick usage you can use the gilt - A GIT layering tool by:

gilt overlay

now you have all required dependencies at the ./ext_debs working directory, and configure the basement with:

ansible-playbook ./ext_debs/ansible_playbook-baseline-online-server/master-configure-system.yml

Storage Box Installation

ansible-playbook maintenance/master-configure-system.yml