DeanAyalon / fms-docker

A repository for building Docker containers running FileMaker Server and Devin.fm
2 stars 3 forks source link
devin-fm docker filemaker-server

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:

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:

THE FINAL IMAGE IS CONFIDENTIAL!

Do NOT upload the final image publicly, as it includes your admin-console credentials!
It may also include:

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.

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:

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:

Certificates

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

compose.yml

The base compose file, defines prep and fms

compose.proxy.yml

Defines environment variables for nginx-proxy, according to .env

compose.standalone.yml

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