https://github.com/nolte/personal-storage-infrastructure
Self Hosted MinIO Server at Hetzner Cloud
https://github.com/nolte/personal-storage-infrastructure
ansible-playbook hetzner-cloud minio minio-server s3-storage terraform
Last synced: about 1 year ago
JSON representation
Self Hosted MinIO Server at Hetzner Cloud
- Host: GitHub
- URL: https://github.com/nolte/personal-storage-infrastructure
- Owner: nolte
- Created: 2019-07-16T13:10:22.000Z (almost 7 years ago)
- Default Branch: develop
- Last Pushed: 2019-07-23T22:42:14.000Z (almost 7 years ago)
- Last Synced: 2025-04-12T08:53:35.650Z (about 1 year ago)
- Topics: ansible-playbook, hetzner-cloud, minio, minio-server, s3-storage, terraform
- Language: HCL
- Homepage: https://personal-storage-infrastructure.readthedocs.io/en/master/#
- Size: 20.5 KB
- Stars: 31
- Watchers: 0
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Private S3 Storage
[](https://github.com/nolte/personal-storage-infrastructure) [](https://travis-ci.org/nolte/personal-storage-infrastructure) [](https://personal-storage-infrastructure.readthedocs.io/en/stable/?badge=stable) [](https://github.com/nolte/personal-storage-infrastructure) [](https://github.com/nolte/personal-storage-infrastructure)
For hosting a private S3 Object storage we use [min.io](https://min.io/) at [hetzner.cloud](https://docs.hetzner.cloud), created with [Terraform](https://www.terraform.io/docs/providers/hcloud/index.html) and configured with Ansible.
**Precondition**
* For full Configuration you need the Base Scripts from [nolte/ansible_playbook-baseline-online-server](https://github.com/nolte/ansible_playbook-baseline-online-server).
* The Terraform Infrastructuon part used Modules from [nolte/terraform-infrastructure-modules](https://github.com/nolte/terraform-infrastructure-modules).
## Usage
For Interaction with the [Hetzner API](https://docs.hetzner.cloud/), you must be define a environment variable with the name ``HCLOUD_TOKEN``. This Variable will be used from the [Terraform Hetzner Cloud Provider](https://www.terraform.io/docs/providers/hcloud/), and the [hcloud Dynamic Ansible Inventory plugin](https://docs.ansible.com/ansible/latest/plugins/inventory/hcloud.html).
```bash
export HCLOUD_TOKEN=$(pass internet/hetzner.com/projects/personal_storage/token)
```
For the Dependency Management it is recommedet to use a seperated virtual env like:
```bash
virtualenv -p python3 ~/venvs/ansible-vagrant
source ~/venvs/ansible-vagrant/bin/activate
pip install -r requirements.txt
pre-commit install
```
### Infrastructure
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](https://github.com/nolte/terraform-infrastructure-modules) as wrapper for the [Terraform hcloud](https://www.terraform.io/docs/providers/hcloud/index.html) provider.
### Maintenance
For Installation and Maintenance, we use [Ansible](https://www.ansible.com/) 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](https://github.com/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](https://gilt.readthedocs.io/en/latest/) by:
```bash
gilt overlay
```
now you have all required dependencies at the ``./ext_debs`` working directory, and configure the basement with:
```bash
ansible-playbook ./ext_debs/ansible_playbook-baseline-online-server/master-configure-system.yml
```
#### Storage Box Installation
```bash
ansible-playbook maintenance/master-configure-system.yml
```
### Development
*Future Read:*
* [how-to-secure-access-to-minio-server-with-tls](https://docs.min.io/docs/how-to-secure-access-to-minio-server-with-tls.html#using-open-ssl)
* [minio-multi-user-quickstart-guide](https://docs.min.io/docs/minio-multi-user-quickstart-guide.html)
* [minio-client-quickstart-guide](https://docs.min.io/docs/minio-client-quickstart-guide.html)
* [resizing-hetzner-cloud-block-storage-volumes-on-the-fly](https://blog.ruanbekker.com/blog/2018/12/19/resizing-hetzner-cloud-block-storage-volumes-on-the-fly/)