This guide walks you through setting up a self‑hosted development environment platform on your own Linux infrastructure using ZFS for storage and Velovol to manage, snapshot, and clone developer environments. If you want to learn more about the product or follow along with screenshots, you can visit the official site at
https://www.velovol.com.
Prerequisites
Before you start, make sure you have:
- One Linux server (physical or virtual) with sudo/root access.
- A ZFS pool available on that server for storing development disks and snapshots.
- Network access from your developers to this server (or to a reverse proxy in front of it).
Step 1 – Prepare a Linux Host with ZFS
Start with a clean Linux machine that will act as your dev environment host. Choose a modern distribution such as Ubuntu, Debian, or CentOS, and ensure it has enough CPU, RAM, and disk space to run multiple development environments at the same time.
Install ZFS if it is not already present, and create a ZFS pool dedicated to your development workloads. For example, you might attach one or more disks and create a pool like tank, then add a dataset such as tank/velovol that will store all base disks, snapshots, and clones. ZFS gives you copy‑on‑write snapshots and efficient cloning, which is exactly what we need for quickly spinning up reproducible dev environments.
Step 2 – Download and Start velovol-adm
Next, install the Velovol admin service, velovol-adm, on your Linux host. This component is responsible for managing projects, users, base disks, snapshots, and clones.
Download the binary or package from the official distribution source and place it in a suitable location on your server. Then start the service, either by running it directly from the command line or by configuring it as a systemd service so it starts automatically on boot. Once the service is running, verify it by checking the logs and, if a web UI is provided, by opening the admin interface in your browser.
Step 3 – Configure Portals
A “portal” is the entry point through which developers access their environments. Depending on your setup, this might be a web dashboard, an SSH endpoint, or integration with tools like VS Code Remote.
In the Velovol admin interface, configure one or more portals that match how your team prefers to work. For example, you can set a primary HTTPS URL such as https://dev.yourcompany.com and connect it to velovol-adm through a reverse proxy like Nginx or Caddy. Make sure DNS is set up correctly and that TLS certificates are configured so developers can securely reach the portal from their own machines.
Step 4 – Connect Velovol to ZFS Storage
With the admin service and portals in place, the next step is to register your ZFS storage in Velovol. This tells the system where to create and store base disks, snapshots, and cloned disks.
In the storage configuration section, point Velovol to your ZFS pool or dataset, for example /tank/velovol. Specify any quotas or limits you want to enforce per project or per user, and optionally tune ZFS options such as compression or record size based on your workload. Once configured, Velovol will use this ZFS backend to create efficient copy‑on‑write volumes for each development environment.
Step 5 – Create a Project
Projects are logical containers that group related environments, users, and resources. It is a good practice to create one project per product line, codebase, or team.
Open the Velovol admin interface and create a new project with a clear, descriptive name (for example, “Payments Service” or “Monorepo‑Platform”). Optionally add a description that explains what this project is for, what tech stack it uses, and which team owns it. This makes it easier to scale later when you have multiple projects and many users.
Step 6 – Create Users and Assign Roles
Now that you have a project, you can add users and define who is allowed to do what. Typically, you will have at least two types of users: administrators, who can manage base disks and settings, and developers, who consume the environments.
Within the project, create user accounts for each developer who needs access. Assign roles based on responsibilities: for example, platform engineers or team leads may have admin rights to create and update base disks, while regular developers only need permission to use existing snapshots and clones. This role‑based model helps you keep your environments consistent and secure as the team grows.
Step 7 – Create a Base Disk (Golden Environment)
The base disk is your “golden image” for development. It contains the operating system, language runtimes, tools, dependencies, and initial code checkout that every developer should start from.
Create a fresh environment that will become this base disk. Inside that environment, install your standard toolchain: compilers, package managers, build tools, database clients, and anything else your developers use daily. Clone the main repository or repositories, set up configuration files, and run any initial setup scripts so the environment can build and run the application. Once everything is configured to your satisfaction, save this environment as a base disk in Velovol so it can be reused as a template.
Step 8 – Mount the Base Disk and Start Developing
With the base disk defined, developers can now mount it and begin working. Mounting the base disk creates a writable working environment for an individual user, while still leveraging the underlying shared data to save space.
From the portal or admin interface, a developer selects the project and chooses the base disk as the starting point for a new environment. Velovol mounts this disk (or a writable layer on top of it) and exposes it through the configured access method, such as SSH or VS Code Remote. The developer can then open their IDE, connect to the environment, and start editing code, running tests, and installing additional tools as needed.
Step 9 – Unmount and Create a Snapshot
After configuring the environment to a desired state—for example, after adding specific dependencies or customizing the project setup—you can capture that state with a snapshot. Snapshots are point‑in‑time, read‑only copies of the disk that ZFS can create quickly and efficiently.
First, ensure that all important data is written to disk and that no critical processes are running. Then unmount the environment or stop any running sessions from the Velovol interface. From there, create a snapshot of the disk. This snapshot becomes a stable reference that you can always roll back to or use as the source for new cloned environments, without duplicating all the underlying data.
Step 10 – Clone the Snapshot for Other Users
The real power of this setup comes when you clone snapshots for other developers. Instead of each person manually setting up their own environment, you create one snapshot and then clone it as many times as you need.
In the admin interface, select the snapshot you created and use the cloning feature to create a new disk for another user. Assign this cloned disk to that user and allow them to mount it as their development environment. Because ZFS uses copy‑on‑write semantics, these clones are space‑efficient: they share the same data until changes are made, while still appearing as independent environments to each developer. This makes it easy to onboard new team members in minutes instead of days, and ensures everyone is working on an environment that is consistent, reproducible, and closely matches production.
Next Steps and Best Practices
Once you have this basic setup running, you can refine it further:
- Establish a regular process for updating the base disk when dependencies or tooling change, and create a new versioned snapshot each time.
- Use separate projects or datasets for different teams or services to keep resource usage under control.
- Integrate this environment flow with your CI/CD and access management tools so that developers can move from code to production with minimal friction.
To explore more features, pricing, and additional guides, you can always refer back to the official Velovol website:
https://www.velovol.com.
