mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-04-24 01:38:28 +02:00
feat: add caddy as a reverse proxy for applications
This commit is contained in:
36
hosts/idols_kana/caddy.nix
Normal file
36
hosts/idols_kana/caddy.nix
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{useremail, ...}: {
|
||||||
|
services.caddy = {
|
||||||
|
enable = true;
|
||||||
|
# Reload Caddy instead of restarting it when configuration file changes.
|
||||||
|
enableReload = true;
|
||||||
|
user = "caddy"; # User account under which caddy runs.
|
||||||
|
dataDir = "/var/lib/caddy";
|
||||||
|
logDir = "/var/log/caddy";
|
||||||
|
|
||||||
|
# Additional lines of configuration appended to the global config section of the Caddyfile.
|
||||||
|
# Refer to https://caddyserver.com/docs/caddyfile/options#global-options for details on supported values.
|
||||||
|
globalConfig = ''
|
||||||
|
http_port 80
|
||||||
|
https_port 443
|
||||||
|
auto_https off
|
||||||
|
'';
|
||||||
|
|
||||||
|
# ACME related settings.
|
||||||
|
# email = useremail;
|
||||||
|
# acmeCA = "https://acme-v02.api.letsencrypt.org/directory";
|
||||||
|
|
||||||
|
virtualHosts."http://dashy.writefor.fun".extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy http://localhost:4000
|
||||||
|
'';
|
||||||
|
virtualHosts."http://transmission.writefor.fun".extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy http://localhost:9091
|
||||||
|
'';
|
||||||
|
virtualHosts."http://uptime-kuma.writefor.fun".extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy http://localhost:3001
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
networking.firewall.allowedTCPPorts = [80 443];
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
dashy = {
|
dashy = {
|
||||||
hostname = "dashy";
|
hostname = "dashy";
|
||||||
image = "lissy93/dashy:latest";
|
image = "lissy93/dashy:latest";
|
||||||
ports = ["4000:80"];
|
ports = ["127.0.0.1:4000:80"];
|
||||||
environment = {
|
environment = {
|
||||||
"NODE_ENV" = "production";
|
"NODE_ENV" = "production";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ in {
|
|||||||
|
|
||||||
# rpc = Web Interface
|
# rpc = Web Interface
|
||||||
rpc-port = 9091;
|
rpc-port = 9091;
|
||||||
rpc-bind-address = "0.0.0.0";
|
rpc-bind-address = "127.0.0.1";
|
||||||
anti-brute-force-enabled = true;
|
anti-brute-force-enabled = true;
|
||||||
# After this amount of failed authentication attempts is surpassed,
|
# After this amount of failed authentication attempts is surpassed,
|
||||||
# the RPC server will deny any further authentication attempts until it is restarted.
|
# the RPC server will deny any further authentication attempts until it is restarted.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
# https://github.com/louislam/uptime-kuma/wiki/Environment-Variables
|
# https://github.com/louislam/uptime-kuma/wiki/Environment-Variables
|
||||||
settings = {
|
settings = {
|
||||||
"UPTIME_KUMA_HOST" = "0.0.0.0";
|
"UPTIME_KUMA_HOST" = "127.0.0.1";
|
||||||
"UPTIME_KUMA_PORT" = "3001";
|
"UPTIME_KUMA_PORT" = "3001";
|
||||||
"DATA_DIR" = "/var/lib/uptime-kuma/";
|
"DATA_DIR" = "/var/lib/uptime-kuma/";
|
||||||
};
|
};
|
||||||
|
|||||||
36
hosts/idols_ruby/caddy.nix
Normal file
36
hosts/idols_ruby/caddy.nix
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{useremail, ...}: {
|
||||||
|
services.caddy = {
|
||||||
|
enable = true;
|
||||||
|
# Reload Caddy instead of restarting it when configuration file changes.
|
||||||
|
enableReload = true;
|
||||||
|
user = "caddy"; # User account under which caddy runs.
|
||||||
|
dataDir = "/var/lib/caddy";
|
||||||
|
logDir = "/var/log/caddy";
|
||||||
|
|
||||||
|
# Additional lines of configuration appended to the global config section of the Caddyfile.
|
||||||
|
# Refer to https://caddyserver.com/docs/caddyfile/options#global-options for details on supported values.
|
||||||
|
globalConfig = ''
|
||||||
|
http_port 80
|
||||||
|
https_port 443
|
||||||
|
auto_https off
|
||||||
|
'';
|
||||||
|
|
||||||
|
# ACME related settings.
|
||||||
|
# email = useremail;
|
||||||
|
# acmeCA = "https://acme-v02.api.letsencrypt.org/directory";
|
||||||
|
|
||||||
|
virtualHosts."http://grafana.writefor.fun".extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy http://localhost:3000
|
||||||
|
'';
|
||||||
|
virtualHosts."http://prometheus.writefor.fun".extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy http://localhost:9090
|
||||||
|
'';
|
||||||
|
virtualHosts."http://alertmanager.writefor.fun".extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy http://localhost:9093
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
networking.firewall.allowedTCPPorts = [80 443];
|
||||||
|
}
|
||||||
@@ -11,8 +11,8 @@
|
|||||||
# DeclarativePlugins = with pkgs.grafanaPlugins; [ grafana-piechart-panel ];
|
# DeclarativePlugins = with pkgs.grafanaPlugins; [ grafana-piechart-panel ];
|
||||||
settings = {
|
settings = {
|
||||||
server = {
|
server = {
|
||||||
http_addr = "0.0.0.0";
|
http_addr = "127.0.0.1";
|
||||||
http_port = 80;
|
http_port = 3000;
|
||||||
protocol = "http";
|
protocol = "http";
|
||||||
domain = "grafana.writefo.fun";
|
domain = "grafana.writefo.fun";
|
||||||
# Redirect to correct domain if the host header does not match the domain. Prevents DNS rebinding attacks.
|
# Redirect to correct domain if the host header does not match the domain. Prevents DNS rebinding attacks.
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
services.prometheus = {
|
services.prometheus = {
|
||||||
enable = true;
|
enable = true;
|
||||||
checkConfig = true;
|
checkConfig = true;
|
||||||
listenAddress = "0.0.0.0";
|
listenAddress = "127.0.0.1";
|
||||||
port = 9090;
|
port = 9090;
|
||||||
webExternalUrl = "https://prometheus.writefor.fun";
|
webExternalUrl = "http://prometheus.writefor.fun";
|
||||||
|
|
||||||
extraFlags = ["--storage.tsdb.retention.time=15d"];
|
extraFlags = ["--storage.tsdb.retention.time=15d"];
|
||||||
# Directory below /var/lib to store Prometheus metrics data.
|
# Directory below /var/lib to store Prometheus metrics data.
|
||||||
@@ -69,10 +69,12 @@
|
|||||||
|
|
||||||
services.prometheus.alertmanager = {
|
services.prometheus.alertmanager = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
listenAddress = "127.0.0.1";
|
||||||
|
port = 9093;
|
||||||
|
webExternalUrl = "http://alertmanager.writefor.fun";
|
||||||
logLevel = "info";
|
logLevel = "info";
|
||||||
|
|
||||||
environmentFile = config.age.secrets."alertmanager.env".path;
|
environmentFile = config.age.secrets."alertmanager.env".path;
|
||||||
webExternalUrl = "https://alertmanager.writefor.fun";
|
|
||||||
listenAddress = "[::1]";
|
|
||||||
configuration = {
|
configuration = {
|
||||||
global = {
|
global = {
|
||||||
# The smarthost and SMTP sender used for mail notifications.
|
# The smarthost and SMTP sender used for mail notifications.
|
||||||
|
|||||||
Reference in New Issue
Block a user