garage01: add Garage S3 service with Caddy HTTPS proxy
Configure Garage object storage on garage01 with S3 API, Vault secrets for RPC secret and admin token, and Caddy reverse proxy for HTTPS access at s3.home.2rjus.net via internal ACME CA. Includes flake entry, VM definition, and Vault policy for the host. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
61
services/garage/default.nix
Normal file
61
services/garage/default.nix
Normal file
@@ -0,0 +1,61 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
homelab.monitoring.scrapeTargets = [
|
||||
{
|
||||
job_name = "garage";
|
||||
port = 3903;
|
||||
metrics_path = "/metrics";
|
||||
}
|
||||
{
|
||||
job_name = "caddy";
|
||||
port = 9117;
|
||||
}
|
||||
];
|
||||
|
||||
vault.secrets.garage-env = {
|
||||
secretPath = "hosts/${config.networking.hostName}/garage";
|
||||
extractKey = "env";
|
||||
outputDir = "/run/secrets/garage-env";
|
||||
services = [ "garage" ];
|
||||
};
|
||||
|
||||
services.garage = {
|
||||
enable = true;
|
||||
package = pkgs.garage;
|
||||
environmentFile = "/run/secrets/garage-env";
|
||||
settings = {
|
||||
metadata_dir = "/var/lib/garage/meta";
|
||||
data_dir = "/var/lib/garage/data";
|
||||
replication_factor = 1;
|
||||
rpc_bind_addr = "[::]:3901";
|
||||
rpc_public_addr = "garage01.home.2rjus.net:3901";
|
||||
s3_api = {
|
||||
api_bind_addr = "[::]:3900";
|
||||
s3_region = "garage";
|
||||
root_domain = ".s3.home.2rjus.net";
|
||||
};
|
||||
admin = {
|
||||
api_bind_addr = "[::]:3903";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.caddy;
|
||||
configFile = pkgs.writeText "Caddyfile" ''
|
||||
{
|
||||
acme_ca https://vault.home.2rjus.net:8200/v1/pki_int/acme/directory
|
||||
metrics
|
||||
}
|
||||
|
||||
s3.home.2rjus.net {
|
||||
reverse_proxy http://localhost:3900
|
||||
}
|
||||
|
||||
http://garage01.home.2rjus.net:9117/metrics {
|
||||
metrics
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user