From f47d7664ed2146f29f6fe7672845b4c5bed4bd50 Mon Sep 17 00:00:00 2001 From: Kenneth Stailey Date: Fri, 17 May 2024 14:20:12 -0400 Subject: [PATCH 1/2] Start of instant-conduwuit I will probably add a config toml file. --- instant-conduwuit/Vagrantfile | 104 ++++++++++++++++++ instant-conduwuit/setup-arch-linux-libvirt | 8 ++ instant-conduwuit/setup-arch-linux-virtualbox | 1 + 3 files changed, 113 insertions(+) create mode 100644 instant-conduwuit/Vagrantfile create mode 100644 instant-conduwuit/setup-arch-linux-libvirt create mode 100644 instant-conduwuit/setup-arch-linux-virtualbox diff --git a/instant-conduwuit/Vagrantfile b/instant-conduwuit/Vagrantfile new file mode 100644 index 00000000..209c067a --- /dev/null +++ b/instant-conduwuit/Vagrantfile @@ -0,0 +1,104 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# All Vagrant configuration is done below. The "2" in Vagrant.configure +# configures the configuration version (we support older styles for +# backwards compatibility). Please don't change it unless you know what +# you're doing. +Vagrant.configure("2") do |config| + config.vm.provider :libvirt do |libvirt| + libvirt.cpus = 4 + libvirt.memory = 4096 + # libvirt.graphics_port = 5901 + # libvirt.graphics_ip = '0.0.0.0' + # libvirt.video_type = 'qxl' + end + + config.ssh.username = "vagrant" + config.ssh.password = "vagrant" + + # The most common configuration options are documented and commented below. + # For a complete reference, please see the online documentation at + # https://docs.vagrantup.com. + + # Every Vagrant development environment requires a box. You can search for + # boxes at https://vagrantcloud.com/search. + config.vm.box = "generic/arch" + + # Disable automatic box update checking. If you disable this, then + # boxes will only be checked for updates when the user runs + # `vagrant box outdated`. This is not recommended. + # config.vm.box_check_update = false + + # Create a forwarded port mapping which allows access to a specific port + # within the machine from a port on the host machine. In the example below, + # accessing "localhost:8080" will access port 80 on the guest machine. + # NOTE: This will enable public access to the opened port + # config.vm.network "forwarded_port", guest: 80, host: 8080 + + # Create a forwarded port mapping which allows access to a specific port + # within the machine from a port on the host machine and only allow access + # via 127.0.0.1 to disable public access + # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" + + # Create a private network, which allows host-only access to the machine + # using a specific IP. + # config.vm.network "private_network", ip: "192.168.33.10" + + # Create a public network, which generally matched to bridged network. + # Bridged networks make the machine appear as another physical device on + # your network. + config.vm.network "public_network", + :dev => "br0", + :mode => "bridge", + :type => "bridge" + + # Share an additional folder to the guest VM. The first argument is + # the path on the host to the actual folder. The second argument is + # the path on the guest to mount the folder. And the optional third + # argument is a set of non-required options. + # config.vm.synced_folder "../data", "/vagrant_data" + + # Disable the default share of the current code directory. Doing this + # provides improved isolation between the vagrant box and your host + # by making sure your Vagrantfile isn't accessible to the vagrant box. + # If you use this you may want to enable additional shared subfolders as + # shown above. + # config.vm.synced_folder ".", "/vagrant", disabled: true + + # Provider-specific configuration so you can fine-tune various + # backing providers for Vagrant. These expose provider-specific options. + # Example for VirtualBox: + # + # config.vm.provider "virtualbox" do |vb| + # # Display the VirtualBox GUI when booting the machine + # vb.gui = true + # + # # Customize the amount of memory on the VM: + # vb.memory = "1024" + # end + # + # View the documentation for the provider you are using for more + # information on available options. + + # Enable provisioning with a shell script. Additional provisioners such as + # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the + # documentation for more information about their specific syntax and use. + # +config.vm.provision "shell", inline: <<-SHELL + echo "nameserver 1.1.1.2" > /etc/resolv.conf + sync + sleep 2 + pacman-key --init + echo 'Server = http://arch.mirror.constant.com/$repo/os/$arch' > /etc/pacman.d/mirrorlist + pacman -Suy --noconfirm + pacman -S --noconfirm --needed git base-devel + git clone https://aur.archlinux.org/yay-bin.git + cd yay-bin + chown vagrant . + su vagrant -c 'makepkg -si' + cp pkg/yay-bin/usr/bin/yay /usr/bin/yay + su vagrant -c 'yay -S --noconfirm conduwuit' + reboot +SHELL +end diff --git a/instant-conduwuit/setup-arch-linux-libvirt b/instant-conduwuit/setup-arch-linux-libvirt new file mode 100644 index 00000000..55526cf9 --- /dev/null +++ b/instant-conduwuit/setup-arch-linux-libvirt @@ -0,0 +1,8 @@ +#! /bin/bash + +yay -S vagrant libvirt virt-manager qemu-system-x86 qemu-img qtile +sudo usermod -a -G libvirt $(whoami) +sudo systemctl enable --now libvirtd +export VAGRANT_DISABLE_STRICT_DEPENDENCY_ENFORCEMENT=1 +vagrant plugin install vagrant-libvirt +echo You must login again before starting vagrant. diff --git a/instant-conduwuit/setup-arch-linux-virtualbox b/instant-conduwuit/setup-arch-linux-virtualbox new file mode 100644 index 00000000..664b0f7e --- /dev/null +++ b/instant-conduwuit/setup-arch-linux-virtualbox @@ -0,0 +1 @@ +yay -S virtualbox vagrant From b513d50d2eee1aae808e3ea167b76c05572a4383 Mon Sep 17 00:00:00 2001 From: Kenneth Stailey Date: Fri, 17 May 2024 15:28:29 -0400 Subject: [PATCH 2/2] Added documenation --- instant-conduwuit/README.txt | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 instant-conduwuit/README.txt diff --git a/instant-conduwuit/README.txt b/instant-conduwuit/README.txt new file mode 100644 index 00000000..764e6cac --- /dev/null +++ b/instant-conduwuit/README.txt @@ -0,0 +1,33 @@ +You will need a public IP address with a DNS name. + +Be sure and set the user name and password in the Vagrentfile. +Make sure that there is no other VM named "arch" or edit the + Vagrantfile to include setting the hostname. + +The helper scripts: + setup-arch-linux-libvirt + setup-arch-linux-virtualbox +are there to help you install either KVM/QEMU/libvirt or VirtualBox. +Read those scripts and apply any missing configuration to you Computer. + +To get the VM to launch, just run: + vagrant up + +Once the VM is running, login to it using the user name and password + from the Vagrantfile which you should have modified like in the + first instruction. + +Once more than 25 minutes have passed, you can ssh into your VM: + ssh vagrant@arch + +Edit /etc/conduwuit.toml changing server_name to be + your public DNS name. + +Then just run: + +sudo conduwuit -c /etc/conduwuit.toml + +That's it, you will have a working conduit or raise an issue to: + kstailey@proton.me +Please study how to write a decent bug report: +http://www.catb.org/~esr/faqs/smart-questions.html