{"id":3698,"date":"2026-03-22T23:44:38","date_gmt":"2018-09-12T21:43:59","guid":{"rendered":"https:\/\/computingforgeeks.com\/?p=3698"},"modified":"2026-03-22T23:44:39","modified_gmt":"2026-03-22T20:44:39","slug":"install-logicaldoc-ubuntu","status":"publish","type":"post","link":"https:\/\/computingforgeeks.com\/install-logicaldoc-ubuntu\/","title":{"rendered":"Install LogicalDoc Document Management on Ubuntu 24.04"},"content":{"rendered":"\n<p>LogicalDOC is an open source document management system (DMS) built on Java that helps organizations store, organize, and retrieve digital documents. It supports full-text search, version control, workflow automation, and access control &#8211; making it a solid choice for teams that need structured document handling without paying for proprietary solutions like SharePoint.<\/p>\n\n\n\n<p>This guide walks through installing <a href=\"https:\/\/github.com\/logicaldoc\/community\" target=\"_blank\" rel=\"noreferrer noopener\">LogicalDOC Community Edition 9.2<\/a> on Ubuntu 24.04 LTS with MariaDB as the database backend, Nginx as a reverse proxy, and SSL from Let&#8217;s Encrypt for production use.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<p>Before starting, make sure you have the following in place:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A server running Ubuntu 24.04 LTS with at least 4GB RAM (8GB recommended) and 2 CPU cores<\/li>\n\n<li>Root or sudo access to the server<\/li>\n\n<li>A domain name pointed to your server IP (for SSL configuration)<\/li>\n\n<li>Ports 80, 443, and 8080 (TCP) available<\/li>\n<\/ul>\n\n\n\n<p>Switch to root for the rest of this guide:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -i<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Install Java 21 on Ubuntu 24.04<\/h2>\n\n\n\n<p>LogicalDOC 9.2 requires Java 21 or newer. Ubuntu 24.04 includes OpenJDK 21 in its default repositories, so installation is straightforward. If you need a detailed walkthrough, check our guide on <a href=\"https:\/\/computingforgeeks.com\/how-to-install-java-on-ubuntu\/\" target=\"_blank\" rel=\"noreferrer noopener\">installing Java on Ubuntu<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update\napt install -y openjdk-21-jdk<\/code><\/pre>\n\n\n\n<p>After installation completes, confirm the Java version:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>java -version<\/code><\/pre>\n\n\n\n<p>The output should show OpenJDK 21:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openjdk version \"21.0.6\" 2025-01-21\nOpenJDK Runtime Environment (build 21.0.6+7-Ubuntu-124.04.1)\nOpenJDK 64-Bit Server VM (build 21.0.6+7-Ubuntu-124.04.1, mixed mode, sharing)<\/code><\/pre>\n\n\n\n<p>Set the JAVA_HOME environment variable so LogicalDOC can find your Java installation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo 'export JAVA_HOME=\/usr\/lib\/jvm\/java-21-openjdk-amd64' >> \/etc\/profile.d\/java.sh\nsource \/etc\/profile.d\/java.sh<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Install MariaDB Database Server<\/h2>\n\n\n\n<p>LogicalDOC stores all metadata, users, and document indexes in a relational database. MariaDB works well for this and ships in Ubuntu&#8217;s default repositories.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y mariadb-server mariadb-client<\/code><\/pre>\n\n\n\n<p>Enable and start the MariaDB service:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl enable --now mariadb<\/code><\/pre>\n\n\n\n<p>Verify MariaDB is running:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl status mariadb<\/code><\/pre>\n\n\n\n<p>You should see the service as active (running):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u25cf mariadb.service - MariaDB 10.11.8 database server\n     Loaded: loaded (\/usr\/lib\/systemd\/system\/mariadb.service; enabled; preset: enabled)\n     Active: active (running)<\/code><\/pre>\n\n\n\n<p>Run the security hardening script to set a root password and remove test databases:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mariadb-secure-installation<\/code><\/pre>\n\n\n\n<p>Answer the prompts as follows &#8211; set a strong root password when asked:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Switch to unix_socket authentication: <strong>n<\/strong><\/li>\n\n<li>Change the root password: <strong>Y<\/strong> (set a strong password)<\/li>\n\n<li>Remove anonymous users: <strong>Y<\/strong><\/li>\n\n<li>Disallow root login remotely: <strong>Y<\/strong><\/li>\n\n<li>Remove test database: <strong>Y<\/strong><\/li>\n\n<li>Reload privilege tables: <strong>Y<\/strong><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Create LogicalDOC Database and User<\/h2>\n\n\n\n<p>Create a dedicated database and user for LogicalDOC. Log into the MariaDB shell:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mariadb -u root -p<\/code><\/pre>\n\n\n\n<p>Run the following SQL commands to create the database, user, and grant the necessary privileges. Replace <code>StrongPassword123<\/code> with your own secure password:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE DATABASE logicaldoc CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'logicaldoc'@'localhost' IDENTIFIED BY 'StrongPassword123';\nGRANT ALL PRIVILEGES ON logicaldoc.* TO 'logicaldoc'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Download LogicalDOC Community Edition<\/h2>\n\n\n\n<p>Download the LogicalDOC CE 9.2 installer from SourceForge. This is the Linux installer packaged as a zip archive containing the Java-based installer JAR file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\nwget https:\/\/sourceforge.net\/projects\/logicaldoc\/files\/distribution\/LogicalDOC%20CE%209.2\/logicaldoc-community-installer-9.2.0.zip\/download -O logicaldoc-community-installer-9.2.0.zip<\/code><\/pre>\n\n\n\n<p>Install the unzip utility if not already present, then extract the installer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y unzip\nunzip logicaldoc-community-installer-9.2.0.zip<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Run the LogicalDOC Installer<\/h2>\n\n\n\n<p>Run the installer in console mode since we are working on a server without a graphical interface. The installer handles application deployment, database schema creation, and initial configuration.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>java -jar logicaldoc-community-installer-9.2.0.jar -console<\/code><\/pre>\n\n\n\n<p>The installer walks through several configuration screens. Here are the key settings to enter:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Installation path<\/strong>: Accept the default <code>\/opt\/LogicalDOC<\/code> or set your preferred path<\/li>\n\n<li><strong>Database type<\/strong>: Select <strong>MySQL<\/strong> (this works with MariaDB)<\/li>\n\n<li><strong>Database host<\/strong>: <code>localhost<\/code><\/li>\n\n<li><strong>Database port<\/strong>: <code>3306<\/code><\/li>\n\n<li><strong>Database name<\/strong>: <code>logicaldoc<\/code><\/li>\n\n<li><strong>Database username<\/strong>: <code>logicaldoc<\/code><\/li>\n\n<li><strong>Database password<\/strong>: The password you set in Step 3<\/li>\n<\/ul>\n\n\n\n<p>The installer creates the database tables and deploys the application. Wait for it to complete &#8211; this may take a few minutes depending on your server speed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6: Configure LogicalDOC as a Systemd Service<\/h2>\n\n\n\n<p>To manage LogicalDOC with systemd and have it start automatically on boot, create a service unit file. Open the file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/etc\/systemd\/system\/logicaldoc.service<\/code><\/pre>\n\n\n\n<p>Add the following service configuration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>[Unit]\nDescription=LogicalDOC Document Management System\nAfter=network.target mariadb.service\nRequires=mariadb.service\n\n[Service]\nType=forking\nUser=root\nGroup=root\nEnvironment=\"JAVA_HOME=\/usr\/lib\/jvm\/java-21-openjdk-amd64\"\nExecStart=\/opt\/LogicalDOC\/bin\/logicaldoc-all start\nExecStop=\/opt\/LogicalDOC\/bin\/logicaldoc-all stop\nRestart=on-failure\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p>Reload systemd to pick up the new service file, then enable and start LogicalDOC:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl daemon-reload\nsystemctl enable --now logicaldoc<\/code><\/pre>\n\n\n\n<p>Check that the service started correctly:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl status logicaldoc<\/code><\/pre>\n\n\n\n<p>The output should show the service as active:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u25cf logicaldoc.service - LogicalDOC Document Management System\n     Loaded: loaded (\/etc\/systemd\/system\/logicaldoc.service; enabled; preset: enabled)\n     Active: active (running)<\/code><\/pre>\n\n\n\n<p>LogicalDOC takes 30-60 seconds to fully start while it initializes the application and connects to the database. You can monitor the startup progress in the logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/opt\/LogicalDOC\/logs\/ld.log<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7: Access the LogicalDOC Web Interface<\/h2>\n\n\n\n<p>LogicalDOC runs on port 8080 by default. Open your browser and navigate to your server&#8217;s IP address or hostname:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:\/\/your-server-ip:8080\/logicaldoc\/<\/code><\/pre>\n\n\n\n<p>Log in with the default credentials:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Username<\/strong>: admin<\/li>\n\n<li><strong>Password<\/strong>: admin<\/li>\n<\/ul>\n\n\n\n<p>Change the default admin password immediately after your first login. Go to <strong>Personal<\/strong> > <strong>Change Password<\/strong> in the top-right menu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 8: Configure Nginx as a Reverse Proxy for LogicalDOC<\/h2>\n\n\n\n<p>Running LogicalDOC behind Nginx gives you clean URLs on port 80\/443, SSL termination, and better performance for static assets. For more on Nginx setup, see our guide on <a href=\"https:\/\/computingforgeeks.com\/install-configure-nginx-ubuntu-debian\/\" target=\"_blank\" rel=\"noreferrer noopener\">installing and configuring Nginx on Ubuntu 24.04<\/a>.<\/p>\n\n\n\n<p>Install Nginx:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y nginx<\/code><\/pre>\n\n\n\n<p>Create a new Nginx virtual host configuration for LogicalDOC:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/etc\/nginx\/sites-available\/logicaldoc.conf<\/code><\/pre>\n\n\n\n<p>Add the following reverse proxy configuration. Replace <code>dms.example.com<\/code> with your actual domain name:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name dms.example.com;\n\n    client_max_body_size 100M;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_read_timeout 300;\n        proxy_connect_timeout 300;\n        proxy_send_timeout 300;\n    }\n}<\/code><\/pre>\n\n\n\n<p>Enable the site and remove the default Nginx configuration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ln -s \/etc\/nginx\/sites-available\/logicaldoc.conf \/etc\/nginx\/sites-enabled\/\nrm -f \/etc\/nginx\/sites-enabled\/default<\/code><\/pre>\n\n\n\n<p>Test the Nginx configuration for syntax errors:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nginx -t<\/code><\/pre>\n\n\n\n<p>If the test passes, you should see this confirmation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nginx: the configuration file \/etc\/nginx\/nginx.conf syntax is ok\nnginx: configuration file \/etc\/nginx\/nginx.conf test is successful<\/code><\/pre>\n\n\n\n<p>Restart Nginx to apply the changes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl restart nginx<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 9: Configure UFW Firewall Rules<\/h2>\n\n\n\n<p>Open the required ports in Ubuntu&#8217;s UFW firewall to allow web traffic. You need HTTP (80) and HTTPS (443) for the reverse proxy. For a deeper look at firewall management, check out our <a href=\"https:\/\/computingforgeeks.com\/common-ufw-firewall-commands-with-examples\/\" target=\"_blank\" rel=\"noreferrer noopener\">UFW firewall commands guide<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ufw allow 80\/tcp\nufw allow 443\/tcp\nufw allow ssh\nufw enable<\/code><\/pre>\n\n\n\n<p>Verify the firewall rules are active:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ufw status<\/code><\/pre>\n\n\n\n<p>The output should show all three ports allowed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Status: active\n\nTo                         Action      From\n--                         ------      ----\n80\/tcp                     ALLOW       Anywhere\n443\/tcp                    ALLOW       Anywhere\n22\/tcp                     ALLOW       Anywhere\n80\/tcp (v6)                ALLOW       Anywhere (v6)\n443\/tcp (v6)               ALLOW       Anywhere (v6)\n22\/tcp (v6)                ALLOW       Anywhere (v6)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 10: Configure SSL with Let&#8217;s Encrypt<\/h2>\n\n\n\n<p>Secure your LogicalDOC installation with a free SSL certificate from Let&#8217;s Encrypt. Install Certbot and the Nginx plugin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y certbot python3-certbot-nginx<\/code><\/pre>\n\n\n\n<p>Run Certbot to obtain and install the SSL certificate. Replace <code>dms.example.com<\/code> with your domain and provide a valid email for renewal notices:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certbot --nginx -d dms.example.com --non-interactive --agree-tos -m admin@example.com<\/code><\/pre>\n\n\n\n<p>Certbot automatically modifies your Nginx configuration to handle SSL and sets up HTTP-to-HTTPS redirection. Verify the certificate was issued successfully:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certbot certificates<\/code><\/pre>\n\n\n\n<p>You should see your domain listed with a valid certificate and expiry date:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Certificate Name: dms.example.com\n    Domains: dms.example.com\n    Expiry Date: 2026-06-20 (VALID: 89 days)\n    Certificate Path: \/etc\/letsencrypt\/live\/dms.example.com\/fullchain.pem\n    Private Key Path: \/etc\/letsencrypt\/live\/dms.example.com\/privkey.pem<\/code><\/pre>\n\n\n\n<p>Certbot installs a systemd timer that automatically renews certificates before they expire. Confirm the renewal timer is active:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl status certbot.timer<\/code><\/pre>\n\n\n\n<p>The timer should show as active and scheduled for the next renewal check:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u25cf certbot.timer - Run certbot twice daily\n     Loaded: loaded (\/usr\/lib\/systemd\/system\/certbot.timer; enabled; preset: enabled)\n     Active: active (waiting)<\/code><\/pre>\n\n\n\n<p>You can now access LogicalDOC securely at <code>https:\/\/dms.example.com\/logicaldoc\/<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>LogicalDOC Community Edition 9.2 is now running on Ubuntu 24.04 with MariaDB as the database backend, Nginx handling reverse proxy duties, and Let&#8217;s Encrypt providing SSL encryption. The setup is ready for document uploads, user management, and full-text search.<\/p>\n\n\n\n<p>For production use, set up regular database backups with MariaDB dump schedules, monitor disk usage on the document repository directory, and consider placing the <code>\/opt\/LogicalDOC\/repository<\/code> folder on a dedicated partition or volume to prevent document storage from filling up the root filesystem.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>LogicalDOC is an open source document management system (DMS) built on Java that helps organizations store, organize, and retrieve digital documents. It supports full-text search, version control, workflow automation, and access control &#8211; making it a solid choice for teams that need structured document handling without paying for proprietary solutions like SharePoint. This guide walks &#8230; <a title=\"Install LogicalDoc Document Management on Ubuntu 24.04\" class=\"read-more\" href=\"https:\/\/computingforgeeks.com\/install-logicaldoc-ubuntu\/\" aria-label=\"Read more about Install LogicalDoc Document Management on Ubuntu 24.04\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":3716,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[299,50,81],"tags":[192,574,178],"class_list":["post-3698","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to","category-linux-tutorials","category-ubuntu","tag-documentation","tag-logicaldoc","tag-wiki"],"_links":{"self":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/3698","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/comments?post=3698"}],"version-history":[{"count":1,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/3698\/revisions"}],"predecessor-version":[{"id":163710,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/3698\/revisions\/163710"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media\/3716"}],"wp:attachment":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media?parent=3698"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/categories?post=3698"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/tags?post=3698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}