120 lines
3.4 KiB
Nix
120 lines
3.4 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
envFileDev = config.age.secrets.librechat-env-dev.path;
|
|
in {
|
|
virtualisation.oci-containers = {
|
|
containers.meilisearch-dev = {
|
|
image = "getmeili/meilisearch:v1.12.3";
|
|
autoStart = false;
|
|
volumes = ["librechat_dev_meili:/meili_data"];
|
|
environment = {
|
|
MEILI_HTTP_ADDR = "0.0.0.0:7700";
|
|
MEILI_NO_ANALYTICS = "true";
|
|
};
|
|
environmentFiles = [envFileDev];
|
|
extraOptions = ["--ip=10.89.1.20" "--network=web-dev"];
|
|
};
|
|
|
|
containers.rag_api-dev = {
|
|
image = "ghcr.io/danny-avila/librechat-rag-api-dev-lite:latest";
|
|
autoStart = false;
|
|
environment = {
|
|
RAG_PORT = "8000";
|
|
DB_HOST = "10.89.1.1";
|
|
DB_PORT = "5432";
|
|
};
|
|
environmentFiles = [envFileDev];
|
|
dependsOn = ["meilisearch-dev"];
|
|
extraOptions = ["--add-host=postgres:10.89.1.1" "--ip=10.89.1.21" "--network=web-dev"];
|
|
ports = ["127.0.0.1:8100:8000"];
|
|
};
|
|
|
|
containers.mongodb-dev = {
|
|
image = "mongo:7";
|
|
autoStart = false;
|
|
volumes = [
|
|
"librechat_dev_mongo:/data/db"
|
|
"/var/backup/mongodb-dev:/data/backups"
|
|
];
|
|
extraOptions = ["--ip=10.89.1.22" "--network=web-dev"];
|
|
};
|
|
|
|
containers.librechat-dev = {
|
|
image = "ghcr.io/danny-avila/librechat-dev-api:latest";
|
|
autoStart = false;
|
|
ports = ["127.0.0.1:3141:3080"];
|
|
dependsOn = ["mongodb-dev" "rag_api-dev" "meilisearch-dev"];
|
|
environment = {
|
|
HOST = "0.0.0.0";
|
|
NODE_ENV = "development";
|
|
MONGO_URI = "mongodb://mongodb-dev:27017/LibreChatDev";
|
|
MEILI_HOST = "http://meilisearch-dev:7700";
|
|
RAG_PORT = "8000";
|
|
RAG_API_URL = "http://rag_api-dev:8000";
|
|
};
|
|
environmentFiles = [envFileDev];
|
|
volumes = [
|
|
"/var/lib/librechat-dev/librechat.yaml:/app/librechat.yaml:ro"
|
|
"librechat_dev_images:/app/client/public/images"
|
|
"librechat_dev_uploads:/app/uploads"
|
|
"librechat_dev_logs:/app/api/logs"
|
|
];
|
|
extraOptions = ["--ip=10.89.1.23" "--network=web-dev"];
|
|
};
|
|
};
|
|
|
|
services.traefik.dynamicConfigOptions.http = {
|
|
services.librechat-dev.loadBalancer.servers = [{url = "http://localhost:3141/";}];
|
|
routers.librechat-dev = {
|
|
rule = "Host(`chat-dev.az-gruppe.com`)";
|
|
tls.certResolver = "ionos";
|
|
service = "librechat-dev";
|
|
entrypoints = "websecure";
|
|
};
|
|
};
|
|
environment.systemPackages = [
|
|
(pkgs.writeShellScriptBin "librechat-dev" ''
|
|
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
SERVICES=(
|
|
podman-meilisearch-dev
|
|
podman-mongodb-dev
|
|
podman-rag_api-dev
|
|
podman-librechat-dev
|
|
)
|
|
|
|
case "$1" in
|
|
up)
|
|
echo "🚀 Starte LibreChat-Dev-Umgebung..."
|
|
for svc in "''${SERVICES[@]}"; do
|
|
sudo systemctl start "$svc"
|
|
done
|
|
;;
|
|
down)
|
|
echo "🛑 Stoppe LibreChat-Dev-Umgebung..."
|
|
for svc in "''${SERVICES[@]}"; do
|
|
sudo systemctl stop "$svc"
|
|
done
|
|
;;
|
|
restart)
|
|
echo "🔄 Neustart der LibreChat-Dev-Umgebung..."
|
|
for svc in "''${SERVICES[@]}"; do
|
|
sudo systemctl restart "$svc"
|
|
done
|
|
;;
|
|
status)
|
|
systemctl status "''${SERVICES[@]}"
|
|
;;
|
|
*)
|
|
echo "Usage: librechat-dev {up|down|restart|status}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
'')
|
|
];
|
|
}
|