diff --git a/.gitignore b/.gitignore index 7e0cbe1..ab422a1 100644 --- a/.gitignore +++ b/.gitignore @@ -139,3 +139,4 @@ share/vm share/container vm-builder/vm vm-builder/.vagrant +vm-builder/dangerzone.docker_image diff --git a/BUILD.md b/BUILD.md index a5b261d..be071d6 100644 --- a/BUILD.md +++ b/BUILD.md @@ -77,8 +77,7 @@ poetry install Install [Homebrew](https://brew.sh/) dependencies: ```sh -brew install vagrant create-dmg -brew install wget pkg-config opam dune ocaml +brew install create-dmg wget pkg-config opam dune ocaml ``` Install opam dependencies: diff --git a/install/macos/make-vm.sh b/install/macos/make-vm.sh index dad3c64..e906be8 100755 --- a/install/macos/make-vm.sh +++ b/install/macos/make-vm.sh @@ -15,12 +15,16 @@ mkdir -p share/bin cp vendor/hyperkit/build/hyperkit share/bin/hyperkit cp vendor/vpnkit/_build/install/default/bin/vpnkit share/bin/vpnkit -# Build ISO -cd vm-builder -vagrant up -vagrant ssh -- /vagrant/build-iso.sh -vagrant halt -cd .. +# Build the dangerzone-converter image +echo "Building dangerzone-converter image" +docker build dangerzone-converter --tag dangerzone.rocks/dangerzone +echo "Saving dangerzone-converter image" +docker save dangerzone.rocks/dangerzone -o vm-builder/dangerzone-converter.tar +echo "Compressing dangerzone-converter image" +gzip vm-builder/dangerzone-converter.tar + +# Build the ISO +docker run -v $(pwd)/vm-builder:/vm-builder alpine:latest /vm-builder/build-iso.sh # Copy the ISO to resources mkdir -p share/vm diff --git a/vm-builder/Vagrantfile b/vm-builder/Vagrantfile deleted file mode 100644 index 66ac30c..0000000 --- a/vm-builder/Vagrantfile +++ /dev/null @@ -1,25 +0,0 @@ -# -*- mode: ruby -*- -# vi: set ft=ruby : - -Vagrant.configure("2") do |config| - config.vm.box = "generic/alpine314" - config.vm.synced_folder "../dangerzone-converter", "/opt/dangerzone-converter" - config.vm.synced_folder ".", "/vagrant" - config.vm.provision "shell", inline: <<-SHELL - apk update - apk add alpine-sdk build-base apk-tools alpine-conf busybox fakeroot syslinux xorriso squashfs-tools sudo - apk add mtools dosfstools grub-efi - apk add podman p7zip - echo "user:100000:65536" >> /etc/subuid - echo "user:100000:65536" >> /etc/subgid - adduser user -D -G abuild - echo "%abuild ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/abuild - sudo -u user abuild-keygen -i -a -n - SHELL - - # Workaround VirtualBox bug in macOS Monterey - # https://github.com/hashicorp/vagrant/issues/12557#issuecomment-952026455 - config.vm.provider "virtualbox" do |v| - v.gui = true - end -end diff --git a/vm-builder/build-iso.sh b/vm-builder/build-iso.sh index 7066d92..f9030bd 100755 --- a/vm-builder/build-iso.sh +++ b/vm-builder/build-iso.sh @@ -2,52 +2,43 @@ ALPINE_TAG=v3.14.3 -# Set up podman -sudo modprobe fuse -sudo modprobe tun -sudo rc-update add cgroups -sudo rc-service cgroups start -sudo -u user podman system prune -a -f +# Install dependencies +apk add alpine-sdk build-base apk-tools alpine-conf busybox fakeroot xorriso squashfs-tools mtools dosfstools grub-efi p7zip abuild sudo -# Build the podman container -cd /opt/dangerzone-converter -sudo -u user podman build . --tag dangerzone.rocks/dangerzone +# Make keys for build +abuild-keygen -i -a -n # Setup aports cd ~/ -if [ -d ~/aports ]; then - echo "already downloaded" -else - wget https://gitlab.alpinelinux.org/alpine/aports/-/archive/master/aports-master.tar.gz - tar -xf ~/aports-master.tar.gz - mv ~/aports-master ~/aports -fi -cp /vagrant/mkimg.dangerzone.sh ~/aports/scripts/ -cp /vagrant/genapkovl-dangerzone.sh ~/aports/scripts/ -chmod +x ~/aports/scripts/mkimg.dangerzone.sh -chmod +x ~/aports/scripts/genapkovl-dangerzone.sh +wget https://gitlab.alpinelinux.org/alpine/aports/-/archive/master/aports-master.tar.gz +tar -xf ~/aports-master.tar.gz +mv ~/aports-master ~/aports +cp /vm-builder/mkimg.dz.sh ~/aports/scripts/ +cp /vm-builder/genapkovl-dz.sh ~/aports/scripts/ +chmod +x ~/aports/scripts/mkimg.dz.sh +chmod +x ~/aports/scripts/genapkovl-dz.sh # Set up the vm dir -rm -r /vagrant/vm -mkdir -p /vagrant/vm -chmod 777 /vagrant/vm +rm -r /vm-builder/vm +mkdir -p /vm-builder/vm +chmod 777 /vm-builder/vm # Make the iso cd ~/aports/scripts -sudo -u user sh mkimage.sh --tag "$ALPINE_TAG" \ - --outdir /vagrant/vm \ - --arch x86_64 \ +./mkimage.sh --tag "$ALPINE_TAG" \ + --outdir /vm-builder/vm \ + --arch $(uname -m) \ --repository http://dl-cdn.alpinelinux.org/alpine/v3.14/main \ --repository http://dl-cdn.alpinelinux.org/alpine/v3.14/community \ - --profile dangerzone -mv /vagrant/vm/alpine-dangerzone-${ALPINE_TAG}-x86_64.iso /vagrant/vm/dangerzone.iso + --profile dz +mv /vm-builder/vm/alpine-dz-${ALPINE_TAG}-$(uname -m).iso /vm-builder/vm/dangerzone.iso # Fix permissions -chmod 755 /vagrant/vm -chmod 644 /vagrant/vm/* +chmod 755 /vm-builder/vm +chmod 644 /vm-builder/vm/* # Extract vmlinuz and initramfs -cd /vagrant/vm +cd /vm-builder/vm 7z x dangerzone.iso boot/vmlinuz-virt 7z x dangerzone.iso boot/initramfs-virt mv boot/* . diff --git a/vm-builder/etc/init.d/dangerzone b/vm-builder/etc/init.d/dangerzone index ac79d20..ce101af 100755 --- a/vm-builder/etc/init.d/dangerzone +++ b/vm-builder/etc/init.d/dangerzone @@ -25,10 +25,8 @@ EOF # Create user /usr/sbin/adduser -D -u 1001 user - # Move containers into home dir - mkdir -p /home/user/.local/share - mv /etc/container-data /home/user/.local/share/containers - chown -R user:user /home/user/.local + # Load the dangerzone container + sudo -u user podman load -i /etc/dangerzone-converter.tar.gz # Allow podman containers to run echo "user:100000:65536" >> /etc/subuid diff --git a/vm-builder/genapkovl-dangerzone.sh b/vm-builder/genapkovl-dz.sh similarity index 76% rename from vm-builder/genapkovl-dangerzone.sh rename to vm-builder/genapkovl-dz.sh index 3856759..b68ffb8 100644 --- a/vm-builder/genapkovl-dangerzone.sh +++ b/vm-builder/genapkovl-dz.sh @@ -19,14 +19,11 @@ tmp="$(mktemp -d)" trap cleanup EXIT # Copy /etc -cp -r /vagrant/etc "$tmp" +cp -r /vm-builder/etc "$tmp" chown -R root:root "$tmp"/etc -# Fix permissions and add containers to /etc/container-data, temporarily -for WEIRD_FILE in $(find /home/user/.local/share/containers -perm 000); do - chmod 600 $WEIRD_FILE -done -cp -r /home/user/.local/share/containers "$tmp"/etc/container-data +# Copy container image to /etc, temporarily +cp /vm-builder/dangerzone-converter.tar.gz "$tmp"/etc # Start cgroups, required by podman rc_add cgroups default diff --git a/vm-builder/mkimg.dangerzone.sh b/vm-builder/mkimg.dz.sh similarity index 62% rename from vm-builder/mkimg.dangerzone.sh rename to vm-builder/mkimg.dz.sh index 92c873f..614d8e3 100644 --- a/vm-builder/mkimg.dangerzone.sh +++ b/vm-builder/mkimg.dz.sh @@ -1,8 +1,8 @@ -profile_dangerzone() { +profile_dz() { profile_virt - profile_abbrev="dangerzone" + profile_abbrev="dz" title="Dangerzone" desc="Copied from virt but with extra apks and an apkovl" - apkovl="genapkovl-dangerzone.sh" + apkovl="genapkovl-dz.sh" apks="$apks podman dropbear autossh python3 sudo" }