petersweb-infra/nixos/arion-openclaw/arion-compose.nix

73 lines
2.1 KiB
Nix
Raw Normal View History

{ pkgs, ... }:
{
project.name = "openclaw";
services = {
gateway = {
service = {
image = "node:22-alpine";
container_name = "openclaw-gateway";
restart = "unless-stopped";
network_mode = "host";
volumes = [
"/var/openclaw/gateway:/app"
"/root/.openclaw:/root/.openclaw"
];
environment = {
OPENCLAW_HOME = "/root/.openclaw";
};
command = [
"sh" "-c"
''
set -e
if [ ! -f /app/node_modules/.bin/openclaw ]; then
cd /app && npm install openclaw@latest
fi
exec /app/node_modules/.bin/openclaw gateway --port 18789
''
];
};
};
app = {
service = {
image = "node:22-alpine";
container_name = "openclaw";
restart = "unless-stopped";
network_mode = "host";
volumes = [
"/var/openclaw/app:/app"
"/root/.openclaw:/root/.openclaw:ro"
];
environment = {
PORT = "4310";
UI_BIND_ADDRESS = "127.0.0.1";
OPENCLAW_HOME = "/root/.openclaw";
};
command = [
"sh" "-c"
''
set -e
apk add --no-cache git
if [ ! -d /app/repo ]; then
git clone https://github.com/TianyiDataScience/openclaw-control-center.git /app/repo
fi
cd /app/repo
if [ ! -f .env ]; then
cp .env.example .env
sed -i "s|OPENCLAW_HOME=.*|OPENCLAW_HOME=/root/.openclaw|" .env
sed -i "s|PORT=.*|PORT=4310|" .env
fi
sed -i 's/resolveUiLanguage(url.searchParams, "zh")/resolveUiLanguage(url.searchParams, "en")/g' src/ui/server.ts
sed -i 's/hasExplicitLanguage ? resolvedLanguage : "zh"/hasExplicitLanguage ? resolvedLanguage : "en"/g' src/ui/server.ts
sed -i 's/language: "zh",/language: "en",/g' src/runtime/ui-preferences.ts
npm install
npm run build
exec npm run dev:ui
''
];
};
};
};
}