about summary refs log tree commit diff
path: root/ipfs.nix
diff options
context:
space:
mode:
authorNguyễn Gia Phong <mcsinyx@disroot.org>2022-05-12 14:28:54 +0900
committerNguyễn Gia Phong <mcsinyx@disroot.org>2022-05-12 14:28:54 +0900
commit1c2a3ebe9da70a85589c3adcf5087281a95ac7b4 (patch)
treea0e32f9634a1246202daf2b4ebb8cabd24415308 /ipfs.nix
parent6753ad7cad7ea720fea73c91bff9df6f27d80368 (diff)
downloadnixos-conf-1c2a3ebe9da70a85589c3adcf5087281a95ac7b4.tar.gz
Set up ipwhl.loang.net
Diffstat (limited to 'ipfs.nix')
-rw-r--r--ipfs.nix51
1 files changed, 51 insertions, 0 deletions
diff --git a/ipfs.nix b/ipfs.nix
new file mode 100644
index 0000000..a2bf6a3
--- /dev/null
+++ b/ipfs.nix
@@ -0,0 +1,51 @@
+{ config, pkgs, ... }:
+let domain = config.networking.domain;
+in {
+  security.acme.certs.${domain} = {
+    credentialsFile = pkgs.writeText "namesilo.env" ''
+      NAMESILO_API_KEY_FILE=/var/lib/acme/namesilo.key
+      NAMESILO_PROPAGATION_TIMEOUT=1800
+    '';
+    dnsProvider = "namesilo";
+    extraDomainNames = [
+      "*.ipfs.${domain}"
+      "*.ipns.${domain}"
+    ];
+    webroot = null;
+  };
+
+  services = {
+    ipfs = {
+      enable = true;
+      enableGC = true;
+      extraConfig.GateWay = {
+        NoFetch = true;
+        PublicGateways.${domain} = {
+          Paths =  [ "/ipfs" "/ipns" ];
+          UseSubdomains = true;
+        };
+      };
+    };
+
+    nginx.virtualHosts = let
+      ipfsGateway = "http://localhost:8080";
+      ipfsProxy = {
+        forceSSL = true;
+        locations."/".proxyPass = ipfsGateway;
+        useACMEHost = domain;
+      };
+    in {
+      "${domain}".locations = {
+        "/ipfs".proxyPass = ipfsGateway;
+        "/ipns".proxyPass = ipfsGateway;
+      };
+      "*.ipfs.${domain}" = ipfsProxy;
+      "*.ipns.${domain}" = ipfsProxy;
+      "ipwhl.${domain}" = {
+        enableACME = true;
+        forceSSL = true;
+        locations."/".proxyPass = ipfsGateway;
+      };
+    };
+  };
+}