Extremely Out there Mayan EDMS Reference Structure

For day-to-day work, doc storage is usually completed by on-line productiveness software program and cloud storage. It will get more difficult as an utility must course of, retailer, and retrieve bigger volumes. Utilizing an Digital Doc Administration System (EDMS) is a greater resolution, as they’re designed to retailer, index, and retrieve paperwork with excessive efficiency and availability, and a few embrace options like customizable metadata and model management.

Whereas there are a lot of SaaS-based EDMS options accessible, you possibly can deploy your personal open supply EDMS to take care of full management over your knowledge. On this put up, you’ll learn to arrange a highly-available Mayan EDMS backed by a PostgreSQL database.

EDMS Advantages

This setup is good for those who retailer and course of numerous paperwork and wish an EDMS that’s connected to a web-based utility, eradicating the necessity for any consumer facet installations. Operating an EDMS as a central hub ensures:

  • safety, privateness, and whole management of your knowledge;
  • straightforward integration with third-party software program; and
  • automation of doc workflows for enterprise processes.

Why PostgreSQL?

PostgreSQL is a strong, open supply object-relational database administration system that’s extremely valued for its scalability, safety, and efficiency. With a view to help end-to-end scaling to your utility, your database additionally must be extremely accessible, so this structure instance incorporates a replication software particularly for PostgreSQL.

Getting Began with Mayan EDMS

Mayan is a web-based-based open supply EDMS written in Python. Mayan defaults (by design) to putting in and working on a single system; your entire utility and database elements can dwell on a single server or inside a number of Docker containers. Although that is nice for testing or trivial environments, for a manufacturing surroundings we wish excessive availability and a extensively identified and adopted idea generally known as the SoC (Separation of Concern) precept. That is essential finest observe for constructing layered and scalable purposes. This reference structure demonstrates how to try this with Mayan.


  • Open supply means no licensing charges
  • Simply retailer, view, and revert doc variations
  • Full textual content search of paperwork utilizing customizable user-defined metadata
  • Versatile entry controls to design efficient consumer roles and permissions
  • Customizable workflows with occasion triggers to maintain paperwork updated


  • Advanced for smaller use instances
  • Consumer interface is much less intuitive than different options
  • Useful resource heavy for CPUs working optical character recognition (OCR)

Software Reference Structure

To optimize Mayan’s capabilities in a real-world purposes, our structure makes use of:

A NodeBalancer distributes  visitors to our utility nodes. If one utility server goes down, the load balancing service will start solely directing visitors to the wholesome node. As quickly because the unhealthy node recovers it is going to resume balancing connections as earlier than. This makes it straightforward so as to add, take away, or replace utility servers with out downtime, all whereas sustaining connections to the PostgreSQL database nodes.

For the “mind” of the applying, Mayan and NGINX are deployed on the identical digital machines and we are able to leverage Mayan’s help for s3boto3 as a storage backend to add our paperwork to Linode’s S3-compatible Object Storage.

In case your utility is mission-critical and makes use of PostgreSQL as a major backend database, incorporating Bucardo supplies a greater uptime assure and makes your database fault-tolerant.

You can even obtain high-availability and replication with a managed database service that helps PostgreSQL, however remember that most DBaaS choices concentrate on updating PostgreSQL variations and maintaining your database cluster on-line and accessible. Implementing Bucardo provides your PostgreSQL database bi-directional replication between two or extra database nodes, making certain that your database is extremely accessible.

On this instance, all nodes are secured with Cloud Firewalls for cover from the general public web and talk internally by way of personal VLAN. The appliance servers hook up with the databases by way of a shared floating VLAN IP handle with keepalived to facilitate failover.

Keepalived, or one other IP failover system like FRRouting (FRR), is carried out on the database stage so {that a} wholesome database node shall be linked to the cluster of your utility nodes.

Reaching Fault Tolerance for Important Information

An EDMS will typically function a central hub for each day operations and host a few of your group’s most crucial recordsdata. Our utility is constructed with redundancy at each stage for baseline fault tolerance and optimize efficiency:

  • Paperwork are saved on Linode’s extremely accessible Object Storage.
  • The database is on a separate node to extend efficiency and stop having a single level of failure.
  • Bucardo performs automated database replication between the Postgres nodes.

Discover Extra Technical Content material and Architectures

Our Options Engineering staff shares frameworks, guides, and instruments like this one to make it simpler for builders to construct purposes that comply with finest practices for software program structure. Try our Galera cluster reference structure for a extremely accessible MySQL/MariaDB structure, or browse our accessible reference structure examples on Linode Docs.

Related Articles


Please enter your comment!
Please enter your name here

Latest Articles