In this tutorial, we will learn how to install Minio on nixOS latest version. Minio is an open-source, S3-compatible object storage server that can be used to store large amounts of data.
First, we need to install Nix, which is a package manager for nixOS.
curl https://nixos.org/nix/install | sh
Once the installation is complete, run the following command to ensure that Nix is correctly installed.
nix-shell --run "echo 'Nix is installed!'"
Now, we can proceed to install Minio. We will first create a new file minio.nix
in the current working directory
nano minio.nix
and paste the following into the file:
{ pkgs }:
let
minioConfig = {
anonymous_access = true;
http_addr = "0.0.0.0:9000";
};
in
with pkgs;
stdenv.mkDerivation {
name = "minio";
version = "2022-01-04T03-57-41Z";
src = fetchurl {
url = "https://dl.minio.io/server/minio/release/linux-amd64/minio";
sha256 = "0c8d1fea84bbec47d1bacc41e458c7e7999500dabf6c399bd6a2d8a2463d545e";
};
installPhase = ''
mkdir -p $out/bin
cp minio $out/bin/minio
'';
meta = {
description = "Open-source, S3-compatible object storage server";
homepage = https://minio.io;
license = licenses.apache2;
};
config = {
# Minio configuration
environment.MINIO_ACCESS_KEY = "minioadmin";
environment.MINIO_SECRET_KEY = "minioadmin";
environment.MINIO_OPTS = "--config-dir $out/etc/minio --address :9000";
users.extraUsers.minio = {
name = "minio";
uid = 4711;
group = "users";
home = "/var/lib/minio";
};
systemd.services.minio = {
description = "Minio object storage server";
after = [ "network.target" ];
environment = {
MINIO_OPTS = "--config-dir ${configFile}/minio_config/ --address ${minioConfig.http_addr}";
};
serviceConfig = {
User = "minio";
ExecStart = "${pkgs.coreutils}/bin/env \\n \\
MINIO_ACCESS_KEY=${environment.MINIO_ACCESS_KEY} MINIO_SECRET_KEY=${environment.MINIO_SECRET_KEY} \\
${pkgs.stdenv.shell} \\
-c 'while true; do \\
${out}/bin/minio server --config-dir ${configFile}/minio_config/ --address ${minioConfig.http_addr}; done'";
ExecStop = "${pkgs.coreutils}/bin/env MINIO_ACCESS_KEY=${environment.MINIO_ACCESS_KEY} MINIO_SECRET_KEY=${environment.MINIO_SECRET_KEY} ${pkgs.stdenv.shell} -c 'kill %1'";
Restart = "always";
RestartSec = "60";
LimitNOFILE = 65536;
LimitNPROC = 4096;
TasksMax = "infinity";
FileDescriptorStoreMax=0;
};
};
};
}
Then, we can run the following command to install Minio:
nix-env -if minio.nix
This will start the installation process and may take a few minutes to complete.
After the installation process is complete, we can start the Minio object storage server by running the following command:
sudo systemctl start minio
Once Minio is up and running, you can access it by browsing to the server's IP address or hostname with port 9000 in a web browser.
In this tutorial, we have learned how to install Minio on nixOS latest version. We have also seen how to configure and start the Minio object storage server. You can now start using Minio to store your data and enjoy its scalability and fault-tolerance features.
If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!
Alternatively, for the best virtual desktop, try Shells!