333 lines
4.0 KiB
Markdown
333 lines
4.0 KiB
Markdown
# Server Information
|
||
|
||
## Overview
|
||
|
||
SilverLinux is the primary self-hosted infrastructure server for Silver Solutions.
|
||
|
||
The server hosts source control, project management, collaboration, communication and supporting infrastructure services.
|
||
|
||
---
|
||
|
||
## Host Information
|
||
|
||
| Property | Value |
|
||
| ---------------- | ----------------------- |
|
||
| Hostname | silverlinux |
|
||
| Provider | OVH |
|
||
| Operating System | Ubuntu Server 24.04 LTS |
|
||
| Public IP | 51.255.83.140 |
|
||
|
||
---
|
||
|
||
## Hardware
|
||
|
||
| Resource | Value |
|
||
| -------- | -------------------- |
|
||
| CPU | Intel Xeon-D 1520 |
|
||
| Memory | 32 GB RAM |
|
||
| Storage | 2 × 480 GB SSD RAID1 |
|
||
|
||
---
|
||
|
||
## Installed Software
|
||
|
||
### Docker
|
||
|
||
Purpose:
|
||
|
||
* Container hosting
|
||
* Service isolation
|
||
* Deployment management
|
||
|
||
### Docker Compose
|
||
|
||
Purpose:
|
||
|
||
* Multi-container application deployment
|
||
* Service management
|
||
|
||
### PostgreSQL
|
||
|
||
Purpose:
|
||
|
||
* Primary PostgreSQL database platform
|
||
|
||
### Microsoft SQL Server Express
|
||
|
||
Purpose:
|
||
|
||
* Private SQL Server platform for compatible applications
|
||
|
||
### Fail2Ban
|
||
|
||
Purpose:
|
||
|
||
* SSH brute-force protection
|
||
|
||
### UFW
|
||
|
||
Purpose:
|
||
|
||
* Firewall management
|
||
|
||
---
|
||
|
||
## Docker Networks
|
||
|
||
### internal
|
||
|
||
Purpose:
|
||
|
||
Private communication between services.
|
||
|
||
Examples:
|
||
|
||
* Gitea → PostgreSQL
|
||
* OpenProject → PostgreSQL
|
||
|
||
---
|
||
|
||
### proxy
|
||
|
||
Purpose:
|
||
|
||
Public-facing services behind Nginx Proxy Manager.
|
||
|
||
Examples:
|
||
|
||
* Gitea
|
||
* OpenProject
|
||
* Jitsi Meet
|
||
* Portainer
|
||
* DbGate
|
||
|
||
---
|
||
|
||
## Running Services
|
||
|
||
* PostgreSQL
|
||
* Gitea
|
||
* OpenProject
|
||
* Jitsi Meet
|
||
* Portainer
|
||
* Nginx Proxy Manager
|
||
* BaGet
|
||
* Gitea Actions Runner
|
||
* Microsoft SQL Server 2022 Express
|
||
* DbGate
|
||
|
||
---
|
||
|
||
## Directory Structure
|
||
|
||
### Docker Services
|
||
|
||
```text
|
||
/srv/docker
|
||
```
|
||
|
||
Contains:
|
||
|
||
```text
|
||
/srv/docker/gitea
|
||
/srv/docker/openproject
|
||
/srv/docker/postgres
|
||
/srv/docker/jitsi
|
||
/srv/docker/portainer
|
||
/srv/docker/nginx-proxy-manager
|
||
/srv/docker/baget
|
||
/srv/docker/gitea-runner
|
||
/srv/docker/mssql
|
||
/srv/docker/dbgate
|
||
```
|
||
|
||
---
|
||
|
||
### Shared Secrets
|
||
|
||
```text
|
||
/srv/secrets/company.env
|
||
```
|
||
|
||
Contains:
|
||
|
||
* SMTP credentials
|
||
* Database passwords
|
||
* Application secrets
|
||
* MSSQL SA password
|
||
* Future DbGate password
|
||
* Future OAuth credentials
|
||
|
||
---
|
||
|
||
### Backups
|
||
|
||
```text
|
||
/srv/backups
|
||
```
|
||
|
||
Suggested structure:
|
||
|
||
```text
|
||
/srv/backups/daily
|
||
/srv/backups/weekly
|
||
/srv/backups/monthly
|
||
```
|
||
|
||
---
|
||
|
||
## Service Data Locations
|
||
|
||
### Gitea
|
||
|
||
```text
|
||
/srv/docker/gitea/data
|
||
```
|
||
|
||
---
|
||
|
||
### OpenProject
|
||
|
||
```text
|
||
/srv/docker/openproject/assets
|
||
```
|
||
|
||
---
|
||
|
||
### PostgreSQL
|
||
|
||
```text
|
||
/srv/docker/postgres/data
|
||
```
|
||
|
||
---
|
||
|
||
### Microsoft SQL Server Express
|
||
|
||
```text
|
||
/srv/docker/mssql/data
|
||
```
|
||
|
||
---
|
||
|
||
### DbGate
|
||
|
||
```text
|
||
/srv/docker/dbgate/data
|
||
```
|
||
|
||
---
|
||
|
||
### Nginx Proxy Manager
|
||
|
||
```text
|
||
/srv/docker/nginx-proxy-manager/data
|
||
/srv/docker/nginx-proxy-manager/letsencrypt
|
||
```
|
||
|
||
---
|
||
|
||
### Jitsi
|
||
|
||
```text
|
||
/srv/docker/jitsi
|
||
```
|
||
|
||
---
|
||
|
||
### BaGet
|
||
|
||
```text
|
||
/srv/docker/baget/data
|
||
```
|
||
|
||
---
|
||
|
||
### Gitea Actions Runner
|
||
|
||
```text
|
||
/srv/docker/gitea-runner
|
||
```
|
||
|
||
Runner:
|
||
|
||
```text
|
||
silverlinux-runner
|
||
```
|
||
|
||
---
|
||
|
||
## SSH Access
|
||
|
||
Primary user:
|
||
|
||
```text
|
||
ubuntu
|
||
```
|
||
|
||
Authentication:
|
||
|
||
* SSH key authentication
|
||
* Root login disabled
|
||
|
||
---
|
||
|
||
## Security
|
||
|
||
Implemented:
|
||
|
||
* UFW enabled
|
||
* Fail2Ban enabled
|
||
* Shared secrets stored outside Git repositories
|
||
* SSL certificates managed through Nginx Proxy Manager
|
||
* PostgreSQL not exposed publicly
|
||
* MSSQL port 1433 not exposed publicly
|
||
* Database administration is available only through authenticated HTTPS access to DbGate
|
||
* OpenID disabled in Gitea
|
||
|
||
---
|
||
|
||
## Email
|
||
|
||
Sender address:
|
||
|
||
```text
|
||
noreply@silveressence.net
|
||
```
|
||
|
||
SMTP credentials are stored in:
|
||
|
||
```text
|
||
/srv/secrets/company.env
|
||
```
|
||
|
||
Used by:
|
||
|
||
* Gitea
|
||
* OpenProject
|
||
|
||
---
|
||
|
||
## Disaster Recovery
|
||
|
||
This repository should contain enough information to rebuild the SilverLinux environment from scratch.
|
||
|
||
Recovery priorities:
|
||
|
||
1. Restore secrets
|
||
2. Restore PostgreSQL
|
||
3. Restore Nginx Proxy Manager
|
||
4. Restore Gitea
|
||
5. Restore OpenProject
|
||
6. Restore remaining services
|
||
|
||
---
|
||
|
||
## Related Documentation
|
||
|
||
* docs/secrets.md
|
||
* docs/security.md
|
||
* docs/backups.md
|
||
* docs/services.md
|
||
* docs/domains.md
|