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 -yAlguns 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.

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

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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.