Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6217401f9 | ||
|
|
d97fb37f0e | ||
|
|
75e71f9ce9 | ||
|
|
19540ea1da | ||
|
|
431f78f8af | ||
|
|
95eea6fc26 | ||
|
|
387a34ffff |
+23
-25
@@ -13,25 +13,23 @@
|
|||||||
includes = [ "config.local" ];
|
includes = [ "config.local" ];
|
||||||
enableDefaultConfig = false;
|
enableDefaultConfig = false;
|
||||||
|
|
||||||
matchBlocks =
|
settings =
|
||||||
let
|
let
|
||||||
nas = {
|
nas = {
|
||||||
user = "admin";
|
User = "admin";
|
||||||
};
|
};
|
||||||
owned = {
|
owned = {
|
||||||
user = "greg";
|
User = "greg";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
inherit nas;
|
inherit nas;
|
||||||
|
|
||||||
"*" = {
|
"*" = {
|
||||||
dynamicForwards = [ { port = 10240; } ];
|
DynamicForward = [ "10240" ];
|
||||||
serverAliveInterval = 60;
|
ServerAliveInterval = 60;
|
||||||
extraOptions = {
|
|
||||||
LogLevel = "error";
|
LogLevel = "error";
|
||||||
SetEnv = "TERM=xterm-256color";
|
SetEnv = { TERM = "xterm-256color"; };
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
"10.42.1.4" = lib.hm.dag.entryBefore [ "10.42.*" ] nas;
|
"10.42.1.4" = lib.hm.dag.entryBefore [ "10.42.*" ] nas;
|
||||||
@@ -41,46 +39,46 @@
|
|||||||
"chronicles.thehellings.lan" = lib.hm.dag.entryBefore [ "*.thehellings.lan" ] nas;
|
"chronicles.thehellings.lan" = lib.hm.dag.entryBefore [ "*.thehellings.lan" ] nas;
|
||||||
|
|
||||||
gh = {
|
gh = {
|
||||||
user = "git";
|
User = "git";
|
||||||
hostname = "github.com";
|
Hostname = "github.com";
|
||||||
};
|
};
|
||||||
"src" = {
|
"src" = {
|
||||||
user = "git";
|
User = "git";
|
||||||
hostname = "jeremiah.shire-zebra.ts.net";
|
Hostname = "jeremiah.shire-zebra.ts.net";
|
||||||
port = 32222;
|
Port = 32222;
|
||||||
};
|
};
|
||||||
srcpub = {
|
srcpub = {
|
||||||
user = "git";
|
User = "git";
|
||||||
hostname = "src.thehellings.com";
|
Hostname = "src.thehellings.com";
|
||||||
port = 2222;
|
Port = 2222;
|
||||||
};
|
};
|
||||||
ivr = {
|
ivr = {
|
||||||
user = "git";
|
User = "git";
|
||||||
hostname = "gitlab.com";
|
Hostname = "gitlab.com";
|
||||||
};
|
};
|
||||||
|
|
||||||
"ivr.thehellings.lan" = lib.hm.dag.entryBefore [ "ivr" ] {
|
"ivr.thehellings.lan" = lib.hm.dag.entryBefore [ "ivr" ] {
|
||||||
user = "gregory.hellings";
|
User = "gregory.hellings";
|
||||||
};
|
};
|
||||||
|
|
||||||
"*.thehellings.lan" = owned;
|
"*.thehellings.lan" = owned;
|
||||||
"10.42.*" = owned;
|
"10.42.*" = owned;
|
||||||
|
|
||||||
"host.crosswire.org crosswire" = {
|
"host.crosswire.org crosswire" = {
|
||||||
hostname = "host.crosswire.org";
|
Hostname = "host.crosswire.org";
|
||||||
user = "ghellings";
|
User = "ghellings";
|
||||||
};
|
};
|
||||||
|
|
||||||
fedpeople = {
|
fedpeople = {
|
||||||
hostname = "fedorapeople.org";
|
Hostname = "fedorapeople.org";
|
||||||
user = "greghellings";
|
User = "greghellings";
|
||||||
};
|
};
|
||||||
|
|
||||||
"src.fedoraproject.org pkgs.fedoraproject.org" = {
|
"src.fedoraproject.org pkgs.fedoraproject.org" = {
|
||||||
user = "greghellings";
|
User = "greghellings";
|
||||||
};
|
};
|
||||||
|
|
||||||
"127.*".extraOptions = {
|
"127.*" = {
|
||||||
PubkeyAcceptedAlgorithms = "+ssh-rsa";
|
PubkeyAcceptedAlgorithms = "+ssh-rsa";
|
||||||
HostkeyAlgorithms = "+ssh-rsa";
|
HostkeyAlgorithms = "+ssh-rsa";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -115,10 +115,15 @@ in
|
|||||||
"@\tIN\tSOA\t${config.networking.hostName}\tgreg@thehellings.com (1 1m 1m 1m 1m)"
|
"@\tIN\tSOA\t${config.networking.hostName}\tgreg@thehellings.com (1 1m 1m 1m 1m)"
|
||||||
"\tIN\tNS\t${config.networking.hostName}"
|
"\tIN\tNS\t${config.networking.hostName}"
|
||||||
];
|
];
|
||||||
makeHost = host: "${host.name}\tIN\tA\t${host.address}";
|
makeHost =
|
||||||
|
host:
|
||||||
|
[ "${host.name}\tIN\tA\t${host.address}" ]
|
||||||
|
++ lib.map (a: "${a}\tIN\tA\t${host.address}") (
|
||||||
|
if builtins.hasAttr "aliases" host then host.aliases else [ ]
|
||||||
|
);
|
||||||
in
|
in
|
||||||
pkgs.writeText "${domain}" (
|
pkgs.writeText "${domain}" (
|
||||||
builtins.concatStringsSep "\n" (preamble ++ (lib.map makeHost hosts) ++ [ "" ])
|
builtins.concatStringsSep "\n" (preamble ++ (lib.flatten (lib.map makeHost hosts)) ++ [ "" ])
|
||||||
);
|
);
|
||||||
in
|
in
|
||||||
lib.mapAttrs
|
lib.mapAttrs
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ ... }:
|
{ config, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
srcDomain = "src.thehellings.com";
|
srcDomain = "src.thehellings.com";
|
||||||
@@ -6,15 +6,23 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
greg.proxies."${srcDomain}" = {
|
greg.proxies."${srcDomain}" = {
|
||||||
target = "https://gitea.shire-zebra.ts.net";
|
target = "http://unix:${config.services.anubis.instances.git.settings.BIND}";
|
||||||
ssl = true;
|
ssl = true;
|
||||||
genAliases = false;
|
genAliases = false;
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
proxy_ssl_verify off;
|
#proxy_ssl_verify off;
|
||||||
proxy_ssl_server_name on;
|
#proxy_ssl_server_name on;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_set_header X-Forwarded-Ssl on;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Http-Version $server_protocol;
|
||||||
|
proxy_set_header User-Agent $http_user_agent;
|
||||||
client_max_body_size 100000m;
|
client_max_body_size 100000m;
|
||||||
|
|
||||||
|
#proxy_set_header Host $host;
|
||||||
|
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
#proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
#proxy_set_header X-Forwarded-Ssl on;
|
||||||
|
|
||||||
# Ultimate AI Block List v1.7 20250924
|
# Ultimate AI Block List v1.7 20250924
|
||||||
# https://perishablepress.com/ultimate-ai-block-list/
|
# https://perishablepress.com/ultimate-ai-block-list/
|
||||||
|
|
||||||
@@ -87,18 +95,22 @@ in
|
|||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ sshPort ];
|
networking.firewall.allowedTCPPorts = [ sshPort ];
|
||||||
|
|
||||||
systemd.services = {
|
services = {
|
||||||
haproxy = {
|
anubis = {
|
||||||
after = [
|
instances = {
|
||||||
"network-online.target"
|
git = {
|
||||||
];
|
enable = true;
|
||||||
wants = [
|
settings = {
|
||||||
"network-online.target"
|
BIND = "/run/anubis/anubis-git/anubis.sock";
|
||||||
];
|
COOKIE_DOMAIN = "thehellings.com";
|
||||||
|
SERVE_ROBOTS_TXT = true;
|
||||||
|
TARGET = "https://gitea.shire-zebra.ts.net/";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.haproxy = {
|
haproxy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = ''
|
config = ''
|
||||||
global
|
global
|
||||||
@@ -119,4 +131,18 @@ in
|
|||||||
server git-zeke zeke.shire-zebra.ts.net:32222
|
server git-zeke zeke.shire-zebra.ts.net:32222
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services = {
|
||||||
|
haproxy = {
|
||||||
|
after = [
|
||||||
|
"network-online.target"
|
||||||
|
];
|
||||||
|
wants = [
|
||||||
|
"network-online.target"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.nginx.extraGroups = [ config.users.groups.anubis.name ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,24 @@
|
|||||||
# them by the following commands:
|
# them by the following commands:
|
||||||
# nix run nixpkgs.matrix-synapse
|
# nix run nixpkgs.matrix-synapse
|
||||||
# register_new_matrix_user -k "B9EoPr2WV9hzwc7uL2Sx1JmvCeKDEOGCpB0uginQcQtEH4wzRtkSIdo7lltrjSQa" http://localhost:8448
|
# register_new_matrix_user -k "B9EoPr2WV9hzwc7uL2Sx1JmvCeKDEOGCpB0uginQcQtEH4wzRtkSIdo7lltrjSQa" http://localhost:8448
|
||||||
{ config, lib, ... }:
|
{ config, ... }:
|
||||||
let
|
let
|
||||||
domain = "${config.networking.domain}";
|
domain = "${config.networking.domain}";
|
||||||
fqdn = "matrix.${domain}";
|
fqdn = "matrix.${domain}";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
greg.proxies."${fqdn}" = {
|
||||||
|
extraConfig = ''
|
||||||
|
error_log /var/log/nginx/debug.log debug;
|
||||||
|
proxy_ssl_verify off;
|
||||||
|
proxy_ssl_server_name on;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Forwarded-Ssl on;
|
||||||
|
'';
|
||||||
|
genAliases = false;
|
||||||
|
ssl = true;
|
||||||
|
target = "https://matrix.shire-zebra.ts.net";
|
||||||
|
};
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
# Server the '.well-known' files to find the Matrix API server
|
# Server the '.well-known' files to find the Matrix API server
|
||||||
@@ -44,36 +56,6 @@ in
|
|||||||
return 200 '${builtins.toJSON client}';
|
return 200 '${builtins.toJSON client}';
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
# Reverse proxy in front of the actual Matrix server
|
|
||||||
"${fqdn}" = {
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
error_log /var/log/nginx/debug.log debug;
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Not the appropriate place for the chat client
|
|
||||||
locations =
|
|
||||||
(builtins.listToAttrs (
|
|
||||||
builtins.map
|
|
||||||
(
|
|
||||||
val:
|
|
||||||
lib.nameValuePair "/_${val}" {
|
|
||||||
proxyPass = "https://matrix.shire-zebra.ts.net";
|
|
||||||
}
|
|
||||||
)
|
|
||||||
[
|
|
||||||
"matrix"
|
|
||||||
"synapse"
|
|
||||||
"dendrite"
|
|
||||||
]
|
|
||||||
))
|
|
||||||
// {
|
|
||||||
"/".extraConfig = "return 404;";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -34,10 +34,5 @@ in
|
|||||||
ssl = true;
|
ssl = true;
|
||||||
genAliases = false;
|
genAliases = false;
|
||||||
};
|
};
|
||||||
"doubles.thehellings.com" = {
|
|
||||||
target = "http://localhost:8081";
|
|
||||||
ssl = true;
|
|
||||||
genAliases = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
(name: value: {
|
(name: value: {
|
||||||
inherit name;
|
inherit name;
|
||||||
address = builtins.getAttr netAttr value;
|
address = builtins.getAttr netAttr value;
|
||||||
|
aliases = lib.optionals (builtins.hasAttr "aliases" value) (builtins.getAttr "aliases" value);
|
||||||
})
|
})
|
||||||
(
|
(
|
||||||
lib.filterAttrs (
|
lib.filterAttrs (
|
||||||
|
|||||||
@@ -119,6 +119,53 @@ spec:
|
|||||||
cpu: "100m"
|
cpu: "100m"
|
||||||
memory: "2Gi"
|
memory: "2Gi"
|
||||||
|
|
||||||
|
# Anubis anti-crawler sidecar
|
||||||
|
# Anubis listens on :8080 and proxies to Gitea at http://localhost:3000
|
||||||
|
# Ingress is updated to route to the anubis port instead of http
|
||||||
|
extraContainers:
|
||||||
|
- name: anubis
|
||||||
|
image: ghcr.io/techarohq/anubis:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
env:
|
||||||
|
- name: BIND
|
||||||
|
value: ":8080"
|
||||||
|
- name: DIFFICULTY
|
||||||
|
value: "4"
|
||||||
|
- name: METRICS_BIND
|
||||||
|
value: ":9090"
|
||||||
|
- name: POLICY_FNAME
|
||||||
|
value: "/etc/anubis/policy.yaml"
|
||||||
|
- name: SERVE_ROBOTS_TXT
|
||||||
|
value: "true"
|
||||||
|
- name: TARGET
|
||||||
|
value: "http://localhost:3000"
|
||||||
|
volumeMounts:
|
||||||
|
- name: anubis-policy
|
||||||
|
mountPath: /etc/anubis
|
||||||
|
readOnly: true
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: "750m"
|
||||||
|
memory: "256Mi"
|
||||||
|
requests:
|
||||||
|
cpu: "250m"
|
||||||
|
memory: "256Mi"
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsNonRoot: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
|
||||||
|
extraVolumes:
|
||||||
|
- name: anubis-policy
|
||||||
|
configMap:
|
||||||
|
name: anubis-policy
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
type: RollingUpdate
|
type: RollingUpdate
|
||||||
rollingUpdate:
|
rollingUpdate:
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ spec:
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: mariadb-operator
|
name: mariadb-operator
|
||||||
interval: "1h"
|
interval: "1h"
|
||||||
|
version: "26.3.0"
|
||||||
---
|
---
|
||||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
kind: HelmRelease
|
kind: HelmRelease
|
||||||
@@ -33,6 +34,7 @@ spec:
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: mariadb-operator
|
name: mariadb-operator
|
||||||
interval: "1h"
|
interval: "1h"
|
||||||
|
version: "26.3.0"
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- name: mariadb-operator-crds
|
- name: mariadb-operator-crds
|
||||||
- name: longhorn
|
- name: longhorn
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ spec:
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: mariadb-operator
|
name: mariadb-operator
|
||||||
interval: "1h"
|
interval: "1h"
|
||||||
|
version: "26.3.0"
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- name: mariadb-operator-crds
|
- name: mariadb-operator-crds
|
||||||
- name: mariadb-operator
|
- name: mariadb-operator
|
||||||
|
|||||||
+2
-1
@@ -13,7 +13,8 @@
|
|||||||
"ip": "10.42.1.4",
|
"ip": "10.42.1.4",
|
||||||
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS",
|
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS",
|
||||||
"external": true,
|
"external": true,
|
||||||
"ts": "100.119.228.115"
|
"ts": "100.119.228.115",
|
||||||
|
"aliases": [ "s3" ]
|
||||||
},
|
},
|
||||||
"exodus": {
|
"exodus": {
|
||||||
"ip": null,
|
"ip": null,
|
||||||
|
|||||||
Reference in New Issue
Block a user