Files
2026-09-02 17:08:57 +00:00

84 lines
2.1 KiB
Markdown
Executable File

# Helpdesk Remote Sync
The Helpdesk module can synchronise its configuration and operational data between two Helpdesk installations.
## Configure both hosts
Use a long random shared token. You can use the same token in both directions or separate inbound/outbound tokens.
```dotenv
HELPDESK_SYNC_REMOTE_URL=https://other-helpdesk.example.com
HELPDESK_SYNC_REMOTE_TOKEN=replace-with-a-long-random-token
HELPDESK_SYNC_ACCEPT_TOKEN=replace-with-a-long-random-token
HELPDESK_SYNC_INCLUDE_ATTACHMENTS=true
HELPDESK_SYNC_MAX_ATTACHMENT_BYTES=10485760
HELPDESK_SYNC_TIMEOUT=120
```
After changing `.env`:
```bash
php artisan optimize:clear
```
## Check the remote endpoint
```bash
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://other-helpdesk.example.com/api/helpdesk/sync/status
```
## Pull from the configured remote host
```bash
php artisan helpdesk:sync pull
```
## Push to the configured remote host
```bash
php artisan helpdesk:sync push
```
## Settings only
```bash
php artisan helpdesk:sync pull --settings-only
php artisan helpdesk:sync push --settings-only
```
## Do not transfer attachment file contents
```bash
php artisan helpdesk:sync pull --without-files
```
Attachment database metadata still synchronises when Helpdesk data is included.
## Mirror mode
By default, sync is non-destructive: rows are inserted or updated but destination-only rows are retained.
To make the destination mirror the source:
```bash
php artisan helpdesk:sync pull --mirror
```
Use mirror mode carefully. It can delete Helpdesk records from the destination.
## User mapping
Helpdesk users are mapped by email address, not numeric user ID. `helpdesk_admin` and `helpdesk_agent` flags are synchronised. Password hashes are never copied. If a referenced user does not exist on the destination, a local user record is created with a random password.
## API endpoints
All sync endpoints require a Bearer token matching `HELPDESK_SYNC_ACCEPT_TOKEN`.
- `GET /api/helpdesk/sync/status`
- `GET /api/helpdesk/sync/export`
- `POST /api/helpdesk/sync/import`
The payload is versioned using `schema_version`.