Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pixlcore/xyops/llms.txt
Use this file to discover all available pages before exploring further.
Overview
This guide covers self-hosting xyOps on your own infrastructure. You’ll learn how to deploy xyOps with Docker, add worker servers, configure TLS certificates, and set up external storage backends.For production deployments, we strongly recommend our Enterprise Plan. You’ll get white-glove onboarding, configuration validation, priority support, and live chat with xyOps engineers.
Prerequisites
Before you begin:Critical requirement
The server or container running xyOps must be addressable on your network by its hostname. Worker servers connect to the conductor by hostname, so it must resolve to a reachable IP address.With Docker, set the container hostname to something that resolves on your network.
Docker deployment
Quick-start command
Deploy xyOps with a single Docker command:Docker
Docker Compose deployment
For production environments, use Docker Compose:docker-compose.yml
What’s included
After starting the container:- Web interface: Access at
http://localhost:5522(HTTP) orhttps://localhost:5523(HTTPS) - Default credentials: Username
admin, passwordadmin - Data persistence: Docker volume
xy-datastores the database (SQLite + filesystem by default) - Self-signed certificate: HTTPS uses a self-signed cert (see TLS configuration below)
Configuration directory
The main configuration file is located at/opt/xyops/conf/config.json. UI-modified settings are saved to /opt/xyops/conf/overrides.json.
To persist configuration across container restarts, bind mount the entire conf directory:
Worker server setup
xyOps uses lightweight satellite workers (xySat) to execute jobs on your servers.Adding workers via UI
The easiest way to add servers:Configure server options
- Label: Optional friendly name
- Icon: Optional emoji or icon
- Groups: Assign to server groups or use automatic grouping
- Enabled: Start enabled (default)
Copy the install command
Choose your target platform:The token expires in 24 hours. For automated provisioning, see Automated bootstrap below.
Automated bootstrap
For autoscaling or ephemeral hosts:Create an API key
- Go to Settings → API Keys
- Create a new key with only the
add_serversprivilege - Copy the API key
Modify the install command
Replace the temporary token with your API key:For Docker workers:All workers can use the same API key. Each request generates a unique server ID and permanent auth token.
Linux/macOS
docker-compose.yml
TLS configuration
xyOps supports TLS certificates via the built-in web server.Let’s Encrypt / ACME
The xyOps web server (pixl-server-web) supports automatic Let’s Encrypt certificate provisioning. Let’s Encrypt setup guideCustom certificates
To use your own certificates:- Edit
/opt/xyops/conf/config.json:
config.json
- Restart xyOps:
Reverse proxy
Alternatively, use a reverse proxy (Nginx, Caddy, Traefik) to handle TLS termination. See Multi-conductor with Nginx below for a full example.Storage backends
The default storage engine is a hybrid of SQLite (for data) and the filesystem (for files). For production or multi-conductor setups, use external storage.MinIO (S3-compatible)
Configure MinIO
- Open
http://MINIO_HOSTNAME:9001in your browser - Log in with default credentials:
minioadmin/minioadmin - Create a new bucket (e.g.,
xydata) - Create access credentials
Configure xyOps
Export your data from the System tab (if migrating), then shut down xyOps.Edit
/opt/xyops/conf/config.json:config.json
RustFS
RustFS is an open-source S3-compatible storage system (currently in alpha).Configure RustFS
- Open
http://RUSTFS_HOSTNAME:9001 - Log in with
rustfsadmin/rustfsadmin - Create a bucket (e.g.,
xydata) - Create an access key and save both the key and secret
AWS S3
For AWS S3, configure theAWS and S3 objects in config.json:
config.json
Multi-conductor with Nginx
For high availability, deploy multiple conductor servers with Nginx as a load balancer.Prerequisites
- External storage: Multi-conductor requires S3, MinIO, or another shared storage backend
- Custom domain: e.g.,
xyops.yourcompany.comfor user-facing access - TLS certificates: Ready to mount into Nginx
Architecture
- User-facing domain:
xyops.yourcompany.com(routes to Nginx) - Conductor domains:
xyops01.yourcompany.com,xyops02.yourcompany.com(internal) - Worker connections: Workers connect directly to conductors (not through Nginx) for better performance
Nginx deployment
Deploy Nginx with health check
Docker
docker-compose.yml
Deploy conductor servers
Docker
docker-compose.yml
Configure shared storage
All conductors must share the same configuration and storage backend. See Storage backends above.
Secret key rotation
xyOps uses a single secret key to encrypt secrets, sign tokens, and authenticate workers.Rotation process
- Go to System → Key Rotation
- Click Start Rotation
- The system:
- Pauses the scheduler
- Flushes queued jobs and aborts active jobs
- Generates a new key
- Re-encrypts all stored secrets
- Re-authenticates all worker servers
- Distributes the new key to backup conductors
- Writes the key to
/opt/xyops/conf/overrides.json
- Resume the scheduler (click the Paused icon in the header)
Offline recovery
If a worker or conductor was offline during rotation:Re-authenticate an offline worker
Re-authenticate an offline worker
Compute a new auth token:
SERVER_ID: Alphanumeric ID from/opt/xyops/satellite/config.jsonSECRET_KEY: Current key from the primary conductor at/opt/xyops/conf/overrides.json
/opt/xyops/satellite/config.json on the worker and set auth_token to the computed SHA-256 hex. The satellite will auto-reload within ~30 seconds.Update an offline conductor
Update an offline conductor
SSH to the offline conductor and edit
/opt/xyops/conf/overrides.json. Set secret_key to the new key from the primary conductor. Restart the conductor service.Environment variables
xyOps supports environment variable overrides for configuration. Use the formatXYOPS_key where key is a JSON property path.
Common overrides
| Variable | Example Value | Description |
|---|---|---|
XYOPS_foreground | true | Run in foreground (no daemon fork) |
XYOPS_echo | true | Echo event log to STDOUT |
XYOPS_color | true | Color-coded log output |
XYOPS_base_app_url | http://xyops.yourcompany.com | Override base app URL |
XYOPS_WebServer__port | 80 | Override HTTP port |
XYOPS_WebServer__https_port | 443 | Override HTTPS port |
XYOPS_Storage__Filesystem__base_dir | /data/xyops | Override storage directory |
__) as separators.
Full environment variable reference
Daily backups
Generate daily backups using the API:
Backup API documentation
Next steps
Configuration reference
Deep dive into all configuration options, logging, maintenance schedules, and advanced settings.
Scaling guide
Best practices for running xyOps at scale: hardware sizing, caching, multi-conductor setup, and security checklists.
CLI tools
Command-line utilities for service control, database management, and admin operations.
Air-gapped mode
Configure xyOps for air-gapped environments with IP whitelisting and offline software upgrades.