Home / Blog / The Penguin is Back!

The Penguin is Back!


Introduction

The original Linux version of FileMaker Server, released as 19.1 and updated in 19.2.1, ran on CentOS 7. With FileMaker Server 19.3.1 (released on June 23, 2021), the supported Linux Operating System is now Ubuntu 18.04 LTS.

Why the Switch from CentOS to Ubuntu?

CentOS (Community Enterprise Operating System) is derived from Red Hat Enterprise Linux (RHEL). Traditionally CentOS has prioritized stability over technical novelties; it would get updated only after the other operating systems in the Red Hat family had already applied them for a while. By receiving updates last – after they have been battle-tested in the upstream OSes: Fedora, CentOS Stream, and RHEL – there was an inherent stability and predictability that made CentOS a perfect fit for servers. That is why it was chosen for FileMaker Cloud and the original FileMaker Server 19.1.2 back in October of 2020.

A recent decision by Red Hat to reposition its two CentOS versions by dropping CentOS and only keeping CentOS stream means that the only remaining CentOS will start receiving updates ahead of its flagship Red Hat Enterprise Linux (RHEL) instead of after. That decision has created some uncertainty about its future and has taken away some of that promise of stability that comes from being conservative in adopting changes.

That change has been one of the driving factors for Claris in prioritizing Ubuntu as the main platform for FileMaker Server.

There are other considerations for possible future features such as containerized deployment that make Ubuntu the better option.

The CentOS deployment option is now officially deprecated but remains supported on FMS 19.1.2 and 19.2.1.

As always: feel free to reach out to me on community.claris.com with any questions or suggestions. My community handle is wimdecorte.

Why No Desktop?

Claris supports using either the Ubuntu Desktop version or the Ubuntu Minimal (server) version. We very strongly favor using only the Minimal (server) version: Linux servers are best run without any desktop UI installed on them.

Having fewer packages to maintain translates into more robustness, and fewer required resources (memory, disk space, etc.), and most importantly: better overall security.
Choosing the desktop version because it is more convenient in the short term is a deployment faux-pas. And insisting on a Desktop for your Linux server may just alienate the IT department you are trying to get cooperation from.

That leaves us with the command line to move around and get things done. We realize that for many, that is a daunting prospect because it is unfamiliar. But we can assure you: it is not half as scary as you may think it is. In this document, we will highlight useful commands to help you master this new operating system. And having a good set of tools helps tremendously.

Two specific tools can help you along: a good terminal emulator that lets you save hosts and settings and a text snippet/text expander tool that you can use to quickly access those useful commands without having to learn them by heart. You will see such a tool in action in the next sections.
Connections to your Linux server will be made through a Secure Shell connection (SSH) so that you can access the command line environment of your server from your machine. This is a similar concept to a remote desktop connection that you are no doubt familiar with.

A typical command line connection to your Linux server would be initiated like this:

ssh ubuntu@server_dns_name

which will prompt you for the Ubuntu password

If your Linux server is on AWS, you will need to include the path to your private key like this:

ssh -i /path/to/private-key.pem ubuntu@server_dns_name

Similarly, to move files to and from your Linux server, you will be using Secure Copy (SCP) or SSH File Transfer (SFTP, not to be confused with FTPS, which is the secure version of FTP). Do not be tempted to enable other forms of file-sharing such as the SMB protocol, as those will just add to your server’s security maintenance.

If your main workstation is macOS, then many of the command lines to do SSH and SFTP are already built into your operating system. On Windows, the go-to utilities to download and install are PuTTy and PuTTY SCP (PSCP) from https://putty.org/.

The Installation Process

This writeup uses an AWS virtual machine, which makes installing Ubuntu as easy as picking the right Amazon Machine Image (AMI).

Icon of a lightbulb

Pro Tip

If you use Amazon AWS as your platform for virtual servers, then use the AMIs provided by Ubuntu directly: https://cloud-images.ubuntu.com/locator/ec2/ In that list, look for version 18.04 and architecture amd64 in the AWS region that you want your server to be in.

Photo of the Amazon EC2 AMI Locator with

You can also go straight to the Community AMIs section in AWS, select Ubuntu and 64-bit and further reduce the list by filtering on 18.04 minimal. The list will then still show a lot of AMIs, so pay attention to the release date at the end of the AMI name when you pick one. The selection list on the Ubuntu site itself is easier.

Photo with the

If you want to install Ubuntu yourself on physical hardware or in your own virtualization environment (VMware, VirtualBox, etc.), then download the Server Install Image ISO for version 18.04. Follow the links provided here.

The link will take you to the most recent ISO disk image to install from:

Minimal?

The ideal Ubuntu version is 18.04 Minimal, which doesn’t mean version 18.04 and up. It means the Minimal version of 18.04. The minimal version does not have all the desktop bells and whistles; it is the version of Ubuntu geared towards stable, secure, and reliable server deployments.

Photo of Ubunto Wiki for Minimal

LTS?

Every two years, Ubuntu releases a Long Term Support version. LTS releases are the ‘enterprise grade’ releases of Ubuntu and are used the most. The overwhelming majority of all Ubuntu installations are LTS releases, making perfect sense for Claris to make this the supported version. The Ubuntu release cycles are documented here.

Some Preliminary Notes

Some of the commands that you will see throughout this guide will use sudo in front of them. Sudo means “superuser do,” which allows the command that follows to be run under higher privileges than the account you are logged in with. When you try a command, and it fails because it requires those elevated rights, it will typically tell you so that you can try again with sudo in front of it.

All Linux distributions use a Package Manager to keep track of software that you can install and available upgrades. “apt” is the command line package manager that Ubuntu and other Debian-based Linux versions use. Whenever you need to install something, you will invoke apt.

Like most operating systems, Ubuntu can use a software firewall. The most common one is called firewalld. That is the one that the FileMaker Server installer will expect and configure.

Correct Version of Ubuntu

First, check the version of Ubuntu and verify that it is 18.04, the version required by FileMaker Server. One of the commands that will let you do that is:

lsb_release -a

Photo of command line checking the version of Ubuntu to verify it is 18.04

If you do not have the required version of Ubuntu (and the latest LTS 20.04 is NOT supported), then make sure to follow the steps outlined above to grab the supported version.

Next, check to see if your machine has firewalld installed:

apt list --installed | grep firewall

If it does not, then the command will return empty, which is expected on a brand new operating system install since firewalld is not part of the default packages.

Photo of command line checking of firewalld is installed

If the firewall is installed, you will see a confirmation (look for firewalld):

Photo of command line showing confirmation of firewalld installed

While not strictly necessary since the FileMaker Server installer will take care of it, I tend to install firewalld myself.

The other application that I add immediately is unzip.

This command will install both:

sudo apt -y install firewalld unzip

If you get an error that firewalld is not available, then you may need to update the available packages first on your machine and run the available upgrades:

sudo apt update && sudo apt upgrade

Also on my list of must-have tools is a text editor that I am familiar with and Ubuntu has my favorite text editor nano pre-installed.

(I know Linux aficionados will call me a wuss, but I just don’t like the built-in vi text editor.)

For a standard FileMaker Server installation, you won’t need a text editor. Still, it comes in handy to quickly review log files or for more heavy-duty work such as configuring custom OAuth providers.

Ubuntu uses the UTC time zone by default; if needed, you can adjust the time zone for your server at this time:

sudo timedatectl set-timezone America/Toronto

Icon of a lightbulb

Pro Tip

To get the exact wording for your time zone, use the list provided by this command:
timedatectl list-timezones

Getting the FileMaker Server Installer to the Server

The FileMaker Server installer will typically be a zip file that you download from your Claris Electronic Software Download page. There are a number of different ways to get the file to your server.

I use a tool called Termius since I have many Linux servers and IoT devices to connect to. It also lets me store presets for all my servers (and synchronize them across my multiple laptops and mobile devices).

Photo of the Termius tool

Termius has support for SSH, and it has a very nice SFTP interface built into it. That makes the task of moving a file as simple as selecting “Local” on the left and my server on the right and just copying the file between the two.

Photo of the Termius SFTP interface

By default, this would put the file in the home folder of the ubuntu user account on the Linux server.

In the Linux terminal, you can always type the following command to find out what directory you are in:

pwd

(which stands for print working directory)

Photo of using the

From wherever you are, you can always get to the logged-in user’s home folder by using this command

cd ~

One alternative way to move files around – and one that I often use – is to use Amazon S3 to store the installer. Since I will use S3 to make my FileMaker Server store some offsite backups, I tend to install the AWS S3 command line toolset immediately after installing Linux. Instructions on how to this are located here. You will need to have unzip installed already at this point.

The commands required to install AWS CLI are already a part of my library of snippets in Termius so that I don’t have to remember them or look them up: all I have to do is paste or run the snippet.

Photo of the

With the AWS command line tools installed, I can grab the installer from one of my S3 buckets and drop it in the folder where I am currently located, like so:

aws s3 cp s3://my_bucket_name/FMS_installer.zip ./

As an added bonus, if your FileMaker Servers are AWS EC2 instances, then moving files around between AWS services like EC2 and S3 are *very* fast.

To verify that the FileMaker Server installer made it through ok, you can ask for a list of files. I tend to use the command below since it also shows me the file sizes in a nicely readable format:

ls -alh

Photo of the list of files including the file sizes

Unzip the installer to reveal the .deb file, which is the actual installer package. The unzip command below will place all the extracted files in the folder where the zip file is. If you want to have the files placed in a subfolder, use the -d command parameter and specify the name of the folder (the command will create it for you).

Photo after using the -d command to place the files placed in a subfolder
Icon of a lightbulb

Pro Tip

When you type the first few characters of a file name, you can hit the TAB key to autocomplete the rest of the name. Remember that file names are case-sensitive!

The README file has instructions on how to execute the deb package and how to use the Assisted Install file to limit the number of interactions with the installer. This is a good use for your favorite text editor.

To read the file:

sudo nano README_Installation_English.txt

This brings up the nano text editor, where you can navigate around with the keyboard arrows. When you are done, hit ctrl-x to quit the editor.

Photo of the Nano Text Editor
Icon of a lightbulb

Pro Tip

Like most operating systems, the command line keeps track of your previous commands, so if you need to quickly repeat a command or you made a typo and want to correct it without retyping the whole thing: hit the up arrow and scroll through the history of your previous commands until you locate your previous command so that you can make changes to it without retyping the complete command!

Installing FileMaker Server

Before you install, run this command to make sure that Ubuntu is up-to-date on all available packages:

sudo apt update

As per the README file instructions, run the following command to install FileMaker Server from the folder where you have unzipped the deb file into. Note that the deb package’s actual file name may be slightly different depending on what version and build number are current at the time you do this.

sudo apt -y install ./filemaker-server_19.3.1.47_amd64.deb

Icon of a lightbulb

Pro Tip

LikeFileMaker Server does not keep a log file of the installation, and sometimes you may need to go back and check if something didn’t quite go correctly, which may be buried in the deluge of console output you’ll get. We always tell Linux to pipe that console output to a date & time-stamped log file in addition to displaying it on screen. Append the following to your install command to do this:

2>&1 | tee deployment_$(date +%Y%m%d_%H%M%S).log


(or to any command whose output you want to save. Change the word ‘deployment’ to anything that makes sense for the command at hand).

If you want to make use of the assisted installer (to preset some installation choices such as master or worker, admin console account name, password, and PIN), you can prepend the command with the folder location of that text file:

sudo FM_ASSISTED_INSTALL=/path/to/folder apt -y install ./filemaker-server_19.3.1.47_amd64.deb

The install command will download and install all the dependencies that FileMaker Server needs. Unless you are using the Assisted Install file, there are a few points during the installation that will require input from you:

Agreeing to the License Agreement:

Photo of agreeing to the License Agreement

Choosing between a single or master installation and a worker machine installation:

Photo of choosing to install either a single or master installation and a worker machine installation

Setting up a username, password, and PIN for admin console access:

Photo of setting up the username, password, and PIN for Admin Console access

At the end of the install process (which typically takes no more than a minute or two), you’ll see a confirmation like this:

Photo of confirmation that appears at the end of the install process

But do scroll up through the output to check if any errors were reported along the way. “done.” does not automatically mean that all is well. This is one of the main reasons we always capture the output in a log file.

Pay particular attention to anything in this section:

Section of the confirmation output that will show if there are issues with starting the web server

If there are any issues with starting the web server, they will be noted there.

After installation, always check to see if the FileMaker Server services are running and also if the web server is running since you’ll need that for the admin console. Ask the system for a list of running processes (ps) and search that list for three particular strings: fm for the FileMaker-related services and apache for the web server ones and fac for the admin console:

sudo ps -e | grep -e fm -e apache -e fac

Photo showing the running processes

If all is well, there should be several apache2 web server processes and all the relevant FileMaker Server standard processes: fmserverd for the database engine, fmshelper and fmslogtrimmer for the admin part, fmsib for incremental backups, fmsased for the server-side scripting engine (schedules and PSoS), and facstart.sh for the admin console. If you do not see this initial list, then check again after the reboot discussed below.

Note: FileMaker Server on Linux uses Avahi to allow for mDNS connectivity on your network. That is the same functionality that is provided by Bonjour on Windows and macOS FileMaker Server deployments. If you do not need Bonjour-like functionality for your FileMaker Server, then you can stop the Avahi service and disable it from starting automatically. Disabling it has no effect on FileMaker Server:

sudo service avahi-daemon
stop sudo systemctl disable avahi-daemon

During the installation process, you will have noticed that FMS suggests a reboot:

Photo of highlighting prompt to reboot the system.

At this point, only the Sample file is being hosted, but good habits are important, so we’ll tell FileMaker Server to close the file first.

fmsadmin close -y -u -p <you admin username> -p <your admin password.

Photo showing telling the system to close the FMServer_Sample.fmp12 file

Followed by:

sudo reboot now

Wait a few minutes, then log back in and run the two commands to check if the FileMaker-related services are up and running with the ps command listed above.

Getting to the Admin Console

At this point, we have a working FileMaker Server installation, but FileMaker Server does not yet have an SSL certificate installed. Getting to the admin console may be different depending on your preferred brow. The trick is to get past the initial security warnings until you can get your custom SSL certificate installed.

FileMaker Server configures the Linux firewall automatically and opens these ports on the firewall: 80/tcp 443/tcp 2399/tcp 5003/tcp 16000/tcp

Photo of FileMaker Server configuring the Linux firewall automaticlly and opening ports 80/tcp 443/tcp 2399/tcp 5003/tcp 16000/tcp on the firewall

The server we are using for this demo is an AWS EC2 instance, so we are going to use the IP address, but we still have to use https since port 16000 only listens to https requests to complete the full admin console login url:

https://<IP address of your server>:16000/admin-console/signin

This brings us to the expected security warning page:

Photo of the security warning page

After telling the browser that we are ok with the risks, we can get to the admin console:

Photo of the Claris FileMaker Servre Admin Console login

The rest of the process is the same as installing FileMaker Server on Windows or macOS, and it starts by installing a custom SSL certificate. With that certificate in place, you will then reach the admin console on the URL mentioned above but with the full DNS name covered by the SSL certificate.

Photo of Claris FileMaker Server Admin Console security settings page with

Two configuration changes I make immediately and that I consider to be very important best practices:

  • Turn on the Server Statistics log; it is the #1 source of baseline and troubleshooting information. I typically also enable the Top Call Statistics log – more data is better than less data.
Photo of the Claris FileMaker Server admin console with the Configuration tab active and under
  • Turn off the auto-host feature; I do not want FileMaker Server to open files on startup. If the machine goes down, I want to have a chance to inspect the logs and possibly revert to a backup before users start accessing potentially bad files.
Photo of the Claris FileMaker Server admin console with the

One thing that you will note when it comes to enabling the FileMaker Server web publishing engine: FileMaker Server already installed OpenJDK as one of its dependencies. In the install log, you will find something like this:

Get:51 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 openjdk-11-jre-headless amd64 11.0.10+9-0ubuntu1~18.04 [37.5 MB]

That means that you don’t need to download it yourself and then upload it to FileMaker Server through the admin console; you can just toggle the web publishing engine switch, and you are all set.

The server needs to be rebooted at this point for the custom SSL certificate to be recognized. Use the admin console to close the Sample file and stop the database server from the General Settings. While there is nothing crucial on that server yet, and both of these actions would normally happen when you reboot the OS anyway; manually closing the files and stopping the database server is:

  1. A good habit to get into
  2. An opportunity to verify that everything about FileMaker Server is working normally and it gives you a chance at catching any errors that may come up
Photo of the Claris FileMaker Server admin console with the
Photo of the Claris FileMaker Server admin console with the

After stopping the database server, go back to your server and either start and stop the FileMaker Server service:

sudo service fmshelper stop
sudo service fmshelper start

Or just rebott the server:

sudo reboot now

Moving FileMaker Server Files to Your New Server

By far, the easiest way to get your FileMaker files onto the server is by using the upload feature in FileMaker Pro:

Photo of the select

For one thing, this makes sure that the ownership and rights are set correctly at the operating system level so that FileMaker Server can operate on them.

But there certainly are times when it is impractical to use this method. In those situations, you can use the same mechanisms as described above: SCP, SFTP, or AWS S3. But you will then have to move those files to their proper location, and – just as with macOS – you will need to use the chmod and chown command lines to set the owner and rights.

FileMaker Server is installed in this location: /opt/FileMaker/FileMaker Server/

The folder structure there is exactly the same as for the Windows and macOS versions of FileMaker Server.

Photo showing the FileMaker Server folder structure

Files that you want to host go in /opt/FileMaker/FileMaker Server/Data/Databases/

You can glean what the proper OS-level rights and ownership needs to be from the screenshot. The commands to set those after you move your files into the proper location are:

sudo chmod 755 -R /opt/FileMaker/FileMaker\ Server/Data/Databases/
sudo chown fmserver:fmsadmin -R /opt/FileMaker/FileMaker\ Server/Data/Databases/

((Remember that you can use the tab key to auto-complete paths as you type.)

Icon of a lightbulb

Pro Tip

If you are unsure what the -rwxr-xr-x or 755 means in terms of rights to the files and folders, you can use a tool like this chmod calculator.

Shutting Down and Restarting

The same best practices apply for operating the Linux machinery as with what you would do on Windows or macOS. Before doing anything else, always make sure all your files are closed.

fmsadmin close -y -u <your admin username> -p <your admin password>

If needed, you can also stop the FileMaker Server service itself:

sudo service fmshelper stop

To reboot the machine, you can use:

sudo reboot now

And to completely shut down the machine, use:

sudo shutdown now

Troubleshooting

Log File

The Admin Console in 19.3.1 brings back the ability to review the logs directly in the admin console.

Sometimes it is handier to check the logs directly while you are on the server’s terminal.  And there are a few critical places where OS-level logs are kept that are not available through the Admin Console.

FileMaker Server keeps its logs in its usual logs folder, which you will find here:
/opt/FileMaker/FileMaker Server/Logs/

Photo of the FileMaker Server logs

As usual, we highly recommend that you enable the regular Stats.log to have relevant performance data.

You can use nano to open each of these files and look for information about what could be wrong. Since some of these files can be quite big, you can use the tail command to view the last few lines. Tail defaults to the last ten lines, but you can choose how many lines you want to see by specifying the -n parameter. This example will show the last 25 entries from the event log:

tail -n 25 /opt/FileMaker/FileMaker\ Server/Logs/Event.log

In addition to the FileMaker Server logs folder’s logs, FileMaker Server will also produce crash logs in the /var/crash/ folder if one of its processes crashes.

To list the crash logs, do:

sudo ls -alh /var/crash/

When you see files listed there with a FileMaker Server process name as part of their file name, open a support ticket with Claris.

Photo of the crash log showing files listed with a FileMaker Server process as part of their name

Resource Consumption

A very useful command to see which processes are consuming the most resources is top. As with all command-line tools, you can read up on how to use this command right from the machine itself by asking for the manual:

man top

(Press q to quit the manual.)

A command we have used before can come in handy here: the list of FileMaker Server processes, which will give us the process IDs to give to top to show us just what those processes are doing. For example, if we want to see just how the database server process (fmserverd) and the script engine process (fmsased) are doing, we give top just those two process ids like this:

top -p1499 -p1557

Photo showing the list of FileMaker Server processes
Photo showing the PID User

Ubuntu and its various services keep their own logs which you will typically find in /var/log/. These are also tremendously useful in troubleshooting your server.

Photo of the Ubuntu var log

Other Useful Linux Commands

Another way to check the version of Ubuntu you are dealing with, use:

sudo cat /etc/*-release

If you are uncertain what hardware the server is running under, you can use:

sudo lshw -short

and to quickly get a count of the number of processors, there are:

nproc

To see how much free disk space there is, in a readable format:

df -h

Checking FileMaker Version, Build, License Key, and Hostname

While you are on the server, you may want to check what version of FileMaker Server is installed. The obvious command is:

fmsadmin -v

Unfortunately, that will only tell you the major and minor versions but not the build number unless you also know the admin console username and password.

Photo after using the command to check for the version number

If you do know those credentials, you can enter them (or provide them with the -u and -p command-line options). This will show you the full version, including the build number as well as the license key and hostname:

Photo after entering the admin console user name and password to see the full version, build number, license key and hostname.

If you do not know the admin console credentials, then you can still get the version and build info from the yum package manager:

apt list --installed | grep filemaker

Photo showing results after using the apt list --installed | grep filemaker command to view the version and build info from the yum package manager

Or

sudo dpkg -l | grep -i filemaker

Photo after using the sudo dpkg -l | grep -i filemaker command to view the version and build info

And to get even more info about the FileMaker Server package that has been installed:

apt show filemaker-server

Photo showing result after using the apt show filemaker-server command to get information about the FileMaker Server package installed

Next Steps

We hope to have given you a good head-start on setting up your first Linux FileMaker Server. Look for our other write-ups on https://www.soliantconsulting.com/blog/ that deal specifically with upgrading FileMaker Server. As always, feel free to leave comments and questions and find us on community.claris.com for follow-ups.

7 thoughts on “The Penguin is Back!”

  1. Hey Wim, Excellent write up! I’m personally very jazzed about being able to leave the Windows world behind. Linux is where it’s at! You should check out using htop (over basic top) and pstree. Both of which were not installed by default on cent but are on ubuntu. htop will give you a much prettier view and ‘pstree -p | grep fms’ will give you great output for pids.

    Although htop has great filtering with F4 and can output in tree mode with F5. So passing pids to htop isn’t really necessary to just see what you want.

  2. Thomas Staehli

    Thanks for all that great information! It helped me a lot to setup FMS 19 on a Ubuntu test server. The only thing that didn’t work for me was the install command. I had to add “./” before the name of file ( sudo apt -y install ./filemaker-server_19.3.1.47_amd64.deb )

    1. Hi Rich,

      Yes we have; we have it working correctly on Ubuntu. It does take some special setup over and beyond what the documentation says in either scenario (when running on a Ubuntu machine that has no FileMaker Server installed or on a machine that does). There are some community posts of mine that describe the required setup. If you are on the ETS list you may find the setup there too.

      Best regards,
      Wim

  3. Thanks Wim. I got it working in standalone but still not managed to get it working on the FMS itself. Its not to bigger deal as we have it all on digital ocean and have shared a volume between the servers but its not ideal obviously.
    Thanks
    Rich

  4. Many are probably aware, but just to say it: SSH has native space in Windows Server 2019 and Windows 10 (Current versions) and later (as best as I can tell). It may require a small amount of setup, but is not hard. Windows Server 2019 will allow both an SSH client and server. Windows 10, I have only seen native support for an SSH client.

    See link for Windows Offical installation instructions:
    https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse

    Instructions on setting up the PEM file for SSH use in windows:
    https://www.techgalery.com/2020/09/how-to-connect-ssh-using-pem.html
    I could not find anything that looked “official”. My differing method is, on disabling inheritance, to remove everything but your user then apply the changes. I am on as an administrator for my computer so that may only work for cases like mine.

    I am unaware of any limitations on the functionality/ concerns related to its use. But I have been able to use SSH from Windows Powershell (and CMD for those that use it) and do not miss having to use Putty and the PPK files that are associated with that software.

Leave a Comment

Your email address will not be published. Required fields are marked *