244 lines
2.7 KiB
Markdown
244 lines
2.7 KiB
Markdown
# Architecture Decisions
|
|
|
|
## Purpose
|
|
|
|
This document records important architectural and operational decisions made for SilverLinux.
|
|
|
|
The goal is to document not only what was implemented, but also why the decision was made.
|
|
|
|
---
|
|
|
|
## 2026-06-17
|
|
|
|
### Ubuntu 24.04 LTS Selected
|
|
|
|
Decision:
|
|
|
|
Use Ubuntu Server 24.04 LTS as the operating system.
|
|
|
|
Reason:
|
|
|
|
* Long-term support
|
|
* Large community
|
|
* Excellent Docker support
|
|
* Familiar administration tools
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## 2026-06-17
|
|
|
|
### Docker Standardization
|
|
|
|
Decision:
|
|
|
|
All services should run in Docker containers whenever possible.
|
|
|
|
Reason:
|
|
|
|
* Consistent deployment
|
|
* Easier backups
|
|
* Easier migrations
|
|
* Better isolation
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## 2026-06-17
|
|
|
|
### Nginx Proxy Manager Selected
|
|
|
|
Decision:
|
|
|
|
Use Nginx Proxy Manager as the reverse proxy solution.
|
|
|
|
Reason:
|
|
|
|
* Easy SSL management
|
|
* Simple administration
|
|
* User-friendly interface
|
|
* Fast deployment
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## 2026-06-17
|
|
|
|
### Gitea Selected
|
|
|
|
Decision:
|
|
|
|
Use Gitea for source control.
|
|
|
|
Reason:
|
|
|
|
* Self-hosted
|
|
* Lightweight
|
|
* GitHub-like experience
|
|
* Excellent Docker support
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## 2026-06-17
|
|
|
|
### PostgreSQL Selected
|
|
|
|
Decision:
|
|
|
|
Use PostgreSQL as the central database platform.
|
|
|
|
Reason:
|
|
|
|
* Reliability
|
|
* Mature ecosystem
|
|
* Supports multiple applications
|
|
* Strong backup tooling
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## 2026-06-17
|
|
|
|
### OpenProject Selected
|
|
|
|
Decision:
|
|
|
|
Use OpenProject for project management.
|
|
|
|
Reason:
|
|
|
|
* Mature platform
|
|
* Open source
|
|
* Strong planning features
|
|
* Work package management
|
|
* Time tracking
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## 2026-06-21
|
|
|
|
### Plane.so Removed
|
|
|
|
Decision:
|
|
|
|
Do not deploy Plane.so.
|
|
|
|
Reason:
|
|
|
|
* OpenProject fully satisfies requirements
|
|
* Reduces maintenance burden
|
|
* Avoids duplicate functionality
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## 2026-06-21
|
|
|
|
### Centralized Secrets Management
|
|
|
|
Decision:
|
|
|
|
Store shared credentials in a single secrets file.
|
|
|
|
Location:
|
|
|
|
```text
|
|
/srv/secrets/company.env
|
|
```
|
|
|
|
Reason:
|
|
|
|
* Avoid secrets in Docker Compose files
|
|
* Easier credential rotation
|
|
* Easier disaster recovery
|
|
* Reduced risk of accidental exposure
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## 2026-06-21
|
|
|
|
### OpenID Disabled in Gitea
|
|
|
|
Decision:
|
|
|
|
Disable OpenID authentication.
|
|
|
|
Reason:
|
|
|
|
* Not required
|
|
* Reduces attack surface
|
|
* Simplifies authentication model
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## 2026-06-21
|
|
|
|
### Gmail SMTP Selected
|
|
|
|
Decision:
|
|
|
|
Use Gmail SMTP for outbound email.
|
|
|
|
Sender:
|
|
|
|
```text
|
|
noreply@silveressence.net
|
|
```
|
|
|
|
Reason:
|
|
|
|
* Reliable delivery
|
|
* Easy setup
|
|
* Supports application notifications
|
|
|
|
Status:
|
|
|
|
Implemented
|
|
|
|
---
|
|
|
|
## Future Decisions
|
|
|
|
Document future decisions using the following template:
|
|
|
|
Date:
|
|
|
|
Decision:
|
|
|
|
Reason:
|
|
|
|
Alternatives Considered:
|
|
|
|
Status:
|