DOCUMENTATION
  • Welcome
  • Releases
    • 2025
      • Release v6.20.2 (2025-05-07)
      • Release v6.20.1 (2025-05-06)
      • Release v6.20.0 (2025-04-30)
      • Release v6.19.2 (2025-04-11)
      • Release v6.19.1 (2025-03-31)
      • Release v6.19.0 (2025-03-27)
      • Release v6.18.2 (2025-03-11)
      • Release v6.18.1 (2025-03-07)
      • Release v6.18.0 (2025-02-26)
      • Release v6.17.3 (2025-02-14)
      • Release v6.17.2 (2025-02-07)
      • Release v6.17.1 (2025-02-06)
      • Release v6.17.0 (2025-01-30)
    • 2024
      • Release v6.16.0 (2024-12-12)
      • Release v6.15.0 (2024-11-27)
      • Release v6.14.2 (2024-11-05)
      • Release v6.14.1 (2024-11-01)
      • Release v6.14.0 (2024-10-31)
      • Release v6.13.3 (2024-10-16)
      • Release v6.13.2 (2024-10-10)
      • Release v6.13.1 (2024-10-02)
      • Release v6.13.0 (2024-09-25)
      • Release v6.12.2 (2024-09-18)
      • Release v6.12.1 (2024-08-01)
      • Release v6.12.0 (2024-07-25)
      • Release v6.11.5 (2024-07-09)
      • Release v6.11.4 (2024-07-05)
      • Release v6.11.3 (2024-07-03)
      • Release v6.11.2 (2024-06-21)
      • Release v6.11.1 (2024-06-14)
      • Release v6.11.0 (2024-06-05)
      • Release v6.10.2 (2024-05-15)
      • Release v6.10.1 (2024-05-08)
      • Release v6.10.0 (2024-04-30)
      • Release v6.9.3 (2024-03-19)
      • Release v6.9.2 (2024-03-15)
      • Release v6.9.1 (2024-03-06)
      • Release v6.9.0 (2024-02-28)
      • Release v6.8.5 (2024-02-02)
      • Release v6.8.4 (2024-02-01)
      • Release v6.8.3 (2024-01-12)
      • Release v6.8.2 (2024-01-05)
    • 2023
      • Release v6.8.1 (2023-12-22)
      • Release v6.8.0 (2023-12-14)
      • Release v6.7.4 (2023-11-15)
      • Release v6.7.3 (2023-11-14)
      • Release v6.7.2 (2023-11-03)
      • Release v6.7.1 (2023-10-17)
      • Release v6.7.0 (2023-10-13)
      • Release v6.6.4 (2023-09-29)
      • Release v6.6.3 (2023-09-28)
      • Release 6.6.2 (2023-09-14)
      • Release v6.6.1 (2023-08-10)
      • Release v6.6.0 (2023-08-03)
      • Release v6.5.1 (2023-06-23)
      • Release v6.5.0 (2023-06-22)
      • Release v6.4.0 (2023-05-31)
      • Release v6.3.1 (2023-04-28)
      • Release v6.3.0 (2023-04-05)
      • Release v6.2.5 (2023-03-16)
      • Release v6.2.4 (2023-02-01)
      • Release v6.2.3 (2023-01-12)
      • Release v6.2.2 (2023-01-12)
      • Release v6.2.1 (2023-01-05)
    • 2022
      • fylr first Production Ready Release 🎉 (2022-12-22)
  • License
  • Help
    • FAQs
    • Tutorials
      • For Users
      • For Administrators
        • Exporting & Importing Hierarchical Lists
        • Regenerating preview images
        • Search Text in images or office files
      • For System Administrators
        • How to setup and use IIIF
        • External access: Sharing collections with anonymous users
    • Glossary
  • FOR USERS
    • Getting Started
    • Asset / Records Management
      • Creating Records
      • Editing Records
        • Input Fields
        • Group Editor
      • Deleting Records
    • Quick Access
      • Collections (& Presentations)
      • Saved Searches (& Lists)
    • Lists
    • Plugins
      • Plugin Overview
  • FOR ADMINISTRATORS
    • Permissions
      • User
      • Groups
      • Object Types
      • Pools
      • Tags & Workflows
      • Presets
    • Tools
      • CSV Importer
        • General Information
        • Options
        • Examples
          • All Data Types
          • Lists
          • Hierarchies
          • Files
      • JSON Importer
        • Step-by-Step Tutorial
          • Write Import Manifest
          • Create Basetype Payloads
          • Create Object Payloads
          • Collection Payloads
          • Optional: Update links between Objects
          • Start Import
      • Permissions Download & Upload
    • Base Configuration
      • General
      • Access
      • User Management
      • Languages
      • Email
      • Export & Deep Links
      • Workflow Webhooks
      • Publications
      • File Worker
        • Preview Configuration
        • Location Defaults
        • Custom .icc Color Profiles
      • Objectstore
      • Services
      • License Management
      • Development
      • Plugins
    • Plugin Manager
    • Location Manager
    • Messages
    • Events
    • Backup Manager
    • Additional Features
      • IIIF
      • Connector
      • Wordpress
      • Zooniverse
      • Protocols
        • OAI/PMH
  • Files and version production
  • FOR SYSTEM ADMINISTRATORS
    • Installation
      • Linux
        • multiple fylrs in one Linux
        • proxy and fylr
      • Windows
      • Kubernetes
    • Configuration
      • fylr.example.yml
      • fylr.default.yml
      • performance tuning
      • pre-load frontend config
      • Load Custom Plugins
      • HTTP and HTTPS
      • DNS Domains
    • Backups & Restore
    • Migration Tool
      • Create payloads (fylr backup)
      • Insert payloads (fylr restore)
      • Best Practice
      • Using the fylr inspect page
    • Integration
      • Authentication
      • Hotfolder
    • Symptom & Solution
      • Log messages that can be ignored
      • too many clients are connected
      • too many nested clauses
      • context canceled
      • ContainerConfig error
      • Purge objects
    • PostgreSQL versions
  • Tutorials
    • Project Workflow
    • Hotfolder & File System Connect
      • Preparations Before Usage
      • Setting Up An Upload Collection
      • Importing Files
    • PDF Creator
    • Extracting File Metadata Later On
    • Overlay Resource
    • Authentication
      • LDAP
      • SAML
    • Data Model Sync
    • Purge a fylr instance
    • typo3 plugin
    • Use fylr in Google docs via CI HUB
  • FOR DEVELOPERS
    • API
      • OAuth2
      • Endpoints
        • /api/collection
        • /api/config
        • /api/db_info
        • /api/db
        • /api/eas
        • /api/event
        • /api/export
        • /api/group
        • /api/l10n
        • /api/mask
        • /api/message
        • /api/oaipmh
        • /api/objects
        • /api/objecttype
        • /api/plugin
        • /api/pool
        • /api/publish
        • /api/right
        • /api/schema
        • /api/search
        • /api/settings
        • /api/suggest
        • /api/system
        • /api/tags
        • /api/transitions
        • /api/user
        • /api/webdav
        • /api/xmlmapping
        • /api/task
    • System Data Types
      • pool
      • file
      • user
      • group
      • pool
      • collection
      • message
      • publish
      • event
    • User Data Types
      • text, text_oneline
      • string
      • text_l10n, text_l10n_oneline
      • boolean
      • number
      • integer.2
      • double
      • date, datetime
      • daterange
      • geojson
    • Custom Data
    • Emails
    • Export
    • Exec server
    • File versions
    • WebDAV
    • Plugin
    • Collection Pin Code
    • easydb 5
    • Localization
    • Access private Repositories
Powered by GitBook
On this page
  • Prerequisites
  • Prepare Linux for fylr
  • Download all and configure common services
  • For each fylr instance
  • Remarks
  1. FOR SYSTEM ADMINISTRATORS
  2. Installation
  3. Linux

multiple fylrs in one Linux

Arrange docker and a reverse proxy to avoid conflicts with multiple fylrs

PreviousLinuxNextproxy and fylr

Last updated 8 months ago

Our default recommended fylr Installation has one fylr directly listening to port 443/80 for http(s). If you want multiple fylrs you need to direct web traffic to the correct one. We present one example here with Apache webserver used as reverse proxy.

This increases the risk to run into resource and performance issues (except for small fylr instances with few traffic on a big server).

To somewhat reduce performance issues, only one indexer and only one PostgreSQL is used for all fylrs in this example.

Prerequisites

  • install

  • install e.g. for Debian 12: apt install -y snapd

    log out and back in again, to ensure snap’s paths are updated correctly snap install snapd apt-get remove certbot snap install --classic certbot type -a certbot || ln -s /snap/bin/certbot /usr/local/bin/

  • install Apache 2 e.g. for Debian 12: apt-get install -y apache2 ; a2enmod ssl rewrite proxy_http

Prepare Linux for fylr

We assume bash and Debian 12 in our examples.

mkdir /srv/fylr ; cd /srv/fylr
echo "vm.max_map_count=262144" >> /etc/sysctl.d/99-memory_for_indexer.conf
sysctl -p /etc/sysctl.d/99-memory_for_indexer.conf
mkdir -p postgres indexer sqlbackups
chown  999 postgres sqlbackups
chown 1000 indexer
swapoff -a; free -h

Download all and configure common services

Use the following docker-compose.yml as a starting point:

curl https://raw.githubusercontent.com/programmfabrik/fylr-gitbook/main/_assets/multi/docker-compose.yml -o docker-compose.yml

Replace all strings that have EXAMPLE in it. E.g. with vim: vim docker-compose.yml

Download all software and start the indexer and SQL database service:

docker compose pull
docker compose up -d postgresql opensearch

For each fylr instance

Do all the rest of the instructions for the first fylr instance. Then repeat all of it for the second.

Choose unique names and ports and put them into bash variables. Use the same as you used in docker-compose.yml.

DIR=fylr-EXAMPLE1     # directory name below /srv/fylr/
SERVICE=fylr-EXAMPLE1 # name in docker-compose.yml
DOMAIN=EXAMPLE1.COM
PORT=81
DB=EXAMPLE1
DBUSER=EXAMPLE1

Configure the reverse proxy:

cd /etc/apache2/sites-enabled
cat >>../sites-available/$DOMAIN.conf<<EOF
<VirtualHost *:80>
    ServerName $DOMAIN
    ServerAdmin administratoren@programmfabrik.de
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:$PORT/ upgrade=websocket
    ProxyPassReverse / http://127.0.0.1:$PORT/ upgrade=websocket
</VirtualHost>
EOF
ln -s ../sites-available/$DOMAIN.conf .
apache2ctl -t && systemctl restart apache2
certbot --apache --agree-tos -d $DOMAIN # -m emailadress

... certbot in the last command will configure the https part of the reverse proxy in Apache.

Configure fylr:

cd /srv/fylr
mkdir -p $DIR/config/fylr $DIR/assets $DIR/migration $DIR/backups
chown 1000 $DIR/assets $DIR/backups $DIR/migration
curl https://raw.githubusercontent.com/programmfabrik/fylr-gitbook/main/_assets/multi/fylr.yml -o $DIR/config/fylr/fylr.yml
vi $DIR/config/fylr/fylr.yml  # replace string with EXAMPLE

Replace all strings in fylr.yml that have EXAMPLE in it. E.g. with vim: vim $DIR/config/fylr/fylr.yml

Create SQL database:

PSQL="docker compose exec postgresql psql -U fylr"
$PSQL -c 'CREATE DATABASE "'$DB'";'

$PSQL -c "CREATE USER $DBUSER WITH LOGIN ENCRYPTED PASSWORD '$DBUSER';"

$PSQL -c 'GRANT ALL PRIVILEGES ON DATABASE '$DB' TO '$DBUSER';'

$PSQL -c 'ALTER DATABASE '$DB' OWNER TO '$DBUSER';'

Start this fylr instance:

docker compose up -d $SERVICE

Repeat for each additional fylr instance the whole part from "For each fylr instance" to here.

Remarks

A maintain script and cron job, as in the , are not provided by us, as we do not have sufficient experience with this multi-fylr-setup. Use the recommended installation instead, when possible.

docker
certbot
default recommended installation