summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
13 hoursRotate gpg/ssh keysHEADmainAhmed Abdelhalim1-0/+0
13 hoursRemove rotated gpg keyAhmed Abdelhalim1-0/+0
13 hoursAdd 1 git-crypt collaboratorAhmed Abdelhalim1-0/+0
New collaborators: 8B329B4CA58513705BAD1262C3A28FB43A6B6226 Ahmed Abdelhalim <[email protected]>
28 hoursConfigure git globals for cgit roleAhmed Abdelhalim1-0/+7
2 daysDisable ipv6 completely and remove related codeAhmed Abdelhalim34-284/+10
Co-Authored-By: Claude.ai
2 daysCleanup and normalize the duplicate network addressesAhmed Abdelhalim8-9/+9
2 daysFix pve-lxc start and add missing docs about backupAhmed Abdelhalim2-0/+26
3 daysUpdate secretsAhmed Abdelhalim2-0/+0
3 daysFix archlinux testAhmed Abdelhalim1-10/+8
Co-Authored-By: Claude.ai
3 daysAdd awscli role with configuration on pi for garage backend w/testingAhmed Abdelhalim13-0/+138
3 daysAdd missing vars and fix mappings in examplesAhmed Abdelhalim2-1/+3
3 daysUpdate cgit varsAhmed Abdelhalim1-0/+0
3 daysAdd restore capabilities to backup role with --tags restore callAhmed Abdelhalim5-0/+188
Co-Authored-By: Claude.ai
3 daysFix clone URL on cgitAhmed Abdelhalim2-3/+7
3 daysDisable pacman sandbox in archlinux molecule image for QEMU compatAhmed Abdelhalim1-0/+8
pacman 7.0+'s alpm sandbox runs package download/extraction under a restricted user + seccomp filter. That filter needs syscalls QEMU's user-mode emulation doesn't support, so building this amd64 image on an arm64 host (e.g. Apple Silicon) fails immediately on the first pacman call: error: error restricting syscalls via seccomp: 22! error: switching to sandbox user 'alpm' failed! Confirmed directly: `pacman -Sy` fails with the sandbox enabled and succeeds cleanly with `DisableSandbox` set in pacman.conf. Scoped entirely to this test image, not any real role/target this repo manages. Safe for CI too — the sandbox is a defense-in-depth layer protecting the host from a compromised download during package fetch, irrelevant to a container that's destroyed immediately after each test run; disabling it changes no package-resolution or install behavior, only removes that extra isolation layer. Native (non-emulated) CI runners were never affected by the underlying bug either way. Co-Authored-By: Claude.ai
3 daysMask dhcpcd in molecule images to fix DNS resolution failuresAhmed Abdelhalim3-0/+18
dhcpcd is installed (and enabled by its package's default preset) in the raspberrypi/debian/ubuntu/proxmox molecule images to mimic each distro's default boot environment. Inside podman's virtual network there's no real DHCP server for it to negotiate with, so it only ever gets a link-local address and overwrites /etc/resolv.conf with an empty file (just dhcpcd's template comments, no nameserver line). This happens within the first minute or two of container boot — fast enough to break DNS resolution for apt-get tasks later in the same converge run. Reproduced and confirmed on all four affected scenarios (raspberrypi, debian, ubuntu, proxmox — each installs dhcpcd the same way): apt-get tasks failed with repeated "Temporary failure resolving" errors at varying points in the play depending on timing. archlinux/archlinux-gnome and git (Alpine) don't install dhcpcd and are unaffected. The network role already intends to remove dhcpcd/avahi-daemon entirely (replacing them with NetworkManager/systemd-resolved), but that removal task runs after earlier package-install steps — so the very service being phased out was sabotaging tasks that ran before it got purged. Masking dhcpcd.service at image-build time prevents it from ever running in these test containers, closing the race without touching any role's actual task order or logic (which reflects real hardware, where dhcpcd does get a valid lease from an actual router). Co-Authored-By: Claude.ai
3 daysFix pihole port allocation, this fixes caddy testingAhmed Abdelhalim1-2/+2
domain = {{ pihole_domain }} rendered as an unquoted bareword containing a dot (e.g. "pi.hole"), which is invalid TOML. TOML parsing is all-or-nothing, not line-by-line, so pihole-FTL rejected the entire config file on that one line and silently fell back to its compiled-in defaults — including binding its webserver directly to ports 80/443. That collided with caddy, which wants the same ports, causing caddy to crash-loop and get reported as "changed" (needing a restart) on every subsequent ansible run. Quoting the domain value lets the file parse successfully, which in turn surfaces a second, previously-unreachable bug: the custom webserver port (pihole_port) was rendered as a bare number, but Pi-hole v6 FTL requires each listener address to carry a trailing flag character (o = optional, s = TLS). Without it FTL rejects the value the same way and reverts to the 80/443 default. Appending "o" fixes that. Both bugs had to be fixed together: the quoting bug was blocking the parser from ever reaching the port line, so the port fix alone had no effect until parsing succeeded end-to-end. Co-Authored-By: Claude.ai
3 daysFix molecule testing DNS resolution failuresAhmed Abdelhalim1-0/+6
dhcpcd is installed (and enabled by its package's default preset) in the test container to mimic Raspberry Pi OS's default boot environment. Inside podman's virtual network there's no real DHCP server for it to negotiate with, so it only ever gets a link-local address and overwrites /etc/resolv.conf with an empty file (just dhcpcd's template comments, no nameserver line). This happens within the first ~1-2 minutes of container boot, which is fast enough to break DNS resolution for later apt-get tasks in the same converge run — observed failing on "network : Ensure network_packages are installed" with repeated "Temporary failure resolving 'deb.debian.org'". The network role already intends to remove dhcpcd/avahi-daemon entirely (replacing them with NetworkManager/systemd-resolved), but that removal task runs after the package-install step that was failing — so the very service being phased out was sabotaging the install of its replacement. Masking dhcpcd.service at image-build time prevents it from ever running in the test container, closing the race without touching the network role's actual task order or logic (which reflects real hardware, where dhcpcd does get a valid lease from an actual router). Confidence in this is medium Co-Authored-By: Claude.ai
4 daysFix debian/ubuntu nginx install correct repoAhmed Abdelhalim1-2/+4
4 daysFix mise arch linting issueAhmed Abdelhalim1-1/+1
4 daysFix nginx to use conventional ngix conf.dAhmed Abdelhalim10-15/+20
4 daysAdd missing crond dependency for alpineAhmed Abdelhalim5-0/+26
4 daysFix restic install and add backup roleAhmed Abdelhalim17-0/+319
Co-Authored-By: Claude.ai
4 daysFix alpine cloudflaredAhmed Abdelhalim1-18/+14
The APK approach never existed AI made that up Co-Authored-By: Claude.ai
4 daysAdd alpine platform to supported rolesAhmed Abdelhalim3-0/+9
4 daysUpdate nginx install to install latest stableAhmed Abdelhalim4-5/+38
4 daysUpdate caddy to install latest stable versionAhmed Abdelhalim4-5/+38
6 daysRefactor and clean up codeAhmed Abdelhalim5-15/+23
6 daysRename backup -> mount as a roleAhmed Abdelhalim11-45/+45
7 daysRemove python as a vim dependencyAhmed Abdelhalim1-1/+0
7 daysFix pve-lxc-ssh to install ssh correctlyAhmed Abdelhalim1-52/+57
7 daysUpdate cgit view (remove owner) and example varsAhmed Abdelhalim3-2/+3
7 daysFix pushing to cgit locallyAhmed Abdelhalim7-5/+29
7 daysAdd cloudflare tunnel configurationsAhmed Abdelhalim10-0/+143
7 daysRefactor proxy setup on cgit to simplify setupAhmed Abdelhalim16-161/+3
7 daysInstall wakeonlan CLIAhmed Abdelhalim3-0/+24
7 daysFix deploying cgit locallyAhmed Abdelhalim5-6/+4
8 daysFix testing git service on alpineAhmed Abdelhalim3-2/+25
8 daysTest proxy/cgit setupAhmed Abdelhalim3-1/+12
8 daysAllow cgit to theoretically deploy to public URLAhmed Abdelhalim3-5/+22
8 daysUpdate git hostnameAhmed Abdelhalim1-0/+0
8 daysAdd pve-ssh support with hardeningAhmed Abdelhalim12-18/+123
8 daysRefactor pve cgit to use generic proxyAhmed Abdelhalim28-46/+170
This is refactoring the PoC for deploying cgit on pve, to now move to a more standard deployment with dedicated agnonstic proxy role/container
9 daysAdd python3 to lxc containers to enable ansible provisioningAhmed Abdelhalim1-0/+17
9 daysFix cgit role install on alpineAhmed Abdelhalim1-0/+7
9 daysRename services to use .home.arpa network instead .localAhmed Abdelhalim8-7/+5
10 daysUse multiple packages instead of loopsAhmed Abdelhalim1-4/+3
10 daysAdd note about GT750M not supported and impossible to work with hyprlandAhmed Abdelhalim1-10/+42
Co-Authored-By: Claude.ai
10 daysRe-implement gt750 role to just increase performance of nouveau driverAhmed Abdelhalim5-2/+56
Co-Authored-By: Claude.ai
10 daysReplace hyprland_nvidia boolean with a fact from the roleAhmed Abdelhalim7-8/+8
This to make the role have less configurations, and less prune to human errors