{ lib, ... }:
let
  port = "14002";
internal-ip = "192.168.1.11";
in
{
  networking.firewall.allowedTCPPorts = [ 28967 ];
  virtualisation.oci-containers.containers.storj-storagenode = {
    image = "storjlabs/storagenode:latest";
    ports = [
      # TODO: omo ip
      "0.0.0.0:28967:28967"
      "127.0.0.1:${port}:${port}"
    ];
    environment = {
      # SETUP = "true"; # must be run only once ...
      WALLET = "0xeD0d2a2B33F6812b45d2D9FF7a139A3fF65a24C0";
      EMAIL = "storj.io@syntax-fehler.de";
      ADDRESS = "euer.krebsco.de:28967";
      STORAGE = "3TB";
    };
    volumes = [
      "/media/cryptX/lib/storj/identity:/app/identity"
      "/media/cryptX/lib/storj/storage:/app/config"
    ];
  };
  systemd.services.docker-storj-storagenode.serviceConfig = {
    StandardOutput = lib.mkForce "journal";
    StandardError = lib.mkForce "journal";
  };

  services.nginx.virtualHosts."storj" = {
    serverAliases = [
              "storj.lan"
    ];

    locations."/".proxyPass = "http://localhost:${port}";
    locations."/".proxyWebsockets = true;
    extraConfig = ''
      if ( $server_addr != "${internal-ip}" ) {
        return 403;
      }
    '';
  };
}
