- materia-supervisor.service: User=root → User=beanflows_service, add PATH so uv (~/.local/bin) is found without a login shell - setup_server.sh: full rewrite — creates beanflows_service (nologin), generates SSH deploy key + age keypair as service user at XDG path (~/.config/sops/age/keys.txt), installs age/sops/rclone as root, prints both public keys + numbered next-step instructions - bootstrap_supervisor.sh: full rewrite — removes GITLAB_READ_TOKEN requirement, clones via SSH as service user, installs uv as service user, decrypts with SOPS auto-discovery, uv sync as service user, systemctl as root - web/deploy.sh: remove self-contained sops/age install + keypair generation; replace with simple sops check (exit if missing) and SOPS auto-discovery decrypt (no explicit key file needed) - infra/readme.md: update architecture diagram for beanflows_service paths, update setup steps to match new scripts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
30 lines
772 B
Desktop File
30 lines
772 B
Desktop File
[Unit]
|
|
Description=Materia Supervisor - Pipeline Orchestration
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=beanflows_service
|
|
WorkingDirectory=/opt/materia
|
|
ExecStart=/bin/sh -c 'exec uv run python src/materia/supervisor.py'
|
|
Restart=always
|
|
RestartSec=10
|
|
EnvironmentFile=/opt/materia/.env
|
|
Environment=PATH=/home/beanflows_service/.local/bin:/usr/local/bin:/usr/bin:/bin
|
|
Environment=LANDING_DIR=/data/materia/landing
|
|
Environment=DUCKDB_PATH=/data/materia/lakehouse.duckdb
|
|
Environment=SERVING_DUCKDB_PATH=/data/materia/analytics.duckdb
|
|
Environment=SUPERVISOR_GIT_PULL=1
|
|
|
|
# Resource limits
|
|
LimitNOFILE=65536
|
|
|
|
# Logging
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
SyslogIdentifier=materia-supervisor
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|