1
1
Fork 0

containers: rename sevices to arion-*

Signed-off-by: Myned <dev@bjork.tech>
This commit is contained in:
Myned 2024-10-08 18:23:50 -05:00
parent 9e368e5f80
commit e98e4f41f3
Signed by: myned
GPG key ID: C7224454F7881A34
11 changed files with 234 additions and 278 deletions

View file

@ -12,18 +12,14 @@ in {
#?? arion-actualbudget pull #?? arion-actualbudget pull
environment.shellAliases.arion-actualbudget = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.actualbudget.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-actualbudget = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.actualbudget.settings.out.dockerComposeYaml}";
virtualisation.arion.projects.actualbudget = { virtualisation.arion.projects.actualbudget.settings.services = {
serviceName = "actualbudget"; actualbudget.service = {
container_name = "actualbudget";
settings.services = { image = "actualbudget/actual-server:24.9.0";
actualbudget.service = { ports = ["5006:5006"];
container_name = "actualbudget"; restart = "unless-stopped";
image = "actualbudget/actual-server:24.9.0"; volumes = ["${config.custom.containers.directory}/actualbudget/data:/data"];
ports = ["5006:5006"]; # TODO: Set up trusted proxies
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/actualbudget/data:/data"];
# TODO: Set up trusted proxies
};
}; };
}; };
}; };

View file

@ -21,21 +21,17 @@ in {
#?? arion-coturn pull #?? arion-coturn pull
environment.shellAliases.arion-coturn = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.coturn.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-coturn = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.coturn.settings.out.dockerComposeYaml}";
virtualisation.arion.projects.coturn = { virtualisation.arion.projects.coturn.settings.services = {
serviceName = "coturn"; # https://conduwuit.puppyirl.gay/turn.html
coturn.service = {
container_name = "coturn";
image = "coturn/coturn:4.6";
network_mode = "host";
restart = "unless-stopped";
settings.services = { volumes = [
# https://conduwuit.puppyirl.gay/turn.html "${config.custom.containers.directory}/coturn/coturn.conf:/etc/coturn/turnserver.conf"
coturn.service = { ];
container_name = "coturn";
image = "coturn/coturn:4.6";
network_mode = "host";
restart = "unless-stopped";
volumes = [
"${config.custom.containers.directory}/coturn/coturn.conf:/etc/coturn/turnserver.conf"
];
};
}; };
}; };

View file

@ -24,35 +24,31 @@ in {
networking.firewall.allowedTCPPorts = [22]; # SSH networking.firewall.allowedTCPPorts = [22]; # SSH
virtualisation.arion.projects.forgejo = { virtualisation.arion.projects.forgejo.settings.services = {
serviceName = "forgejo"; # https://codeberg.org/forgejo/forgejo
# https://forgejo.org/docs/latest/admin/
#?? docker exec -it forgejo bash
#?? sudo -u git forgejo admin user create --username USERNAME --random-password --email EMAIL --admin
forgejo.service = {
container_name = "forgejo";
depends_on = ["db"];
env_file = [config.age.secrets."${config.custom.profile}/forgejo/.env".path];
image = "codeberg.org/forgejo/forgejo:8";
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/forgejo/data:/data"];
settings.services = { ports = [
# https://codeberg.org/forgejo/forgejo "127.0.0.1:3333:3000"
# https://forgejo.org/docs/latest/admin/ "22:2222"
#?? docker exec -it forgejo bash ];
#?? sudo -u git forgejo admin user create --username USERNAME --random-password --email EMAIL --admin };
forgejo.service = {
container_name = "forgejo";
depends_on = ["db"];
env_file = [config.age.secrets."${config.custom.profile}/forgejo/.env".path];
image = "codeberg.org/forgejo/forgejo:8";
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/forgejo/data:/data"];
ports = [ db.service = {
"127.0.0.1:3333:3000" container_name = "forgejo-db";
"22:2222" env_file = [config.age.secrets."${config.custom.profile}/forgejo/db.env".path];
]; image = "postgres:15";
}; restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/forgejo/db:/var/lib/postgresql/data"];
db.service = {
container_name = "forgejo-db";
env_file = [config.age.secrets."${config.custom.profile}/forgejo/db.env".path];
image = "postgres:15";
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/forgejo/db:/var/lib/postgresql/data"];
};
}; };
}; };
}; };

View file

@ -21,18 +21,14 @@ in {
#?? arion-foundryvtt pull #?? arion-foundryvtt pull
environment.shellAliases.arion-foundryvtt = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.foundryvtt.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-foundryvtt = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.foundryvtt.settings.out.dockerComposeYaml}";
virtualisation.arion.projects.foundryvtt = { virtualisation.arion.projects.foundryvtt.settings.services = {
serviceName = "foundryvtt"; foundryvtt.service = {
container_name = "foundryvtt";
settings.services = { env_file = [config.age.secrets."${config.custom.profile}/foundryvtt/.env".path];
foundryvtt.service = { image = "felddy/foundryvtt:12";
container_name = "foundryvtt"; ports = ["127.0.0.1:30000:30000"];
env_file = [config.age.secrets."${config.custom.profile}/foundryvtt/.env".path]; restart = "unless-stopped";
image = "felddy/foundryvtt:12"; volumes = ["${config.custom.containers.directory}/foundryvtt/data:/data"];
ports = ["127.0.0.1:30000:30000"];
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/foundryvtt/data:/data"];
};
}; };
}; };
}; };

View file

@ -22,39 +22,35 @@ in {
#?? arion-headscale pull #?? arion-headscale pull
environment.shellAliases.arion-headscale = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.headscale.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-headscale = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.headscale.settings.out.dockerComposeYaml}";
virtualisation.arion.projects.headscale = { virtualisation.arion.projects.headscale.settings.services = {
serviceName = "headscale"; # https://headscale.net/
# https://github.com/juanfont/headscale
# BUG: Does not support generic DoH/DoT
# https://github.com/juanfont/headscale/issues/1312
headscale.service = {
command = "serve";
container_name = "headscale";
env_file = [config.age.secrets."${config.custom.profile}/headscale/.env".path];
image = "headscale/headscale:v0.23.0-beta.4";
restart = "unless-stopped";
settings.services = { ports = [
# https://headscale.net/ "9999:9999"
# https://github.com/juanfont/headscale "9090:9090"
# BUG: Does not support generic DoH/DoT ];
# https://github.com/juanfont/headscale/issues/1312
headscale.service = {
command = "serve";
container_name = "headscale";
env_file = [config.age.secrets."${config.custom.profile}/headscale/.env".path];
image = "headscale/headscale:v0.23.0-beta.4";
restart = "unless-stopped";
ports = [ volumes = [
"9999:9999" "${config.custom.containers.directory}/headscale/config:/etc/headscale"
"9090:9090" "${config.custom.containers.directory}/headscale/data:/var/lib/headscale"
];
volumes = [ # Minimum config.yaml
"${config.custom.containers.directory}/headscale/config:/etc/headscale" # https://github.com/juanfont/headscale/blob/main/config-example.yaml
"${config.custom.containers.directory}/headscale/data:/var/lib/headscale" # https://github.com/juanfont/headscale/blob/main/integration/hsic/config.go
"${pkgs.writeText "config.yaml" ''
# Minimum config.yaml noise:
# https://github.com/juanfont/headscale/blob/main/config-example.yaml private_key_path: /var/lib/headscale/noise_private.key
# https://github.com/juanfont/headscale/blob/main/integration/hsic/config.go ''}:/etc/headscale/config.yaml"
"${pkgs.writeText "config.yaml" '' ];
noise:
private_key_path: /var/lib/headscale/noise_private.key
''}:/etc/headscale/config.yaml"
];
};
}; };
}; };
}; };

View file

@ -12,17 +12,13 @@ in {
#?? arion-homeassistant pull #?? arion-homeassistant pull
environment.shellAliases.arion-homeassistant = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.homeassistant.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-homeassistant = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.homeassistant.settings.out.dockerComposeYaml}";
virtualisation.arion.projects.homeassistant = { virtualisation.arion.projects.homeassistant.settings.services = {
serviceName = "homeassistant"; homeassistant.service = {
container_name = "homeassistant";
settings.services = { image = "homeassistant/home-assistant:2024.9.1";
homeassistant.service = { ports = ["8123:8123"];
container_name = "homeassistant"; restart = "unless-stopped";
image = "homeassistant/home-assistant:2024.9.1"; volumes = ["${config.custom.containers.directory}/homeassistant/config:/config"];
ports = ["8123:8123"];
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/homeassistant/config:/config"];
};
}; };
}; };
}; };

View file

@ -22,40 +22,36 @@ in {
#?? arion-mastodon pull #?? arion-mastodon pull
environment.shellAliases.arion-mastodon = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.mastodon.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-mastodon = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.mastodon.settings.out.dockerComposeYaml}";
virtualisation.arion.projects.mastodon = { virtualisation.arion.projects.mastodon.settings.services = {
serviceName = "mastodon"; # https://github.com/linuxserver/docker-mastodon
# https://github.com/mastodon/mastodon/blob/main/docker-compose.yml
mastodon.service = {
container_name = "mastodon";
env_file = [config.age.secrets."${config.custom.profile}/mastodon/.env".path];
image = "lscr.io/linuxserver/mastodon:4.2.12";
ports = ["3000:443"];
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/mastodon/config:/config"];
settings.services = { depends_on = [
# https://github.com/linuxserver/docker-mastodon "cache"
# https://github.com/mastodon/mastodon/blob/main/docker-compose.yml "db"
mastodon.service = { ];
container_name = "mastodon"; };
env_file = [config.age.secrets."${config.custom.profile}/mastodon/.env".path];
image = "lscr.io/linuxserver/mastodon:4.2.12";
ports = ["3000:443"];
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/mastodon/config:/config"];
depends_on = [ cache.service = {
"cache" container_name = "mastodon-cache";
"db" image = "redis:latest";
]; restart = "unless-stopped";
}; volumes = ["${config.custom.containers.directory}/mastodon/cache:/data"];
};
cache.service = { db.service = {
container_name = "mastodon-cache"; container_name = "mastodon-db";
image = "redis:latest"; env_file = [config.age.secrets."${config.custom.profile}/mastodon/db.env".path];
restart = "unless-stopped"; image = "postgres:15";
volumes = ["${config.custom.containers.directory}/mastodon/cache:/data"]; restart = "unless-stopped";
}; volumes = ["${config.custom.containers.directory}/mastodon/db:/var/lib/postgresql/data"];
db.service = {
container_name = "mastodon-db";
env_file = [config.age.secrets."${config.custom.profile}/mastodon/db.env".path];
image = "postgres:15";
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/mastodon/db:/var/lib/postgresql/data"];
};
}; };
}; };
}; };

View file

@ -24,63 +24,59 @@ in {
environment.shellAliases.arion-netbox = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.netbox.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-netbox = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.netbox.settings.out.dockerComposeYaml}";
# https://github.com/netbox-community/netbox-docker # https://github.com/netbox-community/netbox-docker
virtualisation.arion.projects.netbox = { # https://github.com/netbox-community/netbox-docker/blob/release/docker-compose.yml
serviceName = "netbox"; virtualisation.arion.projects.netbox.settings.services = let
netbox = {
container_name = "netbox";
depends_on = ["cache" "db"];
env_file = [config.age.secrets."${config.custom.profile}/netbox/.env".path];
image = "localhost/netbox"; # Built image
restart = "unless-stopped";
user = "unit:root";
volumes = ["${config.custom.containers.directory}/netbox/media:/opt/netbox/netbox/media"];
};
in {
netbox.service =
netbox
// {
ports = ["8585:8080"];
# https://github.com/netbox-community/netbox-docker/blob/release/docker-compose.yml # https://github.com/netbox-community/netbox-docker/wiki/Using-Netbox-Plugins
settings.services = let #!! Context modifications require a rebuild
netbox = { #?? arion-netbox build --no-cache
container_name = "netbox"; build.context = "${./.}";
depends_on = ["cache" "db"];
env_file = [config.age.secrets."${config.custom.profile}/netbox/.env".path];
image = "localhost/netbox"; # Built image
restart = "unless-stopped";
user = "unit:root";
volumes = ["${config.custom.containers.directory}/netbox/media:/opt/netbox/netbox/media"];
};
in {
netbox.service =
netbox
// {
ports = ["8585:8080"];
# https://github.com/netbox-community/netbox-docker/wiki/Using-Netbox-Plugins
#!! Context modifications require a rebuild
#?? arion-netbox build --no-cache
build.context = "${./.}";
};
housekeeping.service =
netbox
// {
container_name = "netbox-housekeeping";
command = ["/opt/netbox/housekeeping.sh"];
depends_on = ["netbox"];
};
worker.service =
netbox
// {
container_name = "netbox-worker";
command = ["/opt/netbox/venv/bin/python" "/opt/netbox/netbox/manage.py" "rqworker"];
depends_on = ["netbox"];
};
cache.service = {
container_name = "netbox-cache";
command = ["sh" "-c" "valkey-server --requirepass $$REDIS_PASSWORD"];
env_file = [config.age.secrets."${config.custom.profile}/netbox/cache.env".path];
image = "docker.io/valkey/valkey:8.0";
restart = "unless-stopped";
}; };
db.service = { housekeeping.service =
container_name = "netbox-db"; netbox
env_file = [config.age.secrets."${config.custom.profile}/netbox/db.env".path]; // {
image = "docker.io/postgres:16"; container_name = "netbox-housekeeping";
restart = "unless-stopped"; command = ["/opt/netbox/housekeeping.sh"];
volumes = ["${config.custom.containers.directory}/netbox/db:/var/lib/postgresql/data"]; depends_on = ["netbox"];
}; };
worker.service =
netbox
// {
container_name = "netbox-worker";
command = ["/opt/netbox/venv/bin/python" "/opt/netbox/netbox/manage.py" "rqworker"];
depends_on = ["netbox"];
};
cache.service = {
container_name = "netbox-cache";
command = ["sh" "-c" "valkey-server --requirepass $$REDIS_PASSWORD"];
env_file = [config.age.secrets."${config.custom.profile}/netbox/cache.env".path];
image = "docker.io/valkey/valkey:8.0";
restart = "unless-stopped";
};
db.service = {
container_name = "netbox-db";
env_file = [config.age.secrets."${config.custom.profile}/netbox/db.env".path];
image = "docker.io/postgres:16";
restart = "unless-stopped";
volumes = ["${config.custom.containers.directory}/netbox/db:/var/lib/postgresql/data"];
}; };
}; };

View file

@ -22,60 +22,56 @@ in {
#?? arion-nextcloud pull #?? arion-nextcloud pull
environment.shellAliases.arion-nextcloud = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.nextcloud.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-nextcloud = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.nextcloud.settings.out.dockerComposeYaml}";
virtualisation.arion.projects.nextcloud = { virtualisation.arion.projects.nextcloud.settings.services = {
serviceName = "nextcloud"; # https://github.com/nextcloud/docker
nextcloud.service = {
container_name = "nextcloud";
env_file = [config.age.secrets."${config.custom.profile}/nextcloud/.env".path];
image = "nextcloud:29-apache";
ports = ["127.0.0.1:8181:80"];
restart = "unless-stopped";
settings.services = { volumes = [
# https://github.com/nextcloud/docker "${config.custom.containers.directory}/nextcloud/app:/var/www/html"
nextcloud.service = { "${config.custom.containers.directory}/nextcloud/data:/var/www/html/data"
container_name = "nextcloud"; ];
env_file = [config.age.secrets."${config.custom.profile}/nextcloud/.env".path];
image = "nextcloud:29-apache";
ports = ["127.0.0.1:8181:80"];
restart = "unless-stopped";
volumes = [ depends_on = [
"${config.custom.containers.directory}/nextcloud/app:/var/www/html" "db"
"${config.custom.containers.directory}/nextcloud/data:/var/www/html/data" "cache"
]; ];
};
depends_on = [ cron.service = {
"db" container_name = "nextcloud-cron";
"cache" entrypoint = "/cron.sh";
]; image = "nextcloud:29-apache";
}; restart = "unless-stopped";
volumes =
config.virtualisation.arion.projects.nextcloud.settings.services.nextcloud.service.volumes; # volumes_from
cron.service = { depends_on = [
container_name = "nextcloud-cron"; "db"
entrypoint = "/cron.sh"; "cache"
image = "nextcloud:29-apache"; ];
restart = "unless-stopped"; };
volumes =
config.virtualisation.arion.projects.nextcloud.settings.services.nextcloud.service.volumes; # volumes_from
depends_on = [ cache.service = {
"db" container_name = "nextcloud-cache";
"cache" image = "redis:latest";
]; restart = "unless-stopped";
}; volumes = ["${config.custom.containers.directory}/nextcloud/cache:/data"];
};
cache.service = { db.service = {
container_name = "nextcloud-cache"; container_name = "nextcloud-db";
image = "redis:latest"; env_file = [config.age.secrets."${config.custom.profile}/nextcloud/db.env".path];
restart = "unless-stopped"; image = "postgres:15";
volumes = ["${config.custom.containers.directory}/nextcloud/cache:/data"]; restart = "unless-stopped";
};
db.service = { volumes = [
container_name = "nextcloud-db"; "${config.custom.containers.directory}/nextcloud/db:/var/lib/postgresql/data"
env_file = [config.age.secrets."${config.custom.profile}/nextcloud/db.env".path]; ];
image = "postgres:15";
restart = "unless-stopped";
volumes = [
"${config.custom.containers.directory}/nextcloud/db:/var/lib/postgresql/data"
];
};
}; };
}; };
}; };

View file

@ -12,23 +12,19 @@ in {
#?? arion-redlib pull #?? arion-redlib pull
environment.shellAliases.arion-redlib = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.redlib.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-redlib = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.redlib.settings.out.dockerComposeYaml}";
virtualisation.arion.projects.redlib = { virtualisation.arion.projects.redlib.settings.services = {
serviceName = "redlib"; redlib.service = {
container_name = "redlib";
image = "quay.io/redlib/redlib:latest";
ports = ["127.0.0.1:8888:8080"];
restart = "unless-stopped";
settings.services = { environment = {
redlib.service = { REDLIB_DEFAULT_HIDE_HLS_NOTIFICATION = "on";
container_name = "redlib"; REDLIB_DEFAULT_SHOW_NSFW = "on";
image = "quay.io/redlib/redlib:latest"; REDLIB_DEFAULT_THEME = "dracula";
ports = ["127.0.0.1:8888:8080"]; REDLIB_DEFAULT_USE_HLS = "on";
restart = "unless-stopped"; REDLIB_DEFAULT_WIDE = "off";
environment = {
REDLIB_DEFAULT_HIDE_HLS_NOTIFICATION = "on";
REDLIB_DEFAULT_SHOW_NSFW = "on";
REDLIB_DEFAULT_THEME = "dracula";
REDLIB_DEFAULT_USE_HLS = "on";
REDLIB_DEFAULT_WIDE = "off";
};
}; };
}; };
}; };

View file

@ -21,33 +21,29 @@ in {
#?? arion-searxng pull #?? arion-searxng pull
environment.shellAliases.arion-searxng = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.searxng.settings.out.dockerComposeYaml}"; environment.shellAliases.arion-searxng = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.searxng.settings.out.dockerComposeYaml}";
virtualisation.arion.projects.searxng = { virtualisation.arion.projects.searxng.settings.services = {
serviceName = "searxng"; # https://github.com/searxng/searxng
# https://github.com/searxng/searxng-docker
searxng.service = {
container_name = "searxng";
depends_on = ["cache"];
env_file = [config.age.secrets."${config.custom.profile}/searxng/.env".path];
image = "searxng/searxng:latest";
ports = ["127.0.0.1:8000:8080"];
restart = "unless-stopped";
settings.services = { volumes = [
# https://github.com/searxng/searxng "${./limiter.toml}:/etc/searxng/limiter.toml"
# https://github.com/searxng/searxng-docker "${./settings.yml}:/etc/searxng/settings.yml"
searxng.service = { ];
container_name = "searxng"; };
depends_on = ["cache"];
env_file = [config.age.secrets."${config.custom.profile}/searxng/.env".path];
image = "searxng/searxng:latest";
ports = ["127.0.0.1:8000:8080"];
restart = "unless-stopped";
volumes = [ # https://github.com/valkey-io/valkey
"${./limiter.toml}:/etc/searxng/limiter.toml" cache.service = {
"${./settings.yml}:/etc/searxng/settings.yml" command = "valkey-server --save 60 1 --loglevel warning";
]; container_name = "searxng-cache";
}; image = "valkey/valkey:7-alpine";
restart = "unless-stopped";
# https://github.com/valkey-io/valkey
cache.service = {
command = "valkey-server --save 60 1 --loglevel warning";
container_name = "searxng-cache";
image = "valkey/valkey:7-alpine";
restart = "unless-stopped";
};
}; };
}; };
}; };