{"id":62,"date":"2026-07-25T13:42:49","date_gmt":"2026-07-25T11:42:49","guid":{"rendered":"https:\/\/swivelpos.com\/en\/?page_id=62"},"modified":"2026-07-25T13:44:22","modified_gmt":"2026-07-25T11:44:22","slug":"manual-install-instructions-for-debian-ubuntu-linux","status":"publish","type":"page","link":"https:\/\/swivelpos.com\/en\/manual-install-instructions-for-debian-ubuntu-linux\/","title":{"rendered":"Installation: manual: Debian &amp; Ubuntu Linux"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This installation process applies to all linux distributions with the \u201capt\u201d-package manager.<br>This is includes: Debian, Ubuntu, Kubuntu, Pop-os, Tuxedo OS, Raspberry Pi OS etc..<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Too long or too boring? Might wanna try the <a href=\"https:\/\/swivelpos.com\/en\/automatic-installation-on-debian-ubuntu-linux\/\" data-type=\"page\" data-id=\"59\">automatic install script for Debian &amp; Ubuntu<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"How to install Posadoble on Linux - Ubuntu &amp; Raspberry Pi\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/dDrOqBhHDaU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Posadoble is a web application.<br>This means it needs a webserver (Apache) and a database (MySQL\/MariaDB) to run.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Install webserver and database first<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Update package manager<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open the terminal and update the package manager:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt upgrade<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Enter your password if necessary.<br>Press \u201cy\u201d and press enter when it asks if you are sure you want to update.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install Apache<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In the terminal, type:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install apache2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Press \u201cy\u201d and press enter when it asks if you want to install<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Check<\/strong><br>Let\u2019s test if the webserver is installed by navigating to <a href=\"http:\/\/localhost\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/localhost<\/a> in your browser (like Chrome or Firefox).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Enable rewrite module<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So we can make pretty urls that don\u2019t end on .php or .html<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo a2enmod rewrite<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Write permissions<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We need permissions to write in the web documents directory (\/var\/www\/).<br>To do this, we change the owner of the web documents to the current user of the computer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chown -R $(whoami) \/var\/www<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Edit envvars<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now the computer user owns the directory, Apache can\u2019t write to this directory anymore.<br>Let\u2019s fix that by letting Apache act as our current computer user.<br>(it would be safer to create a new user with less permissions, but this is a quick tutorial).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/apache2\/envvars<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This opens the file envvars in the text editor Nano.<br>Look for the lines:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export APACHE_RUN_USER=<strong>www-data<\/strong>\nexport APACHE_RUN_GROUP=<strong>www-data<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">change both \u201cwww-data\u201d into the name of your computer user.<br>If your user is named \u201cbert\u201d, it will look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export APACHE_RUN_USER=<strong>bert<\/strong>\nexport APACHE_RUN_GROUP=<strong>bert<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Exit Nano with CTRL-X.<br>If it asks to save modified buffer (aka save file): press \u201cy\u201d.<br>If it asks the name of the file, just press enter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install PHP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Install PHP and its MariaDB extension (MariaDB was formerly known as: MySQL):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install php libapache2-mod-php\nsudo apt install php-mysql<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lets also install the PHP modules we need for Posadoble:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y openssl php-mail php-bcmath php-curl php-mbstring php-mysql php-tokenizer php-xml php-zip php-intl php-exif php-gd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Restart Apache<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Restart the webserver for the changes to take effect:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo service apache2 restart<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Install MySQL\/MariaDB<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install mariadb-server<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To be sure update the package manager again, otherwise the next command might not run.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt upgrade<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Out of the box mysql is installed with the default user: root with no password.<br>This is extremely insecure, because everyone and his dog knows this user and password combination.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is a little tool to fix this security issue:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mariadb-secure-installation<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The tool asks a couple of questions:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Current password for root:<br>just hit enter, because there is no password yet<\/li>\n\n\n\n<li>Switch to unix_socket authentication? <strong>no<\/strong><br>Because then you cant connect with windows to mysql<\/li>\n\n\n\n<li>Change root password? <strong>yes<\/strong>\n<ul class=\"wp-block-list\">\n<li>New password<br>Enter a new password<\/li>\n\n\n\n<li>Re-enter password<br>Repeat the password you just typed<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Remove anonymous users? <strong>yes<\/strong><\/li>\n\n\n\n<li>Disallow root login remotely? <strong>yes<\/strong><br>The database server and the webserver are installed on the same computer,<br>it doesn\u2019t make sense that other computers can connect to the database.<\/li>\n\n\n\n<li>remove test database? <strong>yes<\/strong><\/li>\n\n\n\n<li>reload privilege tables? <strong>yes<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To make the database extra secure, it is wise to create a new user with another password.<br>This will be the user that we use for Posadoble.<br>Make sure that this user has only access to one database: the database of Posadoble.<br>For the sake of a quick tutorial, I\u2019ll skip this.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Install Posadoble<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Delete index.html<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Remove the example document index.html file from \/var\/www\/html\/index.html<br>because it might interfere with Posadoble.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rm \/var\/www\/html\/index.html<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Download<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before we can download, make sure the program \u201cwget\u201d and \u201cunzip\u201d are installed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install wget\nsudo apt install unzip<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now download the software:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget https:\/\/github.com\/grotebozewolfgromt\/cms5\/archive\/refs\/heads\/main.zip --quiet --continue --show-progress --output-document \/home\/$(whoami)\/Downloads\/posadoble.zip<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Extract the zip archive in your Downloads directory:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unzip \/home\/$(whoami)\/Downloads\/posadoble.zip -d \/home\/$(whoami)\/Downloads\/posadoble<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Move the public directory into the <strong>public<\/strong> webserver directory (and remove empty left-over directory)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mv \/home\/$(whoami)\/Downloads\/posadoble\/cms5-main\/public\/* \/var\/www\/html\nrm -r \/home\/$(whoami)\/Downloads\/posadoble\/cms5-main\/public<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Move the rest of the files into the <strong>private<\/strong> webserver directory:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mv \/home\/$(whoami)\/Downloads\/posadoble\/cms5-main\/* \/var\/www\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Clean up the download (optional)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rm \/home\/$(whoami)\/Downloads\/posadoble.zip\nrm -r \/home\/$(whoami)\/Downloads\/posadoble<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Start Installer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In your browser, type in the address bar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><a href=\"http:\/\/localhost\/install\/index.php\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/localhost\/install\/index.php<\/a><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">(you can also click the link above, it will open in a new tab)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose \u201cinstall\u201d and click \u201cnext\u201d<\/li>\n\n\n\n<li>Check the \u201cI Agree box\u201d and click \u201cnext\u201d<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pre requisites checks<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You will probably get a couple of errors in the pre-requisites screen, if not, congratulations, skip this step by clicking \u201cnext\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>mod_rewrite<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Posadoble needs this to make pretty urls in the browser bar.<br>We enabled mod_rewrite before, so this shouldn\u2019t be a problem.<br>When you get an error in the installer, you might have missed it earlier:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo a2enmod rewrite<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Restart the webserver for the change to take effect:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo service apache2 restart<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>url rewriting<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you get an error here,<br>open the \/etc\/apache2\/apache2.conf file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/apache2\/apache2.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In the \/etc\/apache2\/apache2.conf file,<br>look for the following lines that start with \u201c&lt;Directory \/var\/www\/&gt;\u201d:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \/var\/www\/&gt;\n        Options Indexes FollowSymLinks\n        AllowOverride <strong>None<\/strong>\n        Require all granted\n&lt;\/Directory&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cAllowOverride <strong>None<\/strong>\u201d should read \u201cAllowOverride <strong>All<\/strong>\u201c, so:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \/var\/www\/&gt;\n        Options Indexes FollowSymLinks\n        AllowOverride <strong>All<\/strong>\n        Require all granted\n&lt;\/Directory&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">CTRL-X out of Nano, when it asks to save: yes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Restart the webserver for the change to take effect:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo service apache2 restart<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Re-run checks<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can see if everything works by click on the \u201c<strong>run checks again<\/strong>\u201d link on the bottom of the page of the installer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Everything should be good to go now!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Next, next, next<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Just follow the guided instructions in the installer and click the \u201cnext\u201d button on very screen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation report<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The last screen is the installation report.<br>Please write down (or copy or print) all the information of the installation report for your own administration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Login<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In the installation report you\u2019ll find a button \u201clogin\u201d, this takes you to the login screen of Posadoble.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Have fun!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This installation process applies to all linux distributions with the \u201capt\u201d-package manager.This is includes: Debian, Ubuntu, Kubuntu, Pop-os, Tuxedo OS, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-62","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/swivelpos.com\/en\/wp-json\/wp\/v2\/pages\/62","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swivelpos.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/swivelpos.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/swivelpos.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/swivelpos.com\/en\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":5,"href":"https:\/\/swivelpos.com\/en\/wp-json\/wp\/v2\/pages\/62\/revisions"}],"predecessor-version":[{"id":68,"href":"https:\/\/swivelpos.com\/en\/wp-json\/wp\/v2\/pages\/62\/revisions\/68"}],"wp:attachment":[{"href":"https:\/\/swivelpos.com\/en\/wp-json\/wp\/v2\/media?parent=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}