server.nix/containers.nix

192 lines
5.3 KiB
Nix
Raw Normal View History

2024-02-23 01:56:51 +02:00
{
pkgs,
config,
lib,
...
}: let
settings = import ./settings.nix {};
backend = config.virtualisation.oci-containers.backend;
in {
system.activationScripts = {
docker-network-setup =
if backend == "docker"
then ''
${lib.getExe pkgs.docker} network inspect authentik || ${lib.getExe pkgs.docker} network create authentik
${lib.getExe pkgs.docker} network inspect authentik-internal || ${lib.getExe pkgs.docker} network create authentik-internal
${lib.getExe pkgs.docker} network inspect ${settings.firefish_docker_network} || ${lib.getExe pkgs.docker} network create ${settings.firefish_docker_network}
''
else "";
};
virtualisation.oci-containers = {
backend = "docker";
containers = {
drasl = {
autoStart = true;
image = "unmojang/drasl";
ports = [
"${toString settings.ports.drasl}:25585"
];
volumes = [
"${settings.server_configs}/drasl/config:/etc/drasl"
"${settings.server_configs}/drasl/data:/var/lib/drasl"
];
};
firefish = {
autoStart = true;
image = "registry.joinfirefish.org/firefish/firefish";
ports = [
"${toString settings.ports.firefish}:3000"
];
volumes = [
"${settings.server_configs}/firefish/files:/firefish/files"
"${settings.server_configs}/firefish/config:/firefish/.config:ro"
];
environment = {
NODE_ENV = "production";
};
extraOptions = [
"--network=${settings.firefish_docker_network}"
];
dependsOn = [
"firefish-redis"
"firefish-db"
"firefish-meilisearch"
];
};
firefish-redis = {
autoStart = true;
image = "docker.io/redis:7.0-alpine";
volumes = [
# TODO: move to proper location
2024-02-23 01:56:51 +02:00
"/home/owo/firefish/redis:/data"
];
extraOptions = [
"--network=${settings.firefish_docker_network}"
];
};
firefish-db = {
autoStart = true;
image = "docker.io/postgres:15-alpine";
environment = {
POSTGRES_USER = "firefish";
POSTGRES_DB = "firefish";
};
2024-03-22 13:08:54 +02:00
2024-02-23 01:56:51 +02:00
volumes = [
# TODO: move to proper location
2024-02-23 01:56:51 +02:00
"/home/owo/firefish/db:/var/lib/postgresql/data"
];
extraOptions = [
"--network=${settings.firefish_docker_network}"
];
};
firefish-meilisearch = {
autoStart = true;
image = "getmeili/meilisearch:v1.1.1";
volumes = [
"${settings.server_configs}/firefish/meili_data:/meili_data"
];
extraOptions = [
"--network=${settings.firefish_docker_network}"
];
};
plextraktsync = {
autoStart = true;
image = "ghcr.io/taxel/plextraktsync";
2024-03-05 21:21:27 +02:00
cmd = ["watch"];
2024-02-23 01:56:51 +02:00
environment = {
2024-03-05 21:21:27 +02:00
PUID = "1000";
PGID = "1000";
TZ = "Europe/Tallinn";
2024-02-23 01:56:51 +02:00
};
volumes = [
"${settings.server_configs}/plextraktsync:/app/config"
];
};
cross-seed = {
autoStart = true;
image = "crossseed/cross-seed";
volumes = [
"${settings.server_configs}/cross-seed/config:/config"
"${settings.server_configs}/cross-seed/cross-seed:/cross-seeds"
"/home/owo/.local/share/qBittorrent/BT_backup:/torrents"
];
cmd = [
"daemon"
];
extraOptions = [
"--network=host"
];
};
watchtower = {
autoStart = true;
image = "containrrr/watchtower:latest-dev";
volumes = [
"/var/run/docker.sock:/var/run/docker.sock"
"/home/owo/.docker/config.json:/config.json"
];
environment = {
2024-03-22 13:08:54 +02:00
WATCHTOWER_NOTIFICATIONS = "shoutrrr";
2024-02-23 01:56:51 +02:00
};
cmd = [
"--interval=30"
];
};
archivebox = {
autoStart = true;
image = "archivebox/archivebox:master";
cmd = [
"server"
"0.0.0.0:8000"
];
ports = [
"${toString settings.ports.archivebox}:8000"
];
environment = {
2024-03-05 21:21:27 +02:00
ALLOWED_HOSTS = "*";
MEDIA_MAX_SIZE = "750m";
2024-02-23 01:56:51 +02:00
};
volumes = [
"${settings.server_configs}/archivebox/data:/data"
];
};
wakapi = {
autoStart = true;
image = "ghcr.io/muety/wakapi:latest";
environment = {
2024-03-22 13:43:52 +02:00
WAKAPI_PUBLIC_URL = "https://waka.catnip.ee";
2024-02-23 01:56:51 +02:00
WAKAPI_MAIL_SENDER = "Wakapi <wakapi@catnip.ee>";
2024-03-22 13:08:54 +02:00
WAKAPI_MAIL_SMTP_HOST = "mx1.sly.ee";
2024-02-23 01:56:51 +02:00
WAKAPI_MAIL_SMTP_PORT = "465";
WAKAPI_MAIL_SMTP_USER = "wakapi@catnip.ee";
WAKAPI_MAIL_SMTP_TLS = "true";
};
environmentFiles = [
"/etc/secrets/wakapi.env"
];
ports = [
"${toString settings.ports.wakapi}:3000"
];
volumes = [
2024-03-22 13:45:50 +02:00
"${settings.server_configs_home}/wakapi:/data"
2024-02-23 01:56:51 +02:00
];
extraOptions = [
#"--pull=always"
];
};
jellyfin-vue = {
autoStart = true;
image = "jellyfin/jellyfin-vue:unstable";
ports = [
"${toString settings.ports.jellyfin_vue}:80"
];
extraOptions = [
#"--pull=always"
];
};
};
};
}