From 3f6674eff91a35934f53720f91a94b64bcef1b87 Mon Sep 17 00:00:00 2001 From: Alexander Minkin Date: Mon, 3 May 2021 15:20:36 +0300 Subject: [PATCH] Documentation patch (#74) * Make INSTALL.txt a markdown file and format it * Add an example instruction for CentOS 8 * Format markdown files with remark-lint * another formatting for codacy, meh --- INSTALL.md | 27 +++ INSTALL.txt | 17 -- docs/centos8_install.md | 353 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 380 insertions(+), 17 deletions(-) create mode 100644 INSTALL.md delete mode 100644 INSTALL.txt create mode 100644 docs/centos8_install.md diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 00000000..24474461 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,27 @@ +# OpenVK Installation Instructions + +* * * + +1. Install Composer, Node.js, Yarn and [Chandler](https://github.com/openvk/chandler) +2. Install [commitcaptcha](https://github.com/openvk/commitcaptcha)/[chandler-recaptcha](https://github.com/openvk/chandler-recaptcha) and OpenVK as Chandler extensions and enable them like this: + +```bash +ln -s /path/to/chandler/extensions/available/commitcaptcha /path/to/chandler/extensions/enabled/ +ln -s /path/to/chandler/extensions/available/openvk /path/to/chandler/extensions/enabled/ +``` + +3. Import install/init-static-db.sql to same database you installed Chandler to +4. Import install/init-event-db.sql to separate database +5. Rename openvk-example.yml to openvk.yml and change options +6. Run `composer install` in OpenVK directory +7. Move to Web/static/js and execute `yarn install` +8. Set `openvk` as your root app in chandler.yml + +Once you are done, you can login as a system administrator on the network itself (no registration required): + +- **Login**: `admin@localhost.localdomain6` +- **Password**: `admin` + +It is recommended to change the password before using the built-in account. + +Full example installation instruction for CentOS 8 is also available [here](docs/centos8_install.md). diff --git a/INSTALL.txt b/INSTALL.txt deleted file mode 100644 index 22d1e9cb..00000000 --- a/INSTALL.txt +++ /dev/null @@ -1,17 +0,0 @@ -OpenVK Install Instructions ------------ -1) Install Composer, Node.js, Yarn and Chandler (https://github.com/openvk/chandler) -2) Install commitcaptcha (https://github.com/openvk/commitcaptcha) and OpenVK as Chandler extensions and enable them like this: -ln -s /path/to/chandler/extensions/available/commitcaptcha /path/to/chandler/extensions/enabled/ -ln -s /path/to/chandler/extensions/available/openvk /path/to/chandler/extensions/enabled/ -3) Import install/init-static-db.sql to same database you installed Chandler to -4) Import install/init-event-db.sql to separate database -5) Rename openvk-example.yml to openvk.yml and change options -6) Run "composer install" in OpenVK directory -7) Move to Web/static/js and execute "yarn install" -8) Set openvk as your root app in chandler.yml - -Once you are done, you can login as a system administrator on the network itself (no registration required): -- Login: admin@localhost.localdomain6 -- Password: admin -It is recommended to change the password before using the built-in account. diff --git a/docs/centos8_install.md b/docs/centos8_install.md new file mode 100644 index 00000000..97437858 --- /dev/null +++ b/docs/centos8_install.md @@ -0,0 +1,353 @@ +# Installing OpenVK + +Based on [@rem-pai](https://github.com/rem-pai)'s way to install OpenVK modified using my experience. + +## SELinux + +🖥Run the command: + +```bash +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: + +```bash +dnf -y install epel-release +dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm +``` + +🖥Then enable modules that we need: + +```bash +dnf -y module enable php:remi-7.4 +dnf -y module enable nodejs:14 +``` + +🖥And install dependencies: + +```bash +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: + +```bash +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: + +```bash +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: + +```bash +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: + +```bash +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: + +```bash +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`: + +```bash +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: + +```bash +cat /dev/random | tr -dc 'a-z0-9' | fold -w 128 | head -n 1 +``` + +📝Now edit config file `chandler-example.yml` like this: + +```yaml +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`: + +```bash +mv chandler-example.yml chandler.yml +``` + +🖥Now let's install CommitCaptcha extension. It is mandatory for OpenVK. + +```bash +cd extensions/available/ +git clone https://github.com/openvk/commitcaptcha.git +cd commitcaptcha/ +composer2 install +``` + +🖥And now download OpenVK: + +```bash +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: + +```yaml +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`: + +```bash +mv openvk-example.yml openvk.yml +``` + +🖥Then enable CommitCaptcha and OpenVK for Chandler: + +```bash +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: + +```bash +mysql -p +``` + +🖥And create main and event databases: + +```sql +CREATE DATABASE openvk; +CREATE DATABASE openvk_eventdb; +exit +``` + +🖥Go to `/opt/chandler`: + +```bash +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: + +```bash +mysql -p'DATABASE_PASSWORD' openvk < install/init-db.sql +``` + +🖥Go to `extensions/available/openvk/`: + +```bash +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: + +```bash +mysql -p'DATABASE_PASSWORD' openvk < install/init-static-db.sql +``` + +🖥Also import event database: + +```bash +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: + +```bash +cd /opt +chown -R apache: chandler/ +``` + +📝Now let's create config file `/etc/httpd/conf.d/10-openvk.conf`: + +```apache + + ServerName openvk.local + DocumentRoot /opt/chandler/htdocs + + + AllowOverride All + + Require all granted + + + ErrorLog /var/log/openvk/error.log + CustomLog /var/log/openvk/access.log combinedio + +``` + +📝Also enable rewrite_module by creating `/etc/httpd/conf.modules.d/02-rewrite.conf`: + +```apache +LoadModule rewrite_module modules/mod_rewrite.so +``` + +🖥Make directory for OpenVK logs and make the user `apache` owner of it: + +```bash +mkdir /var/log/openvk +chown apache: /var/log/openvk/ +``` + +🖥Make the firewall exception for port 80: + +```bash +firewall-cmd --permanent --add-port=80/tcp +firewall-cmd --reload +``` + +🖥And start Apache: + +```bash +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.