server.nix/services/archivebox.nix

111 lines
2.7 KiB
Nix
Raw Normal View History

2025-01-17 20:55:33 +02:00
{ settings, lib, pkgs, ... }:
2024-10-29 19:45:31 +02:00
let
2024-10-29 20:21:11 +02:00
dockerNetwork = "archivebox";
sonicConfig = {
server = {
log_level = "warn";
};
channel = {
inet = "0.0.0.0:1491";
tcp_timeout = 300;
auth_password = "\${env.SEARCH_BACKEND_PASSWORD}";
search = {
query_limit_default = 65535;
query_limit_maximum = 65535;
query_alternates_try = 10;
suggest_limit_default = 5;
suggest_limit_maximum = 20;
};
};
store = {
kv = {
path = "/var/lib/sonic/store/kv/";
retain_word_objects = 100000;
pool = {
inactive_after = 1800;
};
database = {
flush_after = 900;
compress = true;
parallelism = 2;
max_files = 100;
max_compactions = 1;
max_flushes = 1;
write_buffer = 16384;
write_ahead_log = true;
};
};
fst = {
path = "/var/lib/sonic/store/fst/";
pool = {
inactive_after = 300;
};
graph = {
consolidate_after = 180;
max_size = 2048;
max_words = 250000;
};
};
};
};
2025-01-17 20:55:33 +02:00
port = 4009;
2024-10-29 19:45:31 +02:00
in
{
2024-10-29 20:21:11 +02:00
system.activationScripts.archivebox-docker-network = ''
${lib.getExe pkgs.docker} network inspect ${dockerNetwork} || ${lib.getExe pkgs.docker} network create ${dockerNetwork}
'';
2024-10-29 19:45:31 +02:00
virtualisation.oci-containers.containers = {
archivebox = {
autoStart = true;
2024-12-21 10:51:57 +00:00
image = "docker.io/archivebox/archivebox:0.7.3";
2024-10-29 19:45:31 +02:00
ports = [
2025-01-17 20:55:33 +02:00
"${toString port}:8000"
2024-10-29 19:45:31 +02:00
];
environment = {
2024-10-29 20:21:11 +02:00
SEARCH_BACKEND_ENGINE = "sonic";
SEARCH_BACKEND_HOST_NAME = "sonic";
2024-10-29 19:45:31 +02:00
};
2024-10-29 20:21:11 +02:00
environmentFiles = [
"/etc/secrets/sonic.env"
];
2024-10-29 19:45:31 +02:00
volumes = [
"${settings.server_configs_home}/archivebox:/data"
];
2024-10-29 20:21:11 +02:00
extraOptions = [
"--network=${dockerNetwork}"
];
};
sonic = {
autoStart = true;
hostname = "sonic";
image = "docker.io/valeriansaliou/sonic:latest";
environmentFiles = [
"/etc/secrets/sonic.env"
];
volumes = [
"${(pkgs.formats.toml {}).generate "sonic.cfg" sonicConfig}:/etc/sonic.cfg:ro"
"${settings.server_configs_home}/sonic:/var/lib/sonic/store"
];
extraOptions = [
"--network=${dockerNetwork}"
];
2024-10-29 19:45:31 +02:00
};
};
services = {
borgbackup.jobs."borgbase".paths = [
"/home/owo/Documents/server_configs/archivebox"
"/home/owo/Documents/server_configs/sonic"
];
caddy.virtualHosts."http://archive.internal".extraConfig = ''
@local remote_ip private_ranges 100.64.0.0/10
reverse_proxy @local :${toString port}
'';
};
2024-10-29 19:45:31 +02:00
}