Blueprint: installation and auto-update on Linux

Continuing the discussion from Design draft: installation and auto-update on Linux:

We have updated this blueprint and are about to work on implementing it. Anyone has any thought on it?

1 Like

Hi @Fadila

We are thinking of using native packaging for the following reasons:

  • snap is platform agnostic, but still needs snapd to be installed
  • some linux users are reluctant to use snap
  • covering deb and rpm packaging would make us cover most used distributions
  • with proper packaging, we could directly be included in the distributions

I just voted to use native packaging

Also, I pay your special attention to the SELinux on .rpm based distros, test it very carefully with auto-updater.

1 Like

In my opinion Docker is the best option to ensure consistency across all node operators and ease of use and configuration. So why do you want to use a native packaging? There’s a link on Jira on GitHub but I can’t open it.

Anyway, I hope it will be just an alternative option for legacy environments and you will continue to use docker as your main deploy channel.

You aren’t going to be able to come up with 1 install to rule them all since different distros use different packaging systems and frameworks to start/restart services (systemd/initd/etc). That said, you can probably come up with something that covers the major ones with some install time scripts in the packages for figure out which of the configuration files to install on that particular box.

Here are some projects that might be of interest in this regard:

  • fpm - packaging abstraction layer for putting it all together different ways
  • systemd-docker - project i used as systemd wrapper to run (and keep running) a docker container on linux. I would avoid unpackaging the upstream storj containers at all costs. I’m sure there are non-systemd versions of this for other distros.

Good luck – you got a long road ahead of you!

There are cases in which a VPS cannot run docker due to kernel restrictions. As a VPS normally cannot alter the kernel or update it, it is convenient to have a supported and easy way to install Storj instead of trying to extract necessary files from the Docker image.

If you’re talking about minimum kernel release, Docker requires at least Linux 3.10 which was released 7 years ago. I think it’s time to update your systems or change provider if your current provider doesn’t allow you to upgrade your servers.

I’m interested in an officially-supported auto-update solution that works with Docker and doesn’t involve watchtower – exposing the Docker socket to a container entirely defeats the purpose of Docker in the first place. The watchtower container effectively has root on the whole host system, and this is unacceptable unless the host system is only used for running storagenodes… and even then it’s very concerning from a security perspective.

I’m currently manually updating my nodes when the image tag is updated on Docker Hub.

1 Like