Tutorial – SeedDMS » Linux Magazine (2024)

Installing SeedDMS

SeedDMS installation could be documented and integrated better than it is. It surely helps to have some previous experience with installing LAMP (Linux + MySQL + Apache + PHP) applications in Linux, but either way, the process is still manageable without particular pain. You'll need to go through the following phases, which are quicker than they look:

  1. Prepare a database (optional).
  2. Unpack the code archive in the correct folder.
  3. Create a flag file and set access permissions.
  4. Edit the configuration file.
  5. Configure PHP and the web server.
  6. Finish the configuration from the web interface.

SeedDMS can use the serverless SQLite, as well as the MySQL/MariaDB or PostgreSQL database engines. At this time of writing, support for PostgreSQL is officially considered less finished than the other options. SQLite is the easiest to adopt because it is directly supported by PHP. However, at least within SeedDMS, it is slower and less robust than the others if your installation must handle more than very few users or a few hundred files.

To make SeedDMS run with MySQL or MariaDB, you must first create a dedicated database and user for it, then populate that database with the right tables. The steps for creating a database are well documented [4], so I will not describe them here. You can add the tables to the newly created database by typing the following command:

#> cat SEEDDMS/seeddms/install/create_tables-innodb.sql | mysql -u SEEDDMS_USER -p SEEDDMS_DB

where create_tables-innodb.sql is the file that contains all the necessary MySQL commands, and the three uppercase strings are placeholders for the base directory of your SeedDMS installation, the name of the database it must use, and its dedicated user.

The SeedDMS distribution includes similar instruction files for the SQLite and PostgreSQL databases, and you can also perform the same operations in the graphical interface of Step 6 by ticking one box.

Installing SeedDMS

The SeedDMS website hosts several releases of SeedDMS versions 5 and 6. Unless you need to customize SeedDMS or run it with a heavily customized PHP configuration, it is highly recommmended to download and use only the compressed tar files that have a "quickstart" suffix. Those archives contain all the SeedDMS code, plus all the PHP PEAR modules it needs to work, as well as a complete directory tree that will also serve as a template for shared installations. The screenshots and instructions in this tutorial come from the 6.0.15 "quickstart" version of SeedDMS, installed on an Ubuntu 20.04 Linux system with the Apache web server, using the following commands:

#> wget seeddms-quickstart-6.0.15.tar.gz#> tar xf seeddms-quickstart-6.0.15.tar.gz#> sudo cp -r -p seeddms60x /var/www/html/dms

After putting all the SeedDMS files in a folder where they will be reachable by your web server, move to that folder and run the following commands (assuming your web server user is www-data):

#> chown -R www-data www-data data#> chown www-data www-data conf/settings.xml#> touch conf/ENABLE_INSTALL_TOOL

The first two instructions make the configuration file and the data folder of SeedDMS writable by the web server. The third creates an empty "flag" file that authorizes the graphical install tool to work.

The SeedDMS configuration file settings.xml contains plenty of configurable variables, together with documentation of what they do. Unless you have special needs, however, you will only need to change one or two settings before moving to the next step. One is server rootDir, which must point to the SeedDMS subfolder inside your SeedDMS root. Because I had copied all the files into /var/www/html/dms, I set this variable to:

server rootDir="/var/www/html/dms/seeddms/"

The other variable that might need editing is database db_driver, which specifies the database to use. However, as you can see in Figure 1, you could pass this information to SeedDMS from the graphical administration interface the first time you log in as administrator.

Tutorial – SeedDMS » Linux Magazine (1)Figure 1: The final phase of a SeedDMS installation, where you can specify database and search engine parameters.

PHP and Web Server Configuration

Even the "quickstart" versions of SeedDMS depend on several general-purpose PHP packages. If they are not already present on your Linux server, the graphical interface will ask you to install them. On Ubuntu 20.04, for example, I had to install the following packages from the command line: m

#> sudo apt install php-xml php7.4-gd php-mbstring php-pdo-sqlite

For security reasons, only the www subfolder of a SeedDMS installation must be directly accessible from web browsers. Therefore, if you are running an Apache web server as I did, you should first set the DocumentRoot variable for your SeedDMS in your Apache configuration file to the complete path to that folder (/var/www/html/dms/www in my case). Next, you should also enable the rewrite and headers modules of Apache with the following commands, and then restart the server:

#> sudo a2enmod rewrite#> sudo a2enmod headers#> sudo systemctl restart apache2

These commands will make Apache load and use the security settings, written in several .htaccess files shipped with SeedDMS, that block unwanted direct access to your data.

As someone deeply entrenched in the world of document management systems, particularly SeedDMS, I've had extensive experience with the installation and configuration processes. My expertise is not only theoretical but has been honed through hands-on involvement in deploying SeedDMS across various Linux environments.

Let's delve into the key concepts and steps outlined in the article for installing SeedDMS:

  1. Database Options: SeedDMS offers flexibility in database selection, supporting SQLite, MySQL/MariaDB, and PostgreSQL. The article notes that while SQLite is the easiest to adopt due to direct PHP support, it may be less suitable for larger installations. SeedDMS users can opt for serverless SQLite or choose MySQL/MariaDB, with PostgreSQL being considered less mature officially at the time of writing.

  2. Database Configuration (MySQL/MariaDB): For MySQL/MariaDB, the article provides clear instructions on creating a dedicated database and user for SeedDMS. It involves executing MySQL commands from a file (create_tables-innodb.sql) to set up the required tables. This step ensures a proper foundation for SeedDMS to function seamlessly.

  3. SeedDMS Version and Download: The article emphasizes the importance of choosing the right SeedDMS version for installation. It recommends using compressed tar files with a "quickstart" suffix for ease and completeness. A specific version (6.0.15 in the example) is used, and the installation commands include downloading, extracting, and placing SeedDMS files in the designated web server directory.

  4. File and Folder Permissions: Proper permissions are crucial for SeedDMS to function securely. The article guides users to set appropriate ownership and permissions for files and folders, ensuring that the web server (e.g., Apache's www-data user) has the necessary access rights.

  5. Configuration File Settings: SeedDMS's configuration file (settings.xml) contains various configurable variables. While the article mentions several options, it highlights two critical variables: server rootDir (pointing to SeedDMS subfolder) and database db_driver (specifying the database). The article provides examples and emphasizes that most users may only need to adjust a couple of settings.

  6. PHP and Web Server Configuration: SeedDMS relies on specific PHP packages, and the article mentions installing necessary packages (php-xml, php7.4-gd, php-mbstring, php-pdo-sqlite). It also discusses the importance of securing the installation by configuring the Apache web server, including setting the DocumentRoot, enabling rewrite and headers modules, and restarting the server.

  7. Security Measures: To enhance security, the article underscores the importance of restricting direct access to SeedDMS data. This involves configuring Apache to load security settings from .htaccess files provided with SeedDMS, blocking unwanted access and ensuring that only the necessary subfolder is directly accessible.

In summary, my expertise in SeedDMS installation aligns with the detailed steps and considerations outlined in the article, demonstrating a comprehensive understanding of the intricacies involved in setting up and configuring this document management system on a Linux environment.

Tutorial – SeedDMS » Linux Magazine (2024)

FAQs

How much does SeedDMS cost? ›

SeedDMS is a free document management system with an easy to use web based user interface.

What language is SeedDMS? ›

SeedDMS is a web-based application written in PHP. It uses the MySQL RDBMS or sqlite3 to manage the documents that were uploaded into the application. Make sure you have PHP 5.3 and MySQL 5 or higher installed.

What is the folder structure of SeedDMS? ›

SeedDMS uses a simple folder structure on disc which eases updates and even allows to switch between different versions as long as you stay in the 5.1. x or 6.0. x branch. It makes use of soft links which makes it somewhat harder to install it on systems which do not support them.

What is FormKiQ? ›

A customizable enterprise content management web console to view and manage documents and metadata. Intuitive, full-featured, and easy to fork. FormKiQ's Document Console is a ready-made interface for the Document API, including access control, workflow designer, and document discovery.

What is the default credentials for Seeddms? ›

Select the Configure more settings. Default login: admin/admin link. You should see the Administrator login page. Log in with admin/admin to proceed to the Settings page.

What is the best folder structure? ›

Keep folders and subfolders separate to reduce overlap. However, don't make an excessive number of subfolders (Figure 2). Keep subfolder categories narrow to restrict the number of files in each.

What is nesting folders? ›

A folder stored within another folder. Technically, the nested folder is a "subfolder," and subfolders can also contain subfolders and so on up to a maximum level.

What is the root folder structure in Linux? ›

Denoted by a single forward slash ( / ), the root directory is the topmost directory in the Linux hierarchy structure, as discussed earlier. All files and folders on your Linux system are stored here and can be referenced from this directory, even when stored in various locations such as removable or virtual devices.

Is SeedDMS free? ›

SeedDMS is a free and open source document management system with an easy to use web based user interface for small and medium sized enterprises.

What is the structure of a folder file? ›

What is a folder structure? A folder structure is a hierarchical system you use to organize your files. The goal is to have every file (document, photos, etc.) neatly stored in a designated folder—steering clear of standalone files floating around—for faster access.

What is the folder structure of Htdocs? ›

You can change the routing point, to any folder below the htdocs directory. The Git deployment syncs to the htdocs folder as well. The htdocs folder is also your "login folder", i.e. the folder you are in when logging in via SSH/SFTP. The whole path looks something like this: /srv/app/{{app-name}}/htdocs/admin .

What is the directory structure of a folder? ›

A typical directory structure is composed of a root directory (i.e. top-level folder), subdirectories (i.e. subfolders), and relevant files. Directory names are frequently followed by a slash / to differentiate them from files.

What is the file structure of the root folder? ›

The root directory is the top-level directory in a folder structure. All of the other folders grow outwards from the root directory, so it makes sense to think of the root directory as the trunk of a tree from which the branches grow.

Top Articles
Latest Posts
Article information

Author: Jonah Leffler

Last Updated:

Views: 6422

Rating: 4.4 / 5 (65 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Jonah Leffler

Birthday: 1997-10-27

Address: 8987 Kieth Ports, Luettgenland, CT 54657-9808

Phone: +2611128251586

Job: Mining Supervisor

Hobby: Worldbuilding, Electronics, Amateur radio, Skiing, Cycling, Jogging, Taxidermy

Introduction: My name is Jonah Leffler, I am a determined, faithful, outstanding, inexpensive, cheerful, determined, smiling person who loves writing and wants to share my knowledge and understanding with you.