Edited 2025-12-22: The problem is specific to ARM architecture and OttoFMS versions 4.14.0 and 4.14.1. Version 4.13.1 has no issue.
Copilot helped make the following problem report and seems pretty certain this is an issue with the installer. Are others not seeing the same issue?
Subject: OttoFMS 4.14.1 Linux installer creates invalid systemd service file causing NOPERMISSION errors
Severity: High - Service fails to start via systemd restart but works when started manually
Description:
The OttoFMS Linux installer (version 4.14.1) creates a systemd service file with configuration errors that cause permission-related failures when restarting the service through systemd, though the service runs successfully when started manually.
Root Causes:
Systemd unit file bug: After and Wants directives are incorrectly placed in [Install] section instead of [Unit] section
Exit code 4/NOPERMISSION: Service exits with permission error during automated restarts, triggering systemd rate limiting
Rate limiting: After 5 rapid restart attempts, systemd blocks further starts with “Start request repeated too quickly”
Symptoms:
Service fails with status=4/NOPERMISSION when restarted via systemd
Manual start (systemctl start) works correctly after stopping
Service file shows configuration warnings about unknown keys in Install section
Service File Issue:
Environment:
OS: Ubuntu 22.04 LTS (ARM64)
FileMaker Server: 22.0.4
OttoFMS Version: 4.14.1 (binary dated Dec 10, 2024)
The second step is new. I never used to need to create the data directory. Unsure if the installer changed or a new version of Ansible no longer creates the directory automatically on the next step. Edit: It’s probably because when OttoFMS is working, it creates the data directory on first start.
It looks like the unit file regression and an extra permissions tripwire when ottofms tries to touch /opt/OttoFMS before the data dir exists are happening here on ARM with 4.14.x. 4.13.1 works because the service starts up without any problems and makes its own data path the first time it runs.
What helped me get out of the 404 + restart loop was:
Make the unit file so that After=/Wants= goes to [Unit]
Before systemd ever starts ottofms, you need to manually mkdir -p /opt/OttoFMS/data and chown fmserver:fmsadmin.
Instead of restarting the first time, use systemctl daemon-reload and then systemctl start.
After that, ottofms stops giving the NOPERMISSION error on ARM, and the /otto endpoint appears. It seems like the installer needs to find the arch and create the data dir ahead of time, or else systemd gets mad and goes into rate-limit hell.
Same issue for me on 4.15, using Ubuntu 24.04.3 LTS, AWS t4.xlarge EC2 instance.
Error in the system logs:
Jan 16 12:20:08 jaru systemd[1]: Failed to start ottofms-proofgeist-com.service - ottofms-service-proofgeist.
– Boot 7f2bc94259404d549bd99dde67143219 –
Jan 16 12:22:24 jaru systemd[1]: Started ottofms-proofgeist-com.service - ottofms-service-proofgeist.
Jan 16 12:22:24 jaru systemd[1]: ottofms-proofgeist-com.service: Main process exited, code=exited, status=4/NOPERMISSION
Jan 16 12:22:24 jaru systemd[1]: ottofms-proofgeist-com.service: Failed with result ‘exit-code’.
Jan 16 12:22:24 jaru systemd[1]: ottofms-proofgeist-com.service: Scheduled restart job, restart counter is at 1.
Jan 16 12:22:24 jaru systemd[1]: Started ottofms-proofgeist-com.service - ottofms-service-proofgeist.
Jan 16 12:22:25 jaru systemd[1]: ottofms-proofgeist-com.service: Main process exited, code=exited, status=4/NOPERMISSION
Jan 16 12:22:25 jaru systemd[1]: ottofms-proofgeist-com.service: Failed with result ‘exit-code’.
Jan 16 12:22:25 jaru systemd[1]: ottofms-proofgeist-com.service: Scheduled restart job, restart counter is at 2.
Jan 16 12:22:25 jaru systemd[1]: Started ottofms-proofgeist-com.service - ottofms-service-proofgeist.
Jan 16 12:22:25 jaru systemd[1]: ottofms-proofgeist-com.service: Main process exited, code=exited, status=4/NOPERMISSION
Jan 16 12:22:25 jaru systemd[1]: ottofms-proofgeist-com.service: Failed with result ‘exit-code’.
Jan 16 12:22:25 jaru systemd[1]: ottofms-proofgeist-com.service: Scheduled restart job, restart counter is at 3.
Jan 16 12:22:25 jaru systemd[1]: Started ottofms-proofgeist-com.service - ottofms-service-proofgeist.
I tried a few variations of what @barbar09 is implying but couldn’t get it to work.
OttoFMS 4.15.1 was just released that fixes this issue. Let me know if you continue having any issues on any Linux architectures when using the new version.