312 lines
8.4 KiB
Markdown
312 lines
8.4 KiB
Markdown
# Build Log
|
|
|
|
This file records chronological Atlas build and infrastructure milestones. Do not fabricate dates, command output, validation results, or operator names.
|
|
|
|
## Entries
|
|
|
|
### Date
|
|
|
|
2026-07-10
|
|
|
|
### Phase
|
|
|
|
Phase 2 nginx and firewall baseline.
|
|
|
|
### Objective
|
|
|
|
Install nginx, deploy a minimal Atlas status site, restrict SQL Server binding, and enable a safe UFW baseline.
|
|
|
|
### Changes
|
|
|
|
- Added `install/phases/40-nginx.sh`.
|
|
- Installed nginx `1.28.3` from Ubuntu `resolute-updates`.
|
|
- Added Atlas default nginx site under `config/nginx/`.
|
|
- Deployed static site content to `/var/www/atlas`.
|
|
- Enabled `/health` endpoint.
|
|
- Enabled UFW with default deny incoming and default allow outgoing.
|
|
- Allowed inbound TCP `22`, `80`, and `443`.
|
|
- Allowed inbound TCP `1433` only from `192.168.10.0/24`.
|
|
- Changed SQL Server container binding to `192.168.10.10:1433:1433`.
|
|
|
|
### Validation
|
|
|
|
- `nginx -t` passed.
|
|
- HTTP checks passed for `127.0.0.1` and `192.168.10.10`.
|
|
- `/health` returned HTTP 200.
|
|
- nginx restart test passed.
|
|
- SQL Server remained healthy after container recreation.
|
|
- SQL data persisted after container recreation.
|
|
- SQL LAN connection test passed.
|
|
- Atlas discovery and validation passed.
|
|
|
|
### Problems
|
|
|
|
- Initial nginx deployment encountered a duplicate default-server config while the Ubuntu default site was still enabled. The installer now validates before and after disabling the default site.
|
|
|
|
### Decisions
|
|
|
|
- Keep nginx HTTP-only until a later TLS phase.
|
|
- Keep the temporary Atlas status site separate from future PlotDirector proxy configuration.
|
|
- Do not rely on UFW alone for Docker-published SQL Server; bind SQL Server to the Atlas LAN address.
|
|
|
|
### Git Commit
|
|
|
|
Not yet committed.
|
|
|
|
### Operator
|
|
|
|
Codex.
|
|
|
|
### Date
|
|
|
|
2026-07-10
|
|
|
|
### Phase
|
|
|
|
Phase 2 Docker and SQL Server container platform.
|
|
|
|
### Objective
|
|
|
|
Install Docker Engine and run SQL Server 2025 Developer using Microsoft's official container image with persistent storage on `/sql`.
|
|
|
|
### Changes
|
|
|
|
- Added `install/phases/30-docker.sh`.
|
|
- Installed Docker Engine `29.6.1` from Docker's official Ubuntu `resolute` APT repository.
|
|
- Installed Docker Compose plugin `v5.3.1` and Docker Buildx plugin `v0.35.0`.
|
|
- Added user `nick` to the `docker` group.
|
|
- Added `install/phases/20-sql-server.sh`.
|
|
- Added SQL Server Compose configuration under `config/sql-server/`.
|
|
- Added `scripts/sql/sqlcmd.sh`.
|
|
- Deployed SQL Server 2025 Developer container `atlas-sql-server`.
|
|
- Stored SQL Server data under `/sql/mssql`.
|
|
- Stored live SQL Server environment secrets outside Git at `/etc/atlas/sql-server.env`.
|
|
|
|
### Validation
|
|
|
|
- Docker hello-world test passed.
|
|
- Docker non-root validation passed with `sg docker`.
|
|
- SQL Server container reached healthy state.
|
|
- SQL version and edition queries passed.
|
|
- Temporary database create, insert, read, and drop test passed.
|
|
- Container restart and Docker service restart tests passed.
|
|
- Container recreation with persistent storage passed.
|
|
- SQL installer idempotency passed after correcting protected env-file detection.
|
|
|
|
### Problems
|
|
|
|
- Native SQL Server packages are not supported for Ubuntu 26.04, so the official container route was used.
|
|
- Initial SQL container recreation exposed an env-file permissions issue. The installer now checks the protected env file through sudo.
|
|
|
|
### Decisions
|
|
|
|
- Use Docker's official APT repository rather than Ubuntu `docker.io`.
|
|
- Use SQL Server image `mcr.microsoft.com/mssql/server:2025-CU1-ubuntu-24.04`.
|
|
- Bind SQL Server port `1433` for LAN development access without changing UFW or router rules.
|
|
|
|
### Git Commit
|
|
|
|
Not yet committed.
|
|
|
|
### Operator
|
|
|
|
Codex.
|
|
|
|
### Date
|
|
|
|
2026-07-10
|
|
|
|
### Phase
|
|
|
|
Phase 2 .NET development platform.
|
|
|
|
### Objective
|
|
|
|
Install the .NET SDKs required for Atlas and PlotDirector development.
|
|
|
|
### Changes
|
|
|
|
- Added `install/phases/10-dotnet.sh`.
|
|
- Installed .NET 8 SDK `8.0.128`.
|
|
- Installed .NET 10 SDK `10.0.109`.
|
|
- Used the official Ubuntu .NET backports PPA for .NET 8.
|
|
- Used the built-in Ubuntu `resolute-updates` and `resolute-security` package sources for .NET 10.
|
|
- Did not install .NET 9, SQL Server, nginx, or Docker.
|
|
|
|
### Validation
|
|
|
|
- `bash -n install/phases/10-dotnet.sh` passed.
|
|
- `install/phases/10-dotnet.sh --help` passed.
|
|
- `install/phases/10-dotnet.sh --dry-run` passed.
|
|
- `install/phases/10-dotnet.sh` installed the missing SDKs.
|
|
- A second `install/phases/10-dotnet.sh` run detected both SDKs already installed.
|
|
- `dotnet --info`, `dotnet --list-sdks`, and `dotnet --list-runtimes` passed.
|
|
- Temporary .NET 8 and .NET 10 console projects built and ran outside the repository.
|
|
- `scripts/system/validate-host.sh` passed after installation.
|
|
|
|
### Problems
|
|
|
|
- Initial package-candidate detection in `10-dotnet.sh` was corrected after it failed under `pipefail` before installing SDK packages.
|
|
- No unresolved .NET installation problems recorded.
|
|
|
|
### Decisions
|
|
|
|
- Use Ubuntu package feeds for .NET SDK installation on Ubuntu 26.04.
|
|
|
|
### Git Commit
|
|
|
|
Not yet committed.
|
|
|
|
### Operator
|
|
|
|
Codex.
|
|
|
|
### Date
|
|
|
|
2026-07-10
|
|
|
|
### Phase
|
|
|
|
Phase 2A.
|
|
|
|
### Objective
|
|
|
|
Create the shared installation framework, system-discovery tooling, and host-validation conventions used by later Atlas installation scripts.
|
|
|
|
### Changes
|
|
|
|
- Added shared Bash installer libraries under `install/lib/`.
|
|
- Added `install/bootstrap.sh` as a read-only Phase 2A scaffold.
|
|
- Added baseline command manifest under `install/manifests/`.
|
|
- Added system discovery tooling under `scripts/system/`.
|
|
- Added host validation tooling under `scripts/system/`.
|
|
- Documented runtime directories for logs, reports, and future state.
|
|
- Documented free-space validation thresholds for `/`, `/srv`, and `/sql`.
|
|
- No .NET, SQL Server, nginx, or Docker installation was started.
|
|
|
|
### Validation
|
|
|
|
- Bash syntax validation passed for all Phase 2A shell scripts.
|
|
- `install/bootstrap.sh --help`, `--version`, and `--dry-run` passed.
|
|
- `scripts/system/discover-system.sh` passed in human-readable and JSON modes.
|
|
- Discovery JSON parsed successfully with `jq`.
|
|
- `scripts/system/validate-host.sh` passed with no required failures.
|
|
- Controlled failure-path tests returned the expected validation and usage exit codes.
|
|
- Generated logs and reports were written outside the repository.
|
|
|
|
### Problems
|
|
|
|
- No unresolved Phase 2A implementation problems recorded.
|
|
|
|
### Decisions
|
|
|
|
- Installer logs use `/var/log/atlas/install/`.
|
|
- Generated reports use `/var/log/atlas/reports/`.
|
|
- Future persistent installer state and marker files use `/var/lib/atlas/`.
|
|
- Phase 2A does not create speculative future component installer scripts.
|
|
|
|
### Git Commit
|
|
|
|
Not yet committed.
|
|
|
|
### Operator
|
|
|
|
Codex.
|
|
|
|
### Date
|
|
|
|
Not recorded.
|
|
|
|
### Phase
|
|
|
|
Baseline server preparation before Phase 1 repository completion.
|
|
|
|
### Objective
|
|
|
|
Prepare Atlas as a dedicated AI development server with storage, network, SSH, Git, Gitea access, Codex CLI, and standard development utilities.
|
|
|
|
### Changes
|
|
|
|
- Ubuntu 26.04 LTS installed.
|
|
- Hostname set to `atlas`.
|
|
- Static IP configured as `192.168.10.10`.
|
|
- OS SSD configured with full-disk LVM.
|
|
- OS logical volume expanded to use available LVM capacity.
|
|
- SQL SSD mounted at `/sql`.
|
|
- Development SSD mounted at `/srv`.
|
|
- SSH access configured.
|
|
- Gitea SSH authentication configured.
|
|
- Git installed.
|
|
- Git LFS installed.
|
|
- Node.js installed.
|
|
- Standard development utilities installed.
|
|
- Codex CLI installed and authenticated.
|
|
- Codex full-access mode configured with no approval prompts.
|
|
- Passwordless sudo configured for the dedicated development user.
|
|
- Infrastructure repository created and cloned at `/srv/repos/AI-Development-Server`.
|
|
|
|
### Validation
|
|
|
|
- Server identity and storage were later inspected during Phase 1 planning.
|
|
- Repository remote was later inspected during Phase 1 planning.
|
|
- Original command output was not captured in this repository.
|
|
|
|
### Problems
|
|
|
|
- No baseline problems were recorded in this repository.
|
|
|
|
### Decisions
|
|
|
|
- Atlas will use this repository as the authoritative infrastructure and operations source.
|
|
- Atlas will be rebuilt over time through documented, version-controlled, idempotent automation.
|
|
|
|
### Git Commit
|
|
|
|
Not yet committed.
|
|
|
|
### Operator
|
|
|
|
TODO: Confirm during the relevant implementation phase.
|
|
|
|
## Entry Template
|
|
|
|
Copy this template for future entries.
|
|
|
|
```markdown
|
|
### Date
|
|
|
|
YYYY-MM-DD
|
|
|
|
### Phase
|
|
|
|
Phase name or number.
|
|
|
|
### Objective
|
|
|
|
What this work was intended to achieve.
|
|
|
|
### Changes
|
|
|
|
- Change made.
|
|
|
|
### Validation
|
|
|
|
- Validation performed.
|
|
|
|
### Problems
|
|
|
|
- Problem encountered, or `None recorded.`
|
|
|
|
### Decisions
|
|
|
|
- Decision made, or `None recorded.`
|
|
|
|
### Git Commit
|
|
|
|
Commit hash, or `Not yet committed.`
|
|
|
|
### Operator
|
|
|
|
Name or role.
|
|
```
|