depot/hosts/VEGAS/services/object-storage/default.nix

47 lines
1.4 KiB
Nix
Raw Normal View History

{ config, inputs, lib, pkgs, tools, ... }:
2021-10-16 20:59:06 +03:00
with tools.nginx;
let
minioPort = config.portsStr.minio;
consolePort = config.portsStr.minioConsole;
2021-10-16 20:59:06 +03:00
in
{
reservePortsFor = [ "minio" "minioConsole" ];
2021-11-29 02:38:59 +02:00
2021-10-16 20:59:06 +03:00
age.secrets.minio-root-credentials = {
file = ../../../../secrets/minio-root-credentials.age;
owner = "root";
group = "root";
mode = "0400";
};
services.minio = {
enable = true;
rootCredentialsFile = config.age.secrets.minio-root-credentials.path;
2021-10-16 20:59:06 +03:00
dataDir = [ "/srv/storage/objects" ];
browser = true;
listenAddress = "127.0.0.1:${minioPort}";
consoleAddress = "127.0.0.1:${consolePort}";
2021-10-16 20:59:06 +03:00
};
systemd.services.minio.serviceConfig = {
Slice = "remotefshost.slice";
};
services.nginx.virtualHosts = mappers.mapSubdomains {
# TODO: vhosts.proxy?
"object-storage" = vhosts.basic // {
locations = {
"/".proxyPass = "http://127.0.0.1:${minioPort}";
"= /dashboard".proxyPass = "http://127.0.0.1:${minioPort}";
2021-10-16 20:59:06 +03:00
};
extraConfig = "client_max_body_size 4G;";
2021-10-16 20:59:06 +03:00
};
"console.object-storage" = vhosts.basic // {
locations = {
"/".proxyPass = "http://127.0.0.1:${consolePort}";
2021-10-16 20:59:06 +03:00
};
};
"cdn" = lib.recursiveUpdate (vhosts.proxy "http://127.0.0.1:${minioPort}/content-delivery$request_uri") {
2021-10-16 20:59:06 +03:00
locations."= /".return = "302 /index.html";
};
};
services.oauth2_proxy.nginx.virtualHosts = [ "console.object-storage.${tools.meta.domain}" ];
}