{"id":21518940,"url":"https://github.com/vortex-linux/ship","last_synced_at":"2025-04-09T22:08:26.285Z","repository":{"id":241600064,"uuid":"805856029","full_name":"Vortex-Linux/ship","owner":"Vortex-Linux","description":"Ship is a powerful tool designed to provide easy to use isolated environments in the form of containers and vms.(Ship is made to be highly compatible with VortexLinux but it can also work with other distros)","archived":false,"fork":false,"pushed_at":"2025-01-19T04:33:42.000Z","size":5815,"stargazers_count":6,"open_issues_count":6,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T22:08:21.327Z","etag":null,"topics":["containers","distrobox","docker","hacktoberfest","libvirt","linux","package-management","qemu","virtual-machines"],"latest_commit_sha":null,"homepage":"","language":"C++","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/Vortex-Linux.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}},"created_at":"2024-05-25T16:52:06.000Z","updated_at":"2024-11-25T14:24:42.000Z","dependencies_parsed_at":"2024-06-27T20:24:21.814Z","dependency_job_id":"291d672a-9233-4c29-bddd-8bb5d5ed4ea4","html_url":"https://github.com/Vortex-Linux/ship","commit_stats":null,"previous_names":["voyagelinux/ship","vortex-linux/ship"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vortex-Linux%2Fship","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vortex-Linux%2Fship/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vortex-Linux%2Fship/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vortex-Linux%2Fship/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vortex-Linux","download_url":"https://codeload.github.com/Vortex-Linux/ship/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248119294,"owners_count":21050755,"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":["containers","distrobox","docker","hacktoberfest","libvirt","linux","package-management","qemu","virtual-machines"],"created_at":"2024-11-24T00:55:30.774Z","updated_at":"2025-04-09T22:08:26.265Z","avatar_url":"https://github.com/Vortex-Linux.png","language":"C++","readme":"# Ship\n- Ship if a powerful tool made for Vortex Linux designed to enhance the user's capability of using various environments for various needs mainly package management and installing software tailored to specific platforms. \u003cbr\u003e\n- It supports the use of virtual machines(virtual machines are managed using libvirt,virsh,qemu and other utilities for them)for providing isolated/unisolated environments for installing package and doing whatever the user wants.It also supports the use of containers(Containers are managed using distrobox and docker),the containers do not provide isolated environments and should be used for installing packages from various distros.\n\n## Setup and Installation \n\n### Note:(Ship is the superutility of Vortex Linux but can still be used with other distros. If you are using Vortex Linux, Ship is available by default, and you don't have to download it.)\n\n### Important Prerequisites\n\n- Ensure that virtualization is enabled in the BIOS.\n- The kernel must have the \"kvm\" module enabled for virtualization to function properly.\n\n### Debian based distros\n```\ngit clone https://github.com/Vortex-Linux/ship.git\nsudo apt install qemu-kvm libvirt-daemon-system virt-viewer libboost-all-dev lynx aria2 tmux\ncurl https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh\nwget https://github.com/schollz/croc/releases/download/v9.4.2/croc_9.4.2_Linux-64bit.deb\nsudo dpkg -i croc-*.deb\nsudo usermod -a -G libvirt $user\nsudo systemctl enable --now cloud-init-local.service\nsudo systemctl enable --now cloud-init.service\nsudo systemctl enable --now cloud-config.service\nsudo systemctl enable --now cloud-final.service\n```\n### Fedora based distros\n```\ngit clone https://github.com/Vortex-Linux/ship.git\ncurl https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh\nsudo dnf install qemu croc @virtualization boost-devel lynx aria2 tmux\nsudo usermod -a -G libvirt $user\nsudo systemctl enable --now cloud-init-local.service\nsudo systemctl enable --now cloud-init.service\nsudo systemctl enable --now cloud-config.service\nsudo systemctl enable --now cloud-final.service\n```\n\n### Arch based distros\n```\ngit clone https://github.com/Vortex-Linux/ship.git\nsudo pacman -S libvirt qemu-base distrobox docker croc virt-viewer boost lynx aria2 tmux\nsudo usermod -a -G libvirt $user\nsudo systemctl enable --now cloud-init-local.service\nsudo systemctl enable --now cloud-init.service\nsudo systemctl enable --now cloud-config.service\nsudo systemctl enable --now cloud-final.service\n```\n\n### NixOS\n\nYou need the `kvm` kernel module for virtualization to work.\nChoose either `kvm-intel` or `kvm-amd` depending on your CPU.\n```\nboot.kernelModules = [ ... \"kvm-intel\" ... ];\n```\n\nEnable `libvirtd`\n```\nvirtualisation.libvirtd.enable = true;\n```\n\nAdd the user to the `docker` and `libvirtd` groups:\n```nix\nusers.users.my_username = {\n  ...\n  extraGroups = [ ... \"docker\" \"libvirtd\" ... ];\n  ...\n};\n```\n\nAfter rebooting your machine, run:\n```\nnix develop\n```\n\n### Compiling\nPre 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:\n```\ncd ship\nmake clean\nmake\n```\n\n## Running the program\n\nUsage, Run:\n```\n./ship [OPTIONS] COMMAND [ARGS...]\n\nOptions:\n  --help                          Show this help message and exit\n  --virtual-machine or --vm        Specify action is for VM\n  --container or --ctr             Specify action is for container\n  --name NAME                     Specifies the name of the container or VM an action should be executed on\n\nCommands:\n  vm\n    create\n      --source URL                Set the source URL of the VM\n      --source-local PATH         Set the local source path of the VM\n      --cpus NUMBER               Set the CPU limit of the VM\n      --memory or -mem SIZE       Set the memory limit of the VM\n    start NAME                    Start the specified virtual machine\n    restart or reboot NAME        Start the specified virtual machine\n    delete NAME                   Delete the specified virtual machine\n    list                          List all virtual machines\n    view or enter NAME            Shows a console interface or a full GUI of the virtual machine\n    pause NAME                    Pause the specified virtual machine\n    resume NAME                   Resume the specified virtual machine if it's paused\n    save NAME                     Take a snapshot of the specified virtual machine\n    shutdown NAME                 Shut down the specified virtual machine\n    exec NAME                     Execute the given command in the console of the specified virtual machine\n      --command COMMAND           Set the command to be executed\n    package_download or download_packages NAME\n                                  Download the specified package using the package manager of the specified virtual machine\n      --package PACKAGE           Set the package to be downloaded\n    package_remove or remove_packages NAME\n                                  Remove the specified package using the package manager of the specified virtual machine\n      --package PACKAGE           Set the package to be removed\n    package_search or search_packages NAME\n                                  Search for the specified package using the package manager of the specified virtual machine\n      --package PACKAGE           Set the package to be searched\n    send NAME                     Share the specified virtual machine to an end user (protected by a secret code)\n    receive                       Receive the virtual machine shared by an end user (protected by a secret code)\n\n  container\n    create NAME                   Create a new container with the specified name\n    delete NAME                   Delete the specified container\n    view or enter NAME            Show a console interface\n    upgrade NAME                  Upgrade the specified container\n    list                          List all containers\n    stop NAME                     Stop the specified container\n    exec NAME                     Execute the given command in the console of the specified container\n      --command COMMAND           Set the command to be executed\n    package_download or download_packages NAME\n                                  Download the specified package using the package manager of the specified container\n      --package PACKAGE           Set the package to be downloaded\n    package_remove or remove_packages NAME\n                                  Remove the specified package using the package manager of the specified container\n      --package PACKAGE           Set the package to be removed\n    package_search or search_packages NAME\n                                  Search for the specified package using the package manager of the specified container\n      --package PACKAGE           Set the package to be searched\n    send NAME                     Share the specified container to an end user (protected by a secret code)\n    receive                       Receive the container shared by an end user (protected by a secret code)\n```\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvortex-linux%2Fship","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvortex-linux%2Fship","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvortex-linux%2Fship/lists"}