This repository is made to create Docker containers running FileMaker Server, and optionally Devin.fm.
While this project was made for my own use, it is public and available for others, and I will be maintaining it - So if you experience any problems this document is not able to solve, simply open an issue or contact me
The official Claris FMS-Docker script only supports Ubuntu 20.04 and 22.04.
My repository should work for any UNIX based OS, with these having been tested:
- Manjaro (Arch) v24.0.3 Wynsdey (AMD64)
- MacOS Ventura 13.6.7 (Intel i7 and Apple M1 Max chips)
- MacOS Sonoma 14.6.1 (Apple M1 Max chip)
This repository supports FileMaker Server versions 19 through 21, others may work, but were not tested.
The latest tested versions are 21.0.2, 20.3.2, and 19.6.4
Full list of tested versions and compatibilities
This repository has a few git submodules set to private repositories. They are not required for execution of this repository!
The official Claris Docker script directory. The submodule is here for my testing purposes only
To get the Docker FMS installation script as it is provided by Claris, you must have access to a FileMaker Server installation.
Install FileMaker Server 20 on a machine, and you'll find the script in the following path: /opt/FileMaker/FileMaker Server/Tools/Docker
.
The script will be available in the Docker
directory within the FMS-21 installation package
A fork of the official Devin.fm installation script for UNIX (download).
Proposed a modification and sent it to the developers, so that the script works regardless of execution context.
First, download the FileMaker Server installation files.
https://accounts.claris.com/software/license/FMS_LICENSE_CODE
Or use the download script - Based on .env LICENSE
variable
For Devin.fm, also download the installation script, and place it within its installation directory
Place the FileMaker Server installation .deb
file within the appropriate version folder.
If the version folder does not exist, it can be duplicated from one of the other version folders - But dockerfile may need to be modified to update dependencies.
The base image used for preparing the final FMS image is deanayalon/fms-prep.
It can be built manually using the dockerfiles or simply with docker compose build prep
, using the correct environment variables.
The fms-prep container maps the port 10443:443
, for private configuration of the server before committing the final image.
Installation steps:
- Compose:
docker compose up -d prep
- install script - Executes the filemaker server installation within the container
If installing Devin.fm, make sure to choose an admin-console password that does NOT contain ':'
- Afterwards, user will be prompted and instructed on how to install Devin.fm
- Configure FileMaker Server using The admin console
- If installing a Devin development server, make sure to keep FileMaker Data API enabled
- To disable the default backup schedule (FMS), run
fmsadmin disable schedule 1
from within the container
- image script (docker commit)
Do NOT upload the final image publicly, as it includes your admin-console credentials!
It may also include:
- Devin API key for staging/production servers using Devin.fm
- SSL/TLS certificate and private key, if set in admin-console during prep stage
- Database credentials and encryption keys, if set in admin-console during prep stage
The final image is for private use only!
If after having built an FMS image, you want to modify the image, such as modifying the configurations, updating the certificates, and custom installations - You do not need to go through the installation process all over again.
docker compose up -d modify
will create anfms-prep
container based on your existing 'final' FMS image, and bind it to the same mounts and ports as the prep service.- After having modified the fms-prep container, simply use the image script again to commit the modified version into the final image.
The image script will prompt, asking whether you would like to save the existing version tag
By default, the previous version is tagged as IMAGE:TAG-prev
The FileMaker Server backup directories (ClonesOnly, Backups) and the external files (RC_Data_FMS) use bind mounts, so that they are not saved within the Docker volume assigned for FMS.
In order to back the FMS or Devin.fm server itself up, use the backup service: docker compose up backup
This container will archive the volumes assigned to fms and devin into the $DEV_BACKUP_MOUNT/<timestamp>/<volume>.tar.gz
This method may allow one to work with a 'portable' FMS server, and thus, use Devin.fm locally
The restore service is used to decompress backups into their respective containers. To use it: docker compose up restore
This service is not yet ideal and works with a few restrictions:
- Restores the most recently modified directory within the dev-backups mount.
- Restores the backups by title, and matches them with
$DEVIN_VOL
and$FMS_VOL
Make sure the archive names in the latest directory within the dev-backups mount match the volumes set in
.env
, or the restore service will simply not find the correct file to unarchive.
I do not know yet how this service behaves with already populated volumes, so currently, it only certainly works with empty volumes.
I will test this out, and may add lines emptying the volumes before restoring the backups
The default mounts used are found within the mounts directory, to use a different path, change the $*_MOUNT
variables in .env.
Make sure the mounted directory has RWX permissions for both the user and group!
Mounted directories:
- backups holds the
.fmp12
files made by FileMaker Server full backups - clones holds the
.fmp12
files made by FileMaker Server cloning - dev-backup holds the
.tar.gz
archives of the$FMS_VOL
and$DEVIN_VOL
volumes, made by the backup service - files holds the external files stored by FileMaker container fields
- Login to the Admin Console and import the certificate files
- Restart FileMaker Server, or the container
This can be done during the prep stage, but increases the vulnerability of the final image.
Use the copy-db script to copy a database into the fms container. And subsequently, into the $FMS_VOL
volume defined in .env
.
This will handle the necessary permissions, and copy the db into the Databases folder
Will in the future support the Secure folder, custom directories, copying from SCP, and frp, existing Docker volumes
The base compose file, defines prep and fms
Defines environment variables for nginx-proxy, according to .env
When not using proxy, this compose file maps port 443 to host
Not to be confused with the "Restart Database Server" within the Admin Console
Within the fms container
systemctl stop fmshelper
systemctl start fmshelper
If not working, composing the container down and up again may help.
See Errors