# TirSystem IaC Server Setup for Linux Automated server setup and management based on configuration files with privacy by design concerns. ## Overview **Status**: Planning Phase This Infrastructure as Code (IaC) project aims to provide automated setup and deployment of a self-hosted server stack on Linux. The goal is to define your server configuration once and deploy reproducibly with Docker containers for optional services. ## Key Features - **Configuration-Driven Setup**: Define your entire server infrastructure in a configuration file - **Self-Hosted**: Own your code and data—no reliance on third-party platforms - **Docker-Based**: Containerized optional services for easy deployment and isolation - **Backup Management**: Automated backup of server to local PC - **Privacy by Design**: Built with privacy and data ownership as core principles ## Available Services The following services can be optionally deployed via Docker: - **Docker Mailserver** - Self-hosted email server - **Nginx** - High-performance web server and reverse proxy - **PlantUML** - Diagram generation service - **Gitea** - Lightweight Git service for self-hosted repositories - **PostgreSQL** - Relational database ## Architecture ``` Configuration File ↓ Setup Script ↓ ├─ Nginx Container ├─ Mailserver Container ├─ PlantUML Container ├─ Gitea Container └─ PostgreSQL Container ↓ Backup to Local PC ``` ## Getting Started ### Prerequisites - Linux system (recommended: Debian stable or later) - Docker and Docker Compose installed - Basic understanding of Docker and server configuration ### Installation Installation steps and automated setup will be documented as the project develops: 1. Clone the repository 2. Configure your server settings in the configuration file 3. Run the setup script 4. Services will be deployed according to your configuration ## Configuration Configure which services to deploy and their settings via the configuration file. Example: ```yaml services: nginx: true mailserver: true gitea: true plantuml: true postgres: true backup: enabled: true destination: /path/to/backup ``` ## Backup Automated server backup to local PC includes: - Service configurations - Persistent data volumes - Database snapshots ## Contributing Contributions are welcome! Please ensure any changes maintain the project's privacy-first principles. ## License This project is licensed under the **GNU Affero General Public License v3.0 (AGPL-3.0)**. See [LICENSE](LICENSE) file for details. ## Support For issues, questions, or feature requests, please open an issue in the repository. --- **Philosophy**: Privacy and data ownership matter. This project is built on the principle that you should own and control your infrastructure.