A command-line tool for managing virtual machines on Synology NAS devices with Virtual Machine Manager (VMM).
This project is adapted from qnap-vm for Synology DSM 7.x+ systems.
- VM Lifecycle Management: Create, start, stop, restart, and delete virtual machines
- SSH-based Connection: Secure remote management via SSH
- Synology VMM API Integration: Native integration with Synology's Virtual Machine Manager
- VM Template Support: Create VMs from predefined templates
- Storage Management: Manage VM storage and volumes
- Cross-platform Support: Works on macOS, Linux, and Windows
- Synology NAS running DSM 7.x or later
- Virtual Machine Manager (VMM) package installed
- SSH access enabled on your Synology NAS
- At least 4GB RAM on the NAS
- Intel VT-x or AMD-V CPU support
- At least one Btrfs volume for VM storage
Download the latest release for your platform from the releases page.
go install github.com/scttfrdmn/syno-vm/cmd/syno-vm@latestbrew install scttfrdmn/syno-vm/syno-vm-
Configure your connection:
syno-vm config set --host your-synology.local --username admin -
List your virtual machines:
syno-vm list
-
Create a new VM:
syno-vm create --name my-vm --template ubuntu-20.04
-
Start the VM:
syno-vm start my-vm
-
Check VM status:
syno-vm status my-vm
The tool uses a YAML configuration file stored at ~/.syno-vm/config.yaml:
host: "your-synology.local"
username: "admin"
port: 22
keyfile: "~/.ssh/id_rsa"
timeout: 30syno-vm config set- Set configuration valuessyno-vm config get- Get configuration valuessyno-vm config list- List all configuration
syno-vm list- List all virtual machinessyno-vm create- Create a new virtual machinesyno-vm start <vm-name>- Start a virtual machinesyno-vm stop <vm-name>- Stop a virtual machinesyno-vm restart <vm-name>- Restart a virtual machinesyno-vm delete <vm-name>- Delete a virtual machinesyno-vm status <vm-name>- Show VM status
syno-vm template list- List available VM templatessyno-vm template create- Create a new templatesyno-vm template delete- Delete a template
This tool integrates with Synology's VMM API using the synowebapi command-line tool available on DSM. Key API endpoints used:
SYNO.Virtualization.API.Guest.Action- VM power operationsSYNO.Virtualization.API.Guest.Info- VM informationSYNO.Virtualization.API.Host- Host information
git clone https://github.com/scttfrdmn/syno-vm
cd syno-vm
go build -o bin/syno-vm cmd/syno-vm/main.gogo test ./...- Uses Synology VMM API instead of QNAP Virtualization Station
- Adapted for DSM 7.x+ specific features
- Uses
synowebapifor API communication instead of libvirt - Different storage and networking configuration
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see the LICENSE file for details.
For issues and feature requests, please use the GitHub Issues page.