Files
silverlinux-infra/docs/decisions.md
T
2026-06-21 17:03:02 +03:30

290 lines
3.8 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
---
## 2026-06-21 - Adopt Gitea Actions + Self-Hosted Runner for Package Publishing
Decision:
* Replace GitHub Actions with self-hosted Gitea Actions.
* Execute package publishing on SilverLinux using the global `silverlinux-runner`.
* Publish internal NuGet packages to BaGet.
* Store the runner registration token in `/srv/secrets/company.env` and publishing credentials in Gitea Actions Secrets.
* Use `[Package]` in commit messages to request commit-driven package publishing.
Reason:
* Keep source control, build execution and package hosting inside SilverLinux.
* Avoid storing credentials in repositories.
* Provide a simple, explicit package-release convention.
Status:
```text
Accepted
```
---
## 2026-06-21 - BaGet Secret Storage
Decision:
The BaGet API key is currently stored directly in the BaGet Docker Compose configuration.
Reason:
* Simplicity during initial deployment.
Future Plan:
Move the API key into the centralized SilverLinux secrets management system located at:
```text
/srv/secrets/company.env
```
when additional services begin consuming the same secret management approach.
---
## Future Decisions
Document future decisions using the following template:
Date:
Decision:
Reason:
Alternatives Considered:
Status: