Instalação Kbin · 16 min read · Dec 18, 2025

Como Instalar o Agregador de Conteúdo Kbin, Semelhante ao Reddit, no Ubuntu 22.04

Kbin é um agregador de conteúdo e plataforma de microblogging de código aberto semelhante ao Reddit para o fediverse. Ele permite que você crie e modere comunidades e pode se comunicar com outros serviços ActivityPub, incluindo Mastodon, Pleroma e Peertube.

Embora existam instâncias populares do Kbin que você pode se juntar e usar, você também pode executar sua própria instância do Kbin para seus amigos e familiares. Neste tutorial, você aprenderá como instalar o Kbin em um servidor Ubuntu 22.04.

Pré-requisitos

  • Um servidor rodando Ubuntu 22.04.
  • Um usuário sudo não-root.
  • Um nome de domínio totalmente qualificado (FQDN) como example.com.
  • Certifique-se de que tudo está atualizado. $ sudo apt update $ sudo apt upgrade
  • Alguns pacotes que seu sistema precisa. $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Alguns desses pacotes podem já estar instalados em seu sistema.
  • Nossa instalação também requer Access Control List (ACL) para funcionar. Instale-o. $ sudo apt install acl

Passo 1 - Configurar o Firewall

O primeiro passo é configurar o firewall. O Ubuntu vem com o ufw (Uncomplicated Firewall) por padrão.

Verifique se o firewall está em execução.

$ sudo ufw status

Você receberá a seguinte saída.

Status: inactive

Permita a porta SSH para que o firewall não interrompa a conexão atual ao ativá-lo.

$ sudo ufw allow OpenSSH

Permita também as portas HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Ative o Firewall

$ sudo ufw enable
Comando pode interromper conexões ssh existentes. Prosseguir com a operação (y|n)? y
Firewall está ativo e habilitado na inicialização do sistema

Verifique o status do firewall novamente.

$ sudo ufw status

Você deve ver uma saída semelhante.

Status: active

Para                         Ação      De
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Passo 2 - Instalar o Git

O Git geralmente é instalado com o servidor Ubuntu, mas se não estiver, você deve instalá-lo usando o seguinte comando.

$ sudo apt install git

Verifique a instalação.

$ git --version
git version 2.34.1

Configure o Git com informações básicas.

$ git config --global user.name "Seu Nome"
$ git config --global user.email "[email protected]"

Passo 3 - Instalar o Nginx

O Ubuntu vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório oficial do Nginx.

Importe a chave de assinatura do Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Adicione o repositório para a versão estável do Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Atualize os repositórios do sistema.

$ sudo apt update

Instale o Nginx.

$ sudo apt install nginx

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.24.0

Inicie o servidor Nginx.

$ sudo systemctl start nginx

Passo 4 - Instalar PHP e configurar o PHP

O Ubuntu 22.04 vem com a versão PHP 8.1.2, que está um pouco desatualizada. Vamos instalar a versão mais recente do PHP 8.2 usando o repositório PHP do Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

Em seguida, instale o PHP e suas extensões necessárias para o Kbin.

$ sudo apt install php8.2-common php8.2-fpm php8.2-cli php8.2-amqp php8.2-pgsql php8.2-gd php8.2-curl php8.2-simplexml php8.2-dom php8.2-xml php8.2-redis php8.2-mbstring php8.2-intl unzip

Verifique a instalação.

$ php --version
PHP 8.2.7 (cli) (built: Jun  8 2023 15:27:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Abra o arquivo /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Precisamos definir o usuário/grupo Unix dos processos PHP como nginx. Encontre as linhas user=www-data e group=www-data no arquivo e altere-as para nginx.

...
; Usuário/grupo Unix dos processos
; Nota: O usuário é obrigatório. Se o grupo não for definido, o grupo do usuário padrão
;       será usado.
; RPM: usuário do apache escolhido para fornecer acesso aos mesmos diretórios que o httpd
user = nginx
; RPM: Mantenha um grupo permitido para escrever no diretório de log.
group = nginx
...

Encontre as linhas listen.owner = www-data e listen.group = www-data no arquivo e altere-as para nginx.

; Defina permissões para o socket unix, se um for usado. No Linux, leitura/gravação
; permissões devem ser definidas para permitir conexões de um servidor web. Muitos
; sistemas derivados do BSD permitem conexões independentemente das permissões. O proprietário
; e grupo podem ser especificados pelo nome ou por seus IDs numéricos.
; Valores Padrão: usuário e grupo são definidos como o usuário em execução
;                 modo é definido como 0660
listen.owner = nginx
listen.group = nginx

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Aumente o limite de memória para o PHP-FPM de 128 MB para 512 MB.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini

Aumente o tamanho máximo de upload de arquivos para 8 MB.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' /etc/php/8.2/fpm/php.ini

Reinicie o serviço PHP-FPM.

$ sudo systemctl restart php8.2-fpm

Altere o grupo do diretório de sessões do PHP para Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Passo 5 - Instalar o Composer

O Composer é uma ferramenta de gerenciamento de dependências para PHP e é necessária para a instalação do Kbin. Pegue o arquivo de configuração do composer.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Execute o instalador para gerar o binário do Composer.

$ php composer-setup.php

Remova o arquivo de configuração.

$ php -r "unlink('composer-setup.php');"

Mova o binário composer.phar para o diretório /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Verifique a instalação do Composer.

$ composer --version
Composer version 2.5.8 2023-06-09 17:13:21

Passo 6 - Instalar e Configurar PostgreSQL

O Ubuntu 22.04 vem com o PostgreSQL 14 por padrão. Usaremos o PostgreSQL 15 em vez disso.

Execute o seguinte comando para adicionar a chave GPG do PostgreSQL.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Adicione o repositório APT à sua lista de fontes.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Atualize o repositório do sistema.

$ sudo apt update

Agora, você pode instalar o PostgreSQL usando o comando abaixo.

$ sudo apt install postgresql postgresql-contrib

O pacote postgresql-contrib contém algumas utilidades extras.

Verifique o status do serviço PostgreSQL.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2023-06-17 09:15:50 UTC; 3h 40min ago
   Main PID: 26989 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Jun 17 09:15:50 nspeaks systemd[1]: Starting PostgreSQL RDBMS...
Jun 17 09:15:50 nspeaks systemd[1]: Finished PostgreSQL RDBMS.

Você pode ver que o serviço está habilitado e em execução por padrão.

Inicie o shell do PostgreSQL.

$ sudo -i -u postgres psql

Crie o banco de dados Kbin.

postgres=# CREATE DATABASE kbin;

Crie o usuário Kbin e escolha uma senha forte.

postgres-# CREATE USER kbinuser WITH PASSWORD 'Sua_Senha';

Altere o proprietário do banco de dados para o usuário Kbin.

postgres-# ALTER DATABASE kbin OWNER TO kbinuser;

Saia do shell.

postgres-# \q

Verifique se suas credenciais funcionam.

$ psql --username kbinuser --password --host localhost kbin
Senha:
psql (15.3 (Ubuntu 15.3-1.pgdg22.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

kbin=>

Saia do shell digitando \q.

Passo 7 - Instalar Nodejs e Yarn

O Ubuntu 22.04 vem com o Node v12, que está desatualizado. Vamos instalar a versão LTS mais recente do Node, que é v18 no momento da redação deste tutorial.

Pegue o instalador do Node v18 do NodeSource.

$ curl -sL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh

Execute o script do instalador.

$ sudo bash nodesource_setup.sh

Instale o Node.js.

$ sudo apt install nodejs

Verifique a versão do Node.js.

$ node -v
v18.16.1

Delete o arquivo do instalador.

$ rm nodesource_setup.sh

Passo 8 - Instalar Yarn

Importe a chave GPG para o Yarn.

$ curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null

Adicione a fonte do Yarn à lista de repositórios do sistema.

$ echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

Atualize sua lista de repositórios do sistema.

$ sudo apt update

Instale o Yarn

$ sudo apt install yarn

Verifique a instalação.

$ yarn --version
1.22.19

Passo 8 - Instalar Redis

O Magento usa o Redis para armazenamento de sessões e cache. É totalmente opcional e você pode usar o banco de dados para armazenamento de sessões. Mas o Redis faz um trabalho melhor. A versão mais recente do Magento funciona com o Redis 7.0. O Ubuntu vem com o Redis 6.0, então usaremos o repositório do Redis para instalação.

Importe a chave GPG oficial do Redis.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

Adicione o repositório APT à sua lista de fontes.

$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Atualize a lista de repositórios do sistema.

$ sudo apt update

Emita o seguinte comando para instalar o servidor Redis.

$ sudo apt install redis

Confirme a versão do Redis.

$ redis-server -v
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=3af367a78d5e21e9

Vamos verificar a conexão do serviço usando o seguinte comando.

$ redis-cli

Você será transferido para o shell do Redis.

O primeiro passo é definir a senha para o usuário padrão do Redis. Substitua Your_Redis_Password por uma senha forte de sua escolha. Certifique-se de prefixar a senha com o caractere >.

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Teste a autenticação do Redis.

127.0.0.1:6379> AUTH Your_Redis_Password
OK

Pingue o serviço.

127.0.0.1:6379> ping
PONG

Saia do serviço digitando exit.

Se você quiser, pode usar o seguinte comando para gerar a senha do Redis.

$ openssl rand 60 | openssl base64 -A
OaYOuq6J9HhxMV0sGCeZbaGecphCl4GBfVkCOPkNjkQE1FX9DKpGSCJcDb8UV+AuFKA8tR1PgjGequn1

Passo 9 - Instalar e Configurar RabbitMQ

O Kbin requer RabbitMQ para fins de enfileiramento de mensagens. Vamos instalá-lo a partir do repositório do Ubuntu.

$ sudo apt install rabbitmq-server

Crie um usuário Rabbit. Escolha uma senha forte.

$ sudo rabbitmqctl add_user kbin StrongPassword

Torne o usuário um administrador.

$ sudo rabbitmqctl set_user_tags kbin administrator

Passo 10 - Baixar Kbin

Antes de baixar o Kbin, precisamos criar uma conta de usuário Kbin.

$ adduser kbin

Adicione o usuário kbin ao grupo sudo.

$ sudo usermod -aG sudo kbin

Faça login como o usuário kbin.

$ su - kbin

Crie o diretório /var/www/html/kbin.

$ sudo mkdir /var/wwww/html/kbin -p

Mude para o diretório.

$ cd /var/www/html/kbin

Dê permissões adequadas à pasta para que o usuário atualmente logado possa realizar tarefas.

$ sudo chown $USER:$USER kbin

Clone o repositório Git do Kbin na pasta atual. Certifique-se de adicionar o ponto (.) no final do comando para se referir à pasta atual.

$ git clone https://codeberg.org/Kbin/kbin-core.git .

Crie o diretório public/media.

$ mkdir public/media

Dê permissão total a ele.

$ chmod 777 public/media

Passo 11 - Configurar o Arquivo de Ambiente

Gere a chave secreta JWT do Mercure.

$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Gere o segredo do App usando o mesmo comando novamente.

$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Crie e abra o arquivo .env para edição no diretório Kbin.

$ nano .env

Cole o seguinte código nele. Use as chaves geradas acima no seguinte arquivo.

# Execute "composer dump-env prod" para compilar arquivos .env para uso em produção (requer symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration

# variáveis kbin
SERVER_NAME="nspeaks.xyz" # produção
KBIN_DOMAIN=nspeaks.xyz
KBIN_TITLE=Howtoforge
KBIN_DEFAULT_LANG=en
KBIN_FEDERATION_ENABLED=true
[email protected]
[email protected]
KBIN_JS_ENABLED=true
KBIN_REGISTRATIONS_ENABLED=true
KBIN_API_ITEMS_PER_PAGE=25
#KBIN_STORAGE_URL=/media
KBIN_META_TITLE="Kbin Lab"
KBIN_META_DESCRIPTION="agregador de conteúdo e plataforma de microblogging para o fediverse"
KBIN_META_KEYWORDS="kbin, agregador de conteúdo, código aberto, fediverse"
KBIN_HEADER_LOGO=false
KBIN_CAPTCHA_ENABLED=false

# Redis
REDIS_PASSWORD=YourRedisPassword
REDIS_DNS=redis://default:${REDIS_PASSWORD}@localhost:6379

###> symfony/framework-bundle ###
APP_ENV=prod
APP_SECRET=427f5e2940e5b2472c1b44b2d06e0525
###< symfony/framework-bundle ###

###> doctrine/doctrine-bundle ###
# Formato descrito em https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANTE: Você DEVE configurar sua versão do servidor, aqui ou em config/packages/doctrine.yaml
#
POSTGRES_DB=kbin
POSTGRES_USER=kbin
POSTGRES_PASSWORD=Your_Password
POSTGRES_VERSION=15
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}?serverVersion=${POSTGRES_VERSION}&charset=utf8"
###< doctrine/doctrine-bundle ###

###> symfony/messenger ###
# Escolha um dos transportes abaixo
RABBITMQ_PASSWORD=RabbitMQPassword
MESSENGER_TRANSPORT_DSN=amqp://kbin:${RABBITMQ_PASSWORD}@rabbitmq:5672/%2f/messages
#MESSENGER_TRANSPORT_DSN=doctrine://default
#MESSENGER_TRANSPORT_DSN=redis://${REDIS_PASSWORD}@redis:6379/messages
###< symfony/messenger ###

###> symfony/mailgun-mailer ###
#MAILER_DSN=mailgun+smtp://[email protected]:key@default?region=us
MAILER_DSN=smtp://AKIA3FIG4NVFH4TXXEXY:BJQvNI9U6JqSuUFQ9Ffd22Dvom/8KNwk7EIrFTRai02/@email-smtp.us-west-2.amazonaws.com:465
###< symfony/mailgun-mailer ###

###> symfony/mercure-bundle ###
# Veja https://symfony.com/doc/current/mercure.html#configuration
# A URL do hub Mercure, usada pelo app para publicar atualizações (pode ser uma URL local)
MERCURE_URL=https://example.com/.well-known/mercure
# A URL pública do hub Mercure, usada pelo navegador para se conectar
MERCURE_PUBLIC_URL=https://example.com/.well-known/mercure
# O segredo usado para assinar os JWTs
MERCURE_JWT_SECRET="!ChangeThisMercureHubJWTSecretKey!"
###< symfony/mercure-bundle ###

###> symfony/lock ###
LOCK_DSN=flock
###< symfony/lock ###

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Passo 12 - Instalar o Kbin

Instale os pacotes necessários para o Kbin usando o Composer.

$ composer install --prefer-dist --no-dev
$ composer dump-env prod

Limpe o cache.

$ APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear
$ composer clear-cache

Dê permissões adequadas à pasta de mídia.

$ sudo chown kbin:nginx public/media

Defina permissões adequadas para arquivos e diretórios usando o comando setfacl. O seguinte comando detecta o servidor web atual em uso (Nginx) e define permissões para os arquivos e pastas existentes e futuras.

$ HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)
$ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var

Crie e migre o banco de dados PostgreSQL.

$ php bin/console doctrine:database:create
$ php bin/console doctrine:migrations:migrate

Você será solicitado se deseja continuar com a migração de dados. Digite yes para prosseguir.

WARNING! Você está prestes a executar uma migração no banco de dados "kbin" que pode resultar em alterações de esquema e perda de dados. Você tem certeza de que deseja continuar? (yes/no) [yes]:
 > yes

[notice] Migrando para DoctrineMigrations\Version20230615203020
[notice] finalizado em 1373.9ms, usou 24M de memória, 79 migrações executadas, 667 consultas sql

[OK] Migrado com sucesso para a versão: DoctrineMigrations\Version20230615203020

Instale e construa o front end público para o site Kbin.

$ yarn install
$ yarn build

Crie um novo usuário administrador para o Kbin.

$ php bin/console kbin:user:create username [email protected] password

Conceda privilégios administrativos ao usuário.

$ php bin/console kbin:user:admin username

Atualize as Chaves.

$ php bin/console kbin:ap:keys:update

Passo 13 - Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório do Ubuntu ou pegar a versão mais recente usando a ferramenta Snapd. Usaremos a versão Snapd.

O Ubuntu 22.04 vem com o Snapd instalado por padrão. Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.

$ sudo snap install core && sudo snap refresh core

Instale o Certbot.

$ sudo snap install --classic certbot

Use o seguinte comando para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Execute o seguinte comando para gerar um Certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com

O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/example.com em seu servidor.

Gere um certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Verifique o serviço do agendador de renovação do Certbot.

$ sudo systemctl list-timers

Você encontrará snap.certbot.renew.service como um dos serviços agendados para execução.

NEXT                        LEFT          LAST                        PASSED       UNIT                       ACTIVATES
Wed 2023-06-28 10:09:00 UTC 20min left    Wed 2023-06-28 09:39:00 UTC 9min ago     phpsessionclean.timer      phpsessionclean.service
Wed 2023-06-28 11:13:02 UTC 1h 24min left Wed 2023-06-28 04:41:28 UTC 5h 7min ago  ua-timer.timer             ua-timer.service
Wed 2023-06-28 12:11:00 UTC 2h 22min left n/a                         n/a          snap.certbot.renew.timer   snap.certbot.renew.service

Faça um teste do processo para verificar se a renovação do SSL está funcionando bem.

$ sudo certbot renew --dry-run

Se você não ver erros, você está pronto. Seu certificado será renovado automaticamente.

Passo 14 - Configurar o Nginx

Crie e abra o arquivo /etc/nginx/conf.d/kbin.conf para edição.

$ sudo nano /etc/nginx/conf.d/kbin.conf

Cole o seguinte código nele.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  example.com;

    access_log  /var/log/nginx/kbin.access.log;
    error_log   /var/log/nginx/kbin.error.log;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    ssl_session_timeout  1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    # use https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, It is free and secure
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s;

    root /var/www/html/kbin/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }

    # Pass PHP Scripts To FastCGI Server
    location ~* \.php$ {
        try_files $uri =404;
        fastcgi_index  index.php;
        fastcgi_pass unix:/run/php-fpm/www.sock; # Depends On The PHP Version
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
    }

    # deny access to writable files/directories
    location ~* ^/sites/*/(documents|edi|era) {
        deny all;
        return 404;
    }

    # deny access to certain directories
    location ~* ^/(contrib|tests) {
        deny all;
        return 404;
    }

    # Alternatively all access to these files can be denied
    location ~* ^/(admin|setup|acl_setup|acl_upgrade|sl_convert|sql_upgrade|gacl/setup|ippf_upgrade|sql_patch)\.php {
        deny all;
        return 404;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt  {
        log_not_found off;
        access_log off;
    }

    location ~ \. {
        deny all;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  example.com;
    return 301   https://$host$request_uri;
}

Observe que o diretório raiz a ser usado na configuração do Nginx é /var/www/html/kbin/public/.

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado ao terminar.

Abra o arquivo /etc/nginx/nginx.conf para edição.

$ sudo nano /etc/nginx/nginx.conf

Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Verifique a sintaxe do arquivo de configuração do Nginx.

$ sudo nginx -t
nginx: o arquivo de configuração /etc/nginx/nginx.conf a sintaxe está ok
nginx: teste do arquivo de configuração /etc/nginx/nginx.conf bem-sucedido

Reinicie o serviço Nginx.

$ sudo systemctl restart nginx

Passo 15 - Instalar e Configurar o Supervisor

O Supervisor é um gerenciador de processos e usaremos como um monitor de processos para o trabalhador de mensagens (RabbitMQ) para o Kbin. O primeiro passo é instalar o Supervisor.

$ sudo apt install supervisor

Crie o arquivo /etc/supervisor/conf.d/messenger-worker.conf e abra-o para edição.

$ sudo nano /etc/supervisor/conf.d/messenger-worker.conf

Cole o seguinte código nele.

[program:messenger-kbin]
command=php /var/www/html/kbin/bin/console messenger:consume async --time-limit=3600
user=kbin
numprocs=2
startsecs=0
autostart=true
autorestart=true
startretries=10
process_name=%(program_name)s_%(process_num)02d
stderr_logfile=/var/log/supervisor/%(program_name)s_stderr.log
stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/supervisor/%(program_name)s_stdout.log
stdout_logfile_maxbytes=10MB

[program:messenger-ap]
command=php /var/www/html/kbin/bin/console messenger:consume async_ap --time-limit=3600
user=kbin
numprocs=2
startsecs=0
autostart=true
autorestart=true
startretries=10
process_name=%(program_name)s_%(process_num)02d
stderr_logfile=/var/log/supervisor/%(program_name)s_stderr.log
stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/supervisor/%(program_name)s_stdout.log
stdout_logfile_maxbytes=10MB

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Execute os seguintes comandos para reler e atualizar o novo arquivo de configuração.

$ sudo supervisorctl reread
$ sudo supervisorctl update

Inicie todos os serviços do Supervisor.

$ sudo supervisorctl start all

Passo 16 - Acessar o Kbin

Abra a URL https://example.com e você verá a seguinte página inicial do Kbin.

Página inicial do Kbin

Clique no link Fazer login na parte superior para abrir a página de login.

Página de Login do Kbin

Digite as credenciais criadas no passo 12 e clique no botão Fazer login para prosseguir. Você será levado de volta à página inicial do Kbin. Você pode começar a usar o Kbin a partir daqui.

Conclusão

Isso conclui nosso tutorial sobre como instalar o Agregador de Conteúdo Kbin, semelhante ao Reddit, em um servidor Ubuntu 22.04. Se você tiver alguma dúvida, poste nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.