Add openclaw control center as arion service

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Philip Peterson 2026-06-10 13:25:30 -07:00
parent 671f7b5117
commit 26d4bcc857
3 changed files with 51 additions and 0 deletions

View file

@ -0,0 +1,45 @@
{ pkgs, ... }:
{
project.name = "openclaw";
networks.openclaw.external = false;
services = {
app = {
service = {
image = "node:lts-alpine";
container_name = "openclaw";
restart = "unless-stopped";
networks = [ "openclaw" ];
volumes = [
"/var/openclaw/app:/app"
"/root/.openclaw:/root/.openclaw:ro"
];
ports = [ "127.0.0.1:4310:4310" ];
environment = {
PORT = "4310";
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
npm install
npm run build
exec npm run dev:ui
''
];
};
};
};
}

View file

@ -0,0 +1,3 @@
import <nixpkgs> {
system = "x86_64-linux";
}

View file

@ -175,6 +175,7 @@ in {
projects.riverside.settings = import ./arion-riverside/arion-compose.nix; projects.riverside.settings = import ./arion-riverside/arion-compose.nix;
projects.pluto.settings = import ./arion-pluto/arion-compose.nix; projects.pluto.settings = import ./arion-pluto/arion-compose.nix;
projects.paperless.settings = import ./arion-paperless/arion-compose.nix; projects.paperless.settings = import ./arion-paperless/arion-compose.nix;
projects.openclaw.settings = import ./arion-openclaw/arion-compose.nix;
}; };
# The arion NixOS module sets backend = "podman-socket" but doesn't inject # The arion NixOS module sets backend = "podman-socket" but doesn't inject
@ -184,6 +185,7 @@ in {
systemd.services.arion-riverside.environment.DOCKER_HOST = "unix:///run/podman/podman.sock"; systemd.services.arion-riverside.environment.DOCKER_HOST = "unix:///run/podman/podman.sock";
systemd.services.arion-pluto.environment.DOCKER_HOST = "unix:///run/podman/podman.sock"; systemd.services.arion-pluto.environment.DOCKER_HOST = "unix:///run/podman/podman.sock";
systemd.services.arion-paperless.environment.DOCKER_HOST = "unix:///run/podman/podman.sock"; systemd.services.arion-paperless.environment.DOCKER_HOST = "unix:///run/podman/podman.sock";
systemd.services.arion-openclaw.environment.DOCKER_HOST = "unix:///run/podman/podman.sock";
# Build the VNC desktop image locally from the Dockerfile — no registry push/pull needed. # Build the VNC desktop image locally from the Dockerfile — no registry push/pull needed.
# vncContext is a Nix store path that changes whenever any file under vnc-desktop/ changes, # vncContext is a Nix store path that changes whenever any file under vnc-desktop/ changes,
@ -259,6 +261,7 @@ in {
"d /var/paperless/consume 0755 root root" "d /var/paperless/consume 0755 root root"
"d /var/paperless/postgres 0755 root root" "d /var/paperless/postgres 0755 root root"
"d /var/paperless/redis 0755 root root" "d /var/paperless/redis 0755 root root"
"d /var/openclaw/app 0755 root root"
"d /var/riverside/files 0755 root root" "d /var/riverside/files 0755 root root"
"d /var/riverside/postgres 0755 root root" "d /var/riverside/postgres 0755 root root"
"d /var/lib/gitea-runner/ubuntu 0755 gitea-runner gitea-runner" "d /var/lib/gitea-runner/ubuntu 0755 gitea-runner gitea-runner"