8.4 KiB

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.

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