aboutsummaryrefslogtreecommitdiff
path: root/roles/web
diff options
context:
space:
mode:
Diffstat (limited to 'roles/web')
-rw-r--r--roles/web/default.nix9
-rw-r--r--roles/web/proxy/default.nix28
-rw-r--r--roles/web/stargazers/default.nix37
-rw-r--r--roles/web/test/default.nix37
4 files changed, 111 insertions, 0 deletions
diff --git a/roles/web/default.nix b/roles/web/default.nix
new file mode 100644
index 0000000..bbcc246
--- /dev/null
+++ b/roles/web/default.nix
@@ -0,0 +1,9 @@
+{ ... }:
+
+{
+ imports = [
+ ./proxy
+ ./stargazers
+ ./test
+ ];
+}
diff --git a/roles/web/proxy/default.nix b/roles/web/proxy/default.nix
new file mode 100644
index 0000000..879ef12
--- /dev/null
+++ b/roles/web/proxy/default.nix
@@ -0,0 +1,28 @@
+{ config, pkgs, lib, inputs, ... }:
+with lib;
+
+let cfg = config.roles.web.proxy; in {
+ options.roles.web.proxy = {
+ enable = mkEnableOption "nginx reverse proxy";
+ };
+
+ config = mkIf cfg.enable {
+ networking.firewall.allowedTCPPorts = [ 80 ];
+
+ services.nginx = {
+ enable = true;
+ virtualHosts = {
+ "localhost".locations = {
+ "/test" = {
+ recommendedProxySettings = true;
+ proxyPass = "http://192.168.0.2/";
+ };
+ "/stargazers" = {
+ recommendedProxySettings = true;
+ proxyPass = "http://192.168.0.3/";
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/roles/web/stargazers/default.nix b/roles/web/stargazers/default.nix
new file mode 100644
index 0000000..78b37d3
--- /dev/null
+++ b/roles/web/stargazers/default.nix
@@ -0,0 +1,37 @@
+{ config, pkgs, lib, inputs, ... }:
+with lib;
+
+let cfg = config.roles.web.stargazers; in {
+ options.roles.web.stargazers = {
+ enable = mkEnableOption "stargazers webserver";
+ };
+
+ config = mkIf cfg.enable {
+ containers.web-stargazers = {
+ autoStart = true;
+
+ privateNetwork = true;
+ hostAddress = "192.168.0.1";
+ localAddress = "192.168.0.3";
+
+ bindMounts = {
+ "/srv/web/stargazers" = {
+ hostPath = "/srv/web/stargazers";
+ isReadOnly = true;
+ };
+ };
+
+ config = { ... }: {
+ system.stateVersion = "23.11";
+ networking.firewall.allowedTCPPorts = [ 80 ];
+
+ services.nginx = {
+ enable = true;
+ virtualHosts = {
+ "192.168.0.3".root = "/srv/web/stargazers";
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/roles/web/test/default.nix b/roles/web/test/default.nix
new file mode 100644
index 0000000..04bc1a7
--- /dev/null
+++ b/roles/web/test/default.nix
@@ -0,0 +1,37 @@
+{ config, pkgs, lib, inputs, ... }:
+with lib;
+
+let cfg = config.roles.web.test; in {
+ options.roles.web.test = {
+ enable = mkEnableOption "test webserver";
+ };
+
+ config = mkIf cfg.enable {
+ containers.web-test = {
+ autoStart = true;
+
+ privateNetwork = true;
+ hostAddress = "192.168.0.1";
+ localAddress = "192.168.0.2";
+
+ bindMounts = {
+ "/srv/web/test" = {
+ hostPath = "/srv/web/test";
+ isReadOnly = true;
+ };
+ };
+
+ config = { ... }: {
+ system.stateVersion = "23.11";
+ networking.firewall.allowedTCPPorts = [ 80 ];
+
+ services.nginx = {
+ enable = true;
+ virtualHosts = {
+ "192.168.0.2".root = "/srv/web/test";
+ };
+ };
+ };
+ };
+ };
+}