farmcontrol-server/readme.md
Tom Butcher 6f3c312f6d
Some checks failed
farmcontrol/farmcontrol-server/pipeline/head There was a failure building this commit
Implement NSIS installer for Farm Control Server and update build scripts
- Added a new NSIS installer script (farmcontrol-server.nsi) for packaging the Farm Control Server on Windows, replacing the previous MSI approach.
- Updated the build process to utilize the new NSIS script, including changes in the finalize-desktop-artifacts.mjs to reflect the new installer format.
- Removed the obsolete MSI build script (build-windows-msi.ps1) and related files to streamline the packaging process.
- Updated the README to reflect changes in the post-package process for Windows installers.
2026-08-01 21:30:11 +01:00

71 lines
2.3 KiB
Markdown

# Farm Control Server
[![Build Status](https://ci.tombutcher.work/buildStatus/icon?job=farmcontrol%2Ffarmcontrol-server%2Fmain&style=flat-square)](https://ci.tombutcher.work/job/farmcontrol/job/farmcontrol-server/job/main/)
A Bun application that bridges communication between Farm Control cloud services, local websocket clients, and connected printers.
## Features
- Connects to the Farm Control websocket API
- Provides a local HTTP server for CLI and integrations
- Desktop UI built with React, Ant Design, and Electrobun
- Headless Linux service packaging for servers and Raspberry Pi hosts
- Relays printer and document printer state to the desktop UI
## Requirements
- [Bun](https://bun.sh) 1.1 or newer
## Installation
1. Clone this repository
2. Install dependencies:
```
bun install
```
3. Edit `config.json` for your environment
4. Start the server:
```
bun run dev
```
## Development
- Headless server: `bun run dev`
- Desktop app with hot reload: `bun run dev:app`
- Renderer only: `bun run dev:renderer`
## Building
Build configuration lives in `electrobun.config.ts` and follows the [Electrobun build configuration](https://framework.blackboard.sh/electrobun/apis/cli/build-configuration/) model:
- **preBuild** — validates sources, writes build metadata, and runs the Vite renderer build
- **postPackage** — normalizes release artifacts (DMG/PKG on macOS, NSIS installer on Windows)
Commands:
- Desktop app (current platform): `bun run build:app`
- macOS universal (arm64 + x64): `bun run build:app:mac`
- macOS single arch: `ELECTROBUN_TARGET_ARCH=arm64 bun run build:app:mac`
- macOS arm64 on Intel: cross-builds via patched Electrobun CLI (`ELECTROBUN_TARGET_ARCH=arm64`)
Universal macOS builds use split CI agents (`macos` for x64, `macos-arm64` for arm64). Locally on Intel, arm64 builds work via `ELECTROBUN_TARGET_ARCH=arm64`. On Apple Silicon, x64 uses Rosetta (`arch -x86_64`).
- Linux headless packages: `bun run build:linux`
- Clean build outputs: `bun run clean`
Desktop artifacts are written to `app_dist/`. Linux headless builds produce `.deb` and `.rpm` packages in the same folder.
## Configuration
`config.json` contains `development` and `production` sections. Each section supports:
- `logLevel`
- `url` (websocket server)
- `apiUrl`
- `host.id` and `host.authCode`
- `dataDir`
## License
MIT