https://github.com/ccamel/terraforming-chez-moi
🪐 Personal Terraform configuration for shaping and managing my home infrastructure
https://github.com/ccamel/terraforming-chez-moi
Last synced: 5 months ago
JSON representation
🪐 Personal Terraform configuration for shaping and managing my home infrastructure
- Host: GitHub
- URL: https://github.com/ccamel/terraforming-chez-moi
- Owner: ccamel
- License: bsd-3-clause
- Created: 2025-05-25T14:25:20.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-01-17T07:48:28.000Z (6 months ago)
- Last Synced: 2026-01-17T18:33:13.104Z (6 months ago)
- Language: HCL
- Size: 104 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# terraforming-chez-moi
> 🪐 Personal Terraform configuration for shaping and managing my home infrastructure - including my Synology DS415+, self-hosted services, and all the weird experiments that come with being a geek at home.
[](https://github.com/ccamel/terraforming-chez-moi/actions/workflows/lint.yml)
[](https://conventionalcommits.org)
[](https://opensource.org/licenses/BSD-3-Clause)
## Purpose
This repo is exploratory, idiosyncratic, and not intended as a universal template.
But if you enjoy turning black-box appliances into programmable interfaces - welcome.
## Philosophy
This repository implements a simple GitOps approach for managing my home infrastructure: desired state is defined in [Terraform](https://developer.hashicorp.com/terraform), versioned in Git, and applied through automated workflows.
## Usage
This project uses [`just`](https://github.com/casey/just) as a command runner.
To see the available recipes, run: `just -l`.
```text
Available recipes:
apply # Apply infrastructure changes
check-fmt # Check Terraform code formatting
default # Default recipe
destroy # Destroy infrastructure
fmt # Format Terraform code
init # Initialize Terraform
plan # Plan infrastructure changes
tools # Ensure required tools are available for recipes in this Justfile.
validate # Validate Terraform configuration
```
## Overview
## Requirements
| Name | Version |
| --------------------------------------------------------------------- | ------- |
| [synology](#requirement_synology) | ~> 0.4 |
## Providers
| Name | Version |
| --------------------------------------------------------------- | ------- |
| [synology](#provider_synology) | 0.6.9 |
## Modules
No modules.
## Resources
| Name | Type |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| [synology_container_project.bobine](https://registry.terraform.io/providers/synology-community/synology/latest/docs/resources/container_project) | resource |
| [synology_container_project.infra_db](https://registry.terraform.io/providers/synology-community/synology/latest/docs/resources/container_project) | resource |
| [synology_container_project.n8n](https://registry.terraform.io/providers/synology-community/synology/latest/docs/resources/container_project) | resource |
| [synology_filestation_folder.bobine_local](https://registry.terraform.io/providers/synology-community/synology/latest/docs/resources/filestation_folder) | resource |
| [synology_filestation_folder.infra_db_pgdata](https://registry.terraform.io/providers/synology-community/synology/latest/docs/resources/filestation_folder) | resource |
| [synology_filestation_folder.n8n_data](https://registry.terraform.io/providers/synology-community/synology/latest/docs/resources/filestation_folder) | resource |
## Inputs
| Name | Description | Type | Default | Required |
| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | -------- | --------------------------------- | :------: |
| [adminer_published_port](#input_adminer_published_port) | Published port on the Synology host for Adminer web UI | `number` | `8081` | no |
| [bobine_ed25519_private_key_hex](#input_bobine_ed25519_private_key_hex) | Ed25519 private key hex for bobine | `string` | n/a | yes |
| [bobine_ed25519_public_key_hex](#input_bobine_ed25519_public_key_hex) | Ed25519 public key hex for bobine | `string` | n/a | yes |
| [bobine_published_port](#input_bobine_published_port) | Published port on the Synology host for bobine | `number` | `8082` | no |
| [dsm_host](#input_dsm_host) | The hostname of my Synology DSM instance | `string` | n/a | yes |
| [dsm_password](#input_dsm_password) | DSM password | `string` | n/a | yes |
| [dsm_user](#input_dsm_user) | DSM username | `string` | n/a | yes |
| [dsm_volume_projects](#input_dsm_volume_projects) | Root path for projects volume on DSM | `string` | `"/projects"` | no |
| [n8n_encryption_key](#input_n8n_encryption_key) | Encryption key for n8n sensitive data | `string` | `"my-32-character-random-string"` | no |
| [n8n_host](#input_n8n_host) | Host/IP that n8n should bind to (passed to the container as N8N_HOST) | `string` | `"0.0.0.0"` | no |
| [n8n_postgres_db](#input_n8n_postgres_db) | PostgreSQL database name for n8n | `string` | `"n8n-db-name"` | no |
| [n8n_postgres_password](#input_n8n_postgres_password) | PostgreSQL password for n8n | `string` | `"n8n-db-password"` | no |
| [n8n_postgres_user](#input_n8n_postgres_user) | PostgreSQL username for n8n | `string` | `"n8n-db-user"` | no |
| [n8n_published_port](#input_n8n_published_port) | Published port on the Synology host for n8n web UI | `number` | `5678` | no |
| [n8n_webhook_url](#input_n8n_webhook_url) | Public URL for n8n webhooks | `string` | `"localhost:5678"` | no |
| [postgres_password](#input_postgres_password) | Password for the PostgreSQL service | `string` | `"postgres-password"` | no |
| [postgres_user](#input_postgres_user) | Username for the PostgreSQL service | `string` | `"postgres-user"` | no |
## Outputs
No outputs.