Skip to content

Instantly share code, notes, and snippets.

@WerySkok
Last active October 13, 2021 14:16
Show Gist options
  • Save WerySkok/77f9c9ec134e98b0fef2b63655ba13d2 to your computer and use it in GitHub Desktop.
Save WerySkok/77f9c9ec134e98b0fef2b63655ba13d2 to your computer and use it in GitHub Desktop.
OpenVK installation on CentOS 8

Installing OpenVK

Instruction is outdated. Newer version is available at OpenVK repo.

Based on @rem-pai's way to install OpenVK modified using my experience.

SELinux

🖥Run the command:

sestatus

If it says SELinux status: enabled then SELinux will disturb us. Let's disable it.

ℹNote: I know that it's not most secured solution but I don't know any proper way that will work.

📝Edit file /etc/sysconfig/selinux and change the line SELinux=enforcing to SELinux=disabled, then 🔌reboot your machine. sestatus should tell SELinux status: disabled right now.

Dependencies

🖥Let's install EPEL and Remi repos for PHP 7.4:

dnf -y install epel-release
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

🖥Then enable modules that we need:

dnf -y module enable php:remi-7.4
dnf -y module enable nodejs:14

🖥And install dependencies:

dnf -y install php php-cli php-common unzip php-zip php-yaml php-gd php-pdo_mysql nodejs git

🖥Don't forget about Yarn and Composer:

npm i -g yarn
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --filename=composer2 --install-dir=/bin --snapshot
rm composer-setup.php

Database

🖥We will use Percona Server for DB:

dnf -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release setup -y ps80
dnf -y install percona-server-server percona-toolkit
systemctl start mysql

🖥And then look up for temporary password:

cat /var/log/mysqld.log | grep password

It should look like this:

2021-01-11T12:56:09.203991Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: >b?Q.fDXJ4fk

🖥Then run mysql_secure_installation, set new password and answer like this:

Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

ffmpeg

Additionally, you can install ffmpeg for processing videos.

🖥You will need to use RPMFusion repo to install it:

dnf -y localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
dnf -y install --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm

🖥Then install SDL2 and ffmpeg:

dnf -y install http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.10-1.el7.x86_64.rpm
dnf -y install ffmpeg

Chandler and OpenVK installation

🖥Install Chandler in /opt:

cd /opt
git clone https://github.com/openvk/chandler.git
cd chandler/
composer2 install

🖥You will need a secret key. You can generate it using:

cat /dev/random | tr -dc 'a-z0-9' | fold -w 128 | head -n 1

📝Now edit config file chandler-example.yml like this:

chandler:
    debug: true
    websiteUrl: null
    rootApp:    "openvk"
    
    preferences:
        appendExtension: "xhtml"
        adminUrl: "/chandlerd"
        exposeChandler: true
    
    database:
        dsn: "mysql:unix_socket=/var/lib/mysql/mysql.sock;dbname=db"
        user: "root"
        password: "DATABASE_PASSWORD"
    
    security:
        secret: "SECRET_KEY_HERE"
        csrfProtection: "permissive"
        sessionDuration: 14

🖥And rename it to chandler.yml:

mv chandler-example.yml chandler.yml

🖥Now let's install CommitCaptcha extension. It is mandatory for OpenVK.

cd extensions/available/
git clone https://github.com/openvk/commitcaptcha.git
cd commitcaptcha/
composer2 install

🖥And now download OpenVK:

cd ..
git clone https://github.com/openvk/openvk.git
cd openvk/
composer2 install
cd Web/static/js
yarn install

📝Now edit config file openvk-example.yml like this:

openvk:
    debug: true
    appearance:
        name: "OpenVK"
        motd: "Yet another OpenVK instance"
    preferences:
        femaleGenderPriority: true
        uploads:
            disableLargeUploads: false
            mode: "basic"
        shortcodes:
            forbiddenNames:
                - "index.php"
        security:
            requireEmail: false
            requirePhone: false
            forcePhoneVerification: false
            forceEmailVerification: false
            enableSu: true
            rateLimits:
                actions: 5
                time: 20
                maxViolations: 50
                maxViolationsAge: 120
                autoban: true
        support:
            supportName: "Moderator"
            adminAccount: 1 # Change this ok
        messages:
            strict: false
        wall:
            postSizes:
                maxSize: 60000
                processingLimit: 3000
                emojiProcessingLimit: 1000
        menu:
            links:
                
        adPoster:
            enable: false
            src: "https://example.org/ad_poster.jpeg"
            caption: "Ad caption"
            link: "https://example.org/product.aspx?id=10&from=ovk"
        bellsAndWhistles:
            fartscroll: false
            testLabel: false
    credentials:
        smsc:
            enable: false
            client: ""
            secret: ""
        eventDB:
            enable: true # Better enable this
            database:
                dsn: "mysql:unix_socket=/var/lib/mysql/mysql.sock;dbname=openvk_eventdb"
                user: "root"
                password: "DATABASE_PASSWORD"

Please note eventDB section because it's better to enable event database.

🖥And rename it to openvk.yml:

mv openvk-example.yml openvk.yml

🖥Then enable CommitCaptcha and OpenVK for Chandler:

ln -s /opt/chandler/extensions/available/commitcaptcha/ /opt/chandler/extensions/enabled/commitcaptcha
ln -s /opt/chandler/extensions/available/openvk/ /opt/chandler/extensions/enabled/openvk

DB configuration

ℹNote: it's better to create another user for SQL but I won't cover that.

🖥Enter MySQL shell:

mysql -p

🖥And create main and event databases:

CREATE DATABASE openvk;                                                                                          
CREATE DATABASE openvk_eventdb;
exit

🖥Go to /opt/chandler:

cd /opt/chandler

📝We need to import Chandler database but for some reason it's not ready for use so we need to edit dump install/init-db.sql:

  1. Remove PAGE_CHECKSUM=1 everywhere.
  2. Replace Aria with InnoDB everywhere.

🖥Now database dump can be imported:

mysql -p'DATABASE_PASSWORD' openvk < install/init-db.sql

🖥Go to extensions/available/openvk/:

cd extensions/available/openvk/

📝We also need to import OpenVK database. Unless you use MariaDB (we are using Percona here) you should edit install/init-static-db.sql:

  1. Replace utf8mb4_unicode_nopad_ci with utf8mb4_unicode_520_ci everywhere.

🖥Now database dump can be imported:

mysql -p'DATABASE_PASSWORD' openvk < install/init-static-db.sql

🖥Also import event database:

mysql -p'DATABASE_PASSWORD' openvk_eventdb < install/init-event-db.sql

Webserver configuration

Apache is already installed so we will use it.

🖥Make the user apache owner of the chandler folder:

cd /opt
chown -R apache: chandler/

📝Now let's create config file /etc/httpd/conf.d/10-openvk.conf:

<VirtualHost *:80>
    ServerName openvk.local
    DocumentRoot /opt/chandler/htdocs

    <Directory /opt/chandler/htdocs>
        AllowOverride All

        Require all granted
    </Directory>

    ErrorLog /var/log/openvk/error.log
    CustomLog /var/log/openvk/access.log combinedio
</VirtualHost>

📝Also enable rewrite_module by creating /etc/httpd/conf.modules.d/02-rewrite.conf:

LoadModule rewrite_module modules/mod_rewrite.so

🖥Make directory for OpenVK logs and make the user apache owner of it:

mkdir /var/log/openvk
chown apache: /var/log/openvk/

🖥Make the firewall exception for port 80:

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

🖥And start Apache:

systemctl start httpd

OpenVK should work right now!

Also you can raise 2MB the file limit through editing /etc/php.ini. And it's also better to install PHPMyAdmin but I won't cover that.

@celestora
Copy link

As of commit 0cab84a, there is no longer need in asking me for DB dump cuz it is should be updated enough. You should still pay attention to first step of this tutorial tho:

Replace utf8mb4_unicode_nopad_ci with utf8mb4_unicode_520_ci everywhere.

Note: utf8mb4_unicode_nopad_ci is a valid collation in MariaDB, use utf8mb4_unicode_520_ci only for Percona or MySQL Community Server.

@zavolo
Copy link

zavolo commented Oct 12, 2021

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment