Development environment
The recommended development tool is ynh-dev
, and is based on Incus.
This page gives an introduction to both tools.
Incus
The recommended testing and development environment is based on Incus, a system container manager.
Its usage is very similar to Docker and Podman, but its main difference is its ability to run full
operating systems, with their own network interfaces and init
system. There is no virtualization here.
The YunoHost project provides Incus images on the Incus repository.
For each Debian release and for each branch (stable
, testing
, unstable
) are provided multiple images:
before-install
: tools and dependencies are installed but not Yunohostdev
: YunoHost is installed but the post-install step was not runappci
: YunoHost is installed, post-install was run and you can install appscore-tests
: YunoHost is installed and post-installed, and development and testing tools are installed.
The appci
and core-tests
images are used by the project's testing infrastructure.
The Incus images are built by our incus_builder tool, but not automatically, so please feel free to ask us to regenerate images.
Install and configure Incus
Incus can be installed on Debian with:
apt install incus
Then you need to add users to the incus-admin
group:
sudo usermod -a -G incus-admin $(whoami)
newgrp incus-admin
and initialize Incus:
incus admin init
You will want to add the YunoHost repository (do NOT run this as root but as your user):
incus remote add yunohost https://repo.yunohost.org/incus --protocol simplestreams --public
and to download an image:
incus image copy yunohost:yunohost/bookworm-stable/dev local: --copy-aliases --auto-update
Install a custom YunoHost version
When testing an unreleased YunoHost version, or installation script, you might want to run the installation script from its Git repository on a freshly installed Debian.
For example to install the unreleased Debian 13 Trixie version:
curl https://raw.githubusercontent.com/YunoHost/install_script/main/trixie | bash
You might also want to pass arguments to the script:
curl https://raw.githubusercontent.com/YunoHost/install_script/main/trixie | bash -s -- -d unstable
ynh-dev
ynh-dev
is the recommended tool that automates:
- downloading Incus images
- download YunoHost's projects source code
- Install and symlink YunoHost stuff inside the container
That way, you will be able to edit files, test your changes in real time, commit and push/pull your changes directly from your development environment.
Please see the ynh-dev
README for installation and usage instructions.