Changes needed to have a cloud-viper docker version of ViPER#104
Draft
darrendignam wants to merge 41 commits intoopenpreserve:mainfrom
Draft
Changes needed to have a cloud-viper docker version of ViPER#104darrendignam wants to merge 41 commits intoopenpreserve:mainfrom
darrendignam wants to merge 41 commits intoopenpreserve:mainfrom
Conversation
merge upstream changes
Remove virtual box additions
Update initialise-env.yml
… and convert to a viper image
…linuxserver.io webtop. Added conditionals to hancle docker builds vs VM based builds
…l Machine version of ViPER
… image size down.
…in a future version
…system is under load, as they cant hear hard drives, or hear fans spinning up, under load some of these app kinda hang. I also removed the extra workspaces...
… appropriate within a docker container, security will be handled at the docker host level
…k and feel, building via github actions didnt work exactly like the locak workstation build process, but these changes get the same effect.
…vioulsy the script ran before the system was ready
…ation - Changed from 'su -' to 'runuser' to avoid authentication failures - Moved autostart file from /config to /etc/xdg/autostart (persists in image) - Removed /config operations from Ansible build (volume mount gets wiped) - Added desktop readiness check before configuration - Use xfconf-query directly for workspace count instead of XML file - Use --reload/--replace instead of pkill for desktop processes - Added 10 second autostart delay for stability
…ht for the ViPER Desktop experience
* FIX: Install Guest Additions via plugin
- remove uneeded sources from `ansible/requirements.yml`;
- rename to `ddhn.tools` to `viper.tools` in `ansible/initialise-env.yml`;
- remove requirements for ansible.galaxy from `Vagrantfile`; and
- updated maintainers documentation with plugin instructions.
* FIX: Maintainer docs
- added documentation for `id_rsa.pub` issue; and
- fixed old names in `docs/maintainer/index.md`.
* Update CNAME
* MAINT: Remove DDHN remains
- moved role `ansible/roles/ddhn.setup` to `ansible/roles/viper.setup`;
- changed ansible role and variable names from `ddhn` to `viper`;
- updated references to `ddhn-forge` so that they now read `ViPER`; and
- updated documentation site reference in `README.md`.
* FIX: Rename env vars file
* MAINT: Upgrade OS to Debian 12 Bookworm
- changed `config.vm.box` to `debian/bookworm64` in `Vagrantfile`;
- upgrade Java 11 to Java 17 see `ansible/roles/viper.setup/defaults/main.yml`; and
- changed all "stretch" or "bullseye" to "bookworm".
* MAINT: MediaArea Debian Packages
- upgraded MediaArea debian packages in `ansible/roles/viper.tools/defaults/main.yml`; and
- bumped ViPER version in `Vagrantfile`.
* FIX: MediaArea version
* FIX: MediaArea versions
* FIX: Revert veraPDF upgrade
* MAINT: veraPDF upgrade
- updated veraPDF from 1.22.3 -> 1.26.2.
* MAINT: JHOVE upgrade
- updated JHOVE from 1.26.1 -> 1.28.0
* MAINT: Upgrade DROID
- bumped DROID from 6.6.1 -> 6.7.0.
* FIX: New DROID tag format
* MAINT: Upgrade Apache Tika
- upgraded Apache Tika from 1.28.5 -> 2.9.2.
* FIX: Add handbrake to desktop icons
* SITE: Add favicons
- added favicon files generated from site menu logo to `docs/`;
- added `docs/site.webmanifest`; and
- updated `docs/_includes/header.html` to include favicons.
* FEAT: Site documentation tool versions
- added `docs/_data/vars.yml` with template details, e.g.:
- ViPER release details;
- tool versions; and
- guest OS details.
- used template vars to add dynamic variables to the index page and the tools page.
* Update index.md
Fixed a broken link to the OVA file.
* FIX: Casing of VirtualBox
* FIX: VirtualBox casing
* DOC: Links, headers and typos
* FIX: Line breaks for FAQS
* FIX: Newlines.
* DOC: ViPER 101 page
* Update CNAME
* FIX: Mention of exe file.
* FIX: Debian 12 cruft
- added list of packages to remove to `ansible/roles/viper.setup/defaults/main.yml`; and
- added step to remove packages at the end of `ansible/roles/viper.setup/tasks/server.yml`.
* FEAT: New home page banner.
- added `{{ page.banner }} variable to home page;
- added test for variable in `docs/_layouts/page.html`; and
- added new header image.
* FEAT: ViPER desktop wallpaper
- added `dconf` profiles and keys necessary to change the default desktop background;
- `ansible/roles/viper.setup/files/etc/dbconf/db/local.d/00-background`
- `ansible/roles/viper.setup/files/etc/dbconf/profile/user`
- added new JPEG background; and
- added necessary ansible steps to `ansible/roles/viper.setup/tasks/desktop.yml`,
* FIX: Create directories first.
* FIX: Create ALL directories first.
* FIX: We want bash completion.
* FIX: Default wallpaper issues
- now using Ansible's `community.general.dconf` module to change GNOME settings;
- added default wallpaper and show mounted volumes on desktop settings;
- removed the attempts to attack default dconf for all users;
- `/etc/dbconf/db/local.d/00-background`;
- `/etc/dbconf/profile/user`; and
- old `dconf` copy tasks;
- added quotes to some YAML values.
* DOC: Final review issues
- added notes to VirtualBox download instructions in `docs/setup/index.md`;
- update release details in `docs/_data/vars.yml`; and
- update link in `README.md` so it's templatised and will remain correct.
* REL: Versioned 1.2 alpha.
* Create CNAME
* Create jekyll-gh-pages.yml
* Deploy from docs
* FIX: update version numbers.
* Add files via upload
* DOC: ViPER v1.2 updates
- updated ViPER version -> v1.2;
- updated JHOVE version -> 1.30.1; and
- added desktop screen shot and tweaked wording.
* FIX: Broken hyperlink.
* Update CNAME to correct domain.
* FIX: Pages variable reference in README
- this is a GH pages substitution, but the Jekyll engine doesn't run here.
* ADD: Initial implementation of Packer build workflow and related files for ViPER OVA creation
* Updated the packer version to 1.11 and updated the workflows to match.
Update Packer build workflow and documentation; remove JSON config, add HCL config, and streamline installation steps
* Tweaks for the build to succeed
* Fix KVM acceleration for GitHub Actions
- Add accelerator variable to Packer config (defaults to kvm)
- Detect KVM availability in CI and fall back to TCG if unavailable
- Run Packer with sudo for KVM device access
- Set /dev/kvm permissions in workflow
* Fix Ansible file transfer by removing sudo from packer
- Use chmod 666 on /dev/kvm instead of running packer with sudo
- Removes Ansible temp directory permission issues
- Packer runs as regular user with KVM access
* Make SSH key copying conditional on key existence
- Check if ~/.ssh/id_rsa.pub exists before trying to copy it
- Prevents failure in CI environments without SSH keys
- Task will be skipped if key doesn't exist
* Add split zip archive for OVA to bypass 2GB GitHub limit
- Create multi-part zip with 1.9GB chunks
- Upload all parts to GitHub release
- Update installation instructions with extraction steps
- Supports standard zip tools and 7-Zip
* Add cleanup step to free disk space before split zip
- Remove QCOW2 file after OVA conversion (~5GB freed)
- Remove intermediate VMDK after OVA packaging (~5GB freed)
- Remove original OVA after zipping (~5GB freed)
- Frees ~15GB total to avoid 'No space left on device' error
- TODO comment for future file server upload option
* Fix GRUB bootloader device for VirtualBox compatibility
- Change from /dev/vda (QEMU virtio) to 'default'
- Allows GRUB to auto-detect correct boot device
- Fixes black screen / boot failure in VirtualBox/VMware
- OVA uses LSILOGIC SCSI which presents as /dev/sda, not /dev/vda
* Refactor user setup tasks to improve SSH key handling
Local vs GitHub Actions
And suppress the startup wizard on boot, via the config change
* Disable GNOME session restore to prevent Activities view on startup
- Add autostart entry to disable session save/restore
- Prevents GNOME from starting in Activities Overview
- Desktop and icons will be visible immediately on login
* Create autostart directory before adding session restore disable entry
- Fixes 'Destination directory does not exist' error
- Creates .config/autostart directory with proper permissions
* Set GNOME to use only 1 workspace instead of 4
- Add dconf settings to disable dynamic workspaces
- Set num-workspaces to 1
- Prevents multiple virtual desktops from showing
* Replace split zip with artifact server uploads
- Upload QCOW2, VMDK, and OVA to artifacts.opf-labs.org
- Include SHA256 checksums with each upload
- Update GitHub release with download links instead of files
- Remove disk cleanup and split zip steps
- Keep all three build formats for distribution
* Fix artifact server uploads with explicit content type and error handling
* Update artifact server API: add metadata upload, MD5+SHA256 hashes, and repo/tag URL structure
* Fix disk space issues: disable Packer compression, add cleanup steps, free space aggressively
* Re-enable disk compression and reduce disk size to 25GB to prevent runner space issues
* Use URL-encoded repository name for artifact server API calls
* Use filesystem-safe repo name: replace slash with dash (openpreserve-ViPER)
* Optimize workflow: Upload only QCOW2 and OVA, skip standalone VMDK
- Remove VMDK upload step from workflow (saves ~3GB bandwidth)
- Clean up standalone VMDK after packaging into OVA (saves disk space)
- Update release notes to show QCOW2 and OVA formats only
- VMDK is still available inside OVA for VMware users
* Fix workflow: Add tag sanitization and use VERSION_SAFE consistently
Addresses AI review findings:
- Add VERSION_SAFE output to sanitize tags (replace / and : with -)
- Use VERSION_SAFE in all artifact server URLs
- Prevents issues with tags containing special characters
- Ensures consistent path naming across uploads and release notes
* Disable build workflow, fix test-api workflow for token debugging
- Temporarily disable build-ova.yml tag triggers (manual dispatch only)
- Fix test-api.yml: Use single TEST_TAG for both uploads
- Add proper token visibility checks and partial token display
- Add --fail-with-body to see error responses
- Move env vars to step level for proper scope
- Add detailed URL logging for debugging
* Re-enable build-ova workflow tag triggers
- Restore automatic builds on tag push
- Keep test-api workflow for debugging
- Ready for production testing
* Increase curl upload timeout from 1h to 5h
- Change --max-time from 3600 to 18000 seconds
- Matches server timeout configuration
- Prevents premature curl aborts on slow uploads
- Critical for large QCOW2 and OVA file transfers
* Add .qcow2 file extension for proper file type recognition
- Add post-processor to rename QCOW2 output with .qcow2 extension
- Update workflow to reference viper-v1.2-alpha.qcow2
- Update convert-to-ova.sh to use .qcow2 extension
- Update release notes with correct filename
- Improves artifact server stats and file type detection
* Add VirtualBox display controller config to OVA output
- Add vbox:Machine section with VMSVGA display controller
- Set VRAM to 128MB for proper desktop display support
- Include minimal VirtualBox-specific hardware config
- Marked as optional (ovf:required=false) for compatibility
* Enhance OVF configuration with additional display and storage controller settings
* Fix VirtualBox display flickering and add guest additions
- Force X11 instead of Wayland in GDM configuration to prevent display flickering
- Add VirtualBox guest additions installation during Packer build
- Install virtualbox-guest-utils and virtualbox-guest-x11 from Debian repos
- Remove 3D acceleration from OVA configuration (not needed with guest additions)
X11 provides better compatibility with VirtualBox graphics drivers and
eliminates the flickering issues seen with Wayland. Guest additions are
now pre-installed, enabling clipboard sharing, drag-and-drop, and
auto-resize without user intervention.
* Enable contrib repo for VirtualBox guest additions packages
VirtualBox packages are in Debian's contrib repository which is not
enabled by default. Add repository configuration before attempting
to install the packages.
* Hide GRUB boot menu and improve guest additions setup
- Set GRUB timeout to 0 and hide boot menu for instant boot
- Add contrib and non-free repos for VirtualBox packages
- Graceful fallback if guest additions packages not available
Changes provide cleaner boot experience for non-technical users.
* Fix GitHub API rate limit for Packer plugin downloads
Use GITHUB_TOKEN for authenticated API requests when downloading
Packer plugins, increasing rate limit from 60 to 1000 requests/hour.
* Fix VirtualBox OVA import by adding required UUIDs
- Generate unique UUIDs for VM machine and disk image
- Use /proc/sys/kernel/random/uuid for GitHub Actions compatibility
- Fixes 'UUID has zero format' and 'Missing uuid attribute' errors
* Rewrite OVA conversion to match working VirtualBox OVF structure
- OVF based on proven ViPER v1.2 VirtualBox export
- SATA/AHCI controller instead of SCSI/LsiLogic
- Matching vbox:uuid between DiskSection and StorageControllers
- VMSVGA display controller with clipboard/drag-drop support
- No VirtualBox dependency: uses only qemu-img and tar
* Fix GRUB boot menu and guest additions for Debian 12
- Add grub-common to apt prerequisites for update-grub command
- Add update-grub handler triggered by GRUB config changes
- Rewrite install-guest-additions.sh for Debian 12 deb822 sources
- Add Fasttrack repository for VirtualBox guest packages
- Remove silent failure fallback on guest additions install
* Update GitHub Actions to fix Node.js 20 deprecation warning
- actions/checkout@v4 -> v4.2.2
- softprops/action-gh-release@v1 -> v2
---------
Co-authored-by: Carl Wilson <carl@openpreservation.org>
Resolves conflicts from packer-ci-cd merge: - Merged Docker/VM package branching with grub-common for VMs - Added update-grub handler for VM builds - Added Docker conditionals on GNOME tasks (VMs only) - Security/iptables tasks skip Docker builds - GRUB tasks skip Docker builds - SSH key existence check + Docker conditional - GNOME .config setup for VMs only - Unified icon lists (Docker/VM were identical) - Merged .gitignore for both Docker and Packer outputs
- Update README download links to artifacts.opf-labs.org/browse - Add QCOW2 format mention alongside OVA - Add Docker image section to README - Unify CI triggers: both Docker and OVA workflows now fire on the same v*.*.* and release-* tags - Remove redundant docker-v prefix tag requirement - Both workflows also support workflow_dispatch for manual runs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Unified codebase supporting both Docker containers (XFCE) and VMs (GNOME) via conditional Ansible logic.
Features
Docker Support
New Tools
Desktop Improvements (Docker)
Package Management
CI/CD
Build