You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/hosting.md
+66Lines changed: 66 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -356,6 +356,72 @@ A few things to note here:
356
356
- xyOps will automatically populate this directory on first container launch.
357
357
- See the [xyOps Configuration Guide](config.md) for details on how to customize the `config.json` file in this directory.
358
358
359
+
## External Storage
360
+
361
+
For using an external storage system, you have [several to choose from](https://github.com/jhuckaby/pixl-server-storage#engines). However, we recommending using **MinIO**, because it has an open source community edition, it is S3 compatible, and it handles both data and files in the same engine (i.e. you don't need to use the [Hybrid](https://github.com/jhuckaby/pixl-server-storage#hybrid) engine).
362
+
363
+
Here is a quick-start guide to getting MinIO up and running. First, it should be noted that as of October 2025, MinIO stopped publishing Docker containers for the community edition. No worries, however, because there are many trusted 3rd party MinIO Docker images that are actively maintained and work perfectly. We recommend the [Chainguard](https://www.chainguard.dev/unchained/secure-and-free-minio-chainguard-containers) images.
364
+
365
+
First, export all your data from your current xyOps storage system. You can perform a bulk data export from the "System" tab.
366
+
367
+
Then, create a Docker volume to store your MinIO data:
368
+
369
+
```sh
370
+
docker volume create minio-data
371
+
```
372
+
373
+
Next, download and run the Chainguard MinIO container, binding to our new data volume:
374
+
375
+
```sh
376
+
docker run --detach --name minio -p 9000:9000 -p 9001:9001 -v minio-data:/data cgr.dev/chainguard/minio:latest server /data --console-address ":9001"
377
+
```
378
+
379
+
Note that if you are also running xyOps in a Docker container on the same machine, you will need to [create a docker network](https://docs.docker.com/engine/network/) and add both containers to the same network, so they can communicate with each other.
380
+
381
+
Pull up the MinIO web interface in your browser by navigating to `http://MINIO_HOSTNAME:9001`. Login using the default MinIO admin username and password (definitely change these later):
382
+
383
+
- **Username**: `minioadmin`
384
+
- **Password**: `minioadmin`
385
+
386
+
Create a new bucket, e.g. `xydata`.
387
+
388
+
Then, shut down xyOps completely, and reconfigure your [Storage.AWS](config.md#storage-aws) and [Storage.S3](config.md#storage-s3) objects thusly:
389
+
390
+
```json
391
+
"AWS": {
392
+
"endpoint": "http://MINIO_HOSTNAME:9000",
393
+
"endpointPrefix": false,
394
+
"forcePathStyle": true,
395
+
"hostPrefixEnabled": false,
396
+
"region": "us-west-1",
397
+
"credentials": {
398
+
"accessKeyId": "YOUR_MINIO_USERNAME",
399
+
"secretAccessKey": "YOUR_MINIO_PASSWORD"
400
+
}
401
+
},
402
+
"S3": {
403
+
"connectTimeout": 5000,
404
+
"socketTimeout": 5000,
405
+
"maxAttempts": 50,
406
+
"keyPrefix": "",
407
+
"fileExtensions": true,
408
+
"params": {
409
+
"Bucket": "YOUR_MINIO_BUCKET_ID"
410
+
},
411
+
"cache": {
412
+
"enabled": true,
413
+
"maxItems": 100000,
414
+
"maxBytes": 104857600
415
+
}
416
+
}
417
+
```
418
+
419
+
Just for testing purposes you can set the `accessKeyId` and `secretAccessKey` properties to the MinIO defaults, i.e. `minioadmin`.
420
+
421
+
Finally, set the [Storage.engine](config.md#storage-engine) property to `S3` to use the new MinIO engine.
422
+
423
+
Start xyOps back up, and it should be using the new MinIO engine! It will create a new set of default records on launch (and you'll have to re-login as `admin` / `admin`), but you can then re-import your data on the "System" tab, which should restore everything.
424
+
359
425
## Satellite
360
426
361
427
**xyOps Satellite ([xySat](https://github.com/pixlcore/xysat))** is a companion to the xyOps system. It is both a job runner, and a data collector for server monitoring and alerting. xySat is designed to be installed on *all* of your servers, so it is lean, mean, and has zero dependencies.
0 commit comments