152 lines
4.5 KiB
Nix
152 lines
4.5 KiB
Nix
{ config, ... }:
|
|
|
|
let
|
|
inherit (config.virtualisation.quadlet) containers networks;
|
|
appEnv = config.sops.secrets."containers/thetree-app.env".path;
|
|
databaseEnv = config.sops.secrets."containers/thetree-database.env".path;
|
|
searchEnv = config.sops.secrets."containers/thetree-search.env".path;
|
|
rustfsEnv = config.sops.secrets."containers/thetree-rustfs.env".path;
|
|
in
|
|
{
|
|
sops.secrets = {
|
|
"containers/thetree-app.env" = {
|
|
sopsFile = ../../secrets/thetree-app.env;
|
|
format = "dotenv";
|
|
key = "";
|
|
mode = "0400";
|
|
restartUnits = [ "thetree-app.service" ];
|
|
};
|
|
|
|
"containers/thetree-database.env" = {
|
|
sopsFile = ../../secrets/thetree-database.env;
|
|
format = "dotenv";
|
|
key = "";
|
|
mode = "0400";
|
|
restartUnits = [ "thetree-database.service" ];
|
|
};
|
|
|
|
"containers/thetree-search.env" = {
|
|
sopsFile = ../../secrets/thetree-search.env;
|
|
format = "dotenv";
|
|
key = "";
|
|
mode = "0400";
|
|
restartUnits = [ "thetree-search.service" ];
|
|
};
|
|
|
|
"containers/thetree-rustfs.env" = {
|
|
sopsFile = ../../secrets/thetree-rustfs.env;
|
|
format = "dotenv";
|
|
key = "";
|
|
mode = "0400";
|
|
restartUnits = [ "thetree-rustfs.service" ];
|
|
};
|
|
};
|
|
|
|
virtualisation.quadlet = {
|
|
networks.thetree = { };
|
|
|
|
containers = {
|
|
thetree-database = {
|
|
containerConfig = {
|
|
image = "docker.io/library/mongo:latest";
|
|
networks = [ networks.thetree.ref ];
|
|
networkAliases = [ "db" ];
|
|
volumes = [
|
|
"/home/imnyang/Docker/thetree/db:/data/db:Z"
|
|
];
|
|
environmentFiles = [ databaseEnv ];
|
|
};
|
|
|
|
serviceConfig.Restart = "always";
|
|
};
|
|
|
|
thetree-redis = {
|
|
containerConfig = {
|
|
image = "docker.io/library/redis:latest";
|
|
networks = [ networks.thetree.ref ];
|
|
networkAliases = [ "redis" ];
|
|
volumes = [
|
|
"/home/imnyang/Docker/thetree/redis:/data:Z"
|
|
];
|
|
};
|
|
|
|
serviceConfig.Restart = "always";
|
|
};
|
|
|
|
thetree-search = {
|
|
containerConfig = {
|
|
image = "docker.io/getmeili/meilisearch:v1.23";
|
|
networks = [ networks.thetree.ref ];
|
|
networkAliases = [ "search" ];
|
|
volumes = [
|
|
"/home/imnyang/Docker/thetree/meili_data:/meili_data:Z"
|
|
];
|
|
environmentFiles = [ searchEnv ];
|
|
};
|
|
|
|
serviceConfig.Restart = "always";
|
|
};
|
|
|
|
thetree-rustfs = {
|
|
containerConfig = {
|
|
image = "docker.io/rustfs/rustfs:latest";
|
|
networks = [ networks.thetree.ref ];
|
|
networkAliases = [
|
|
"rustfs"
|
|
"thetree.rustfs"
|
|
];
|
|
publishPorts = [
|
|
"9000:9000"
|
|
"9001:9001"
|
|
];
|
|
podmanArgs = [ "--security-opt=no-new-privileges:true" ];
|
|
volumes = [
|
|
"/home/imnyang/Docker/thetree/rustfs/data:/data:Z"
|
|
"/home/imnyang/Docker/thetree/rustfs/logs:/app/logs:Z"
|
|
"/home/imnyang/Docker/thetree/rustfs/certs:/opt/tls:Z"
|
|
];
|
|
environmentFiles = [ rustfsEnv ];
|
|
};
|
|
|
|
serviceConfig.Restart = "always";
|
|
};
|
|
|
|
thetree-app = {
|
|
containerConfig = {
|
|
image = "ghcr.io/wjdgustn/thetree:master";
|
|
networks = [ networks.thetree.ref ];
|
|
publishPorts = [ "51337:3000" ];
|
|
addHosts = [ "host.docker.internal:host-gateway" ];
|
|
volumes = [
|
|
"/home/imnyang/Docker/thetree/skins:/usr/src/app/skins:Z"
|
|
"/home/imnyang/Docker/thetree/customStatic:/usr/src/app/customStatic:Z"
|
|
"/home/imnyang/Docker/thetree/plugins:/usr/src/app/plugins:Z"
|
|
"/home/imnyang/Docker/thetree/cache:/usr/src/app/cache:Z"
|
|
"/home/imnyang/Docker/thetree/frontend:/usr/src/app/frontend:Z"
|
|
"/home/imnyang/Docker/thetree/config:/usr/src/app/config:Z"
|
|
"/etc/timezone:/etc/timezone:ro"
|
|
"/etc/localtime:/etc/localtime:ro"
|
|
];
|
|
environmentFiles = [ appEnv ];
|
|
};
|
|
|
|
unitConfig = {
|
|
Requires = [
|
|
containers."thetree-database".ref
|
|
containers."thetree-redis".ref
|
|
containers."thetree-search".ref
|
|
containers."thetree-rustfs".ref
|
|
];
|
|
After = [
|
|
containers."thetree-database".ref
|
|
containers."thetree-redis".ref
|
|
containers."thetree-search".ref
|
|
containers."thetree-rustfs".ref
|
|
];
|
|
};
|
|
|
|
serviceConfig.Restart = "always";
|
|
};
|
|
};
|
|
};
|
|
}
|