Compare commits

...
24 Commits
Author SHA1 Message Date
ahtlon ef5f811bc7 update gatekeeper+portal
Hydra callback / on_pr (push) Skipped
Hydra callback / on_push (push) Skipped
Check flake syntax / flake-check (push) Successful in 8m57s
2026-11-07 14:28:31 +01:00
ahtlon b570bddbc5 Merge pull request 'add portal' (#210) from portal into master
Hydra callback / on_pr (push) Skipped
Hydra callback / on_push (push) Skipped
Check flake syntax / flake-check (push) Successful in 10m2s
Reviewed-on: #210
2026-11-07 14:21:43 +01:00
kalipso 66328a5fbf [portal] disable printing 2026-11-07 14:21:43 +01:00
kalipso 2f964aeeae [portal] disable backup user 2026-11-07 14:21:43 +01:00
kalipso 3e6c40f0dc [portal] update 2026-11-07 14:21:43 +01:00
kalipso 6917bc359b [portal] update 2026-11-07 14:21:43 +01:00
kalipso b5d0ef7099 [portal] update 2026-11-07 14:21:43 +01:00
kalipso 7c395a72e0 [portal] use gatekeeper api port 8000 2026-11-07 14:21:43 +01:00
kalipso 5be3d3ba62 [goldman] open port 8000 2026-11-07 14:21:43 +01:00
kalipso c4b38ecc7a [portal] update 2026-11-07 14:21:43 +01:00
kalipso d273204b7d [portal] import missing hosts 2026-11-07 14:21:43 +01:00
kalipso dd776cfede [portal] update 2026-11-07 14:21:43 +01:00
kalipso 586dbc711a [portal] update lock 2026-11-07 14:21:43 +01:00
kalipso 95f7e039ac [portal] init 2026-11-07 14:21:43 +01:00
ahtlon 7800ea61f3 [goldman] add autoupdate
Hydra callback / on_push (push) Skipped
Hydra callback / on_pr (push) Skipped
Check flake syntax / flake-check (push) Successful in 15m27s
2026-11-06 20:36:56 +01:00
ahtlon 0862da3576 Merge pull request '[nextcloud] upgrade to hub 26 summer/v35' (#206) from nextcloud_35 into master
Hydra callback / on_pr (push) Skipped
Hydra callback / on_push (push) Skipped
Check flake syntax / flake-check (push) Successful in 11m38s
Reviewed-on: #206
Reviewed-by: kalipso <kalipso@c3d2.de>
2026-10-27 17:24:36 +01:00
ahtlon 9c884e553c [nextcloud] increase cpu count for nextcloud microvm
Hydra callback / on_push (pull_request) Skipped
Hydra callback / on_pr (pull_request) Successful in 2m9s
Check flake syntax / flake-check (push) Successful in 12m14s
2026-10-26 10:49:59 +01:00
ahtlon fcb9642023 [nextcloud] upgrade to hub 26 summer/v35
Hydra callback / on_push (pull_request) Skipped
Hydra callback / on_pr (pull_request) Successful in 7m14s
Check flake syntax / flake-check (push) Successful in 17m41s
2026-10-25 00:55:25 +02:00
ahtlon ce09e8003e Merge pull request 'Upgrade nextcloud to v34' (#205) from nextcloud_upgrade_34 into master
Hydra callback / on_pr (push) Skipped
Hydra callback / on_push (push) Skipped
Check flake syntax / flake-check (push) Successful in 24m58s
Reviewed-on: #205
2026-10-23 00:21:38 +02:00
ahtlon cbcf5a0c5b [nextcloud] use default deck app
Hydra callback / on_pr (pull_request) Successful in 6m15s
Hydra callback / on_push (pull_request) Skipped
Check flake syntax / flake-check (push) Successful in 20m51s
With thanks to https://github.com/nextcloud/deck/pull/7765
2026-10-22 21:14:34 +02:00
ahtlon 52b43a9b2b [Nextcloud] upgrade to 34 2026-10-22 21:14:34 +02:00
ahtlon 5c373880fd [Nextcloud] Update admin pass 2026-10-22 21:14:34 +02:00
kalipso f7533dff9d Merge pull request 'Fix PHP critical RCE' (#204) from php_fix into master
Hydra callback / on_pr (push) Skipped
Hydra callback / on_push (push) Skipped
Check flake syntax / flake-check (push) Successful in 26m29s
2026-10-22 12:07:32 +02:00
kalipso 88f7da1700 [nixpkgs] update
Check flake syntax / flake-check (push) Successful in 5m9s
Hydra callback / on_push (pull_request) Skipped
Hydra callback / on_pr (pull_request) Successful in 1h16m46s
2026-10-22 10:42:04 +02:00
9 changed files with 164 additions and 35 deletions
Generated
+66 -11
View File
@@ -88,11 +88,11 @@
"uv2nix": "uv2nix" "uv2nix": "uv2nix"
}, },
"locked": { "locked": {
"lastModified": 1786138873, "lastModified": 1793952308,
"narHash": "sha256-+G/hTquaK4AjYxNSJTpcZXUEKxFDv9lOn3x+lHHTWJw=", "narHash": "sha256-4NNLnvolKzJ7aNOzf85q6x5RtLWwhcLcsFssdGiBcHA=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "c5934d05c6f01c94c36221deb7ed4de03aa91ca1", "rev": "8ca4da2e1a9f56babd14a862a2ac770d81de046a",
"revCount": 127, "revCount": 145,
"type": "git", "type": "git",
"url": "https://git.dynamicdiscord.de/malobeo/gatekeeper" "url": "https://git.dynamicdiscord.de/malobeo/gatekeeper"
}, },
@@ -264,11 +264,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1788187754, "lastModified": 1792615934,
"narHash": "sha256-bu1QxmXKmPuvBLN7bHP355OV9Qo13x9WCiRDH62CqRM=", "narHash": "sha256-MlvRfa1O5Cqc2/a+gG+l9TSuowEoCKCmrJ1d9oAVm0I=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5dfba6236110080a54247d6460bc2ff5dda939cc", "rev": "da6dc0e7b26060f2f71ce3ef7088fb56ee44fa36",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -278,6 +278,27 @@
"type": "github" "type": "github"
} }
}, },
"portal": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"utils": "utils_3"
},
"locked": {
"lastModified": 1793962157,
"narHash": "sha256-syLIoDUWY5g2ubyNZNqgR+R6R5wLgSD8/XWnIazjhYc=",
"ref": "refs/heads/master",
"rev": "5a5b043354b88f024b53fce39b60a563fd895063",
"revCount": 33,
"type": "git",
"url": "https://git.dynamicdiscord.de/malobeo/portal"
},
"original": {
"type": "git",
"url": "https://git.dynamicdiscord.de/malobeo/portal"
}
},
"pyproject-build-systems": { "pyproject-build-systems": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -341,9 +362,10 @@
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_3",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"portal": "portal",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"tasklist": "tasklist", "tasklist": "tasklist",
"utils": "utils_3", "utils": "utils_4",
"zineshop": "zineshop" "zineshop": "zineshop"
} }
}, },
@@ -443,6 +465,21 @@
"type": "github" "type": "github"
} }
}, },
"systems_5": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tasklist": { "tasklist": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -503,6 +540,24 @@
"inputs": { "inputs": {
"systems": "systems_3" "systems": "systems_3"
}, },
"locked": {
"lastModified": 1791914995,
"narHash": "sha256-Zf/xfQEAasnwnmEfHqW/4hjDE/s44yn2hD4RuVIZRjA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b7a79d3fea1e214f6d668d521cecec0c01e26544",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_4": {
"inputs": {
"systems": "systems_4"
},
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
@@ -517,9 +572,9 @@
"type": "github" "type": "github"
} }
}, },
"utils_4": { "utils_5": {
"inputs": { "inputs": {
"systems": "systems_4" "systems": "systems_5"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1731533236,
@@ -565,7 +620,7 @@
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"utils": "utils_4" "utils": "utils_5"
}, },
"locked": { "locked": {
"lastModified": 1792488750, "lastModified": 1792488750,
+5
View File
@@ -32,6 +32,11 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
portal = {
url = "git+https://git.dynamicdiscord.de/malobeo/portal";
inputs.nixpkgs.follows = "nixpkgs";
};
ep3-bs = { ep3-bs = {
url = "git+https://git.dynamicdiscord.de/kalipso/ep3-bs.nix"; url = "git+https://git.dynamicdiscord.de/kalipso/ep3-bs.nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
+17
View File
@@ -149,6 +149,7 @@ in
"antamap" "antamap"
"ns1" "ns1"
"wordpress" "wordpress"
"portal"
]; ];
networking = { networking = {
@@ -184,6 +185,22 @@ in
}; };
}; };
virtualHosts."portal.hq.malobeo.org" = {
forceSSL = true;
enableACME = true;
acmeRoot = null;
locations."/" = {
proxyPass = "http://${hosts.malobeo.hosts.portal.network.address}:8080";
extraConfig = ''
proxy_set_header Host $host;
client_max_body_size ${inputs.self.nixosConfigurations.nextcloud.config.services.nextcloud.maxUploadSize};
client_body_timeout 3600s;
send_timeout 3600s;
fastcgi_buffers 64 4K;
'';
};
};
virtualHosts."cloud.hq.malobeo.org" = { virtualHosts."cloud.hq.malobeo.org" = {
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
+10 -1
View File
@@ -14,6 +14,7 @@ in
#inputs.nixos-hardware.nixosModules.raspberry-pi-3 #inputs.nixos-hardware.nixosModules.raspberry-pi-3
(modulesPath + "/profiles/minimal.nix") (modulesPath + "/profiles/minimal.nix")
#(modulesPath + "/installer/sd-card/sd-image.nix") #(modulesPath + "/installer/sd-card/sd-image.nix")
../modules/autoupdate.nix
]; ];
fileSystems."/" = fileSystems."/" =
@@ -21,6 +22,14 @@ in
fsType = "ext4"; fsType = "ext4";
}; };
malobeo.autoUpdate = {
enable = true;
url = "https://hydra.malobeo.org";
project = "malobeo";
jobset = "master";
cacheurl = "https://cache.malobeo.org";
};
#Try to reduce size #Try to reduce size
documentation.man.enable = false; documentation.man.enable = false;
documentation.nixos.enable = false; documentation.nixos.enable = false;
@@ -86,7 +95,7 @@ in
}; };
}; };
networking.firewall.allowedTCPPorts = [ 80 443 1883]; networking.firewall.allowedTCPPorts = [ 80 443 1883 8000 ];
system.stateVersion = "23.05"; system.stateVersion = "23.05";
} }
+7 -2
View File
@@ -146,10 +146,15 @@ in
wordpress = { wordpress = {
type = "microvm"; type = "microvm";
network = createMaloNet "21" "52:DA:0D:F9:EF:F6"; network = createMaloNet "21" "52:DA:0D:F9:EF:F7";
}; };
# last host id: 21 portal = {
type = "microvm";
network = createMaloNet "22" "52:DA:0D:F9:EF:F8";
};
# last host id: 22
}; };
}; };
} }
+3 -9
View File
@@ -6,6 +6,7 @@ let
hosts = import ../hosts.nix {}; hosts = import ../hosts.nix {};
in in
{ {
microvm.vcpu = 2;
sops.defaultSopsFile = ./secrets.yaml; sops.defaultSopsFile = ./secrets.yaml;
sops.secrets = { sops.secrets = {
nextcloudAdminPass = { nextcloudAdminPass = {
@@ -39,7 +40,7 @@ in
services.nextcloud = { services.nextcloud = {
enable = true; enable = true;
package = pkgs.nextcloud33; package = pkgs.nextcloud35;
hostName = "cloud.malobeo.org"; hostName = "cloud.malobeo.org";
config.adminpassFile = config.sops.secrets.nextcloudAdminPass.path; config.adminpassFile = config.sops.secrets.nextcloudAdminPass.path;
maxUploadSize = "10G"; maxUploadSize = "10G";
@@ -49,16 +50,10 @@ in
configureRedis = true; configureRedis = true;
caching = { caching = {
redis = true; redis = true;
apcu = true;
}; };
extraAppsEnable = true; extraAppsEnable = true;
extraApps = { extraApps = {
inherit (config.services.nextcloud.package.packages.apps) contacts calendar polls registration collectives forms; inherit (config.services.nextcloud.package.packages.apps) contacts calendar polls registration collectives forms deck;
deck = pkgs.fetchNextcloudApp {
sha256 = "sha256-Oc/J0Ey7f9aHhLBWoAXaDMe2t0eeEQKvpwY510qNpiI=";
url = "https://s3.g.megas4.com/ya5mczgkbk6bw7tcy2yr4bl2vdryfe76ok2dj/malo/deck33.tar.gz";
license = "agpl3Plus";
};
}; };
settings = { settings = {
trusted_domains = [ "cloud.malobeo.org" "cloud.hq.malobeo.org" ]; trusted_domains = [ "cloud.malobeo.org" "cloud.hq.malobeo.org" ];
@@ -68,7 +63,6 @@ in
"default_phone_region" = "DE"; "default_phone_region" = "DE";
}; };
phpOptions = { phpOptions = {
"realpath_cache_size" = "0";
"opcache.interned_strings_buffer" = "32"; "opcache.interned_strings_buffer" = "32";
}; };
}; };
+8 -12
View File
@@ -1,12 +1,7 @@
nextcloudAdminPass: ENC[AES256_GCM,data:es9hhtCcqBqPbV2L,iv:Kyq5kqao0uaMPs0GeRkJT9OWYSZfImBXngg51k0uQ0M=,tag:zN/u90/j4rmdo0HtY+cF9w==,type:str] nextcloudAdminPass: ENC[AES256_GCM,data:RsP8Q1FqS9qgYTNe+H/nDHwQwr0fvlQawCOJWZVoF2U=,iv:AqJ79m3GAUd6sczDByJlb+K3XxxEt3HS4fURd7kn0bY=,tag:n/GyRKrIwOcksDtewnnXZw==,type:str]
sops: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c - enc: |
enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPT3ZxNEpRVktDWG9BR0Rv YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPT3ZxNEpRVktDWG9BR0Rv
ZUZQTkJwQ0pSblNvTkFOT3BBdjVaSzJhVzBvCnVWc2xRUjBnRFFXSDgxczRMSFMy ZUZQTkJwQ0pSblNvTkFOT3BBdjVaSzJhVzBvCnVWc2xRUjBnRFFXSDgxczRMSFMy
@@ -14,8 +9,8 @@ sops:
aDd0UlpMR3RNd3BDMmhqNmxhTFRoUlkK6Pni+cswKIU94WkP/fg5fzSmx/fhXjjl aDd0UlpMR3RNd3BDMmhqNmxhTFRoUlkK6Pni+cswKIU94WkP/fg5fzSmx/fhXjjl
mRG2o4ALCqcOxAxHBrKJppUCLjUgKG53wPF/jlIzkvbwHwnqVMfYsQ== mRG2o4ALCqcOxAxHBrKJppUCLjUgKG53wPF/jlIzkvbwHwnqVMfYsQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1g084sl230x94mkd2wq92s03mw0e8mnpjdjfx9uzaxw6psm8neyzqqwpnqe recipient: age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c
enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRK2o2K2tPTFcvbXRkZ0lq YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRK2o2K2tPTFcvbXRkZ0lq
bS9ZOUc3dG1JeERZYVNsc3k3RjcxQ0RsdkRJCkx1VFhBQXRDOElqakJ0eTd3NEJX bS9ZOUc3dG1JeERZYVNsc3k3RjcxQ0RsdkRJCkx1VFhBQXRDOElqakJ0eTd3NEJX
@@ -23,8 +18,9 @@ sops:
VjBFeldXS1p0Zk1uSk02aHpJd3BPOHcKvCmnK/KttB4RgnID/fj2KOdjvNnV3EWU VjBFeldXS1p0Zk1uSk02aHpJd3BPOHcKvCmnK/KttB4RgnID/fj2KOdjvNnV3EWU
B9mW4yxbEqhoxtu+GFD3eR/8SvMPEsHl9xorT/ZygMG7hAzedSukWw== B9mW4yxbEqhoxtu+GFD3eR/8SvMPEsHl9xorT/ZygMG7hAzedSukWw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2024-11-26T20:00:50Z" recipient: age1g084sl230x94mkd2wq92s03mw0e8mnpjdjfx9uzaxw6psm8neyzqqwpnqe
mac: ENC[AES256_GCM,data:qoY9SfpoU+8HfvD5v/1S6BOkbnZUmHIbtwr0tTSuPETjnFNgr1VVw9mnRatJKPYYFb9/rMZQWIqTY+iUIEkcTVyVXhd6ki5CHW+uxCeBIyMzq33rtEa/btkEUoii4iPieamBCIY21W0znE+edxfR04yRJtLxMICEbuW4Hjf6bwk=,iv:nG42fRgjpuIjPMYnn/6egEdzYolcUBsspaZ8zMv4888=,tag:C6apGoAvVLsWdLWSCwrx6w==,type:str] lastmodified: "2026-10-22T19:07:13Z"
mac: ENC[AES256_GCM,data:HD1uqrxxfLrHGQfu7HFpuunpj/npPe35AvvFrhGFRUTtXLGRPDn5xeOiuHyT+qSs51lukE+hYhv/+u4xolb0SInOJtPTZ6suRcZ4maJ+9P0mgjs7OmI4e68CpGo0xuOg378WvlF15VQH2KCcVskEkO9UBTfOUmyNku1g4F6PeWw=,iv:cJaz6dYkspBlBY9aCaK2/zBDiVg7J7nCE+fnwNHz1Tw=,tag:5sKITZ8uD7JnRtwhaOPoGw==,type:str]
pgp: pgp:
- created_at: "2025-03-05T08:24:30Z" - created_at: "2025-03-05T08:24:30Z"
enc: |- enc: |-
@@ -65,4 +61,4 @@ sops:
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: aef8d6c7e4761fc297cda833df13aebb1011b5d4 fp: aef8d6c7e4761fc297cda833df13aebb1011b5d4
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.8.1 version: 3.13.3
+6
View File
@@ -270,6 +270,12 @@ in
targets = [ "${hosts.malobeo.hosts.wordpress.network.address}:9002" ]; targets = [ "${hosts.malobeo.hosts.wordpress.network.address}:9002" ];
}]; }];
} }
{
job_name = "portal";
static_configs = [{
targets = [ "${hosts.malobeo.hosts.zineshop.network.address}:9002" ];
}];
}
# add vpn - check how to reach it first. most probably 10.100.0.1 # add vpn - check how to reach it first. most probably 10.100.0.1
]; ];
}; };
+42
View File
@@ -0,0 +1,42 @@
{ self, config, lib, pkgs, inputs, ... }:
with lib;
let
hosts = import ../hosts.nix {};
in
{
networking = {
hostName = mkDefault "portal";
useDHCP = false;
};
imports = [
inputs.malobeo.nixosModules.malobeo.metrics
inputs.portal.nixosModules.portal
inputs.self.nixosModules.malobeo.users
../modules/sshd.nix
];
malobeo.metrics = {
enable = true;
enablePromtail = true;
logNginx = true;
};
malobeo.users = {
admin = true;
};
services.portal = {
enable = true;
#TODO: we should use FQDN like gatekeeper.hq.malobeo.org
gatekeeperHost = "${hosts.malobeo.hosts.goldman.network.address}:8000";
gatekeeperScheme = "http";
};
networking.firewall.allowedTCPPorts = [ 8080 ];
system.stateVersion = "22.11"; # Did you read the comment?
}