References
Services
CronService
Executes user-defined functions, static schema methods and service class methods on a configurable schedule. Tasks run as superuser.
Settings
| Setting | Description |
|---|---|
CronService.tasks |
Whitespace-separated list of method names to schedule |
<methodName>.cronExpression |
Six-field cron expression: <s> <m> <h> <dom> <mon> <dow> |
CronService.allowparallelexecution |
Allow concurrent execution of the same task (default: false) |
Markdown Rendering Hint: Children of Service(CronService) not rendered because ServiceMarkdownFormatter prevents rendering of children.
FtpService
Provides FTP access to Structr’s virtual filesystem. Users authenticate with their Structr credentials and see files according to their permissions.
Settings
| Setting | Default | Description |
|---|---|---|
application.ftp.port |
8021 | Port the FTP server listens on |
application.ftp.passivePortRange |
– | Port range for passive mode, for example “50000-50100”. Required when running in Docker. |
Markdown Rendering Hint: Children of Service(FtpService) not rendered because ServiceMarkdownFormatter prevents rendering of children.
MailService
Periodically fetches emails from configured Mailbox objects via IMAP or POP3 and stores them as EMailMessage objects. Detects duplicates using Message-ID headers and extracts attachments automatically.
Settings
| Setting | Default | Description |
|---|---|---|
mail.maxemails |
25 | Maximum emails to fetch per mailbox per check |
mail.updateinterval |
30000 | Interval between checks in milliseconds |
mail.attachmentbasepath |
/mail/attachments | Path for storing email attachments |
Related Types
Mailbox, EMailMessage
Markdown Rendering Hint: Children of Service(MailService) not rendered because ServiceMarkdownFormatter prevents rendering of children.
SSHService
Provides SSH access to an interactive Admin Console and SFTP/SSHFS access to Structr’s virtual filesystem. Only admin users can connect. Authentication requires a public key configured in the user’s publicKey property.
Settings
| Setting | Default | Description |
|---|---|---|
application.ssh.port |
8022 | Port the SSH server listens on |
application.ssh.forcepublickey |
true | Require public key authentication, disabling password login |
Markdown Rendering Hint: Children of Service(SSHService) not rendered because ServiceMarkdownFormatter prevents rendering of children.
StorageSyncService
Synchronizes the Structr filesystem (File and Folder nodes) with external storage backends. Storage providers that support synchronization monitor their backend themselves and report changes to this service, which creates, updates, moves and deletes the corresponding nodes. Replaces the former DirectoryWatchService; the old service name is still accepted in configured.services as a deprecated alias.
Configuration
A file or folder is synchronized when it is directly linked to a StorageConfiguration whose provider supports synchronization. For the local filesystem provider, mount a directory by adding a mountTarget entry to the storage configuration. The service watches for changes and periodically rescans the backend.
Folder Properties
| Property | Description |
|---|---|
mountWatchContents |
Enable live change monitoring for immediate change detection |
mountScanInterval |
Seconds between rescans (0 = no periodic scan) |
mountTargetFileType |
Node type created for discovered files (default: File) |
mountTargetFolderType |
Node type created for discovered folders (default: Folder) |
mountDoFulltextIndexing |
Add discovered files to the fulltext index |
Storage Configuration Entries
| Entry | Description |
|---|---|
mountTarget |
Path to the directory on the server filesystem (local provider) |
sync.direction |
Direction of synchronization: in (external → Structr, the default when absent), out (Structr → external), or both |
sync.deleteStale |
If true, rescans delete nodes whose backing entry vanished from the external storage (inbound scans only) |
Settings
| Setting | Description |
|---|---|
application.filesystem.followsymlinks |
Follow symbolic links when scanning directories |
log.directorywatchservice.scanquietly |
Suppress per-scan logging |
Notes
- Nested folders with their own StorageConfiguration are synchronized independently of their parent
- File contents remain in the external storage and are not imported into the database
- Changes made to files in Structr are written to the external storage by the storage provider
Markdown Rendering Hint: Children of Service(StorageSyncService) not rendered because ServiceMarkdownFormatter prevents rendering of children.