git clone https://github.com/Vortex-Linux/ship.git
sudo apt install qemu-kvm libvirt-daemon-system virt-viewer libboost-all-dev lynx aria2 tmux
curl https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
wget https://github.com/schollz/croc/releases/download/v9.4.2/croc_9.4.2_Linux-64bit.deb
sudo dpkg -i croc-*.deb
sudo usermod -a -G libvirt $user
sudo systemctl enable --now cloud-init-local.service
sudo systemctl enable --now cloud-init.service
sudo systemctl enable --now cloud-config.service
sudo systemctl enable --now cloud-final.service
git clone https://github.com/Vortex-Linux/ship.git
curl https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
sudo dnf install qemu croc @virtualization boost-devel lynx aria2 tmux
sudo usermod -a -G libvirt $user
sudo systemctl enable --now cloud-init-local.service
sudo systemctl enable --now cloud-init.service
sudo systemctl enable --now cloud-config.service
sudo systemctl enable --now cloud-final.service
git clone https://github.com/Vortex-Linux/ship.git
sudo pacman -S libvirt qemu-base distrobox docker croc virt-viewer boost lynx aria2 tmux
sudo usermod -a -G libvirt $user
sudo systemctl enable --now cloud-init-local.service
sudo systemctl enable --now cloud-init.service
sudo systemctl enable --now cloud-config.service
sudo systemctl enable --now cloud-final.service
You need the kvm
kernel module for virtualization to work.
Choose either kvm-intel
or kvm-amd
depending on your CPU.
boot.kernelModules = [ ... "kvm-intel" ... ];
Enable libvirtd
virtualisation.libvirtd.enable = true;
Add the user to the docker
and libvirtd
groups:
users.users.my_username = {
...
extraGroups = [ ... "docker" "libvirtd" ... ];
...
};
After rebooting your machine, run:
nix develop
Pre compiled executables files are provided in the repo, but in the case that its not compatible or you are want to contribute and want to try your changes you can compile the binaries yourself,run these commands:
cd ship
make clean
make
Usage, Run:
./ship [OPTIONS] COMMAND [ARGS...]
Options:
--help Show this help message and exit
--virtual-machine or --vm Specify action is for VM
--container or --ctr Specify action is for container
--name NAME Specifies the name of the container or VM an action should be executed on
Commands:
vm
create
--source URL Set the source URL of the VM
--source-local PATH Set the local source path of the VM
--cpus NUMBER Set the CPU limit of the VM
--memory or -mem SIZE Set the memory limit of the VM
start NAME Start the specified virtual machine
restart or reboot NAME Start the specified virtual machine
delete NAME Delete the specified virtual machine
list List all virtual machines
view or enter NAME Shows a console interface or a full GUI of the virtual machine
pause NAME Pause the specified virtual machine
resume NAME Resume the specified virtual machine if it's paused
save NAME Take a snapshot of the specified virtual machine
shutdown NAME Shut down the specified virtual machine
exec NAME Execute the given command in the console of the specified virtual machine
--command COMMAND Set the command to be executed
package_download or download_packages NAME
Download the specified package using the package manager of the specified virtual machine
--package PACKAGE Set the package to be downloaded
package_remove or remove_packages NAME
Remove the specified package using the package manager of the specified virtual machine
--package PACKAGE Set the package to be removed
package_search or search_packages NAME
Search for the specified package using the package manager of the specified virtual machine
--package PACKAGE Set the package to be searched
send NAME Share the specified virtual machine to an end user (protected by a secret code)
receive Receive the virtual machine shared by an end user (protected by a secret code)
container
create NAME Create a new container with the specified name
delete NAME Delete the specified container
view or enter NAME Show a console interface
upgrade NAME Upgrade the specified container
list List all containers
stop NAME Stop the specified container
exec NAME Execute the given command in the console of the specified container
--command COMMAND Set the command to be executed
package_download or download_packages NAME
Download the specified package using the package manager of the specified container
--package PACKAGE Set the package to be downloaded
package_remove or remove_packages NAME
Remove the specified package using the package manager of the specified container
--package PACKAGE Set the package to be removed
package_search or search_packages NAME
Search for the specified package using the package manager of the specified container
--package PACKAGE Set the package to be searched
send NAME Share the specified container to an end user (protected by a secret code)
receive Receive the container shared by an end user (protected by a secret code)