# `hcloud-upload-image`
Quickly upload any raw disk images into your Hetzner Cloud projects!
## About The [Hetzner Cloud API](https://docs.hetzner.cloud/) does not support uploading disk images directly, and it only provides a limited set of default images. The only option for custom disk images that users have is by taking a "snapshot" of an existing servers root disk. These can then be used to create new servers. To create a completely custom disk image, users have to follow these steps: 1. Create server with the correct server type 2. Enable rescue system for the server 3. Boot the server 4. Download the disk image from within the rescue system 5. Write disk image to servers root disk 6. Shut down the server 7. Take a snapshot of the servers root disk 8. Delete the server This is an annoyingly long process. Many users have automated this with [Packer](https://www.packer.io/) & [`packer-plugin-hcloud`](https://github.com/hetznercloud/packer-plugin-hcloud/) before, but Packer offers a lot of additional complexity to wrap your head around. This repository provides a simple CLI tool & Go library to do the above. ## Getting Started ### CLI #### Binary We provide pre-built `deb`, `rpm` and `apk` packages. Alternatively we also provide the binaries directly. Check out the [GitHub release artifacts](https://github.com/apricote/hcloud-upload-image/releases/latest) for all of these files and archives. ##### Arch Linux You can get [`hcloud-upload-image-bin`](https://aur.archlinux.org/packages/hcloud-upload-image-bin) from the AUR. Use your preferred wrapper to install: ```shell yay -S hcloud-upload-image-bin ``` #### `go install` If you already have a recent Go toolchain installed, you can build & install the binary from source: ```shell go install github.com/apricote/hcloud-upload-image@latest ``` #### Docker There is a docker image published at `ghcr.io/apricote/hcloud-upload-image`. ```shell docker run --rm -e HCLOUD_TOKEN="