{"id":1041,"date":"2025-06-29T12:37:16","date_gmt":"2025-06-29T12:37:16","guid":{"rendered":"https:\/\/blog.vavencloud.com\/?p=1041"},"modified":"2025-06-29T12:37:16","modified_gmt":"2025-06-29T12:37:16","slug":"how-to-install-erpnext-on-ubuntu-a-complete-walkthrough-for-beginners","status":"publish","type":"post","link":"https:\/\/blog.vavencloud.com\/?p=1041","title":{"rendered":"How to Install ERPNext on Ubuntu: A Complete Walkthrough for Beginners"},"content":{"rendered":"<h2 id=\"introduction\" class=\"mb-2 mt-6 text-base font-[500] first:mt-0 md:text-lg dark:font-[475] [hr+&amp;]:mt-4\">Introduction<\/h2>\n<p>&nbsp;<\/p>\n<p class=\"my-0\">Are you running a small or medium enterprise and looking for a way to integrate your essential business processes? ERPNext, a free and open-source Enterprise Resource Planning (ERP) solution, can streamline your operations by centralizing and automating key functions. This guide will walk you through the step-by-step process of installing ERPNext on your Ubuntu server, unlocking enhanced efficiency and productivity for your team.<\/p>\n<h2 id=\"what-is-erpnext\" class=\"mb-2 mt-6 text-base font-[500] first:mt-0 md:text-lg dark:font-[475] [hr+&amp;]:mt-4\">What is ERPNext?<\/h2>\n<p class=\"my-0\">ERPNext is a robust, open-source ERP platform designed to simplify and automate business operations. It offers integrated tools for accounting, inventory management, customer relationship management (CRM), human resources, and project management. By centralizing data, providing real-time insights, and enabling seamless collaboration, ERPNext is a flexible and cost-effective solution for businesses of all sizes.<\/p>\n<h2 id=\"prerequisites\" class=\"mb-2 mt-6 text-base font-[500] first:mt-0 md:text-lg dark:font-[475] [hr+&amp;]:mt-4\">Prerequisites<\/h2>\n<ul class=\"marker:text-textOff list-disc\">\n<li>\n<p class=\"my-0\"><strong>Ubuntu Server:<\/strong>\u00a0A fresh installation of Ubuntu 22.04.<\/p>\n<\/li>\n<li>\n<p class=\"my-0\"><strong>Hardware:<\/strong>\u00a0Minimum 2 CPU cores, 4GB RAM, and 20GB SSD storage (SSD recommended for best performance).<\/p>\n<\/li>\n<li>\n<p class=\"my-0\"><strong>Timezone:<\/strong>\u00a0Ensure your server\u2019s timezone matches your location. Check with:<\/p>\n<\/li>\n<\/ul>\n<pre>date<\/pre>\n<p>If needed, update the timezone:<\/p>\n<pre>sudo timedatectl set-timezone \"TIMEZONE\"<\/pre>\n<p>Replace\u00a0<code>TIMEZONE<\/code>\u00a0with your region, such as\u00a0<code>Asia\/Kolkata<\/code>\u00a0or\u00a0<code>Europe\/Copenhagen<\/code>.<\/p>\n<h2 id=\"step-by-step-installation\" class=\"mb-2 mt-6 text-base font-[500] first:mt-0 md:text-lg dark:font-[475] [hr+&amp;]:mt-4\">Step-by-Step Installation<\/h2>\n<p class=\"my-0\"><strong>1. Update System Packages<\/strong><\/p>\n<p class=\"my-0\">Start by updating all existing packages:<\/p>\n<pre>sudo apt-get update &amp;&amp; sudo apt-get upgrade -y<\/pre>\n<p class=\"my-0\"><strong>2. Create a New User<\/strong><\/p>\n<p class=\"my-0\">Replace\u00a0<code>yourusername<\/code>\u00a0with your preferred username:<\/p>\n<pre>sudo adduser yourusername\nsudo usermod -aG sudo yourusername\nsu yourusername\ncd \/home\/yourusername\/<\/pre>\n<p class=\"my-0\">This helps keep your system secure by avoiding root user exposure.<\/p>\n<p class=\"my-0\"><strong>3. Install Essential Packages<\/strong><\/p>\n<ul class=\"marker:text-textOff list-disc\">\n<li>\n<p class=\"my-0\"><strong>Fail2ban:<\/strong>\u00a0Protects your server from unauthorized access:<\/p>\n<\/li>\n<\/ul>\n<pre>sudo apt-get install fail2ban -y\nsudo systemctl start fail2ban<\/pre>\n<ul>\n<li><strong>Supervisor:<\/strong>\u00a0Manages long-running processes:<\/li>\n<\/ul>\n<pre>sudo apt update &amp;&amp; sudo apt install supervisor -y<\/pre>\n<ul>\n<li><strong>Git:<\/strong>\u00a0Version control system:<\/li>\n<\/ul>\n<pre>sudo apt-get install git -y\ngit --version<\/pre>\n<ul>\n<li><strong>Python:<\/strong>\u00a0Required for ERPNext dependencies:<\/li>\n<\/ul>\n<pre>sudo apt-get install python3-dev python3.10-dev python3-setuptools python3-pip python3-distutils python3.10-venv -y\npython3 -V<\/pre>\n<ul>\n<li class=\"my-0\"><strong>MariaDB:<\/strong> Preferred database for ERPNext:<\/li>\n<\/ul>\n<pre>sudo apt install mariadb-server mariadb-client -y<\/pre>\n<ul>\n<li><strong>cURL:<\/strong> For transferring files:<\/li>\n<\/ul>\n<pre>sudo apt install curl -y<\/pre>\n<ul>\n<li><strong>Node.js:<\/strong> For JavaScript runtime:<\/li>\n<\/ul>\n<pre>curl -fsSL https:\/\/deb.nodesource.com\/setup_20.x -o nodesource_setup.sh\nsudo -E bash nodesource_setup.sh\nsudo apt install nodejs -y\nsudo npm install -g yarn\nnode --version<\/pre>\n<ul>\n<li><strong>Redis:<\/strong> For caching:<\/li>\n<\/ul>\n<pre>sudo apt-get install redis-server -y\nsudo systemctl start redis-server.service<\/pre>\n<ul>\n<li><strong>Additional Utilities:<\/strong><\/li>\n<\/ul>\n<pre>sudo apt-get install software-properties-common -y\nsudo apt-get install libmysqlclient-dev -y\nsudo apt-get install xvfb libfontconfig wkhtmltopdf -y<\/pre>\n<p><strong>4. Configure MariaDB<\/strong><\/p>\n<ul>\n<li>Secure your database installation:<\/li>\n<\/ul>\n<pre>sudo mysql_secure_installation\nAnswer the prompts as needed, except for \u201cDisallow root login remotely?\u201d\u2014select N to allow remote access if required.<\/pre>\n<ul>\n<li>Edit the MySQL configuration file:<\/li>\n<\/ul>\n<pre>sudo nano \/etc\/mysql\/my.cnf\nAdd the following lines at the end:\n\n[mysqld]\ncharacter-set-client-handshake = FALSE\ncharacter-set-server = utf8mb4\ncollation-server = utf8mb4_unicode_ci\n\n[mysql]\ndefault-character-set = utf8mb4\n\n<\/pre>\n<ul>\n<li>Save and restart <strong>MySQL:<\/strong><\/li>\n<\/ul>\n<pre>sudo service mysql restart<\/pre>\n<p><strong>5. Install Frappe Bench<\/strong><\/p>\n<ul>\n<li>Frappe Bench is a command-line tool for managing ERPNext installations:<\/li>\n<\/ul>\n<pre>sudo pip3 install frappe-bench\nbench --version\nbench init --frappe-branch version-15 frappe-bench\ncd \/home\/yourusername\/frappe-bench\/\nchmod -R o+rx \/home\/yourusername\/<\/pre>\n<p><strong>6. Create a New Site<\/strong><\/p>\n<ul>\n<li>Replace <strong>mysite<\/strong> with your preferred site name:<\/li>\n<\/ul>\n<pre>bench new-site mysite.local<\/pre>\n<ul>\n<li>Set your MySQL root password and an admin password when prompted.<\/li>\n<\/ul>\n<p><strong>7. Install ERPNext and Modules<\/strong><\/p>\n<ul>\n<li>Install the payments app and ERPNext:<\/li>\n<\/ul>\n<pre>bench get-app payments\nbench get-app --branch version-15 erpnext<\/pre>\n<ul>\n<li>Optionally, add the HR module:<\/li>\n<\/ul>\n<pre>bench get-app hrms<\/pre>\n<ul>\n<li>Check installation status:<\/li>\n<\/ul>\n<pre>bench version --format table<\/pre>\n<ul>\n<li>Install ERPNext and HR modules to your site:<\/li>\n<\/ul>\n<pre>bench --site mysite.local install-app erpnext\nbench --site mysite.local install-app hrms<\/pre>\n<ul>\n<li>Enable the scheduler:<\/li>\n<\/ul>\n<pre>bench --site mysite.local enable-scheduler\nbench --site mysite.local set-maintenance-mode off<\/pre>\n<p><strong>8. Set Up NGINX and Security<\/strong><\/p>\n<ul>\n<li>Configure NGINX:<\/li>\n<\/ul>\n<pre>bench setup nginx\nsudo supervisorctl restart all<\/pre>\n<p>If you encounter deprecated Ansible playbook entries, update \/usr\/local\/lib\/python3.10\/dist-packages\/bench\/playbooks\/roles\/mariadb\/tasks\/main.yml by replacing &#8211; include with &#8211; include_tasks.<\/p>\n<ul>\n<li>Set up production configuration:<\/li>\n<\/ul>\n<pre>sudo bench setup production yourusername<\/pre>\n<ul>\n<li>Configure the firewall:<\/li>\n<\/ul>\n<pre>sudo ufw allow 22,25,143,80,443,3306,3022,8000\/tcp\nsudo ufw enable<\/pre>\n<p>Access your ERPNext instance at <strong>http:\/\/your-server-ip:80<\/strong> using the admin credentials you set.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1042 size-full\" src=\"https:\/\/blog.vavencloud.com\/wp-content\/uploads\/2025\/06\/Screenshot-from-2025-06-29-12-56-02.png\" alt=\"\" width=\"1742\" height=\"931\" \/><\/p>\n<p><strong>9. Add a Domain and SSL Certificate<\/strong><\/p>\n<ul>\n<li><strong>DNS Setup<\/strong>: Add an A record for your domain pointing to your server\u2019s IP.<\/li>\n<li><strong>Enable Multitenancy:<\/strong><\/li>\n<\/ul>\n<pre>bench config dns_multitenant on<\/pre>\n<ul>\n<li><strong>Add Domain:<\/strong><\/li>\n<\/ul>\n<pre>bench setup add-domain yourdomain.com --site yoursitename<\/pre>\n<ul>\n<li><strong>Reconfigure NGINX:<\/strong><\/li>\n<\/ul>\n<pre>bench setup nginx\nsudo service nginx reload<\/pre>\n<ul>\n<li><strong>Install SSL with Certbot:<\/strong><\/li>\n<\/ul>\n<pre>sudo apt update &amp;&amp; sudo apt install snapd -y\nsudo snap install core\nsudo snap refresh core\nsudo snap install --classic certbot\nsudo ln -s \/snap\/bin\/certbot \/usr\/bin\/certbot\nsudo certbot --nginx<\/pre>\n<p>Follow the prompts to secure your domain.<\/p>\n<p><strong>Conclusion<\/strong><br \/>\nBy following these instructions, you will have a fully operational ERPNext instance running on your Ubuntu server, ready to streamline your business operations. Take time to explore ERPNext\u2019s features and customize them to fit your organization\u2019s needs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction &nbsp; Are you running a small or medium enterprise and looking for a way to integrate your essential business processes? ERPNext, a free and open-source Enterprise Resource Planning (ERP) solution, can streamline your operations by centralizing and automating key functions. This guide will walk you through the step-by-step process of installing ERPNext on your [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1047,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[],"class_list":["post-1041","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-step-by-step-guides"],"_links":{"self":[{"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=\/wp\/v2\/posts\/1041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1041"}],"version-history":[{"count":0,"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=\/wp\/v2\/posts\/1041\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=\/"}],"wp:attachment":[{"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.vavencloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}