Skip to content

ubuntu

Tutorial de instalação do OwnCloud 9.1 Server no Ubuntu 16.04

Introdução

O OwnCloud é um serviço que provê o armazenamento de arquivos na nuvem, assim como acontece com o DropBox, Google Drive e outros serviços.

O OwnCloud pode ser instalado em um servidor de uma rede interna de uma empresa ou organização, de forma que é possível ter um serviço de armazenamento de arquivos na nuvem ou storage privado. O OwnCloud possui uma versão gratuita e outra entreprise e na página abaixo você encontra a lista de funcionalides:

https://owncloud.org/features/

Ele é extremamente leve (pode ser instalado numa máquina com 512 MB de memória RAM). Na página abaixo, você encontra a lista de requisitos de hardware e software.

https://doc.owncloud.org/server/9.1/admin_manual/installation/system_requirements.html

Para a realização deste tutorial foi utilizada uma máquina virtual com as seguintes características:
  • S.O: Ubuntu Server 16.04 64 bits
  • Memória: 2 GB
  • CPU: 1 vCPU com clock acima de 2.0 GHz
  • HD: 80 GB

Instalando o OwnCloud

1) Instale as dependências do serviço:

sudo su
add-apt-repository -y ppa:ondrej/php
apt update
apt -y install apache2 mariadb-server libapache2-mod-php5.6 php5.6-gd php5.6-json  php5.6-mysql php5.6-curl php5.6-intl php5.6-mcrypt php5.6-imagick unzip php5.6-zip php5.6-xml php5.6-mbstring php5.6-ldap

2) Crie um banco de dados, usuário e senha para ser usado pelo OwnCloud. Use os comandos baixo. Por padrão a senha do root do MySQL/MariaDB é vazia, então basta pressionar ENTER.

mysql -u root -p
MariaDB [(none)]> create database owncloud_db character set utf8;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO owncloud_user@localhost
IDENTIFIED BY 'SUA_SENHA' WITH GRANT OPTION;
MariaDB [(none)]> quit

Onde:

owncloud_db => nome do banco de dados a ser usado pelo OwnCloud.

owncloud_USER => nome do usuário do banco de dados.

SUA_SENHA => deve ser trocada pela senha que você desejar.
3) Baixe os arquivos fontes do OwnCloud em https://download.owncloud.org/community/owncloud-latest.zip

mkdir /install
cd /install
wget https://download.owncloud.org/community/owncloud-latest.zip

4) Descompacte os arquivos do Owncloud com o comando abaixo.

unzip owncloud-latest.zip

5) Use os comandos abaixo para copiar os arquivos do Owncloud para o Apache.

cp -R owncloud /var/www/html/
chown -R www-data:www-data /var/www/html/owncloud/
chmod -R +x /var/www/html/owncloud/

6) Neste tutorial, o diretório (ou storage) a ser gerenciado pelo Owncloud para armazenar os arquivos dos usuários, ficará em /files/owncloud. Foi necessário criar o diretório e definir as permissões adequadas com os comandos abaixo.

mkdir -P /files/owncloud
chown -R www-data:www-data /files/owncloud/

Aplicando configurações de segurança no MySQL/MariaDB

1) Aplique configurações de segurança no MySQL/MariaDB executando o comando abaixo.

mysql_secure_instalation

Será pedido a senha de root do MySQL/MariaDB. Apenas pressione ENTER para informar que a senha está vazia ou informe a senha do root (se em algum momento anterior você já tiver definido).

Continuando, defina a nova senha do usuário root do MySQL/MariaDB. Depois responda adequadamente as perguntas seguintes para remover o acesso anônimo ao banco, desabilite o acesso remoto com o usuário root do banco e remova o banco de teste.

Aplicando configurações de segurança no Apache

1) Edite o arquivo /etc/apache2/conf-enabled/security.conf e altere os valores dos parâmetros para deixá-los conforme mostrado abaixo:

ServerTokens Prod
ServerSignature Off
TraceEnable Off

2) Ainda neste arquivo, descomente as linhas abaixo para evitar vulnerabilidades de segurança.

Header set X-Content-Type-Options: "nosniff"
Header set X-Frame-Options: "sameorigin"
Header set X-XSS-Protection: "1;mode=block"
Header set X-Robots-Tag: "none"

3) Habilite os módulos a2enmod headers e env para aplicar as configurações realizadas no ponto 2.

a2enmod headers
a2enmod env
service apache2 restart

4) Desabilite o módulo de indexação de arquivos de um diretório e o módulo cgid.

a2dismod -f autoindex
a2dismod -f cgid
service apache2 restart

5) Habilite os módulos abaixo.

a2enmod -f ssl
a2enmod -f rewrite
a2enmod dir
a2enmod mime
service apache2 restart

6) Se você não tiver um certificado, pode criar um sendo auto-assinado e com duração de 10 anos. Faça isso usando a sequencia de comandos abaixo.

mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
openssl req -newkey rsa:1024 -x509 -nodes -out server.pem -keyout server.pem -days 3650

Durante a execução do comando acima, serão feitas as seguintes perguntas:

Sigla do país em que está o servidor: BR
Nome do estado em que está o servidor: Estado
Nome da cidade em que está o servidor: Cidade
Nome da empresa ou organização: Empresa LTDA
Nome do setor da empresa ou organização: Redes
Nome do servidor. Exemplo: box.empresa.com.br
Para as demais perguntas, basta pressionar ENTER para deixar em branco.

7) Mova os arquivos padrão do Apache para o diretório /root.

mv  /etc/apache2/sites-available/000-default.conf /root/
mv  /etc/apache2/sites-available/default-ssl.conf /root/

 

8) Crie o arquivo novo /etc/apache2/sites-available/000-default.conf com o seguinte conteúdo.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/owncloud

    <Directory />
        Deny from all
    </Directory>
    <Directory /var/www/html/owncloud>
        Options +FollowSymLinks
        AllowOverride None
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/owncloud
    <Directory />
        Deny from all
    </Directory>

    #********* BEGIN *********#
    Alias /owncloud /var/www/html/owncloud
    <Directory /var/www/html/owncloud>
        Options +FollowSymLinks
        AllowOverride None
        Allow from all
    </Directory>
    #***********************************#

    ErrorLog /var/log/apache2/error.log
    LogLevel warn
    CustomLog /var/log/apache2/access.log combined
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/server.pem
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SSLv3:!SSLv2:!TLSv1:!TLSv1.1SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
</VirtualHost>
<IfModule mod_rewrite.c>
    <IfModule mod_ssl.c>
        <LocationMatch /owncloud>
            RewriteEngine on
            RewriteCond %{HTTPS} !^on$ [NC]
            RewriteRule . https://ip-servidor/%{REQUEST_URI} [L]
        </LocationMatch>
        <LocationMatch />
            RewriteEngine on
            RewriteCond %{HTTPS} !^on$ [NC]
            RewriteRule . https://ip-servidor/%{REQUEST_URI} [L]
        </LocationMatch>
    </IfModule>
</IfModule>
<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
  Header always set X-XSS-Protection "1; mode=block"
</IfModule>

9) Depois disso, reinicie o Apache com o comando abaixo.

service apache2 restart

10) Altere o valor dos parâmetros upload_max_filesize e post_max_size no arquivo de configuração do PHP, que fica em: /etc/php/5.6/apache2/php.ini

Antes:

upload_max_filesize = 2M
post_max_size = 8M

Depois:

upload_max_filesize = 5G
post_max_size = 5G

Depois disso, reinicie o Apache com o comando abaixo.

service apache2 restart

11) Edite o arquivo de configuração do MariaDB, que fica em: /etc/mysql/mariadb.conf.d/50-server.cnf e altere o parâmetro abaixo:

Antes:
max_allowed_packet = 1M
Depois:
max_allowed_packet = 5G
Depois reincie o MariaDB com o comando:
service mysql restart

12) Acesse a página de instalação do OwnCloud em: https://ip-servidor/owncloud e preencha os campos iniciais conforme mostrado na figura abaixo.

owncloud

Para aprender mais sobre a interface Web e configurar o OwnCloud, veja as páginas abaixo.

https://doc.owncloud.org/server/9.1/user_manual/webinterface.html

https://doc.owncloud.org/server/9.1/user_manual/files/index.html

https://doc.owncloud.org/server/9.1/admin_manual/maintenance/backup.html

https://doc.owncloud.org/server/9.1/admin_manual/configuration_server/harden_server.html

https://doc.owncloud.org/server/9.1/admin_manual/configuration_server/config_sample_php_parameters.html

13) Para instalar as aplicações clientes, acesse a página abaixo.

https://owncloud.org/install/#install-clients

Fonte:
https://doc.owncloud.org/server/9.1/admin_manual/installation/source_installation.html
https://doc.owncloud.org/server/9.1/admin_manual/configuration_server/index.html

Dicas de segurança no Apache:
http://labs.siteblindado.com/2015/07/http-security-headers-guia-definitivo.html
http://blog.conviso.com.br/aumentando-a-seguranca-das-aplicacoes-com-headers-http-de-seguranca/
https://kb.sucuri.net/warnings/hardening/headers-x-xss-protection
https://www.keycdn.com/blog/http-security-headers/
https://scotthelme.co.uk/hardening-your-http-response-headers/
http://docs.spring.io/spring-security/site/docs/current/reference/html/headers.html

Instalação e configuração do Taiga no Ubuntu Server 16.04/14.04

Informações Gerais

O Taiga é uma plataforma de gerenciamento de projetos para desenvolvedores ágeis, designers e gerentes de projeto que querem uma bela ferramenta que torna o trabalho verdadeiramente agradável.

Mais informações sobre o Taiga podem ser obtidas nas URLs abaixo:

http://taiga.pm

http://taiga.io 

Neste tutorial foi utilizada uma máquina virtual que executa o Ubuntu Server 16.04 ou 14.04 64 bits e o idioma do S.O é inglês (UTF8-US). O endereço do servidor no DNS interno é server.domain.com.br.

Instalando as dependências do Taiga

Crie o usuário taiga e acesse o diretório dele.

sudo adduser taiga
sudo addgroup admin
sudo adduser taiga admin
su taiga
cd /home/taiga

OBS.: Defina uma senha para o usuário Taiga e lembre-se dela para adicionar num arquivo de configuração mais adiante.

Para instalar o Taiga e as dependências foram executados os comandos abaixo.

sudo apt-get install -y build-essential binutils-doc autoconf flex bison libjpeg-dev libfreetype6-dev \
zlib1g-dev libzmq3-dev libgdbm-dev libncurses5-dev automake libtool libffi-dev curl git tmux gettext \
curl openssh-server ca-certificates postfix nginx python3 python3-pip python-dev python3-dev \
python-pip virtualenvwrapper libxml2-dev libxslt-dev libxslt1-dev python-lxml python-virtualenv \
openssl

Instalando e configurando o PostgreSQL

Antes de iniciar a instalação do Taiga, instale o PostgreSQL 9.5 com os comandos abaixo.

No Ubuntu 16.04:

sudo echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" > /etc/apt/sources.list.d/pgdg.list

No Ubuntu 14.04:

sudo echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" > /etc/apt/sources.list.d/pgdg.list

Nas duas versões do Ubuntu:

sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql-9.5 postgresql-contrib-9.5 postgresql-doc-9.5 postgresql-server-dev-9.5

Edite o arquivo /etc/postgresql/9.5/main/pg_hba.conf e configure o arquivo como mostrado abaixo.

Antes:

local     all       postgres      peer 
local     all       all          peer 
host     all      127.0.0.1/32  md5 
host     all      ::1/128           md5
 Depois:

local     all       postgres         trust 
local     all       all             trust 
host    all       127.0.0.1/32     trust 
host     all      ::1/128               trust

Outro arquivo que precisa ser editado é o /etc/postgresql/9.5/main/postgresql.conf conforme mostrado abaixo.

Antes:

#listen_addresses = 'localhost'
port = 5432

Depois:

listen_addresses = 'localhost'
port = 5432

Depois de alterar estes arquivos é preciso reiniciar o PostgreSQL para aplicar as configurações realizadas. Faça isso usando o comando abaixo.

sudo service postgresql restart

Crie o banco de dados e o usuário do banco a ser utilizado pelo Taiga.

sudo -u postgres createuser -a -d -E -P taiga
sudo -u postgres createdb taiga -O taiga

OBS.: Defina uma senha para o usuário Taiga. Ela pode ser diferente da senha do usuário taiga do sistema operacional. Lembre-se dela para adicionar num arquivo de configuração mais adiante.

Instalando e Configurando o Taiga-Back

Execute os comandos abaixo para criar o ambiente a ser usado na instalação e funcionamento do taiga-back.

source "/usr/share/virtualenvwrapper/virtualenvwrapper.sh"
sudo mkdir /opt/virtual_env/
export WORKON_HOME="/opt/virtual_env/"
sudo chown -R taiga:taiga /opt/virtual_env/

Baixe e instale o taiga-back com os comandos abaixo.

cd /home/taiga
git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back
git checkout stable

No Ubuntu 16.04:

mkvirtualenv -p /usr/bin/python3.5 taiga
pip install -r requirements.txt

No Ubuntu 14.04:

mkvirtualenv -p /usr/bin/python3.4 taiga
pip install -r requirements.txt

Popule o banco de dados do taiga-back.

python manage.py migrate --noinput
python manage.py loaddata initial_user
python manage.py loaddata initial_project_templates
python manage.py loaddata initial_role
python manage.py compilemessages
python manage.py collectstatic --noinput

Crie o arquivo de configuração /home/taiga/taiga-back/settings/local.py com o conteúdo abaixo.

from .common import *

MEDIA_URL = "https://server.domain.com.br/media/"
STATIC_URL = "https://server.domain.com.br/static/"
ADMIN_MEDIA_PREFIX = "https://server.domain.com.br/static/admin/"
SITES["front"]["scheme"] = "https"
SITES["front"]["domain"] = "server.domain.com.br"

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.postgresql',
 'NAME': 'taiga',
 'USER': 'taiga',
 'PASSWORD': 'PASSWORD_DB',
 'HOST': 'localhost',
 'PORT': '5432',
 }
}
SECRET_KEY = "taiga"

DEBUG = False
TEMPLATE_DEBUG = False
PUBLIC_REGISTER_ENABLED = True

ADMINS = (
 ("Admin", "yourlogin@domain.com.br"),
)
DEFAULT_FROM_EMAIL = "taiga@server.domain.com.br"
SERVER_EMAIL = DEFAULT_FROM_EMAIL

# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
#EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
#EMAIL_USE_TLS = False
#EMAIL_HOST = "localhost"
#EMAIL_HOST_USER = "taiga"
#EMAIL_HOST_PASSWORD = "PASSWORD_S.O"
#EMAIL_PORT = 25

# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"

Instalando e Configurando o Taiga-Frontend (interface web)

Execute os comandos abaixo para instalar a interface web do Taiga.

cd /home/taiga
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
cd taiga-front-dist
git checkout stable

Crie o arquivo /home/taiga/taiga-front-dist/dist/conf.json com o conteúdo abaixo.

{
 "api": "https://server.domain.com.br/api/v1/",
 "eventsUrl": null,
 "eventsMaxMissedHeartbeats": 5,
 "eventsHeartbeatIntervalTime": 60000,
 "debug": false,
 "debugInfo": false,
 "defaultLanguage": "en",
 "themes": ["taiga"],
 "defaultTheme": "taiga",
 "publicRegisterEnabled": true,
 "feedbackEnabled": true,
 "privacyPolicyUrl": null,
 "termsOfServiceUrl": null,
 "maxUploadFileSize": null,
 "contribPlugins": []
}

Configurando o serviço Circus

Execute os comandos abaixo para instalar o circus.

cd /home/taiga
sudo pip2 install circus
mkdir /home/taiga/conf/ /home/taiga/logs/

Crie o arquivo /home/taiga/conf/circus.ini com o seguinte conteúdo.

[circus]
check_delay = 5
endpoint = tcp://127.0.0.1:5555
pubsub_endpoint = tcp://127.0.0.1:5556
statsd = true

[watcher:taiga]
working_dir = /home/taiga/taiga-back
cmd = gunicorn
args = -w 3 -t 60 --pythonpath=. -b 127.0.0.1:8001 taiga.wsgi
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/gunicorn.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 4
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/gunicorn.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 4

[env:taiga]
PATH = /opt/virtual_env/taiga/bin:$PATH
TERM=rxvt-256color
SHELL=/bin/bash
USER=taiga
LANG=en_US.UTF-8
HOME=/home/taiga
#No Ubuntu 16.04
PYTHONPATH=/opt/virtual_env/taiga/lib/python3.5/site-packages
#No Ubuntu 14.04 
#PYTHONPATH=/opt/virtual_env/taiga/lib/python3.4/site-packages

No Ubuntu 16.04

Crie o arquivo /lib/systemd/system/circus.service com o seguinte conteúdo.

[Unit]
Description=Job that runs the circus daemon
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/circusd /home/taiga/conf/circus.ini

[Install]
WantedBy=multi-user.target

No Ubuntu 14.04:

Crie o arquivo /etc/init/circus.conf com o seguinte conteúdo.

start on filesystem and net-device-up IFACE=lo
stop on runlevel [016]

respawn
exec /usr/local/bin/circusd /home/taiga/conf/circus.ini

Inicie o serviço circus com o serguinte comando.

sudo service circus start

Configurando o serviço Nginx

Crie a chave de criptografia 4096 bits para ser usado no SSL.

cd /etc/ssl
sudo openssl dhparam -out dhparam.pem 4096

OBS.: A execução do comando acima pode demorar algumas horas ou até um dia inteiro. O jeito é ter muuuuuita paciência.

Para a execução deste tutorial, foi criado um certificado auto-assinado com validade de 10 anos para ser usado pelo Taiga. Abaixo estão os comandos.

sudo mkdir -p /etc/ssl/certs
sudo openssl genrsa -des3 -out /etc/ssl/certs/server.key 2048 
sudo openssl req -new -key /etc/ssl/certs/server.key -out /etc/ssl/certs/server.csr 
sudo cp -v /etc/ssl/certs/server.{key,original} 
sudo openssl rsa -in /etc/ssl/certs/server.original -out /etc/ssl/certs/server.key 
sudo rm -v /etc/ssl/certs/server.original 
sudo openssl x509 -req -days 3650 -in /etc/ssl/certs/server.csr -signkey /etc/ssl/certs/server.key -out /etc/ssl/certs/server.crt
sudo rm -v /etc/ssl/certs/server.csr

Crie o arquivo /etc/nginx/sites-available/taiga com o seguinte conteúdo.

server {
 listen 80 default_server;
 server_name server.domain.com.br;
 return 301 https://$server_name$request_uri;
}

server {
 listen 443 ssl default_server;
 server_name server.domain.com.br;

large_client_header_buffers 4 32k;
 client_max_body_size 50M;
 charset utf-8;

index index.html;

# Frontend
 location / {
 root /home/taiga/taiga-front-dist/dist/;
 try_files $uri $uri/ /index.html;
 }

# Backend
 location /api {
 proxy_set_header Host $http_host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Scheme $scheme;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass http://127.0.0.1:8001/api;
 proxy_redirect off;
 }

location /admin {
 proxy_set_header Host $http_host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Scheme $scheme;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass http://127.0.0.1:8001$request_uri;
 proxy_redirect off;
 }

# Static files
 location /static {
 alias /home/taiga/taiga-back/static;
 }

# Media files
 location /media {
 alias /home/taiga/taiga-back/media;
 }

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
 add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';

ssl on;


 ssl_certificate /etc/ssl/certs/server.crt;
 ssl_certificate_key /etc/ssl/certs/server.key;
#ssl_trusted_certificate /etc/ssl/certs/ca.crt;
 ssl_session_timeout 5m;
 ssl_protocols TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
 ssl_session_cache shared:SSL:10m;
 ssl_dhparam /etc/ssl/dhparam.pem;
 ssl_stapling on;
 ssl_stapling_verify on;
}

Remova o site padrão do nginx e habilite a configuração do site do taiga.

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/taiga

Teste a configuração do nginx

sudo nginx -t

Se o resultado do comando anterior for igual ao que está abaixo, então a configuração está certa.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicie o serviço nginx.

sudo service nginx restart

O Taiga estará acessível na URL: https://server.domain.com.br. O login padrão é admin e a senha é 123123

taiga

Fonte:

https://taigaio.github.io/taiga-doc/dist/setup-production.html

 

Instalando o PuppetDB e integrando ao PuppetServer e ao PuppetExplorer e PuppetBoard no Ubuntu Server 14.04/16.04, Debian 8, Red Hat 6 e 7 e CentOS 6 e 7

Aviso:

Este tutorial foi escrito para ensinar a montar um servidor Puppet usando os pacotes Puppet-Server e PuppetDB (da PuppetLabs), PuppetExplorer (da Spotify) e PuppetBoard. Este ambiente usa pacotes do Puppet 4.x.

Se você ainda não sabe o que é Puppet, como funciona e para que serve, sugiro parar por aqui e começar a estudar os links que estão nesta página: http://blog.aeciopires.com/primeiros-passos-com-o-puppet

 

Os tutoriais de instalação do Puppet-Server podem ser encontrados nas páginas abaixo. A leitura e implementação deles é requisito para a continuação deste tutorial.

No Debian 8 e Ubuntu Server 14.04/16.04:
http://blog.aeciopires.com/configurando-um-ambiente-puppet

No CentOS 6/7 e Red Hat 6/7:
http://blog.aeciopires.com/configurando-um-ambiente-puppet-2

Instalando o PostgreSQL no PuppetServer

 

Antes de iniciar a instalação do PuppetDB, instale o PostgreSQL 9.5 com os comandos abaixo.

No CentOS/RedHat 6 64 bits:

rpm -ivh --force https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-x86_64/pgdg-redhat95-9.5-2.noarch.rpm
yum -y install postgresql95-server postgresql95-contrib
service postgresql-9.5 initdb
chkconfig postgresql-9.5 on 

No CentOS/RedHat 7 64 bits:

rpm -ivh --force https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-redhat95-9.5-2.noarch.rpm
yum -y install postgresql95-server postgresql95-contrib
/usr/pgsql-9.5/bin/postgresql95-setup initdb
service postgresql-9.5 start
chkconfig postgresql-9.5 on 

No Debian 8:

su -
echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update
apt-get -y install postgresql-9.5

No Ubuntu Server 14.04:

sudo su
echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" > /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update
apt-get -y install postgresql-9.5

No Ubuntu Server 16.04:

echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" > /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt update
apt -y install postgresql-9.5

Edite o arquivo /etc/postgresql/9.5/main/pg_hba.conf (no Debian/Ubuntu) ou /var/lib/pgsql/9.5/data/pg_hba.conf (no CentOS/Red Hat) e configure o arquivo como mostrado abaixo.

Antes:

local     all       postgres      peer 
local     all       all          peer 
host     all      127.0.0.1/32  md5 
host     all      ::1/128           md5 

Depois:

local     all       postgres         trust 
local     all       all             trust 
host    all       127.0.0.1/32     trust 
host     all      ::1/128               trust 

 Outro arquivo que precisa ser editado é o /etc/postgresql/9.5/main/postgresql.conf (no Debian/Ubuntu) ou /var/lib/pgsql/9.5/data/postgresql.conf (no CentOS/Red Hat) conforme mostrado abaixo.

Antes:

#listen_addresses = 'localhost'
port = 5432

Depois:

listen_addresses = 'localhost'
port = 5432

 Depois de alterar estes arquivos é preciso reiniciar o PostgreSQL para aplicar as configurações realizadas. Faça isso usando o comando abaixo.

No Debian/Ubuntu:

service postgresql restart

No CentOS/Red Hat:

service postgresql-9.5 restart

Agora crie o banco de dados e usuário para o puppetdb com a sequencia de comandos abaixo.

su postgres
createdb puppetdb
createuser -a -d -E -P puppetdb
exit

Opcionalmente, a instalação do PostgreSQL e a criação do banco de dados, pode ser realizado usando o módulo Puppet puppetlabs-postgresql https://forge.puppetlabs.com/puppetlabs/postgresql.

Fonte:
https://www.postgresql.org/download/linux/ubuntu
https://www.postgresql.org/download/linux/debian
https://www.postgresql.org/download/linux/redhat
http://yum.postgresql.org/repopackages.php

Instalando o PuppetDB no PuppetServer

Assumindo que você já instalou o PuppetServer, o Puppet-Agent e o PostgreSQL usando os tutoriais e comandos indicados nas seções anteriores, instale o PuppetDB com o comando abaixo.

puppet resource package puppetdb ensure=latest

Fonte:
https://docs.puppet.com/puppetdb/4.1/install_from_packages.html

Configurando a integração do PuppetDB com PostgreSQL

No servidor PuppetServer, edite o arquivo /etc/puppetlabs/puppetdb/conf.d/database.ini e altere as seguinte linhas:

[database]
 classname = org.postgresql.Driver
 subprotocol = postgresql
 subname = //localhost:5432/puppetdb
 username = puppetdb
 password = SENHA-DO-USUARIO-PUPPETDB

 

OBS.: A porta padrão do PostgreSQL é 5432/TCP e ela foi configurada na seção anterior.

Agora edite o arquivo /etc/puppetlabs/puppetdb/conf.d/jetty.ini e altere os parâmetros abaixo para deixá-los com os valores mostrados em negrito.

[jetty]
 host = 0.0.0.0
 port = 8080
 ssl-host = 0.0.0.0
 ssl-port = 8081

Execute o comando abaixo para gerar os certificados a serem usados pelo PuppetDB e configurar o arquivo jetty.ini.

puppetdb ssl-setup

Reinicie o PuppetDB com o comando abaixo:

service puppetdb restart

Fonte:

https://docs.puppet.com/puppetdb/latest/configure.html

Configurando a integração do PuppetServer com o PuppetDB

Ainda no servidor PuppetServer, instale o pacote puppetdb-termini com o comando abaixo.

puppet resource package puppetdb-termini ensure=latest

Crie o arquivo /etc/puppetlabs/puppet/puppetdb.conf e adicione o seguinte conteúdo:

[main]
 server_urls = https://puppetserver.domain.com.br:8081

Edite o arquivo /etc/puppetlabs/puppet/puppet.conf e adicione o seguinte conteúdo na seção [master].

storeconfigs = true
storeconfigs_backend = puppetdb
reports = store,puppetdb
reportstore = /var/log/puppetlabs/puppet

Crie o arquivo /etc/puppetlabs/puppet/routes.yaml com o seguinte conteúdo:

---
 master:
   facts:
     terminus: puppetdb
     cache: yaml

Atribua as permissões corretas ao arquivo com o comando abaixo:

chown -R puppet:puppet `puppet config print confdir`

Reinicie o PuppetServer com o comando abaixo:

service puppetserver restart

Os arquivos de log do PuppetDB ficam em: /var/log/puppetlabs/puppetdb/

O PuppetDB ficará acessível em: http://puppetserver.domain.com.br:8080 ou https://puppetserver.domain.com.br:8081

perf-dash-large

OBS.: Se não conseguir acessar a interface web do PuppetDB, verifique se há algum firewall bloqueando a porta.

No CentOS/Red Hat 6, você pode desabilitar o firewall seguindo estas instruções: http://www.cyberciti.biz/faq/fedora-redhat-centos-5-6-disable-firewall

No CentOS/Red Hat 7, você pode desabilitar o firewall seguindo estas instruções: http://www.liquidweb.com/kb/how-to-stop-and-disable-firewalld-on-centos-7

Você também pode precisar desabilitar o SELinux no CentOS/RedHat. Siga estas instruções: http://www.revsys.com/writings/quicktips/turn-off-selinux.html ou http://aruljohn.com/info/centos-selinux/

Fonte:
https://docs.puppet.com/puppetdb/4.1/connect_puppet_master.html

Instalando o PuppetExplorer

Os módulos Puppet de instalação do PuppetExplorer e dependências podem ser instalados no Puppet-Server usando os comandos abaixo.

puppet module install puppetlabs-apache
puppet module install puppetlabs-apt
puppet module install spotify-puppetexplorer 

Agora edite o aquivo /etc/puppetlabs/code/environments/production/manifests/site.pp e adicione o seguinte conteúdo:

node puppetserver.domain.com.br {
   class {'::puppetexplorer':
     vhost_options => {
       rewrites  => [ { rewrite_rule => ['^/api/metrics/v1/mbeans/puppetlabs.puppetdb.query.population:type=default,name=(.*)$  https://puppetserver.domain.com.br:8081/api/metrics/v1/mbeans/puppetlabs.puppetdb.population:name=$1 [R=301,L]'] } ] }
     }
}

Agora execute o comando abaixo.

puppet agent -t

Ao final da instalação, o PuppetExplorer ficará acessível em: https://puppetserver.domain.com.br

events

OBS.: O módulo de instalação do PuppetExplorer foi declarado passando o recurso vhost_options, afim de corrigir um bug no PuppetExplorer devido a uma atualização realizada no PuppetDB. Veja o report em: https://github.com/spotify/puppetexplorer/issues/49 normalmente, o PuppetExplorer deveria ser instalado apenas usando a declaração abaixo no arquivo site.pp.

node puppetserver.domain.com.br {
   include puppetexplorer
 }

Fonte:
https://groups.google.com/forum/#!topic/puppet-users/VDywEgW2Y54
https://forge.puppet.com/spotify/puppetexplorer
https://github.com/spotify/puppetexplorer

Instalando o PuppetBoard

Se você não quiser usar o PuppetExplorer, pode usar o PuppetBoard.

Os módulos Puppet de instalação do PuppetBoard e dependẽncias podem ser instalados no Puppet-Server usando os comandos abaixo.

puppet module install puppetlabs-apache
puppet module install puppetlabs-apt
puppet module install puppet-puppetboard 

Agora edite o aquivo /etc/puppetlabs/code/environments/production/manifests/site.pp e adicione o seguinte conteúdo:

node puppetserver.domain.com.br {
   class {'apache':
     default_vhost    => false,
     server_signature => 'Off',
     server_tokens    => 'Prod',
     trace_enable     => 'Off',
   }

   class { 'apache::mod::ssl':
     ssl_cipher    => 'HIGH:MEDIUM:!aNULL:!MD5:!SSLv3:!SSLv2:!TLSv1:!TLSv1.1',
     ssl_protocol  => [ 'all', '-SSLv2', '-SSLv3', '-TLSv1', '-TLSv1.1' ],
   }

   #Configure Apache on this server
   class { 'apache::mod::wsgi':
     wsgi_socket_prefix => '/var/run/wsgi',
   }

   #Configure Puppetboard
   class { 'puppetboard':
     manage_git          => 'latest',
     manage_virtualenv   => 'latest',
     reports_count       => 50
   }->
  python::pip { 'Flask':
    virtualenv => '/srv/puppetboard/virtenv-puppetboard',
  }->
  python::pip { 'Flask-WTF':
    virtualenv => '/srv/puppetboard/virtenv-puppetboard',
  }->
  python::pip { 'WTForms':
    virtualenv => '/srv/puppetboard/virtenv-puppetboard',
  }->
  python::pip { 'pypuppetdb':
    virtualenv => '/srv/puppetboard/virtenv-puppetboard',
  }

   #Configure Access Puppetboard
   class { 'puppetboard::apache::vhost':
     vhost_name => 'puppetserver.domain.com.br',
     port       => 443,
     ssl        => true,
   }
}

Agora execute o comando abaixo.

puppet agent -t

Ao final da instalação, o PuppetBoard ficará acessível em: https://puppetserver.domain.com.br

overview

 

É possível que você enfrente o problema abaixo na instalação do PuppetBoard no CentOS/Red Hat 7.

Erro:

Execution of '/usr/bin/rpm -e python-devel-2.7.5-34.el7.x86_64' returned 1: error: Failed dependencies:
python2-devel is needed by (installed) python-virtualenv-1.10.1-2.el7.noarch
Error: /Stage[main]/Python::Install/Package[python-dev]/ensure: change from 2.7.5-34.el7 to absent failed: Execution of '/usr/bin/rpm -e python-devel-2.7.5-34.el7.x86_64' returned 1: error: Failed dependencies:
python2-devel is needed by (installed) python-virtualenv-1.10.1-2.el7.noarch

Solução:

Edite o arquivo /etc/puppetlabs/code/environments/production/modules/python/manifests/install.pp. Altere todas as ocorrências de:

package { 'python-dev':
ensure => $dev_ensure,
name => $pythondev,
}

Para:

package { 'python-dev':
ensure => present,
#ensure => $dev_ensure,
name => $pythondev,
}

Depois execute:

puppet agent -t

Fonte:
https://forge.puppet.com/puppet/puppetboard

Configurando os Agentes Puppet

Em cada máquina que executa o Puppet-Agent, adicione no arquivo /etc/puppetlabs/puppet/puppet.conf o seguinte conteúdo:

[agent]
 report = true

Reinicie o Puppet-Agent com o comando abaixo:

service puppet restart

Opcional: instalando o PuppetBoard e PuppetExplorer através do projeto PCP

Alguns membros da comunidade Puppet-BR, desenvolveram o projeto PCP que facilita a criação de um servidor PuppetServer, PuppetDB com PuppetExplorer e PuppetBoard em uma VM gerenciada pelo Vagrant.

Para mais informações acesse: https://gitlab.com/puppet-br/pcp

OBS.: O PCP não é recomendado para ser usado em ambientes de produção. É indicado apenas em ambientes de desenvolvimento e testes com Puppet.

Tutoriais de instalação do Zabbix 3.0

a b

Olá, pessoal!

Hoje (16/02/2016) foi lançado o Zabbix 3.0. Esta versão foi lançada com muitas novidades que podem ser conferidas nos links abaixo.

Os tutoriais de instalação do Zabbix Server, Agent, e Proxy 3.0 acabaram de sair do forno e podem ser baixados nos links abaixo.

 

Abraço e bons testes.

 

Instalando o NFS no Ubuntu 12.04

 

O NFS (Network File System) é um sistema de arquivos distribuídos desenvolvido inicialmente pela Sun Microsystems, Inc., a fim de compartilhar arquivos e diretórios entre computadores conectados em rede, formando assim um diretório virtual. Nesta página [1], você encontra mais informações sobre o funcionamento desse serviço de rede.

Este tutorial ensina a instalar e configurar o NFS  no Ubuntu 12.04.

No servidor

Instale o serviço com o seguinte comando:

sudo apt-get install nfs-kernel-server

Crie um diretório para armazenar os arquivos a serem compartilhados com os hosts clientes. Exemplo: /compartilhado.

sudo mkdir /compartilhado

Edite o arquivo /etc/exports para especificar as permissões do compartilhamento. Adicione seguinte linha:

/compartilhado *(rw,sync,no_subtree_check,no_root_squash)

Assim, o diretório será compartilhado com permissões de leitura e escrita e qualquer arquivo que for adicionado no diretório será rapidamente disponibilizado aos usuários do host cliente. Saiba mais sobre as permissões acessando esta página [2]

Edite o arquivo /etc/hosts.denny e adicione as seguintes linhas para negar o acesso remoto ao NFS a todos os hosts:

portmap: ALL
lockd: ALL
mountd: ALL
rquotad: ALL

Agora libere o acesso remoto ao NFS para hosts específicos.

Se você quer compartilhar o diretório “/compartilhado” com todos os hosts pertencentes a faixa de rede 192.168.0.0/24 (na qual também está o servidor NFS), edite o arquivo /etc/hosts.allow e informe as linhas abaixo. Se você quer compartilhar apenas com um ou dois computadores da rede, substitua 192.168.0.0/24 pelos endereços IP separando-os por vírgula. Ex.: portmap: 192.168.0.2, 192.168.0.3.

portmap: 192.168.0.0/24
lockd: 192.168.0.0/24
rquotad 192.168.0.0/24
mountd: 192.168.0.0/24
statd: 192.168.0.0/24

Execute o comando abaixo para ativar o serviço e habilitar as configurações.

sudo /etc/init.d/nfs-kernel-server restart

No cliente

Instale o cliente NFS.

sudo apt-get install nfs-common

Monte o diretório compartilhado pelo servidor NFS no host cliente.

Crie o diretório que receberá os arquivos compartilhados pelo servidor.

sudo mkdir /media/compartilhado

Edite o arquivo /etc/fstab e adicione a seguinte linha ao final. Isso fará com que a montagem do diretório remoto seja executada automaticamente quando o computador for ligado.

IP-Servidor:/compartilhado /media/compartilhado nfs rw 0 0

Na linha acima, substitua “IP-Servidor” pelo IP do servidor NFS. Exemplo: 192.168.0.1.

Agora monte manualmente o diretório remoto no host cliente.

sudo mount IP-Servidor:/compartilhado /media/compartilhado

Pronto! Agora é só testar. Adicione alguns arquivos no diretório “/compartilhado” do servidor e verá estes mesmos arquivos no diretório “/media/compartilhado” do host cliente.

Abraço e até a próxima.

Fontes:

[1] http://www.qfoi.com.br/index.php/artigos/51-instalando-nfs-no-ubuntu

[2] http://www.vivaolinux.com.br/artigo/Configurando-um-servidor-NFS-em-4-passos?pagina=1

Tutorial de instalação do Zabbix 2.0.0

Olá, amigo(a)!

Fiz os tutoriais abaixo para ajudar a instalar o Zabbix 2.0.0.

Instalando o Zabbix 2.0.0 no Ubuntu 10.04 e 12.04 com PostgreSQL – Aécio Pires

Instalando o Zabbix 2.0.0 no Debian 6 com MySQL – Aécio Pires

Mais novidades sobre o Zabbix 2.0 podem ser encontradas neste post http://zabbixbrasil.org/?p=272 e no site official do Zabbix: http://zabbix.com

Para aprender mais sobre Zabbix, você pode olhar a página Arquivo do site da comunidade Zabbix Brasil http://zabbixbrasil.org/?page_id=7 e o manual http://www.zabbix.com/documentation/2.0/manual

Abraço.

Tutorial de instalação do Ubuntu 11.10

 

No próximo sábado (28/04), haverá o FLISOL na cidade de Patos-PB http://flisol2012patos.eventbrite.com/.

Camila Gomes, eu, Guerlielton Nunes, Leandro Almeida e Jackson Azevedo estaremos no install fest do FLISOL instalando o Ubuntu 11.10 nos computadores dos participantes. Neste link pode ser baixado o tutorial de instalação do Ubuntu 11.10.

As inscrições são gratuitas e podem ser realizadas no site acima. Pedimos aos participantes que levem 1 KG de alimento não perecível para doarmos a uma instituição da região.

Vídeo e tutorial de instalação do Zabbix 1.8.10 no Ubuntu 10.04

 

Atualizei o tutorial de instalação do Zabbix.Você pode baixá-lo a partir do link http://zabbixbrasil.org/files/Tutorial_de_instalacao_do_Zabbix_1-8-10.pdf

O tutorial ensina a instalar a versão 1.8.10 no Ubuntu 10.04.

Também fiz o vídeo abaixo mostrando a execução dos comandos que estão no tutorial.

Para aprender mais sobre o Zabbix, acesse o site da comunidade Zabbix-BR http://zabbixbrasil.org e participe da lista de discussão http://br.groups.yahoo.com/group/zabbix-brasil/

Se você tem um pouco de conhecimento e vontade de compartilhar com outras pessoas ou tem uma ideia legal para o Zabbix, avise a gente na lista.

Acesse também o site oficial do Zabbix http://zabbix.com

Obrigado a André Déo e Thiago Santiago por me ajudar com a revisão do tutorial.

Bons estudos! 🙂

 

Desabilitando a atualização de um pacote no Ubuntu

Estou repassando a dica dada pelo amigo Diénert Vieira. Quem deseja travar ou trancar a versão de um pacote, acesse o menu Sistema > Administração > Gerenciador de pacotes Synaptic.

No Sinaptic, pesquise o nome do pacote. Quando encontrá-lo, clique sobre o mesmo para selecioná-lo, acesse o menu Pacote e escolha a opção trancar versão.

A figura abaixo mostra que o Firefox não será mais atualizado. 🙂

PS.: Esta dica foi testada no Ubuntu 10.04.

19° Edição da Revista Espírito Livre

“Chegamos a mais uma edição da Revista Espírito Livre, repleta de novidades, graças a uma equipe empenhada em contribuir com materiais e experiências.Esta edição tem em sua capa um símbolo que apresenta diversos significados, mas todos estes, de alguma forma, querem dizer basicamente a mesma coisa: liberdade, uma bandeira, inclusive defendida por este editorial. O Ubuntu foi chegando, chegando e hoje é reconhecido como a distribuição GNU/Linux mais popular entre os usuários do sistema do pinguim. E não é por menos: o público que de certa forma utiliza o Ubuntu são usuários órfãos do Windows, leigos e iniciantes em GNU/Linux num geral ou ainda aqueles que buscam facilidades e praticidade no uso do sistema. Estes últimos, em especial, querem simplesmente que o sistema funcione, e se encaixam aqui, empresas, profissionais liberais, desktops corporativos, escolas, e vários outros nichos. Sabe-se porém que, as principais tarefas que hoje são feitas em um sistema que roda Ubuntu, também podem ser feitas em sistemas como Fedora, OpenSuSE, Mandriva entre outros. Então, o que torna o Ubuntu diferente dos demais?! São seus usuários? Seria o seu criador, então? Muitos entretanto temem o crescimento desta distribuição, que na visão de certos usuários, “nasceu para engolir outras distribuições”. Estranhamente, outras tantas distribuições “nascem” justamente derivadas do Ubuntu e com público fiel e cativo, como é o caso do Linux Mint. Esta edição apresenta matérias que não tem o propósito de qualificar uma e desqualificar outra distribuição. O que se percebe é que a comunidade Ubuntu é forte, sólida, animada, participante do processo de desenvolvimento, acolhedora e está a todo vapor! Buscamos então, entrevistar aquele que, de certa forma, tornou o Ubuntu uma realização possível: Mark Shuttleworth. Esta edição ainda traz muito mais…” Essas foram as palavras do editor João Fernando Costa Júnior.

A revista está muito boa, vale a pena conferir pessoalmente em http://www.revista.espiritolivre.org/?p=809.

Nesta edição foi publicado um artigo sobre o III ECD (Encontro Comunicação Digital) na página 104. O ECD é evento que acontecerá nos dias 09 e 10/11, em João Pessoa, e contará com um time de palestrantes que falarão sobre: Zabbix, Inteligência Artificial, desenvolvimento embarcado com eLUA, o projeto da rede metropolitana sem fio Jampa Digital, Realidade Virtual, Programação Mobile, Python, Ruby on Rails e muito mais.

Acesse o site http://ecd2010.rg3.net e faça a sua inscrição gratuita até o dia 05/11 ou siga @ncd_ifpb no Twitter para saber detalhes da organização do evento.