Commit Graph
27 Commits
Author SHA1 Message Date
reachableceo ad129dd4b2 docs: Add commit conventions and update AGENTS.md
1. **Added COMMIT_CONVENTIONS.md**:
   - Documents conventional commit format (type: description)
   - Defines commit types: feat, fix, docs, style, refactor, perf, test, chore, ci
   - Specifies commit message structure with detailed description
   - Includes footer attribution requirements
   - Provides examples for simple and complex commits
   - Documents branching conventions
   - Emphasizes frequent commit and push workflow

2. **Updated AGENTS.md**:
   - Added COMMIT_CONVENTIONS.md to Related Documentation section
   - Makes conventions easily discoverable for agents

This ensures consistent commit format across all work and
enforces the push-as-you-go workflow.

Files Added:
- COMMIT_CONVENTIONS.md

Files Updated:
- AGENTS.md (documentation reference)

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-20 13:56:01 -05:00
reachableceo d67a8d38b0 chore: Update build paths after cleanup
Updated BUILD_DIR path to parent directory and adjusted ISO_DIR
location in build-iso.sh script.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-20 13:52:40 -05:00
reachableceo c96bd20708 feat: Add LightDM display manager for secure login
Implements minimal, secure login without username display:

1. **LightDM Installation**:
   - Added lightdm and lightdm-gtk-greeter packages
   - Enabled LightDM service by default
   - Set default target to graphical
   - Removed .xinitrc direct X boot

2. **Minimal and Secure Greeter**:
   - Configured /etc/lightdm/lightdm.conf:
     * hide-users=true (no username list displayed)
     * show-manual-login=true (manual username entry only)
     * allow-guest=false (no guest sessions)
     * XDMCP disabled (no remote X sessions)
   - Greeter shows only:
     * Username field (for manual entry)
     * Password field
     * Login button
   - No account picking, no user list

3. **Security Benefits**:
   - No user information leaked before authentication
   - Attacker cannot enumerate users
   - Manual username required (prevents user enumeration)
   - Minimal attack surface (LightDM is lightweight)
   - No guest sessions (strict access control)

4. **Removed Direct X Boot**:
   - No longer booting directly to IceWM via .xinitrc
   - Using proper display manager for authentication
   - More secure and standardized login process

Files Updated:
- config/preseed.cfg (LightDM packages, enabled service, late_command)
- config/security-config.sh (LightDM configuration, removed .xinitrc)

This implements the "minimal and secure display manager"
requirement with no usernames displayed and no account picking.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 12:37:04 -05:00
reachableceo 471ac78a4c feat: Complete ISO build system with security features
Major updates for production-ready ISO:

1. **Debian Version**:
   - Updated to Debian 13.3.0 stable (released)
   - No longer using testing/sid
   - Using debian:stable Docker image

2. **Password Complexity Enforcement**:
   - Added libpam-pwquality and libpwquality packages
   - Password complexity enforced during install via PAM
   - Configured in security-config.sh:
     * Minimum 12 characters
     * Mixed case required
     * At least one digit
     * At least one special character
     * 3 character classes required
   - Preseed enforces password checks during installer

3. **Auto-Lock After 1 Minute**:
   - Added xautolock and xscreensaver packages
   - Configured in .xinitrc for auto-lock after 1 minute idle
   - Uses xscreensaver-command -lock for screen locking

4. **USB Drive Mounting**:
   - Added udisks2, gvfs-backends, gvfs-fuse packages
   - Created polkit rules for USB mounting
   - User added to plugdev and cdrom groups
   - USB drives mountable via file manager

5. **WiFi and Bluetooth Disabling**:
   - Created config/disable-wifi-bt.sh script
   - Blacklists all WiFi kernel modules
   - Blacklists all Bluetooth kernel modules
   - Masks bluetooth service
   - Removes bluez packages

6. **First-Boot Verification**:
   - Created scripts/verify-system.sh
   - Created config/football-first-boot.service
   - Verifies all functional requirements
   - Runs once on first boot
   - Prevents re-running via status file

7. **ISO Build System**:
   - Updated to use Debian 13.3.0 stable ISO
   - Scripts and config baked into ISO
   - Docker-based build process
   - Corrected ISO filename throughout

8. **Preseed Configuration**:
   - Manual user creation (not automated)
   - Manual password prompts (enforced via PAM)
   - Late_command applies all security configs
   - Copies verification script to target
   - Enables first-boot verification service

Files Added:
- config/disable-wifi-bt.sh (WiFi/BT disabling)
- config/security-config.sh (password complexity, auto-lock, USB mounting)
- config/football-first-boot.service (first-boot verification systemd service)
- scripts/verify-system.sh (comprehensive verification script)

Files Updated:
- config/preseed.cfg (password enforcement, security packages, late_command)
- scripts/build-iso.sh (Debian 13.3.0, correct filenames)
- docs/FUNCTIONAL-REQUIREMENTS.md (verification strategy)
- AGENTS.md (documentation references)
- README.md (documentation references)

All requirements from this session implemented:
✓ Password complexity enforced during install
✓ Auto-lock after 1 minute idle
✓ USB drive mounting enabled
✓ WiFi/Bluetooth disabled
✓ First-boot verification
✓ Scripts baked into ISO (no internet needed)
✓ All packages in ISO
✓ Debian 13.3.0 stable

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 12:33:49 -05:00
reachableceo 76e2263117 docs: Add comprehensive functional requirements specification
Adds docs/FUNCTIONAL-REQUIREMENTS.md documenting:
- Core functionality (FR-1 to FR-12)
- Artifact properties (9 properties covering ISO, installed system, deployment)
- Non-functional requirements (performance, reliability, usability, security)
- User inputs required (username, passwords, disk selection)
- System components (OS, desktop, network, security)
- Compliance requirements (CIS Benchmarks, NIST SP 800-53)
- Testing requirements (installation, security, functional)
- Acceptance criteria (5 criteria for production readiness)
- Glossary and related documents

This document captures all functional requirements discussed
in previous sessions and serves as single source of truth for
system behavior, properties, and requirements.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 12:08:16 -05:00
reachableceo 54d988477f refactor: Complete directory cleanup
Finalizes directory cleanup by removing obsolete files:
- All old debootstrap build scripts (docker-*.sh, final-simple-build.sh)
- All old documentation from root (BUILD-*.md, DOCKER-*.md)
- Obsolete Dockerfiles (Dockerfile, Dockerfile.build)
- Obsolete chroot-overlay/ directory (now using preseed.cfg)
- Old build.sh (replaced by scripts/build-iso.sh)

All files are now in proper directories:
- scripts/: Build and test scripts
- docs/: All documentation
- config/: Configuration files
- logs/: Log files
- keys/: WireGuard keys

Repository is clean and ready for production.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 12:01:10 -05:00
reachableceo 2225244ca3 docs: Add comprehensive cleanup summary
Adds docs/CLEANUP-SUMMARY.md documenting:
- All cleanup and refactoring completed
- Directory structure changes (before/after)
- Files moved/archived/deleted
- Documentation updates made
- Build approach migration details
- Git commit history (11 commits)
- Current state (ready to build)
- Next steps for production

This provides complete reference for all refactoring work
and ensures future contributors understand changes made.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 12:00:13 -05:00
reachableceo 546c3ea5cf docs: Add comprehensive build documentation
Adds docs/BUILD-DOCUMENTATION.md explaining:
- Directory structure (clean and organized)
- Complete build process (5 steps)
- Preseed configuration details
- ISO deployment procedures (bare metal and VM)
- Docker container usage (dev and test)
- Security features applied during installation
- Troubleshooting guide
- Next steps for deployment

This replaces all scattered old documentation with a single,
comprehensive reference for the ISO-based build system.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:58:19 -05:00
reachableceo 8f9487b59d refactor: Clean up documentation directory
Moves obsolete documentation to docs/old/:
- BUILD-CONTINUOUS-STATUS.md (old build status)
- BUILD-PROGRESS.md (old build progress)
- BUILD-STATUS.md (old build status)
- DOCKER-README.md (old Docker build docs)
- DOCKER-SOLUTION.md (old Docker build docs)
- QUICKSTART.md (replaced by README.md)

Keeps relevant documentation in docs/:
- COMPLIANCE.md (compliance documentation)
- INCIDENT-RESPONSE.md (incident response)
- SECURITY-BASELINES.md (security baselines)
- SECURITY-POLICY.md (security policy)
- TEST-EVIDENCE.md (test evidence)

Documentation directory now clean and focused on current ISO approach.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:55:50 -05:00
reachableceo f8e98227b3 docs: Update README.md for ISO-based approach
Major updates to README.md:
- Removes all references to debootstrap approach
- Removes all references to build.sh and manual image creation
- Documents ISO build process:
  1. Run: ./scripts/build-iso.sh
  2. Output: output/football-installer.iso
- Documents ISO testing with VM:
  - Run: ./scripts/test-iso.sh
  - Boots 2GB VM from ISO
- Documents deployment for both physical and virtual
- Clarifies preseed automation (only user/password/disk selection needed)
- Updates prerequisites to only require Docker

README now accurately reflects ISO-based build methodology.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:54:51 -05:00
reachableceo 12124707f4 docs: Update AGENTS.md for ISO-based approach
Major updates to AGENTS.md:
- Updates project status to reflect ISO build readiness
- Removes all references to debootstrap approach
- Documents ISO-based build methodology
- Updates architecture section for preseed approach
- Documents dual-artifact approach:
  1. football-installer.iso (for bare metal and VM)
  2. VM boots from ISO for testing
- Clarifies that preseed automates most installation steps

Old debootstrap approach completely replaced with ISO approach.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:53:09 -05:00
reachableceo 7d286f8f2c refactor: Move active scripts to scripts/ directory
Moves current active scripts to scripts/ directory:
- build-iso.sh: Creates Debian ISO with preseed
- test-iso.sh: Tests ISO in QEMU VM

Keeps root directory clean and organized.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:46:53 -05:00
reachableceo e19a1739b3 chore: Update .gitignore for cleaner repository
Updates .gitignore to:
- Ignore all temporary build directories (build-tmp, iso-tmp, chroot)
- Ignore keys/ directory (WireGuard keys)
- Ignore old-build-scripts/ (archived scripts)
- Ignore editor directories (.crush/)
- Ignore temporary test artifacts (test-disk*.img, *.qcow2, *.img)
- Ignore VM state files (vm.pid, console.log)

This keeps repository clean and focused on source code.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:46:16 -05:00
reachableceo 8637b35484 fix: Use current sid/testing ISO instead of 13.0.0
Updates build-iso.sh:
- Removes assumption of 13.0.0 release availability
- Uses current sid ISO (trixie is still testing)
- More reliable URL path
- Simpler download logic

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:43:28 -05:00
reachableceo 977d578d04 fix: Reduce VM RAM to 2GB and improve screen handling
Updates test-iso.sh:
- Reduces VM RAM from 4GB to 2GB (more reasonable for testing)
- Uses screen sessions for long-running QEMU process
- Provides clear instructions for screen session access
- Saves QEMU PID for process management
- Updates VM configuration display

Screen session: football-iso-test
Access: screen -r football-iso-test

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:39:24 -05:00
reachableceo ddda3640cf fix: Update ISO download to Debian 13.0.0 release
Updates ISO download URL to use:
- Primary: Debian 13.0.0 released ISO
- Fallback: Testing branch ISO
Removes daily builds which are too unstable

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:37:26 -05:00
reachableceo 91fc4138a3 fix: Update ISO download URLs for Debian 13 availability
Debian 13 (trixie) doesn't have stable release ISO yet.
Updated build-iso.sh to:
- Try daily builds first (most current trixie)
- Fallback to testing branch
- Final fallback to current (sid) if needed

This should resolve ISO download failures.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:33:58 -05:00
reachableceo cc958836dd feat: Add ISO test script with QEMU VM boot
Adds test-iso.sh script for testing ISO installation:
- Verifies ISO exists before testing
- Creates 16GB test disk in Docker
- Boots QEMU VM from ISO (16GB RAM, 2 CPUs)
- Monitors console for installation progress
- Saves console output to log file
- Provides commands for manual VM access
- All verification done in Docker

This enables automated testing of ISO-based installer.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:30:22 -05:00
reachableceo 25cc69e897 feat: Add ISO build system with preseed configuration
Adds ISO creation capability for bare metal deployment:
- preseed.cfg: Debian installer automation file
  - Automates all installation steps
  - User only sets username/password, root password, target disk
  - Installs minimal package set
- build-iso.sh: Docker-based ISO build script
  - Downloads Debian 13 netboot ISO
  - Extracts ISO contents
  - Injects preseed configuration
  - Creates custom football-installer.iso
  - All work done in Docker container

ISO enables easy bare metal deployment with minimal user input.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:24:44 -05:00
reachableceo e4f19e19db docs: Add Project Orientation section to AGENTS.md
Adds comprehensive orientation section explaining:
- Project overview and purpose
- Build methodology (debootstrap-based, not ISO)
- Key design decisions
- Clarifies this is a pre-configured system, not installer

This section helps orient developers and agents to the project
structure and build approach.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:14:05 -05:00
reachableceo 9ad29858c5 docs: Update AGENTS.md with sfdisk issue and next steps
Updates to AGENTS.md:
- Add Issue 6: Missing sfdisk in Docker container
- Update Next Steps to reflect current build failure
- Update Docker images section with football-dev
- Update Docker containers status (none active)
- Document sfdisk root cause and proposed solution
- Update build status section with more detail

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:12:49 -05:00
reachableceo a676aff7f5 fix: Remove redundant sha256sum from Dockerfile.dev
sha256sum is already included in coreutils package.
Removing duplicate entry to simplify Dockerfile.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:10:54 -05:00
reachableceo 6182b10ba6 docs: Update AGENTS.md with accurate build status
Updates AGENTS.md to reflect actual build state:
- Last Updated: 2025-01-20
- Build status: Failed at Step 4 (sfdisk missing)
- Steps 1-3: COMPLETE (bootstrap, config, packages)
- Step 4: FAILED (partitioning)
- Added evidence of installed kernel version
- Added football-dev container information

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:08:36 -05:00
reachableceo 1196a3b855 feat: Add fat development Docker container
Adds Dockerfile.dev with comprehensive build tools including:
- debootstrap, qemu-utils, grub-efi
- parted, fdisk, kpartx for disk partitioning
- WireGuard, OpenSSH for networking
- All required utilities for full build system

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 11:05:59 -05:00
reachableceo 19bf4ec77d chore: Update .gitignore for build artifacts
Adds patterns to ignore build-tmp/, *.log, and *.key files
which are generated during the build process and should not be
committed to version control.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 10:57:50 -05:00
reachableceo 1af4ae6eb7 feat: Add Docker build infrastructure and documentation
This commit introduces the initial set of files related to the Docker-based build system for the Football project. It includes:
- Dockerfiles for build and test environments.
- Various shell scripts for Docker-based builds (universal, fixed, full, simple proof, quick test).
- Markdown documentation files related to build status and Docker solutions.
- .dockerignore to manage excluded files during Docker builds.

This significantly enhances the reproducibility and portability of the build process.

💘 Generated with Crush

Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
2026-01-20 10:57:09 -05:00
reachableceo 230c4f2d3d Initial commit 2026-01-13 16:38:57 +00:00