{"id":28642057,"url":"https://github.com/r0b0/debian-installer","last_synced_at":"2025-06-12T22:03:17.815Z","repository":{"id":47491326,"uuid":"401050448","full_name":"r0b0/debian-installer","owner":"r0b0","description":"Opinionated Debian Installer - alternative debian installer for laptops and desktop PCs","archived":false,"fork":false,"pushed_at":"2025-06-01T17:11:06.000Z","size":3345,"stargazers_count":61,"open_issues_count":9,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-02T03:11:13.211Z","etag":null,"topics":["debian"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/r0b0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-29T13:36:56.000Z","updated_at":"2025-05-21T11:26:16.000Z","dependencies_parsed_at":"2024-02-24T19:25:02.208Z","dependency_job_id":"bbd42088-2274-4674-948e-b3188521a9e5","html_url":"https://github.com/r0b0/debian-installer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/r0b0/debian-installer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r0b0%2Fdebian-installer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r0b0%2Fdebian-installer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r0b0%2Fdebian-installer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r0b0%2Fdebian-installer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/r0b0","download_url":"https://codeload.github.com/r0b0/debian-installer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r0b0%2Fdebian-installer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259539025,"owners_count":22873332,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debian"],"created_at":"2025-06-12T22:01:53.733Z","updated_at":"2025-06-12T22:03:17.807Z","avatar_url":"https://github.com/r0b0.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# Opinionated Debian Installer\n\nThis tool can be used to create a modern installation of Debian. \nOur opinions of what a modern installation of Debian should look like in 2025 are:\n\n - Debian 13 (Trixie)\n - Backports and non-free enabled\n - Firmware installed\n - Installed on btrfs subvolumes\n - Full disk encryption, unlocked by TPM\n - Fast installation using an image\n - Browser-based installer\n  \n## Limitations\n\n - **The installer will take over your whole disk**\n - Amd64 with EFI only\n - The installer is in english only\n\n## Downloads\n\n| Desktop environment | Download                                                                                                                                                                                                            | SHA-256 Checksum                                                        |\n|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------|\n| **Trixie**          | Debian 13 (testing)                                                                                                                                                                                                 |                                                                         |\n| KDE Plasma          | [opinionated-debian-installer-trixie-kde-plasma-20250601a.img (5.5GB)](https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/fr2rf1wke5iq/b/public/o/opinionated-debian-installer-trixie-kde-plasma-20250601a.img) | b16a8d4d edd39ba0 6eaaf8b6 9ed7ca96 6087fc54 30ee63db 3098a932 423e5767 |\n| Gnome               | [opinionated-debian-installer-trixie-gnome-20250602a.img (4.0GB)](https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/fr2rf1wke5iq/b/public/o/opinionated-debian-installer-trixie-gnome-20250602a.img)           | b102c542 cbfd0d2c d9564d50 a281b28d 0f229d28 60749c5b b9ed2eb1 bae8256e |\n| Server              | [opinionated-debian-installer-trixie-server-20250602a.img (2.5GB)](https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/fr2rf1wke5iq/b/public/o/opinionated-debian-installer-trixie-server-20250602a.img)         | 09fa62ec 04f3201b db5557e5 61215c70 d706be85 c0034d1f 8cff893a ee884a1a |\n| **Bookworm**        | Debian 12 (stable)                                                                                                                                                                                                  |                                                                         |\n| KDE Plasma          | [opinionated-debian-installer-bookworm-kde-plasma-20250201a.img (5.6GB)](https://debian-installer.lamac.cc/opinionated-debian-installer-bookworm-kde-plasma-20250201a.img)                                          | 8116fe40 ae3a4eb9 7d4d3294 8b2cafcd f5690aa5 02fa8be2 94ba26e5 61a7344d |\n| Gnome               | [opinionated-debian-installer-bookworm-gnome-20250223a.img (4.3GB)](https://debian-installer.lamac.cc/opinionated-debian-installer-bookworm-gnome-20250223a.img)                                                    | 154459c5 2ae267c0 80e58c0b d47a9ecb 1d993154 dba516f8 eefe1187 7ad187ef |\n| Server              | [opinionated-debian-installer-bookworm-server-20250111a.img (1.9GB)](https://debian-installer.lamac.cc/opinionated-debian-installer-bookworm-server-20250111a.img)                                                  | 261d5a25 05de1f19 22a153e8 bad31258 d043c87b 5d2ba266 780ca3d9 ff14f7be |\n\n## Instructions\n\n1. Download one of the live image files from the table above\n2. Write the image file to a USB flash drive. **Do not use ventoy** or similar \"clever\" tools - they are not compatible with these images. If you need a GUI, use [etcher](https://github.com/balena-io/etcher/releases) or [win32DiskImager](https://sourceforge.net/projects/win32diskimager/files/Archive/) or just use dd - `dd if=opinionated-debian-installer*.img of=/dev/sdX bs=256M oflag=dsync status=progress` where sdX is your USB flash drive \n3. Boot from the USB flash drive\n4. Start the installer icon from the desktop/dash, fill in the form in the browser and press the big _Install_ button\n5. Reboot and enjoy\n\n## Screencast \u0026 Screenshot\n\nScreenshot of the full installer GUI:\n\n![gui screenshot](readme-files/gui.png)\n\nVideo of installation of Debian with KDE Plasma (Bookworm version):\n\n[![Watch the video](https://img.youtube.com/vi/sbnKvGMcagI/maxresdefault.jpg)](https://youtu.be/sbnKvGMcagI?si=W9NvZygB8Z7-LCT8\u0026t=92)\n\n## Details\n\n- GPT disk partitions are created on the designated disk drive: \n  - UEFI ESP partition\n  - Optional swap partition - LUKS encrypted\n  - Root partition - [LUKS](https://cryptsetup-team.pages.debian.net/cryptsetup/README.Debian.html) encrypted (rest of the drive)\n- GPT root partition is [auto-discoverable](https://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html)\n- Btrfs subvolumes will be called `@` for `/` and `@home` for `/home` (compatible with [timeshift](https://github.com/teejee2008/timeshift#supported-system-configurations)); the top-level subvolume will be mounted to `/root/btrfs1`\n- The system is installed using an image from the live iso. This will speed up the installation significantly and allow off-line installation.\n- [Dracut](https://github.com/dracutdevs/dracut/wiki/) is used instead of initramfs-tools\n- [Systemd-boot](https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/) is used instead of grub\n- [Network-manager](https://wiki.debian.org/NetworkManager) is used for networking\n- [Systemd-cryptenroll](https://www.freedesktop.org/software/systemd/man/systemd-cryptenroll.html#--tpm2-device=PATH) is used to unlock the disk, using TPM (if available)\n- [Sudo](https://wiki.debian.org/sudo) is installed and configured for the created user \n\n## (Optional) Configuration, Automatic Installation\n\nEdit [installer.ini](installer-files/boot/efi/installer.ini) on the first (vfat) partition of the installer image.\nIt will allow you to pre-seed and automate the installation.\n\nIf you edit it directly in the booted installer image, it is /boot/efi/installer.ini\nReboot after editing the file for the new values to take effect.\n\n## Headless Installation\n\nYou can use the installer for server installation.\n\nAs a start, edit the configuration file installer.ini (see above), set option BACK_END_IP_ADDRESS to 0.0.0.0 and reboot the installer.\n**There is no encryption or authentication in the communication so only do this on a trusted network.**\n\nYou have several options to access the installer. \nAssuming the IP address of the installed machine is 192.168.1.29 and you can reach it from your PC:\n\n* Use the web interface in a browser on a PC - open `http://192.168.1.29/opinionated-debian-installer/`\n* Use the text mode interface - start `opinionated-installer tui -baseUrl http://192.168.1.29:5000`\n* Use curl - again, see the [installer.ini](installer-files/boot/efi/installer.ini) file for list of all options for the form data in -F parameters:\n\n      curl -v -F \"DISK=/dev/vda\" -F \"USER_PASSWORD=hunter2\" \\\n      -F \"ROOT_PASSWORD=changeme\" -F \"LUKS_PASSWORD=luke\" \\ \n      http://192.168.1.29:5000/install\n\n* Use curl to prompt for logs:\n\n      curl  http://192.168.1.29:5000/download_log\n\n## Testing\n\nIf you are testing in a virtual machine, attaching the downloaded image file as a virtual disk, you need to extend it first.\nThe image file that you downloaded is shrunk, there is no free space left in the filesystems.\nUse `truncate -s +500M opinionated*.img` to add 500MB to the virtual disk before you attach it to a virtual machine.\nThe installer will expand the partitions and filesystem to fill the device.\n\n### Libvirt\n\nTo test with [libvirt](https://libvirt.org/), make sure to create the VM with UEFI:\n\n1. Select the _Customize configuration before install_ option at the end of the new VM dialog\n2. In the VM configuration window, _Overview_ tab, _Hypervisor Details_ section, select _Firmware_: _UEFI_\n\n![virt-manager uefi screenshot](readme-files/virt-manager-uefi.png)\n\nTo add a TPM module, you need to install the [swtpm-tools](https://packages.debian.org/trixie/swtpm-tools) package.\n\nAttach the downloaded installer image file as _Device type: Disk device_, not ~~CDROM device~~.\n\n### Hyper-V\n\nTo test with the MS hyper-v virtualization, make sure to create your VM with [Generation 2](https://learn.microsoft.com/en-us/windows-server/virtualization/hyper-v/plan/Should-I-create-a-generation-1-or-2-virtual-machine-in-Hyper-V). \nThis will enable UEFI.\nTPM can be enabled and Secure Boot disabled in the Security tab of the Hyper-V settings.\n\nYou will also need to convert the installer image to VHDx format and make the file not sparse.\nYou can use [qemu-img](https://www.qemu.org/docs/master/tools/qemu-img.html) ([windows download](https://qemu.weilnetz.de/w64/)) and fsutil like this:\n\n    qemu-img convert -f raw -O vhdx opinionated-debian-installer-*.img odin.vhdx\n    fsutil sparse setflag odin.vhdx 0\n\nAttach the generated VHDx file as a disk, not as a ~~CD~~.\n\n## Hacking\n\nAlternatively to running the whole browser based GUI, you can run the `installer.sh` script manually from a root shell.\nThe end result will be exactly the same.\nJust don't forget to edit the configuration options (especially the `DISK` variable) before running it.\n\n### Creating Your Own Installer Image\n\n 1. Insert a blank storage device\n 2. Edit the **DISK** variable at the top of files `make_image_*.sh`\n 3. Execute the `make_image_*.sh` files as root\n\nIn the first stage of image generation, you will get a _tasksel_ prompt where you can select a different set of packages for your image.\n\n### Installer Image Structure\n\nThere are 3 GPT partitions on the installer image:\n\n 1. EFI boot partition\n 2. Base Image - Btrfs partition with maximum zstd compression. \n    When the live system is running, this is used as a [read-only lower device for overlayfs](https://docs.kernel.org/filesystems/overlayfs.html). \n    When installing the target system, the installer will copy this to the target system, mount it read-write, resize to expand to the whole partition and continue with the system installation.\n 3. Top Overlay - upper and work device for the overlayfs for the live system. The changes you make while the live system is running are persisted here.\n\n### Building the Front-End\n\nThe front-end is a [vue](https://vuejs.org/) application. \nYou need [npm](https://www.npmjs.com/) to build it.\nRun the following commands to build it:\n\n    cd frontend\n    npm run build\n\n### Building the HTTP Backend and the Text-User-Interface Frontend\n\nThe HTTP backend and TUI frontend is a [go](https://go.dev/) application.\nRun the following commands to build it:\n\n    cd backend\n    go build -o opinionated-installer\n\n### Configuration Flow\n\n```mermaid\nflowchart LR\n    A[installer.ini] --\u003e|EnvironmentFile| B(installer_backend.service)\n    B --\u003e|ExecStart| C[backend]\n    D(Web Frontend) ---\u003e|HTTP POST| C\n    E(TUI Frontend) ---\u003e|HTTP POST| C\n    G(curl) ---\u003e|HTTP POST| C\n    C --\u003e|environment| F[installer.sh]\n```\n\n### Output Flow\n\n```mermaid\nflowchart RL\n    C[backend] --\u003e|stdout| B(installer_backend.service)\n    C ---\u003e|websocket| D(Web Frontend)\n    C ---\u003e|websocket| E(TUI Frontend)\n    C ---\u003e|HTTP GET| G(curl)\n    F[installer.sh] --\u003e|stdout| C\n```\n\n## Comparison\n\nThe following table contains comparison of features between our opinionated debian installer and official debian installers.\n\n| Feature                                             | ODIN  | [Netinstall](https://www.debian.org/CD/netinst/) | [Calamares](https://get.debian.org/debian-cd/current-live/amd64/iso-hybrid/) |\n|-----------------------------------------------------|-------|--------------------------------------------------|------------------------------------------------------------------------------|\n| Installer internationalization                      | N     | Y                                                | Y                                                                            |\n| Mirror selection, HTTP proxy support                | N     | Y                                                | N                                                                            |\n| Manual disk partitioning, LVM, filesystem selection | N[4]  | Y                                                | Y                                                                            |\n| Btrfs subvolumes                                    | Y[2]  | Y[3]                                             | Y[2]                                                                         |\n| Full drive encryption                               | **Y** | Y[1]                                             | Y                                                                            |\n| Passwordless unlock (TPM)                           | **Y** | N                                                | N                                                                            |\n| Image-based installation                            | **Y** | N                                                | N                                                                            |\n| Non-free and backports                              | **Y** | N                                                | N                                                                            |\n| Browser-based installer                             | **Y** | N                                                | N                                                                            |\n\n[1] `/boot` needs a separate unencrypted partition\n\n[2] `@` and `@home` ([timeshift](https://github.com/linuxmint/timeshift#supported-system-configurations) compatible)\n\n[3] `@rootfs`\n\n[4] Fixed partitioning (see Details above), LUKS is automatic, BTRFS is used as filesystem\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr0b0%2Fdebian-installer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr0b0%2Fdebian-installer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr0b0%2Fdebian-installer/lists"}