Introduction
Wallabag is a self-hosted PHP web application allowing you to save web pages for later reading. It extracts content so that you can read it when you have time. This article will explain the installation of Wallabag on a Ubuntu 18.04 system.
Prerequisites
- A Ubuntu 18.04 VPS.
- Root access to your server (via a user with
sudo
privileges.) - A web server with PHP (Instructions below.)
- A MySQL database (Instructions below.)
Preparations
Update your system and install required software.
sudo apt update
sudo apt upgrade -y
sudo apt install -y git make composer
Git will be used to download Wallabag from its github repository and composer, via the make command, to install PHP libraries.
Installing a web server stack:
We will be using Apache with PHP, and MariaDB for the database. Execute the following to install the required packages:
sudo apt install -y apache2 php7.2 php7.2-common php7.2-xml php7.2-mbstring php7.2-mysql php7.2-json php7.2-pdo php7.2-gd php7.2-tidy php7.2-curl php7.2-bcmath php7.2-zip mariadb-server mariadb-client
Make sure Apache and MariaDB are enabled and running:
sudo systemctl enable --now apache2.service mariadb.service
Configuring Apache
Using a text editor of your choice, create a new Apache configuration file. For instance:
sudo vim /etc/apache2/sites-available/wallabag.conf
Populate it with the following (insert your Vultr IP address or a domain name pointing to your IP for ServerName
):
<VirtualHost *:80>
ServerName IP_or_DOMAIN_NAME
DocumentRoot /var/www/wallabag/web
<Directory /var/www/wallabag/web>
AllowOverride None
Order Allow,Deny
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
<Directory /var/www/wallabag/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
ErrorLog /var/log/apache2/wallabag_error.log
CustomLog /var/log/apache2/wallabag_access.log combined
</VirtualHost>
Save, exit, and enable this virtual host:
sudo a2ensite wallabag.conf
Enable the rewrite
apache module:
sudo a2enmod rewrite
Restart Apache to apply changes:
sudo systemctl restart apache2.service
Configuring MariaDB for WallaBag
Start by securing your MySQL installation with this command:
sudo mysql_secure_installation
Answer the questions as shown:
Enter current password for root (enter for none): Enter
Set root password? [Y/n]: Y
New password: <your-password>
Re-enter new password: <your-password>
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Make sure you use a strong password.
Configuring MariaDB
Create a database and user for Wallabag:
sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE wallabag;
MariaDB [(none)]> CREATE USER 'wallabaguser'@'localhost' IDENTIFIED BY 'wallabagpassword';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wallabag.* TO 'wallabaguser'@'localhost';
MariaDB [(none)]> exit;
Make sure you replace wallabagpassword
with a secure password. It should be different from the password you chose for the MariaDB root user.
Installing Wallabag
Since Wallabag is hosted on github, we’ll clone the repository locally:
cd /var/www/
sudo git clone https://github.com/wallabag/wallabag.git
And transfer ownership to the apache user:
sudo chown -R www-data:www-data /var/www/wallabag
It is not recommended to run the installation scripts as root, so we will use the apache user:
sudo -u www-data /bin/bash
cd /var/www/wallabag/
make install
You will be asked several questions regarding desired configuration:
database_driver (pdo_mysql): pdo_mysql
database_driver_class (null): Press Enter
database_host (127.0.0.1): 127.0.0.1
database_port (null): 3306
database_name (wallabag): wallabag
database_user (root): wallabaguser
database_password (null): wallabagpassword
database_path (null): Press Enter
database_table_prefix (wallabag_): Prefix of your choice or Press Enter for the default.
database_socket (null): Press Enter
database_charset (utf8mb4): Press Enter
domain_name ('https://your-wallabag-url-instance.com'): http://IP_or_DOMAIN_NAME
Choose the default (press Enter) for the remaining questions.
If you followed the steps correctly, you’ve successfully installed WallaBag on Ubuntu. You should now be able to access it on http://IP_or_DOMAIN_NAME
. For better security/privacy, you should consider using a domain name with HTTPS, however this is beyond the scope of this guide.
Want to Install WallaBag on Fedora 29 instead?