How to install Taiga in a rootless podman setup (with docker-compose)

Install podman and podman-docker

podman-docker: This package installs a script named docker that emulates the Docker CLI by executes podman commands, it also creates links between all Docker CLI man pages and podman.

sudo dnf install podman podman-docker

Set Rootless podman

Set subuids and subgids for your user: (https://man.archlinux.org/man/podman.1#Rootless_mode)

$ sudo usermod --add-subuids 10000-75535 USERNAME
$ sudo usermod --add-subgids 10000-75535 USERNAME

Make sure that slirp4netns is installed: Currently the slirp4netns package is required to be installed to create a network device, otherwise rootless containers need to run in the network namespace of the host.

You can now check that you can use podman as a regular user

Install docker-compose

(https://docs.docker.com/compose/install/)

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Start user podman with systemd

Docker-compose needs a socket to interact with Docker, so we setup the user podman to provide one.

sudo loginctl enable-linger cstaiga  # Ensure that the systemd user instance stays up when the user logs out
systemctl enable --user podman
systemctl start --user podman

Set docker-compose to use systemd user podman socket:

export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock

docker-compose should now work with a non-root user.

Optional: use a proxy with docker-compose

(https://stackoverflow.com/questions/54218632/how-to-use-local-proxy-settings-in-docker-compose)

Have DNS name resolution between containers

Install plugin for dnsmasq and containers DNS resolution (https://github.com/containers/dnsname/blob/main/README_PODMAN.md)

sudo dnf install podman-plugins

That’s it, you can now use docker-compose as a non-root user, and your containers should be able to connect to each others through DNS.

Workaround if rabbitmq keeps failing with Cannot connect to amqp://taiga:**@taiga-async-rabbitmq:5672/taiga: failed to resolve broker hostname.:

It seems to be a bug with the DNS resolution in podman v3.X. podman v4 is not affected.

Just start the 2 rabbitmq containers ahead of the whole docker-compose and everything should be fine:

docker-compose up

Followed by Ctrl+C. Don’t use docker-compose down in order to keep the docker in the stopped state. Then:

podman start taiga-docker-main_taiga-events-rabbitmq_1
podman start taiga-docker-main_taiga-async-rabbitmq_1
docker-compose up