Skip to content

A repository for building Docker containers running FileMaker Server and Devin.fm

Notifications You must be signed in to change notification settings

DeanAyalon/fms-docker

Repository files navigation

Purpose

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

What about the official script?

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)

Supported FMS versions

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

Submodule Access

This repository has a few git submodules set to private repositories. They are not required for execution of this repository!

claris-fms-docker

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.

FileMaker Server 2023 (v20)

Install FileMaker Server 20 on a machine, and you'll find the script in the following path: /opt/FileMaker/FileMaker Server/Tools/Docker.

FileMaker Server 2024 (v21)

The script will be available in the Docker directory within the FMS-21 installation package

install_devin

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.

Use

Downloads

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

Pre-Installation

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.

Installation (prep)

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)

THE FINAL IMAGE IS CONFIDENTIAL!

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!

Post-Installation

Image Modification

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 an fms-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

Backup

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

Restore

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

Bind Mounts

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

Certificates

  • 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 Existing Databases

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

Compose Files

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

Restart FileMaker Server

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.

⚠️ Errors ⚠️

See Errors

Featured Technologies

FileMaker FileMaker Server Devin.fm

Docker Docker Scout

VSCode Shell

About

A repository for building Docker containers running FileMaker Server and Devin.fm

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Languages