From 293fc197a2e0fa73a9808095505746142b539c5c Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Sat, 16 Aug 2025 02:05:43 -0500 Subject: [PATCH] chore: slightly better vagrant experience --- Vagrantfile | 93 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 40 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index 699aa9692..2afecba07 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -1,24 +1,32 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +BOX_DEFAULT = "ubuntu/jammy64" +BOX_LIBVIRT = "generic/ubuntu2204" + +RAM = (ENV["VM_RAM"] || "8192").to_i +CPUS = (ENV["VM_CPUS"] || "8").to_i + +SPECIAL_PORTS = [ + 3000, # pyrodactyl web ui + 3306, # database + 8080, # phpmyadmin + 8025, # mailpit web ui + 9000, # minio api + 9001 # minio console +] + +TEST_PORTS = (25500..25600) + +FORWARDED_PORTS = SPECIAL_PORTS + TEST_PORTS.to_a + Vagrant.configure("2") do |config| - # Fallback box for other providers - config.vm.box = "ubuntu/jammy64" + # Base box and hostname + config.vm.box = BOX_DEFAULT config.vm.hostname = "pyrodactyl-dev" - ram = (ENV["VM_RAM"] || "8192").to_i - cpus = (ENV["VM_CPUS"] || "8").to_i - - forwarded_ports = [ - 3000, # app - 3306, # database - 8080, # alt-http - 8025, # mailpit web ui - 9000, # minio api - 9001, # minio console - 25565, # test ports... - 25566, - 25567 - ] - - forwarded_ports.each do |p| + # Forwarded ports + FORWARDED_PORTS.each do |p| config.vm.network "forwarded_port", guest: p, host: p, @@ -26,11 +34,11 @@ Vagrant.configure("2") do |config| auto_correct: false end - config.vm.provider "virtualbox" do |vb, override| - override.vm.box = "ubuntu/jammy64" + # VirtualBox provider settings + config.vm.provider "virtualbox" do |vb| vb.name = "pyrodactyl-dev" - vb.memory = ram - vb.cpus = cpus + vb.memory = RAM + vb.cpus = CPUS vb.gui = false vb.customize ["modifyvm", :id, "--cpuexecutioncap", "95"] @@ -38,44 +46,49 @@ Vagrant.configure("2") do |config| vb.customize ["modifyvm", :id, "--nictype1", "virtio"] end - config.vm.provider "vmware_desktop" do |v, override| - override.vm.box = "ubuntu/jammy64" - v.vmx["memsize"] = ram.to_s - v.vmx["numvcpus"] = cpus.to_s - v.vmx["tools.upgrade.policy"] = "manual" + # VMware provider settings + config.vm.provider "vmware_desktop" do |v| + v.vmx["memsize"] = RAM.to_s + v.vmx["numvcpus"] = CPUS.to_s + v.vmx["tools.upgrade.policy"] = "manual" v.vmx["RemoteDisplay.vnc.enabled"] = "FALSE" - v.vmx["vhv.enable"] = "FALSE" - v.vmx["ethernet0.connectionType"] = "nat" - v.vmx["ethernet0.wakeOnPacketTx"] = "TRUE" - v.vmx["ethernet0.addressType"] = "generated" + v.vmx["vhv.enable"] = "FALSE" + v.vmx["ethernet0.connectionType"] = "nat" + v.vmx["ethernet0.wakeOnPacketTx"] = "TRUE" + v.vmx["ethernet0.addressType"] = "generated" end + # Libvirt provider settings config.vm.provider "libvirt" do |lv, override| - override.vm.box = "generic/ubuntu2204" - lv.memory = ram - lv.cpus = cpus + override.vm.box = BOX_LIBVIRT + lv.memory = RAM + lv.cpus = CPUS end + # Synced folder configuration if Vagrant::Util::Platform.windows? + # Use VirtualBox shared folders on Windows (no authentication) config.vm.synced_folder ".", "/var/www/pterodactyl", - type: "smb", - smb_username: ENV["VAGRANT_SMB_USERNAME"], - smb_password: ENV["VAGRANT_SMB_PASSWORD"], - mount_options: ["mfsymlinks"], - owner: "vagrant", group: "vagrant" + type: "virtualbox", + owner: "vagrant", + group: "vagrant", + mount_options: ["dmode=755", "fmode=644"] else + # Use NFS on Linux/macOS config.vm.synced_folder ".", "/var/www/pterodactyl", type: "nfs", nfs_version: 4, nfs_udp: false, - mount_options: ["rw","vers=4","tcp","fsc","rsize=1048576","wsize=1048576"] + mount_options: ["rw", "vers=4", "tcp", "fsc", "rsize=1048576", "wsize=1048576"] end + # Provisioning script config.vm.provision "shell", path: "vagrant/provision.sh", keep_color: true, privileged: true + # Helpful post-up message config.vm.post_up_message = <<~MSG Pyrodactyl is up and running at http://localhost:3000 Login with: