Tuesday, November 22, 2016

How to Install Taiga Open Source Agile Project Manager & Kanban on CentOS 7

Taiga is a beautiful, open-source project management platform tailored for agile teams, Scrum sprints, and Kanban workflows. While official documentation primarily targeted Ubuntu, Taiga deploys smoothly on CentOS 7 with PostgreSQL, Python virtualenvs, and Nginx.

Architecture: taiga-back (Django / Python 3.5+) • taiga-front (AngularJS HTML5) • PostgreSQL 9.4+ • Nginx reverse proxy

1. Installing System Packages on CentOS 7

Install prerequisite development libraries and PostgreSQL:

yum install epel-release -y
yum install gcc gcc-c++ make automake git zlib-devel bzip2-devel openssl-devel   ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel   libpcap-devel xz-devel libjpeg-turbo-devel libxml2-devel libxslt-devel   postgresql-server postgresql-devel redis nginx -y

2. PostgreSQL Setup

postgresql-setup initdb
systemctl start postgresql
systemctl enable postgresql

sudo -u postgres createuser -s taiga
sudo -u postgres createdb -O taiga taiga

3. Frontend & Backend Deployment

Deploy taiga-back inside an isolated Python virtual environment, execute database migrations via python manage.py migrate, unpack taiga-front-dist to /home/taiga/taiga-front-dist, and configure Nginx to proxy API endpoints to Gunicorn on port 8001.

Wednesday, November 9, 2016

How to Compile and Install the Latest qpdfview and Evince on Ubuntu & Debian

For Linux desktop users seeking a high-performance, lightweight PDF and DjVu document viewer with tabbed browsing, qpdfview (built with Qt5 and Poppler) is significantly faster and more customizable than default desktop readers like Evince.

Features: Tabbed reading • Continuous two-page layout • Low memory footprint • Poppler Qt5 rendering

Installation Steps (Ubuntu / Debian)

# 1. Install Qt5 and document format rendering development packages
sudo apt-get install qttools5-dev-tools libpoppler-qt5-dev libspectre-dev   libdjvulibre-dev libcups2-dev build-essential -y

# 2. Download and build latest qpdfview release
mkdir -p ~/src && cd ~/src
wget https://launchpad.net/qpdfview/trunk/0.4.17/+download/qpdfview-0.4.17.tar.gz
tar -zxf qpdfview-0.4.17.tar.gz
cd qpdfview-0.4.17

# 3. Generate Makefile and compile with all plugins enabled
lrelease qpdfview.pro
qmake qpdfview.pro
make -j$(nproc)
sudo make install

Wednesday, October 26, 2016

How to Install a Private Git Server with CGIT Web Frontend on CentOS 7

Self-hosting a lightweight Git web interface like CGIT written in C provides near-instant page loads, minimal RAM footprint, and syntax-highlighted code browsing compared to heavyweight alternatives like GitLab.

Stack: CentOS 7 • CGIT • fcgiwrap • Nginx • highlight syntax engine

1. Installing Prerequisites and fcgiwrap

CGIT operates as a FastCGI binary. Install fcgiwrap to interface between Nginx and the CGIT binary:

yum install epel-release -y
yum install fcgi-devel highlight git autoconf automake libtool -y

cd /usr/src
git clone https://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure --prefix=/usr
make && make install

2. Compiling CGIT from Source

cd /usr/src
git clone https://git.zx2c4.com/cgit
cd cgit
git submodule init
git submodule update
make get-git
make && make install

3. Nginx FastCGI Integration

Configure Nginx to route CGIT requests to the fcgiwrap socket:

location / {
    fastcgi_pass unix:/var/run/fcgiwrap.sock;
    fastcgi_param SCRIPT_FILENAME /var/www/htdocs/cgit/cgit.cgi;
    fastcgi_param PATH_INFO $uri;
    fastcgi_param QUERY_STRING $args;
    fastcgi_param HTTP_HOST $server_name;
    include fastcgi_params;
}

Sunday, October 2, 2016

How to Build a Low-Latency HLS & RTMP Live Streaming Server on Linux (Nginx RTMP Module)

Setting up your own live video streaming infrastructure on a Linux VPS or dedicated server provides full control over bitrate, privacy, and latency without third-party platform restrictions. This complete guide walks through configuring an Nginx RTMP + HLS media server on CentOS 7, publishing from OBS Studio / FFmpeg, and embedding the stream in modern web browsers.

Architecture: Nginx with nginx-rtmp-module • HLS fragmenting (Apple HTTP Live Streaming) • Broadcaster: OBS / FFmpeg • Player: HTML5 HLS.js

Part 1: Compiling Nginx with RTMP Support (CentOS 7)

Install development packages and compile Nginx with the RTMP module:

yum install gcc-c++ pcre-devel zlib-devel openssl-devel git -y
cd /usr/src
git clone https://github.com/arut/nginx-rtmp-module.git
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar -zxf nginx-1.12.2.tar.gz
cd nginx-1.12.2

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx   --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid   --with-http_ssl_module --with-http_v2_module   --add-module=/usr/src/nginx-rtmp-module

make && make install

Part 2: Configuring RTMP and HLS Ingestion

Add the RTMP server block to /etc/nginx/nginx.conf:

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            hls on;
            hls_path /var/www/hls;
            hls_fragment 3;
            hls_playlist_length 60;
            # Restrict streaming publishing to your IP:
            allow publish 127.0.0.1;
            allow publish YOUR.OFFICE.IP;
            deny publish all;
        }
    }
}

Configure HTTP delivery for the HLS .m3u8 playlists and .ts video segments in /etc/nginx/conf.d/stream.conf:

server {
    listen 80;
    server_name stream.example.com;

    location /hls {
        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
        root /var/www;
        add_header Cache-Control no-cache;
        add_header Access-Control-Allow-Origin *;
    }
}

Part 3: Broadcasting and Playback

In OBS Studio, set the Stream URL to rtmp://YOUR-SERVER-IP/live and choose a Stream Key (e.g. mystream). In your web page, point your HLS video player to http://YOUR-SERVER-IP/hls/mystream.m3u8 for instant, cross-browser live playback.

Thursday, September 22, 2016

How to Compile the Zulip Desktop Client from Source on Ubuntu 16.04 (Xenial)

Building the Zulip desktop client from source on Ubuntu 16.04 LTS (Xenial Xerus) requires resolving Qt5 WebKit, multimedia, and GStreamer Phonon audio backend dependencies.

Stack: Ubuntu 16.04 LTS • Qt 5.x • CMake • Zulip Desktop 0.5.x

Build and Installation Commands

# 1. Install Qt5 development libraries and phonon GStreamer backends
sudo apt-get install git cmake qt5-default libqt5svg5-dev libqt5webkit5-dev   qtmultimedia5-dev libjson0-dev phonon-backend-gstreamer phonon4qt5-backend-gstreamer -y

# 2. Download and build Zulip Desktop
wget https://github.com/zulip/zulip-desktop/archive/0.5.1.tar.gz
tar -zxf 0.5.1.tar.gz
cd zulip-desktop-0.5.1
mkdir build && cd build
cmake .. -DBUILD_WITH_QT5=On
make
sudo make install

# 3. Register Desktop launcher
cd /usr/share/applications
sudo ln -s /usr/local/share/applications/Zulip.desktop .

Friday, September 16, 2016

[Solved] Fixing Broken DomainKeys and DKIM Signatures Sent via PHP mail()

When sending emails through PHP's native mail() function on a server configured with SPF, DomainKeys, and DKIM (such as Plesk), desktop mail clients (Outlook, Thunderbird) may sign outbound emails correctly, but emails dispatched from web scripts fail DKIM verification with invalid domain signatures.

The Trap: Setting a raw From: string inside $additional_headers causes the sendmail wrapper to misidentify the originating signing domain d=$DOMAIN.

The Problematic Call

// This breaks DKIM signatures by overriding the sender envelope incorrectly:
mail($to, $subject, $message, "From: Name <user@domain.com>");

The Solution

Explicitly pass the envelope sender using the -f flag in the 5th parameter ($additional_parameters):

// Correct invocation with verified envelope sender:
mail($to, $subject, $message, "", "-f user@domain.com");

Verification Tip: Send a test email to check-auth@verifier.port25.com. The automated robot will reply within seconds with a detailed SPF, DKIM, DomainKeys, and SpamAssassin diagnostic report.

Wednesday, September 14, 2016

[Solved] Postfix SASL Authentication Failure: realm changed: authentication aborted in Plesk

When enabling STARTTLS on a Plesk server running Postfix, mail clients like Mozilla Thunderbird may connect normally, while Microsoft Outlook clients repeatedly fail with authentication popups and the following mail log errors:

Environment: Plesk • Postfix with STARTTLS • Cyrus SASL Authentication
postfix/smtpd[1929]: warning: SASL authentication failure: realm changed: authentication aborted
postfix/smtpd[1929]: warning: SASL DIGEST-MD5 authentication failed: authentication failure

Root Cause & Solution

Outlook struggles with DIGEST-MD5 SASL negotiation over TLS on certain Cyrus SASL configurations. Restricting the SASL mechanism list to CRAM-MD5, PLAIN, and LOGIN resolves the negotiation conflict:

  1. Edit /usr/lib64/sasl2/smtpd.conf and update mech_list:
    mech_list: CRAM-MD5 PLAIN LOGIN
  2. Edit /etc/postfix/main.cf and confirm security options:
    smtpd_sasl_security_options = noanonymous
  3. Restart services:
    service postfix restart
    service saslauthd restart

How Google Antigravity Solved the Mysterious NVIDIA Sleep Reboot on My Dell Inspiron 7567 (Ubuntu Linux)

If you run modern Ubuntu or Linux on a Dell Inspiron 15 Gaming (7567) or a similar 7th-gen Intel laptop paired with an NVIDIA GeForce GTX ...