Support #795
Updated by Daniel Curtis over 8 years ago
This is a guide for setting up a self-hosted wallabag instance on an nginx web server using postgresql on FreeBSD 10.
h1. Prepare the Environment
* Before installation of the components, make sure everything is up to date using the following command:
<pre>
pkg update -f && pkg upgrade
</pre>
* Install portmaster:
<pre>
pkg install portmaster
</pre>
---
h1. Install Nginx
* Install Nginx
<pre>
pkg install nginx
</pre>
* Start and enable nginx at boot:
<pre>
echo 'nginx_enable="YES"' >> /etc/rc.conf
service nginx start
</pre>
* Create a configuration directory to make managing individual server blocks easier
<pre>
mkdir /usr/local/etc/nginx/conf.d
</pre>
* Edit the main nginx config file:
<pre>
vi /usr/local/etc/nginx/nginx.conf
</pre>
#* And strip down the config file and add the include statement at the end to make it easier to handle various server blocks:
<pre>
worker_processes 1;
error_log /var/log/nginx-error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# Load config files from the /etc/nginx/conf.d directory
include /usr/local/etc/nginx/conf.d/*.conf;
}
</pre>
h1. Install PostgreSQL 9.4
* Install PostgreSQL:
<pre>
pkg install postgresql94-{server,client}
</pre>
* Enable PostgreSQL at boot:
<pre>
echo 'postgresql_enable="YES"' >> /etc/rc.conf
</pre>
* Initialize the database:
<pre>
service postgresql initdb
</pre>
* Start PostgreSQL:
<pre>
service postgresql start
</pre>
* Edit the postgres config file:
<pre>
vi /usr/local/pgsql/data/postgresql.conf
</pre>
#* And modify the following:
<pre>
listen_addresses = '*'
</pre>
* Edit the pg_hba config file:
<pre>
vi /usr/local/etc/pgsql/data/pg_hba.conf
</pre>
#* And modify the following:
<pre>
# TYPE DATABASE USER CIDR-ADDRESS METHOD only
# Local connections
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# IPv4 connections:
host all all 192.168.10.0/24 md5
# IPv6 local connections:
host all all 1234::abcd/64 md5
</pre>
* And wrap up by restarting the nginx and postgresql servers:
<pre>
service nginx restart
service postgresql restart
</pre>
* Switch to the pgsql user:
<pre>
su pgsql
</pre>
#* Create the wallabagdb database:
<pre>
createdb wallabagdb
</pre>
#* Then create the wallabaguser user:
<pre>
createuser -Pl --interactive wallabaguser
</pre>
#* Grant all privileges to wallabagdb to wallabaguser:
<pre>
psql template1
GRANT ALL PRIVILEGES ON DATABASE "wallabagdb" to wallabaguser;
\q
</pre>
* Exit from the pgsql user
<pre>
exit
</pre>
h1. Install PHP
* Install PHP 5.6 and other supporting packages:
<pre>
pkg install php56 php56-session php56-ctype php56-dom php56-filter php56-hash php56-simplexml php56-json php56-gd php56-mbstring php56-xml php56-tidy php56-iconv php56-curl php56-gettext php56-tokenizer php56-pdo_pgsql php-composer
</pre>
* Configure the default PHP settings
<pre>
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
</pre>
* Edit the php config file:
<pre>
vi /usr/local/etc/php.ini
</pre>
#* And modify the memory limit to 2GB:
<pre>
memory_limit = 2G
</pre>
* Edit @/usr/local/etc/php-fpm.conf@:
<pre>
vi /usr/local/etc/php-fpm.conf
</pre>
#* Make the following changes:
<pre>
listen = /var/run/php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0660
</pre>
* Start and enable PHP-FPM at boot:
<pre>
echo 'php_fpm_enable="YES"' >> /etc/rc.conf
service php-fpm start
</pre>
* Restart nginx:
<pre>
service nginx restart
</pre>
h1. Install Wallabag
* Clone the latest wallabag version from GitHub:
<pre>
cd /usr/local/www
git clone -b v2 https://github.com/wallabag/wallabag.git
cd wallabag
</pre>
* Then run the two installation commands:
<pre>
env SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist
php bin/console wallabag:install --env=prod
</pre>
#* *NOTE*: Make sure to *NO* when prompted to +reset the database+
* Add a *wallabag.example.com server block*:
<pre>
vi /usr/local/etc/nginx/conf.d/wallabag.example.com.conf
</pre>
#* Add the following:
<pre>
server {
listen 80;
server_name wallabag.example.com;
root /usr/local/www/wallabag.example.com/web;
access_log /var/log/wallabag.example.com-access.log;
error_log /var/log/wallabag.example.com-error.log;
location / {
index index.php index.html index.htm;
}
# For all PHP requests, pass them on to PHP-FPM via FastCGI
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
}
</pre>
h2. Upgrading Wallabag
* Pull the latest commit from GitHub:
<pre>
cd /usr/local/www/wallabag.example.com/
git pull
</pre>
* And update the modules:
<pre>
env SYMFONY_ENV=prod composer update --no-dev -o --prefer-dist
</pre>
h1. Resources
* http://doc.wallabag.org/en/v2/
* http://doc.wallabag.org/en/v2/user/installation.html