# 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. ```