103 lines
2.8 KiB
Markdown
103 lines
2.8 KiB
Markdown
# 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.
|