Instalar Restyaboard no CentOS 7

Restyaboard é uma alternativa auto-hospedada ao Trello. Este guia passo a passo instala Restyaboard no CentOS 7: Nginx + PHP-FPM (socket), PostgreSQL 9.6, configuração de permissões e cron jobs. Siga cada passo, ajuste credenciais e prefira HTTPS em produção.
O que é este guia
Este tutorial mostra como instalar Restyaboard — um quadro Kanban gratuito e de código aberto — em um servidor CentOS 7. Aborda dependências, configuração do PHP-FPM via socket, PostgreSQL, ajustes do Nginx, permissões, cron jobs e validações pós-instalação.
Importante: o tutorial original usa PHP 7.0 e PostgreSQL 9.6. Essas versões estão corretas para este passo a passo, mas podem estar desatualizadas. Consulte a documentação do Restyaboard para compatibilidade com versões mais recentes.
Objetivo principal
Instalar e configurar uma instância funcional do Restyaboard em CentOS 7, pronta para uso interno ou pública (após configurar HTTPS e firewall).
Variantes de busca (intenção principal + variantes)
- Instalar Restyaboard CentOS 7
- Restyaboard self-hosted CentOS
- Configurar Restyaboard Nginx PHP-FPM PostgreSQL
- Guia Restyaboard instalação passo a passo
- Configurar board Restya no servidor
Pré-requisitos
- Servidor CentOS 7 mínimo (acesso root)
- Acesso à internet para baixar pacotes e repositórios
- Domínio (opcional, mas recomendado) para configurar server_name e HTTPS
Notas rápidas:
- Este guia assume acesso como root ou sudo com privilégios de root.
- Faça snapshot/backup antes em produção.
Definições rápidas
- Restyaboard: aplicativo Kanban open-source.
- PHP-FPM: FastCGI Process Manager para PHP (processa o PHP fora do servidor web).
- Socket: arquivo local usado para comunicação entre Nginx e PHP-FPM (seguro e eficiente).
- PostgreSQL: sistema de banco de dados relacional usado pelo Restyaboard.
Passo 1 - Instalar Nginx
Atualize pacotes e repositórios:
yum -y update
Instale o repositório EPEL e o Nginx (EPEL fornece pacotes extras para CentOS):
yum -y install epel-release
yum -y install nginx
Inicie o Nginx e habilite-o no boot:
systemctl start nginx systemctl enable nginx
Verifique que o Nginx está em execução (ex.: systemctl status nginx) e que a porta 80 está disponível.
Passo 2 - Instalar e configurar PHP-FPM com mbstring
Restyaboard, neste guia, usa PHP 7.0. Instalaremos o repositório Webtatic para obter pacotes PHP 7.0 em CentOS 7.
Adicione o repositório Webtatic:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Instale o PHP 7.0 com PHP-FPM e módulos necessários:
yum -y install php70w php70w-fpm php70w-devel php70w-cli php70w-curl php70w-pgsql php70w-mbstring php70w-ldap php70w-pear php70w-imap php70w-xml php70w-pecl-imagick ImageMagick
Configurações importantes do PHP-FPM:
- Por padrão o PHP-FPM pode estar configurado para rodar como usuário apache. Mude para nginx para integração com Nginx.
- Use socket em vez de porta TCP para comunicação Nginx ↔ PHP-FPM.
Edite o arquivo de pool padrão:
nano /etc/php-fpm.d/www.conf
Altere as linhas de usuário e grupo para nginx (caso estejam como apache):
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
Mude listen para usar socket:
listen = 127.0.0.1:9000
para
listen = /run/php-fpm/php7.0-fpm.sock
Defina dono/grupo/mode do socket:
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
para
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Ajuste timezone e cgi.fix_pathinfo:
nano /etc/php.ini
No arquivo php.ini, defina a timezone conforme sua região, por exemplo:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Kolkata
Descomente e ajuste:
cgi.fix_pathinfo=0
Instale GeoIP e habilite a extensão:
yum -y install GeoIP-devel
No fim de /etc/php.ini adicione:
extension=geoip.so
Inicie e habilite o PHP-FPM, depois reinicie o Nginx:
systemctl start php-fpm systemctl enable php-fpm
systemctl restart nginx
Observação importante: se optar por versões de PHP mais recentes, verifique compatibilidade do Restyaboard e ajuste paths de socket accordingly.
Passo 3 - Instalar e configurar PostgreSQL
Adicione o repositório PostgreSQL 9.6 para CentOS 7:
rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Instale o servidor PostgreSQL:
yum -y install postgresql96-server postgresql96-contrib
Inicialize o cluster de dados:
/usr/pgsql-9.6/bin/postgresql96-setup initdb
Edite o pg_hba.conf para permitir autenticação MD5 (senha) nas conexões locais:
nano /var/lib/pgsql/9.6/data/pg_hba.conf
Substitua as linhas iniciais para que fiquem assim:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Inicie e habilite o PostgreSQL:
systemctl start postgresql-9.6 systemctl enable postgresql-9.6
Defina a senha do usuário postgres (sistema):
passwd postgres
Troque para o usuário postgres e crie um usuário e DB para o Restyaboard:
su - postgres
createuser rb_user
Acesse o shell do Postgres:
psql
No prompt do psql execute:
ALTER USER rb_user WITH ENCRYPTED password 'StrongPassword';
CREATE DATABASE rb_data OWNER rb_user ENCODING 'UTF8' TEMPLATE template0;
Saia do psql e retorne ao root:
\q
exit
Substitua StrongPassword por uma senha forte e segura. Guarde-a em cofre de senhas.
Passo 4 - Baixar Restyaboard
Baixe a versão pronta para deploy (no exemplo v0.4.2). Ajuste a URL para versões mais recentes, se desejar.
cd /usr/share/nginx/html wget https://github.com/RestyaPlatform/board/releases/download/v0.4.2/board-v0.4.2.zip
Se precisar instalar unzip:
yum -y install unzip
Extraia o pacote:
unzip board-v0.4.2.zip -d board
Importe o SQL inicial para a base de dados:
psql -d rb_data -f "/usr/share/nginx/html/board/sql/restyaboard_with_empty_data.sql" -U rb_user
Edite o arquivo de configuração do Restyaboard para atualizar credenciais do banco:
nano /usr/share/nginx/html/board/server/php/config.inc.php
Localize e atualize as definições de conexão:
define('R_DB_HOST', 'localhost');
define('R_DB_USER', 'restya');
define('R_DB_PASSWORD', 'hjVl2!rGd');
define('R_DB_NAME', 'restyaboard');
define('R_DB_PORT', 5432);
Altere para os valores do seu ambiente:
define('R_DB_HOST', 'localhost');
define('R_DB_USER', 'rb_user');
define('R_DB_PASSWORD', 'StrongPassword');
define('R_DB_NAME', 'rb_data');
define('R_DB_PORT', 5432);
Salve e feche.
Passo 5 - Configurar o bloco de servidor Nginx
Copie o arquivo de configuração do Restyaboard para o diretório do Nginx:
cp /usr/share/nginx/html/board/restyaboard.conf /etc/nginx/conf.d
Edite o arquivo:
nano /etc/nginx/conf.d/restyaboard.conf
No início, substitua default_server e defina server_name com seu domínio:
server {
listen 80 default_server;
server_name _;
para
server {
listen 80;
server_name board.yourdomain.com;
Ajuste os roots para apontar para a pasta onde extraiu o Restyaboard:
Substitua ocorrências de /usr/share/nginx/html por /usr/share/nginx/html/board e o root do cliente por /usr/share/nginx/html/board/client.
Altere o caminho do fastcgi_pass para o socket configurado no PHP-FPM:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
para
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
Depois de editar, ajuste propriedade e permissões:
chown -R nginx:nginx /usr/share/nginx/html/board/
chmod -R go+w "/usr/share/nginx/html/board/media"
chmod -R go+w "/usr/share/nginx/html/board/client/img"
chmod -R go+w "/usr/share/nginx/html/board/tmp/cache"
chmod -R 0755 /usr/share/nginx/html/board/server/php/shell/*.sh
Adicione os cron jobs para tarefas agendadas do Restyaboard:
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/instant_email_notification.sh" >> /var/spool/cron/root
echo "0 * * * * /usr/share/nginx/html/board/server/php/shell/periodic_email_notification.sh" >> /var/spool/cron/root
echo "*/30 * * * * /usr/share/nginx/html/board/server/php/shell/imap.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/webhook.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/card_due_notification.sh" >> /var/spool/cron/root
Importante: o tutorial original desliga o SELinux para permitir proxy e permissões. Evite desabilitar SELinux em produção sem avaliação. Como atalho temporário (sem reiniciar):
setenforce 0
Para desativar permanentemente (não recomendado sem entendimento):
nano /etc/selinux/config
Mude
SELINUX=enforcing
para
SELINUX=disabled
E reinicie Nginx:
systemctl restart nginx
Acesse no navegador:
http://board.yourdomain.com
Você deverá ver a tela de login padrão. Use admin / restya para o primeiro acesso (alterar a senha imediatamente).
Após login, você verá o painel principal.
Para criar um novo quadro (Board): clique na seta no canto esquerdo e escolha Add Board or Organization.
Escolha um nome e um template para o quadro.
O quadro criado ficará similar a isto:
Para acessar o painel de administração: clique em Admin no canto inferior direito e depois em Settings na barra superior.
Validações e critérios de aceitação
Antes de considerar a instalação concluída, valide:
- Página inicial do Nginx carrega sem erro (HTTP 200).
- A página do Restyaboard carrega e permite login com admin/restya.
- Foi possível criar um board e adicionar um cartão.
- Diretórios de mídia, tmp e client/img possuem permissão de escrita para Nginx.
- Cron jobs foram gravados em /var/spool/cron/root e estão sendo executados conforme esperado.
- Conexão com PostgreSQL funciona e a aplicação realiza queries sem erro.
Teste rápido de backup do DB (aceitação):
pg_dump -U rb_user -h localhost -Fc rb_data > /root/rb_data-$(date +%F).dump
Backup e recuperação (mini-SOP)
- Fazer backup do banco:
pg_dump -U rb_user -h localhost -Fc rb_data > /root/rb_data-YYYY-MM-DD.dump
- Fazer backup dos arquivos do Restyaboard:
tar -czf /root/restyaboard-files-YYYY-MM-DD.tar.gz /usr/share/nginx/html/board
- Para restaurar banco:
pg_restore -U rb_user -h localhost -d rb_data /root/rb_data-YYYY-MM-DD.dump
Testar restauração em ambiente de staging antes de aplicar em produção.
Segurança e hardening (recomendações)
- Habilite HTTPS com certificados válidos (Let’s Encrypt). Proteja o painel de administração com HTTPS e HSTS.
- Não desative SELinux sem avaliar; prefira ajustar políticas ou labels para permitir acesso do Nginx/PHP-FPM.
- Use firewall (firewalld/iptables) para fechar portas não usadas; abra apenas 80/443 e 22 (com restrições).
- Troque senhas padrão (admin/restya) imediatamente após o primeiro login.
- Restrinja acesso ao PostgreSQL via host e firewall; não exponha 5432 publicamente.
- Considere monitoramento (logs, alertas) e backups automatizados.
- Execute updates regulares do sistema e das dependências.
Quando NÃO usar Restyaboard (contraexemplos)
- Se precisa de alta disponibilidade complexa com cluster de DB prontamente configurado, e você não tem experiência em operar PostgreSQL em HA.
- Se depende de integração nativa com serviços proprietários que Restyaboard não oferece. Avalie alternativas ou desenvolva conectores.
Alternativas auto-hospedadas
- Wekan — outra opção Kanban open-source.
- Taiga — para gestão ágil/issue tracking com mais features de backlog.
Escolha conforme necessidades (simplicidade vs. funcionalidades avançadas).
Checklist por função
Operações/DevOps:
- Verificar permissões de arquivo e dono (nginx:nginx).
- Configurar e renovar certificados TLS.
- Automatizar backups e monitoramento.
Administrador do aplicativo:
- Criar contas, templates e políticas de boards.
- Configurar notificações e integrações IMAP/Webhooks.
Usuário final:
- Validar criação de board, cartões e anexos.
- Testar notificações por e-mail e IMAP.
Glossário (1 linha cada)
- Restyaboard: aplicação Kanban open-source self-hosted.
- PHP-FPM: gerenciador de processos PHP para executar scripts via FastCGI.
- Nginx: servidor web leve e reverso proxy usado para servir o Restyaboard.
- PostgreSQL: banco de dados relacional usado para armazenar dados do aplicativo.
- SELinux: sistema de controle de acesso obrigatório no Linux.
Dicas de migração e compatibilidade
- O tutorial usa PHP 7.0 e PostgreSQL 9.6. Versões mais recentes do PHP/PostgreSQL podem funcionar, mas valide no ambiente de teste.
- Ao atualizar Restyaboard, sempre leia as notas de versão e faça backup do DB e arquivos antes.
Resumo final
Restyaboard agora deve estar instalado e acessível no domínio configurado. Teste o fluxo básico (login, criar board, upload de imagens) e implemente HTTPS e backups antes de colocar em produção. Verifique permissões, cron jobs e a conexão com PostgreSQL.
Notas finais:
- Alterar senhas padrão e habilitar TLS são passos essenciais após a instalação.
- Evite desabilitar SELinux em ambientes sensíveis; prefira políticas específicas.
Extras úteis
Fact box — números e caminhos chave:
- PHP: 7.0 (exemplo deste guia)
- PostgreSQL: 9.6
- Socket PHP-FPM: /run/php-fpm/php7.0-fpm.sock
- Diretório do app: /usr/share/nginx/html/board
- Porta HTTP padrão: 80; PostgreSQL: 5432
Aceitação rápida (checklist):
- Nginx responde
- Login admin
- Criar board
- Upload de imagens
- Cron jobs ativos
Boa instalação e operação. Se precisar, posso ajudar a gerar a configuração do Nginx otimizada com HTTPS (Let’s Encrypt) e regras de segurança adicionais.