{
  project.name = "minio";

  networks.dmz = {
    name = "dmz";
    external = true;
  };

  services = {
    minio.service = {
      image = "bitnami/minio:2024.5.10";
      container_name = "minio";
      labels = {
        "traefik.enable" = "true";

        # API
        "traefik.http.routers.minio.rule" = "Host(`files.ghoscht.com`)";
        "traefik.http.routers.minio.service" = "minio";
        "traefik.http.routers.minio.entrypoints" = "websecure";
        "traefik.http.services.minio.loadbalancer.server.port" = "9000";
        "traefik.http.routers.minio.tls" = "true";
        "traefik.http.routers.minio.tls.certresolver" = "letsencrypt";

        # Dashboard
        "traefik.http.routers.minio-dash.rule" = "Host(`minio.ghoscht.com`)";
        "traefik.http.routers.minio-dash.service" = "minio-dash";
        "traefik.http.routers.minio-dash.entrypoints" = "websecure";
        "traefik.http.services.minio-dash.loadbalancer.server.port" = "9001";
        "traefik.http.routers.minio-dash.tls" = "true";
        "traefik.http.routers.minio-dash.tls.certresolver" = "letsencrypt";
      };
      volumes = [
        "/storage/dataset/docker/minio/minio_data:/data"
      ];
      environment = {
        MINIO_DATA_DIR = "/data";
        MINIO_BROWSER_REDIRECT_URL = "https://minio.ghoscht.com";
      };
      env_file = [
        "/home/ghoscht/.docker/minio/minio.env"
      ];
      restart = "unless-stopped";
      networks = [
        "dmz"
      ];
    };
  };
}