{"id":13133,"date":"2025-05-14T03:26:39","date_gmt":"2025-05-14T03:26:39","guid":{"rendered":"https:\/\/myprojects.advchaweb.com\/?p=13133"},"modified":"2025-05-16T08:05:37","modified_gmt":"2025-05-16T08:05:37","slug":"install-erpnext-frappe-on-ubuntu-22-04","status":"publish","type":"post","link":"https:\/\/myprojects.advchaweb.com\/index.php\/2025\/05\/14\/install-erpnext-frappe-on-ubuntu-22-04\/","title":{"rendered":"Install ERPNext\/Frappe on Ubuntu 22.04"},"content":{"rendered":"<p>Read: https:\/\/docs.frappe.io\/framework\/user\/en\/installation#debian-ubuntu<\/p>\n<p>Update your system&#8217;s package index<\/p>\n<pre><code>sudo apt update\r\n<\/code><\/pre>\n<p>if not exist, Install\/update <code>git<\/code>,\u00a0<code>python<\/code>, and\u00a0<code>redis<\/code><\/p>\n<pre><code class=\"hljs python\">sudo apt install git python-is-python3 python3-dev python3-pip redis-server libmariadb-dev mariadb-server mariadb-client pkg-config\r\n<\/code><\/pre>\n<p>Check:<\/p>\n<pre><code class=\"hljs python\">satria@teddy:~$ git --version\r\ngit version 2.34.1\r\nsatria@teddy:~$ python3 --version\r\nPython 3.10.13\r\nsatria@teddy:~$ redis-server --version\r\nRedis server v=6.0.16 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=a3fdef44459b3ad6\r\nsatria@teddy:~$ mariadb --version\r\nmariadb  Ver 15.1 Distrib 10.6.21-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper\r\n<\/code><\/pre>\n<p>Now, edit the MariaDB configuration file (this step is not required for Frappe v15.21.0 or above).<\/p>\n<pre><code class=\"hljs nginx\">sudo gedit \/etc\/mysql\/my.cnf\r\n<\/code><\/pre>\n<p>And add this configuration<\/p>\n<pre><code class=\"hljs sql\">[mysqld]\r\n<span class=\"hljs-type\">character<\/span><span class=\"hljs-operator\">-<\/span><span class=\"hljs-keyword\">set<\/span><span class=\"hljs-operator\">-<\/span>client<span class=\"hljs-operator\">-<\/span>handshake <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-literal\">FALSE<\/span>\r\n<span class=\"hljs-type\">character<\/span><span class=\"hljs-operator\">-<\/span><span class=\"hljs-keyword\">set<\/span><span class=\"hljs-operator\">-<\/span>server <span class=\"hljs-operator\">=<\/span> utf8mb4\r\n<span class=\"hljs-keyword\">collation<\/span><span class=\"hljs-operator\">-<\/span>server <span class=\"hljs-operator\">=<\/span> utf8mb4_unicode_ci\r\n\r\n[mysql]\r\n<span class=\"hljs-keyword\">default<\/span><span class=\"hljs-operator\">-<\/span><span class=\"hljs-type\">character<\/span><span class=\"hljs-operator\">-<\/span><span class=\"hljs-keyword\">set<\/span> <span class=\"hljs-operator\">=<\/span> utf8mb4\r\n<\/code><\/pre>\n<p>Now, just restart the MariaDB service and you are good to go.<\/p>\n<pre><code class=\"hljs nginx\"><span class=\"hljs-attribute\">sudo<\/span> systemctl restart mariadb\r\n<\/code><\/pre>\n<p><strong>Check Node or Install Node if not exist<\/strong><\/p>\n<p>Use node &gt; 18. use the stable version (v20..) instead<\/p>\n<p>Check:<\/p>\n<pre><code class=\"hljs python\">satria@teddy:~$ node -v\r\nv16.15.1\r\nsatria@teddy:~$ nvm list\r\n-&gt;     v16.15.1\r\n       ...\r\nnode -&gt; stable (-&gt; v20.15.1) (default)\r\nstable -&gt; 20.15 (-&gt; v20.15.1) (default)\r\n...\r\nsatria@teddy:~$ nvm use stable\r\nNow using node v20.15.1 (npm v10.7.0)\r\nsatria@teddy:~$ node -v\r\nv20.15.1\r\n<\/code><\/pre>\n<p>Finally, check\/install <code>yarn<\/code>\u00a0using\u00a0<code>npm<\/code><\/p>\n<pre><code class=\"hljs nginx\"><span class=\"hljs-attribute\">npm<\/span> install -g yarn\r\nCheck:\r\nsatria@teddy:~$ yarn --version\r\n1.22.19\r\n<\/code><\/pre>\n<p><strong>Install the libraries for wkhtmltopdf<\/strong><\/p>\n<pre><code class=\"hljs nginx\"><span class=\"hljs-attribute\">sudo<\/span> apt install xvfb libfontconfig\r\n<\/code><\/pre>\n<p>Download and install wkhtmltopdf package from\u00a0<a href=\"https:\/\/wkhtmltopdf.org\/downloads.html\">https:\/\/wkhtmltopdf.org\/downloads.html<\/a>, then run this command to install the package. As an example for Ubuntu 22.04 amd64 in Download directory<\/p>\n<pre><code class=\"hljs css\">sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb\r\n<\/code><\/pre>\n<p>if you found this error: Package xfonts-75dpi is not installed. then run this to install the dependencies<\/p>\n<pre><code class=\"hljs css\">sudo apt-get -f install<\/code><\/pre>\n<p><strong>Install Bench CLI<\/strong><br \/>\nInstall bench via pip (or pip3)<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~$ pip3 install frappe-bench\r\nDefaulting to user installation because normal site-packages is not writeable\r\nCollecting frappe-bench\r\n  Downloading frappe_bench-5.25.1-py3-none-any.whl (152 kB)\r\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 152.6\/152.6 KB 758.7 kB\/s eta 0:00:00\r\nCollecting semantic-version~=2.10.0\r\n  Downloading semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)\r\nCollecting click~=8.2.0\r\n  Downloading click-8.2.0-py3-none-any.whl (102 kB)\r\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 102.2\/102.2 KB 3.5 MB\/s eta 0:00:00\r\nCollecting setuptools&gt;=71.0.0\r\n  Downloading setuptools-80.4.0-py3-none-any.whl (1.2 MB)\r\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 1.2\/1.2 MB 2.0 MB\/s eta 0:00:00\r\nRequirement already satisfied: gitpython~=3.1.30 in .\/.local\/lib\/python3.10\/site-packages (from frappe-bench) (3.1.44)\r\nCollecting tomli\r\n  Downloading tomli-2.2.1-py3-none-any.whl (14 kB)\r\nRequirement already satisfied: requests~=2.32.3 in .\/.local\/lib\/python3.10\/site-packages (from frappe-bench) (2.32.3)\r\nRequirement already satisfied: jinja2~=3.1.3 in .\/.local\/lib\/python3.10\/site-packages (from frappe-bench) (3.1.5)\r\nCollecting honcho\r\n  Downloading honcho-2.0.0-py3-none-any.whl (22 kB)\r\nCollecting python-crontab~=2.6.0\r\n  Downloading python_crontab-2.6.0-py3-none-any.whl (25 kB)\r\nRequirement already satisfied: gitdb&lt;5,&gt;=4.0.1 in .\/.local\/lib\/python3.10\/site-packages (from gitpython~=3.1.30-&gt;frappe-bench) (4.0.12)\r\nRequirement already satisfied: MarkupSafe&gt;=2.0 in \/usr\/lib\/python3\/dist-packages (from jinja2~=3.1.3-&gt;frappe-bench) (2.0.1)\r\nRequirement already satisfied: python-dateutil in .\/.local\/lib\/python3.10\/site-packages (from python-crontab~=2.6.0-&gt;frappe-bench) (2.9.0.post0)\r\nRequirement already satisfied: urllib3&lt;3,&gt;=1.21.1 in \/usr\/lib\/python3\/dist-packages (from requests~=2.32.3-&gt;frappe-bench) (1.26.5)\r\nRequirement already satisfied: charset-normalizer&lt;4,&gt;=2 in .\/.local\/lib\/python3.10\/site-packages (from requests~=2.32.3-&gt;frappe-bench) (3.4.1)\r\nRequirement already satisfied: idna&lt;4,&gt;=2.5 in \/usr\/lib\/python3\/dist-packages (from requests~=2.32.3-&gt;frappe-bench) (3.3)\r\nRequirement already satisfied: certifi&gt;=2017.4.17 in \/usr\/lib\/python3\/dist-packages (from requests~=2.32.3-&gt;frappe-bench) (2020.6.20)\r\nRequirement already satisfied: smmap&lt;6,&gt;=3.0.1 in .\/.local\/lib\/python3.10\/site-packages (from gitdb&lt;5,&gt;=4.0.1-&gt;gitpython~=3.1.30-&gt;frappe-bench) (5.0.2)\r\nRequirement already satisfied: six&gt;=1.5 in \/usr\/lib\/python3\/dist-packages (from python-dateutil-&gt;python-crontab~=2.6.0-&gt;frappe-bench) (1.16.0)\r\nInstalling collected packages: honcho, tomli, setuptools, semantic-version, click, python-crontab, frappe-bench\r\n  WARNING: The script honcho is installed in '\/home\/satria\/.local\/bin' which is not on PATH.\r\n  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\r\n  WARNING: The script bench is installed in '\/home\/satria\/.local\/bin' which is not on PATH.\r\n  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\r\nSuccessfully installed click-8.2.0 frappe-bench-5.25.1 honcho-2.0.0 python-crontab-2.6.0 semantic-version-2.10.0 setuptools-80.4.0 tomli-2.2.1<\/pre>\n<p>[\/codesyntax]<\/p>\n<p>Note: WARNING: The script bench is installed in &#8216;\/home\/satria\/.local\/bin&#8217; which is not on PATH.<br \/>\nSo run &#8211;&gt; THIS IS NOT SAVED BECAUSE WHEN I TRIED TO LOGIN AGAIN, THE PATH IS MISSING<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>echo \"export PATH=$PATH:$HOME\/.local\/bin\" &gt;&gt; ~\/.bashrc\r\nsource ~\/.bashrc<\/pre>\n<p>[\/codesyntax]<\/p>\n<p>&nbsp;<\/p>\n<p>Check &#8216;Bench&#8217; version<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~$ bench --version\r\n5.25.1<\/pre>\n<p>[\/codesyntax]<\/p>\n<p>Read: https:\/\/docs.frappe.io\/framework\/user\/en\/tutorial\/install-and-setup-bench<br \/>\nCreate frappe-bench directory<br \/>\nLet&#8217;s create our project folder which will contain our apps and sites. Run the following command: bench init frappe-bench in my projects directory<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~\/Documents\/projects$ bench init frappe-bench\r\nSetting Up Environment\r\n$ python3 -m venv env\r\n$ \/home\/satria\/Documents\/projects\/frappe-bench\/env\/bin\/python -m pip install --quiet --upgrade pip\r\n$ \/home\/satria\/Documents\/projects\/frappe-bench\/env\/bin\/python -m pip install --quiet wheel\r\nGetting frappe\r\n$ git clone https:\/\/github.com\/frappe\/frappe.git  --depth 1 --origin upstream\r\nCloning into 'frappe'...\r\nremote: Enumerating objects: 3322, done.\r\nremote: Counting objects: 100% (3322\/3322), done.\r\nremote: Compressing objects: 100% (2815\/2815), done.\r\nremote: Total 3322 (delta 461), reused 2861 (delta 412), pack-reused 0 (from 0)\r\nReceiving objects: 100% (3322\/3322), 15.27 MiB | 8.35 MiB\/s, done.\r\nResolving deltas: 100% (461\/461), done.\r\nInstalling frappe\r\n$ \/home\/satria\/Documents\/projects\/frappe-bench\/env\/bin\/python -m pip install --quiet --upgrade -e \/home\/satria\/Documents\/projects\/frappe-bench\/apps\/frappe \r\n$ yarn install --check-files\r\nyarn install v1.22.19\r\n[1\/5] Validating package.json...\r\n[2\/5] Resolving packages...\r\n[3\/5] Fetching packages...\r\n[4\/5] Linking dependencies...\r\nwarning \" &gt; @frappe\/esbuild-plugin-postcss2@0.1.3\" has unmet peer dependency \"less@^4.x\".\r\nwarning \" &gt; @frappe\/esbuild-plugin-postcss2@0.1.3\" has unmet peer dependency \"stylus@^0.x\".\r\nwarning \" &gt; @vue\/component-compiler@4.2.4\" has unmet peer dependency \"vue-template-compiler@*\".\r\n[5\/5] Building fresh packages...\r\nDone in 14.94s.\r\nFound existing apps updating states...\r\n$ bench build\r\nAssets for Commit dc3ab2ee149d0a359b1f058c54bc7d1d2b6e39fa don't exist\r\nLinking \/home\/satria\/Documents\/projects\/frappe-bench\/apps\/frappe\/frappe\/public to .\/assets\/frappe                                                               Linking \/home\/satria\/Documents\/projects\/frappe-bench\/apps\/frappe\/node_modules to .\/assets\/frappe\/node_modules                                                   \u2714 Application Assets Linked                                            \r\n\r\n\r\nyarn run v1.22.19\r\n$ node esbuild --production --run-build-command\r\nBrowserslist: caniuse-lite is outdated. Please run:\r\n  npx update-browserslist-db@latest\r\n  Why you should do it regularly: https:\/\/github.com\/browserslist\/update-db#readme\r\nFile                                                        Size\r\n\r\nfrappe\/dist\/js\/\r\n\u251c\u2500 billing.bundle.TQHLK7UT.js                               4.44 Kb\r\n\u251c\u2500 bootstrap-4-web.bundle.FOZOVELL.js                       1.73 Kb\r\n\u251c\u2500 calendar.bundle.4A4YITIU.js                              264.60 Kb\r\n\u251c\u2500 controls.bundle.VNX7UDSZ.js                              879.39 Kb\r\n\u251c\u2500 data_import_tools.bundle.DJ5WZEDY.js                     127.49 Kb\r\n\u251c\u2500 desk.bundle.FQ3M5L42.js                                  1104.44 Kb\r\n\u251c\u2500 dialog.bundle.3F5VODSL.js                                58.38 Kb\r\n\u251c\u2500 form.bundle.3RCYIKGB.js                                  168.94 Kb\r\n\u251c\u2500 frappe-web.bundle.VFID6Y35.js                            832.90 Kb\r\n\u251c\u2500 libs.bundle.TIV7ZGVY.js                                  556.25 Kb\r\n\u251c\u2500 list.bundle.QDED3XSG.js                                  203.41 Kb\r\n\u251c\u2500 logtypes.bundle.5KO3ZOOI.js                              0.72 Kb\r\n\u251c\u2500 onboarding_tours.bundle.RAUR6X4Z.js                      7.60 Kb\r\n\u251c\u2500 photoswipe.bundle.YSXZQA64.js                            60.50 Kb\r\n\u251c\u2500 report.bundle.BVTA3F76.js                                203.84 Kb\r\n\u251c\u2500 sentry.bundle.AX44GVWW.js                                74.42 Kb\r\n\u251c\u2500 telemetry.bundle.LKEZCADB.js                             2.59 Kb\r\n\u251c\u2500 video_player.bundle.DUYYLSFO.js                          120.67 Kb\r\n\u251c\u2500 web_form.bundle.KDU5JJTN.js                              1072.49 Kb\r\n\u251c\u2500 form_builder.bundle.IGL7RUSL.js                          799.99 Kb\r\n\u251c\u2500 form_builder.bundle.25A5BOO2.css                         23.22 Kb\r\n\u251c\u2500 print_format_builder.bundle.OSQWFKYA.js                  685.26 Kb\r\n\u251c\u2500 print_format_builder.bundle.XNVQC47Z.css                 5.60 Kb\r\n\u251c\u2500 workflow_builder.bundle.RRL2HLV5.js                      352.45 Kb\r\n\u251c\u2500 workflow_builder.bundle.ICGZLXKF.css                     11.02 Kb\r\n\u251c\u2500 build_events.bundle.3EJOGX4C.js                          105.71 Kb\r\n\u251c\u2500 build_events.bundle.XSSFVMGJ.css                         1.29 Kb\r\n\u251c\u2500 file_uploader.bundle.2BZNSVJG.js                         203.64 Kb\r\n\u251c\u2500 file_uploader.bundle.OTXSYDJR.css                        6.58 Kb\r\n\u2514\u2500 kanban_board.bundle.F6FPXXED.js                          578.30 Kb\r\n\r\nfrappe\/dist\/css\/\r\n\u251c\u2500 desk.bundle.3EZB3Y5X.css                                 600.57 Kb\r\n\u251c\u2500 email.bundle.77WPFLMN.css                                5.97 Kb\r\n\u251c\u2500 login.bundle.MN3RJEPE.css                                32.64 Kb\r\n\u251c\u2500 print.bundle.MYH35JO2.css                                207.29 Kb\r\n\u251c\u2500 print_format.bundle.BL5UAFLR.css                         186.46 Kb\r\n\u251c\u2500 report.bundle.IGZEN7PM.css                               5.51 Kb\r\n\u251c\u2500 web_form.bundle.6P2ERMYP.css                             14.86 Kb\r\n\u2514\u2500 website.bundle.VMXALGIE.css                              454.66 Kb\r\n\r\nfrappe\/dist\/css-rtl\/\r\n\u251c\u2500 desk.bundle.XZFJMN5D.css                                 601.07 Kb\r\n\u251c\u2500 email.bundle.IDXJO4AL.css                                5.98 Kb\r\n\u251c\u2500 login.bundle.TU4NQTUU.css                                32.64 Kb\r\n\u251c\u2500 print.bundle.PJUPZQQM.css                                207.44 Kb\r\n\u251c\u2500 print_format.bundle.KNX2ZRMQ.css                         186.58 Kb\r\n\u251c\u2500 report.bundle.GDASZB7L.css                               5.50 Kb\r\n\u251c\u2500 web_form.bundle.PPZQ7CSA.css                             14.85 Kb\r\n\u2514\u2500 website.bundle.7FJWJAIG.css                              454.83 Kb\r\n\r\n DONE  Total Build Time: 11.853s\r\n\r\n WARN  Cannot connect to redis_cache to update assets_json\r\n WARN  Cannot connect to redis_cache to update assets_json\r\n WARN  Cannot connect to redis_cache to update assets_json\r\nDone in 12.51s.\r\nCompiling translations for frappe\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/th\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/af\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/es\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/de\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/zh\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/ru\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/pt_BR\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/ar\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/sv\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/fa\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/eo\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/hr\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/id\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/bs\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/hu\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/tr\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/vi\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/fi\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/fr\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/pl\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/zh_TW\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/pt\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/sr_CS\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/nl\/LC_MESSAGES\/frappe.mo\r\nMO file created at \/home\/satria\/Documents\/projects\/frappe-bench\/sites\/assets\/locale\/it\/LC_MESSAGES\/frappe.mo\r\nSUCCESS: Bench frappe-bench initialized\r\n<\/pre>\n<p>[\/codesyntax]<br \/>\nNote: make sure to use node &gt; = v18&#8230;<\/p>\n<p>Let&#8217;s fix the installation problem:<br \/>\n1. [codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>yarn run v1.22.19 \r\n$ node esbuild --production --run-build-command \r\nBrowserslist: caniuse-lite is outdated. Please run: \r\n  npx update-browserslist-db@latest<\/pre>\n<p>[\/codesyntax]<br \/>\npls go to &#8216;apps\/frappe&#8217; directory (here is the complete path: \/home\/satria\/Documents\/projects\/frappe-bench\/apps\/frappe) then run &#8216;npx update-browserslist-db@latest&#8217;<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~\/Documents\/projects\/frappe-bench\/apps\/frappe$ npx update-browserslist-db@latest<\/pre>\n<p>[\/codesyntax]<br \/>\n2. WARN Cannot connect to redis_cache to update assets_json<\/p>\n<p>the redis service is running:<br \/>\nsudo systemctl status redis<br \/>\n[sudo] password for satria:<br \/>\n\u25cf redis-server.service &#8211; Advanced key-value store<br \/>\nLoaded: loaded (\/lib\/systemd\/system\/redis-server.service; enabled; vendor &gt;<br \/>\nActive: active (running) since Wed 2025-05-14 13:49:23 WIB; 16min ago<br \/>\nDocs: http:\/\/redis.io\/documentation,<br \/>\nman:redis-server(1)<br \/>\nMain PID: 1390 (redis-server)<br \/>\nStatus: &#8220;Ready to accept connections&#8221;<br \/>\nTasks: 5 (limit: 57560)<br \/>\nMemory: 5.2M<br \/>\nCPU: 1.714s<br \/>\nCGroup: \/system.slice\/redis-server.service<br \/>\n\u2514\u25001390 &#8220;\/usr\/bin\/redis-server 127.0.0.1:6379&#8221; &#8220;&#8221; &#8220;&#8221; &#8220;&#8221; &#8220;&#8221; &#8220;&#8221; &#8220;&#8221; &#8220;&#8221;&gt;<\/p>\n<p>Mei 14 13:49:23 teddy systemd[1]: Starting Advanced key-value store&#8230;<br \/>\nMei 14 13:49:23 teddy systemd[1]: Started Advanced key-value store.<\/p>\n<p>here is the content of sites\/common_site_config.json:<br \/>\n{<br \/>\n&#8220;background_workers&#8221;: 1,<br \/>\n&#8220;file_watcher_port&#8221;: 6787,<br \/>\n&#8220;frappe_user&#8221;: &#8220;satria&#8221;,<br \/>\n&#8220;gunicorn_workers&#8221;: 17,<br \/>\n&#8220;live_reload&#8221;: true,<br \/>\n&#8220;rebase_on_pull&#8221;: false,<br \/>\n&#8220;redis_cache&#8221;: &#8220;redis:\/\/127.0.0.1:13000&#8221;,<br \/>\n&#8220;redis_queue&#8221;: &#8220;redis:\/\/127.0.0.1:11000&#8221;,<br \/>\n&#8220;redis_socketio&#8221;: &#8220;redis:\/\/127.0.0.1:13000&#8221;,<br \/>\n&#8220;restart_supervisor_on_update&#8221;: false,<br \/>\n&#8220;restart_systemd_on_update&#8221;: false,<br \/>\n&#8220;serve_default_site&#8221;: true,<br \/>\n&#8220;shallow_clone&#8221;: true,<br \/>\n&#8220;socketio_port&#8221;: 9000,<br \/>\n&#8220;use_redis_auth&#8221;: false,<br \/>\n&#8220;webserver_port&#8221;: 8000<br \/>\n}<\/p>\n<p>SO the redis server used PORT 13000 instead of PORT 6379. CHANGED THE PORT FOR redis_cache, redis_queue and redis_socketio to port 6379 in sites\/common_site_config.json. So now the content is:<br \/>\n[codesyntax lang=&#8221;text&#8221;]<\/p>\n<pre>{\r\n \"background_workers\": 1,\r\n \"file_watcher_port\": 6787,\r\n \"frappe_user\": \"satria\",\r\n \"gunicorn_workers\": 17,\r\n \"live_reload\": true,\r\n \"rebase_on_pull\": false,\r\n \"redis_cache\": \"redis:\/\/127.0.0.1:6379\",\r\n \"redis_queue\": \"redis:\/\/127.0.0.1:6379\",\r\n \"redis_socketio\": \"redis:\/\/127.0.0.1:6379\",\r\n \"restart_supervisor_on_update\": false,\r\n \"restart_systemd_on_update\": false,\r\n \"serve_default_site\": true,\r\n \"shallow_clone\": true,\r\n \"socketio_port\": 9000,\r\n \"use_redis_auth\": false,\r\n \"webserver_port\": 8000\r\n}<\/pre>\n<p>[\/codesyntax]<\/p>\n<p>Test the redis server for 6379 port<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~\/Documents\/projects\/frappe-bench\/apps\/frappe$ redis-cli -p 6379 ping\r\nPONG<\/pre>\n<p>[\/codesyntax]<\/p>\n<p>Start the Bench Server<br \/>\nNow that we have created our frappe-bench directory, we can start the Frappe web server by running the following command: bench start<\/p>\n<p>[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~\/Documents\/projects\/frappe-bench$ bench start\r\n14:31:33 system        | redis_cache.1 started (pid=206513)\r\n14:31:33 system        | redis_queue.1 started (pid=206515)\r\n14:31:33 system        | watch.1 started (pid=206528)\r\n14:31:33 system        | web.1 started (pid=206520)\r\n14:31:33 system        | socketio.1 started (pid=206525)\r\n14:31:33 system        | schedule.1 started (pid=206533)\r\n14:31:33 system        | worker.1 started (pid=206535)\r\n14:31:33 redis_cache.1 | 206517:C 14 May 2025 14:31:33.746 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo\r\n14:31:33 redis_cache.1 | 206517:C 14 May 2025 14:31:33.746 # Redis version=6.0.16, bits=64, commit=00000000, modified=0, pid=206517, just started\r\n14:31:33 redis_cache.1 | 206517:C 14 May 2025 14:31:33.747 # Configuration loaded\r\n14:31:33 redis_queue.1 | 206519:C 14 May 2025 14:31:33.745 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo\r\n14:31:33 redis_cache.1 | 206517:M 14 May 2025 14:31:33.747 * Increased maximum number of open files to 10032 (it was originally set to 1024).\r\n14:31:33 redis_queue.1 | 206519:C 14 May 2025 14:31:33.745 # Redis version=6.0.16, bits=64, commit=00000000, modified=0, pid=206519, just started\r\n14:31:33 redis_queue.1 | 206519:C 14 May 2025 14:31:33.745 # Configuration loaded\r\n14:31:33 redis_cache.1 | 206517:M 14 May 2025 14:31:33.748 * Running mode=standalone, port=13000.\r\n14:31:33 redis_queue.1 | 206519:M 14 May 2025 14:31:33.746 * Increased maximum number of open files to 10032 (it was originally set to 1024).\r\n14:31:33 redis_cache.1 | 206517:M 14 May 2025 14:31:33.748 # Server initialized\r\n14:31:33 redis_queue.1 | 206519:M 14 May 2025 14:31:33.747 * Running mode=standalone, port=11000.\r\n14:31:33 redis_queue.1 | 206519:M 14 May 2025 14:31:33.747 # Server initialized\r\n14:31:33 redis_cache.1 | 206517:M 14 May 2025 14:31:33.748 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to \/etc\/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.\r\n14:31:33 redis_queue.1 | 206519:M 14 May 2025 14:31:33.747 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to \/etc\/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.\r\n14:31:33 redis_cache.1 | 206517:M 14 May 2025 14:31:33.749 * Ready to accept connections\r\n14:31:33 redis_queue.1 | 206519:M 14 May 2025 14:31:33.747 * Ready to accept connections\r\n14:31:34 socketio.1    | Realtime service listening on:  9000\r\n14:31:34 watch.1       | \r\n14:31:34 watch.1       | yarn run v1.22.19\r\n14:31:34 watch.1       | $ node esbuild --watch --live-reload\r\n14:31:34 web.1         | WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.\r\n14:31:34 web.1         |  * Running on all addresses (0.0.0.0)\r\n14:31:34 web.1         |  * Running on http:\/\/127.0.0.1:8000\r\n14:31:34 web.1         |  * Running on http:\/\/192.168.1.23:8000\r\n14:31:34 web.1         | Press CTRL+C to quit\r\n14:31:34 web.1         |  * Restarting with stat\r\n14:31:35 web.1         |  * Debugger is active!\r\n14:31:35 web.1         |  * Debugger PIN: 548-397-486\r\n14:31:48 watch.1       | Watching for changes...<\/pre>\n<p>[\/codesyntax]<\/p>\n<p>Note: Type CTRL+C to stop the bench engine<\/p>\n<p>It can be opened on http:\/\/127.0.0.1:8000\/ or http:\/\/192.168.1.23:8000<br \/>\nbut the app still empty!<\/p>\n<p>So Create an App<br \/>\nRead: https:\/\/docs.frappe.io\/framework\/user\/en\/tutorial\/create-an-app<br \/>\nCase study: Library Management System<\/p>\n<p>To create our Library Management app, run the\u00a0<code>new-app<\/code>\u00a0command:<\/p>\n<pre><code class=\"hljs javascript\">bench <span class=\"hljs-keyword\">new<\/span>-app library_management\r\n<\/code><\/pre>\n<p>You should get some prompts, and output like the following. You can enter information manually, or press enter to select the defaults<\/p>\n<p>[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~\/Documents\/projects\/frappe-bench$ bench new-app library_management\r\nApp Title [Library Management]: \r\nApp Description: Library Management System\r\nApp Publisher: Satria Faestha\r\nApp Email: advcha@yahoo.com\r\nApp License (agpl-3.0, apache-2.0, bsd-2-clause, bsd-3-clause, bsl-1.0, cc0-1.0, epl-2.0, gpl-2.0, gpl-3.0, lgpl-2.1, mit, mpl-2.0, unlicense) [mit]: \r\nCreate GitHub Workflow action for unittests [y\/N]: y\r\nBranch Name [develop]: \r\n'library_management' created at \/home\/satria\/Documents\/projects\/frappe-bench\/apps\/library_management\r\nInstalling library_management\r\n$ \/home\/satria\/Documents\/projects\/frappe-bench\/env\/bin\/python -m pip install --quiet --upgrade -e \/home\/satria\/Documents\/projects\/frappe-bench\/apps\/library_management \r\n$ bench build --app library_management\r\nLinking \/home\/satria\/Documents\/projects\/frappe-bench\/apps\/frappe\/frappe\/public to .\/assets\/frappe                                                               Linking \/home\/satria\/Documents\/projects\/frappe-bench\/apps\/frappe\/node_modules to .\/assets\/frappe\/node_modules                                                   Linking \/home\/satria\/Documents\/projects\/frappe-bench\/apps\/library_management\/library_management\/public to .\/assets\/library_management                           \u2714 Application Assets Linked                                            \r\n\r\n\r\nyarn run v1.22.19\r\n$ node esbuild --production --apps library_management --run-build-command\r\nFile                                                        Size\r\n\r\n DONE  Total Build Time: 111.785ms\r\n\r\nDone in 0.74s.\r\nCompiling translations for library_management<\/pre>\n<p>[\/codesyntax]<\/p>\n<p>You will be prompted with details of your app, fill them up and an app named\u00a0<code>library_management<\/code>\u00a0will be created in the\u00a0<code>apps<\/code>\u00a0folder.<\/p>\n<p>Create A Site<br \/>\nRead: https:\/\/docs.frappe.io\/framework\/user\/en\/tutorial\/create-a-site<\/p>\n<p>Run : bench new-site library.localhost<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~\/Documents\/projects\/frappe-bench$ bench new-site library.localhost\r\nEnter mysql super user [root]: \r\nMySQL root password: \r\n\r\nInstalling frappe...\r\nUpdating DocTypes for frappe        : [====================] 100%\r\nSet Administrator password: \r\nUpdating Dashboard for frappe\r\nlibrary.localhost: SystemSettings.enable_scheduler is UNSET\r\n*** Scheduler is disabled ***<\/pre>\n<p>[\/codesyntax]<br \/>\nthe admin password is Teddy@123<\/p>\n<p>This command will create a new database, so you need to enter your MariaDB root password. It will also ask to set the password for the Administrator user, just set a password that you won&#8217;t forget. This will be useful later.<\/p>\n<p>Now, you will have a new folder named\u00a0<code>library.localhost<\/code>\u00a0in the\u00a0<code>sites<\/code>\u00a0directory.<\/p>\n<p>If site creation fails for any reason, you&#8217;ll be prompted to roll back the changes. This will delete the\u00a0<code>library.localhost<\/code>\u00a0or equivalent in your sites directory, and delete the database\/user that was created. This will allow you to easily retry without having to manually cleanup the unusable site.<\/p>\n<p>the new database (_5b0e23f4238e31a0), user and password can be seen in sites\/library.localhost\/site_config.json<\/p>\n<p>Now you can open the site http:\/\/library.localhost:8000\/ on your browser<br \/>\nNote: make sure to run &#8216;bench start&#8217; first in the frappe-bench directory<\/p>\n<p>The login page will be displayed:<br \/>\nusername: Administrator<br \/>\npassword: Teddy@123<br \/>\nThis user also can be found in the database (tabUser table)<\/p>\n<p>Then install app on site<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~\/Documents\/projects\/frappe-bench$ bench --site library.localhost install-app library_management\r\n\r\nInstalling library_management...\r\nUpdating Dashboard for library_management<\/pre>\n<p>[\/codesyntax]<\/p>\n<p>To confirm if the app was installed, run the following command:<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>satria@teddy:~\/Documents\/projects\/frappe-bench$ bench --site library.localhost list-apps\r\n\r\nfrappe\r\nlibrary_management<\/pre>\n<p>[\/codesyntax]<\/p>\n<p>then run &#8216;bench start&#8217; again!<\/p>\n<p>I found some glitch on the frontend.<br \/>\nfor example on http:\/\/library.localhost:8000\/login, i found these errors related to css on the console:<br \/>\nFailed to load resource: the server responded with a status of 404 (NOT FOUND) -&gt; http:\/\/library.localhost:8000\/assets\/frappe\/dist\/css\/login.bundle.O2AXXQ4F.css<br \/>\nI can&#8217;t find the file but I found this file:<br \/>\nsites\/assets\/frappe\/dist\/css\/login.bundle.M242FIII.css<br \/>\n&#8211;&gt; NEED TO RESTART bench server (stop bench then run again bench start). then refresh the browser<\/p>\n<p>but after the login, i found another frontend glitch:<br \/>\nGET http:\/\/library.localhost:8000\/assets\/frappe\/dist\/css\/desk.bundle.5EPJH5Z3.css net::ERR_ABORTED 404 (NOT FOUND) -&gt; http:\/\/library.localhost:8000\/assets\/frappe\/dist\/css\/desk.bundle.5EPJH5Z3.css<\/p>\n<p>GET http:\/\/library.localhost:8000\/assets\/frappe\/dist\/css\/report.bundle.7F2GVCHL.css net::ERR_ABORTED 404 (NOT FOUND) -&gt; http:\/\/library.localhost:8000\/assets\/frappe\/dist\/css\/report.bundle.7F2GVCHL.css<\/p>\n<p>&#8211;&gt; READ THE WARNING MESSAGE:<br \/>\nWARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add &#8216;vm.overcommit_memory = 1&#8217; to \/etc\/sysctl.conf and then reboot or run the command &#8216;sysctl vm.overcommit_memory=1&#8217; for this to take effect. &#8211;&gt; So fix it as requested! then restart bench (bench start)<br \/>\nOpen http:\/\/library.localhost:8000\/app\/ -&gt; should be working and run the app install wizard<br \/>\nemail: advcha@yahoo.com<br \/>\npass: Teddy@123<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13161\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/Screenshot-at-2025-05-14-15-27-54.png\" alt=\"\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/Screenshot-at-2025-05-14-15-27-54.png 1920w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/Screenshot-at-2025-05-14-15-27-54-300x169.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/Screenshot-at-2025-05-14-15-27-54-1024x576.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/Screenshot-at-2025-05-14-15-27-54-768x432.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/Screenshot-at-2025-05-14-15-27-54-1536x864.png 1536w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/Screenshot-at-2025-05-14-15-27-54-1200x675.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p>Create a DocType<br \/>\nRead: https:\/\/docs.frappe.io\/framework\/user\/en\/tutorial\/create-a-doctype<br \/>\nDocType is analogous to a Model in other frameworks. Apart from defining properties, it also defines the behavior of the Model.<\/p>\n<p>Enable Developer Mode<br \/>\nBefore we can create DocTypes, we need to enable developer mode on our bench. This will enable boilerplate creation when we create doctypes and we can track them into version control with our app.<\/p>\n<p>Go to your terminal and quit the bench server if it&#8217;s already running then from the frappe-bench directory, run the following command:<\/p>\n<h2 id=\"creating-a-doctype\">Creating a DocType<a class=\"no-underline active\" href=\"https:\/\/docs.frappe.io\/framework\/user\/en\/tutorial\/create-a-doctype#creating-a-doctype\" aria-hidden=\"true\">\u00a0<\/a><\/h2>\n<p>While in Desk, navigate to the\u00a0<strong>DocType List<\/strong>\u00a0using the\u00a0<a href=\"https:\/\/docs.frappe.io\/framework\/user\/en\/desk#awesomebar\">Awesomebar<\/a>. This list will include DocTypes bundled with the framework, those that are a part of the installed Frappe apps and custom ones, which you can create specific to each site.<\/p>\n<p>The first doctype we will create is\u00a0<strong>Article<\/strong>. To create it, click on New.<br \/>\n-&gt; http:\/\/library.localhost:8000\/app\/doctype\/view\/list then click &#8216;+Add DocType&#8217; button on the top right<\/p>\n<ol>\n<li>Enter Name as Article<\/li>\n<li>Select Library Management in Module<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13164\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514163614.png\" alt=\"\" width=\"601\" height=\"576\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514163614.png 601w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514163614-300x288.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<p>Then click &#8216;Create &amp; Continue&#8217; button<br \/>\nthen Go to http:\/\/library.localhost:8000\/app\/doctype<br \/>\nthen select &#8216;Article&#8217;<\/p>\n<ol>\n<li>Add the following fields in the Fields table: (Better use &#8216;Form&#8217; tab)\n<ol>\n<li>Article Name (Data, Mandatory)<\/li>\n<li>Image (Attach Image)<\/li>\n<li>Author (Data)<\/li>\n<li>Description (Text Editor)<\/li>\n<li>ISBN (Data)<\/li>\n<li>Status (Select) &#8211; Enter two options: Issued and Available (Type Issued, hit enter, then type Available)<\/li>\n<li>Publisher (Data)<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Refer the following images to check how it should be done:<br \/>\nForm tab<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13167\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170455.png\" alt=\"\" width=\"1717\" height=\"790\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170455.png 1717w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170455-300x138.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170455-1024x471.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170455-768x353.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170455-1536x707.png 1536w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170455-1200x552.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p>Naming tab<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13168\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170732.png\" alt=\"\" width=\"1665\" height=\"813\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170732.png 1665w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170732-300x146.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170732-1024x500.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170732-768x375.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170732-1536x750.png 1536w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170732-1200x586.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p>Setting tab<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13169\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170602.png\" alt=\"\" width=\"1674\" height=\"769\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170602.png 1674w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170602-300x138.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170602-1024x470.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170602-768x353.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170602-1536x706.png 1536w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514170602-1200x551.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p>Field tab (usually populated from the Form tab entries)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13165\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514164141.png\" alt=\"\" width=\"1694\" height=\"761\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514164141.png 1694w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514164141-300x135.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514164141-1024x460.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514164141-768x345.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514164141-1536x690.png 1536w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514164141-1200x539.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p>After adding the fields, click on Save.<\/p>\n<p>You will see a\u00a0<strong>Go to Article List<\/strong>\u00a0button at the top right of the form. Click on it to go to the Article List. Here you will see a blank list with no records because the table has no records.<\/p>\n<p>Let&#8217;s create some records. But before that, we need to clear the Desk cache. Click on the\u00a0<strong>Settings<\/strong>\u00a0dropdown on the right side of the navbar and click on\u00a0<strong>Reload<\/strong>.<\/p>\n<p>Click &#8216;Go to Article List&#8217; button (http:\/\/library.localhost:8000\/app\/article)<br \/>\nthen click &#8216;Add Article&#8217; button<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13171\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514172616.png\" alt=\"\" width=\"1684\" height=\"310\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514172616.png 1684w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514172616-300x55.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514172616-1024x189.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514172616-768x141.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514172616-1536x283.png 1536w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2025\/05\/ScreenShot-Tool-20250514172616-1200x221.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p>The github gave me much headeache<br \/>\n[codesyntax lang=&#8221;bash&#8221;]<\/p>\n<pre>(env) satria@teddy:~\/Documents\/projects\/frappe-bench\/apps\/library_management$ git remote set-url origin https:\/\/github.com\/advcha\/library-management-system.git\r\n(env) satria@teddy:~\/Documents\/projects\/frappe-bench\/apps\/library_management$ git push origin main\r\nerror: src refspec main does not match any\r\nerror: failed to push some refs to 'https:\/\/github.com\/advcha\/library-management-system.git'\r\n(env) satria@teddy:~\/Documents\/projects\/frappe-bench\/apps\/library_management$ git remote add origin https:\/\/github.com\/your-username\/library-management-system.git\r\nerror: remote origin already exists.\r\n(env) satria@teddy:~\/Documents\/projects\/frappe-bench\/apps\/library_management$ git push origin main\r\nerror: src refspec main does not match any\r\nerror: failed to push some refs to 'https:\/\/github.com\/advcha\/library-management-system.git'\r\n(env) satria@teddy:~\/Documents\/projects\/frappe-bench\/apps\/library_management$ ^C\r\n(env) satria@teddy:~\/Documents\/projects\/frappe-bench\/apps\/library_management$ git branch\r\n  develop\r\n* library-management-system\r\n(env) satria@teddy:~\/Documents\/projects\/frappe-bench\/apps\/library_management$ git push origin library-management-system\r\nEnumerating objects: 52, done.\r\nCounting objects: 100% (52\/52), done.\r\nDelta compression using up to 8 threads\r\nCompressing objects: 100% (44\/44), done.\r\nWriting objects: 100% (50\/50), 13.02 KiB | 3.25 MiB\/s, done.\r\nTotal 50 (delta 16), reused 0 (delta 0), pack-reused 0\r\nremote: Resolving deltas: 100% (16\/16), done.\r\nremote: \r\nremote: Create a pull request for 'library-management-system' on GitHub by visiting:\r\nremote:      https:\/\/github.com\/advcha\/library-management-system\/pull\/new\/library-management-system\r\nremote: \r\nTo https:\/\/github.com\/advcha\/library-management-system.git\r\n * [new branch]      library-management-system -&gt; library-management-system<\/pre>\n<p>[\/codesyntax]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Read: https:\/\/docs.frappe.io\/framework\/user\/en\/installation#debian-ubuntu Update your system&#8217;s package index sudo apt update if not exist, Install\/update git,\u00a0python, and\u00a0redis sudo apt install git python-is-python3 python3-dev python3-pip redis-server libmariadb-dev mariadb-server mariadb-client pkg-config Check: satria@teddy:~$ git &#8211;version git version 2.34.1 satria@teddy:~$ python3 &#8211;version Python 3.10.13 satria@teddy:~$ redis-server &#8211;version Redis server v=6.0.16 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=a3fdef44459b3ad6 satria@teddy:~$ mariadb &#8211;version mariadb Ver &hellip; <a href=\"https:\/\/myprojects.advchaweb.com\/index.php\/2025\/05\/14\/install-erpnext-frappe-on-ubuntu-22-04\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Install ERPNext\/Frappe on Ubuntu 22.04&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,13],"tags":[],"class_list":["post-13133","post","type-post","status-publish","format-standard","hentry","category-python","category-tutorial"],"_links":{"self":[{"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/posts\/13133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/comments?post=13133"}],"version-history":[{"count":34,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/posts\/13133\/revisions"}],"predecessor-version":[{"id":13174,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/posts\/13133\/revisions\/13174"}],"wp:attachment":[{"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/media?parent=13133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/categories?post=13133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/tags?post=13133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}