NPDD/Baobáxia/Documentação
Documentação do Baobáxia
Nessa página estão concentradas informações sobre a instalação, uso e manutenção geral de uma mucua do Baobáxia. Documentação sobre o código do Baobáxia e sua API são encontradas nas páginas a seguir:
Uso geral
Tutorial sobre o uso geral da plataforma Baobáxia
Conteúdo da mucua local;
* listagem de conteúdos publicados naquela mucua * quando usuário entra no baobáxia, vai para a página da mucua
Barra lateral;
* informações sobre a mucua atual * etiquetas * acesso a outras mucuas
Conteúdo da rede;
* listagem de todos os conteúdos da rede - publicados em várias mucuas
Visualização dos conteúdos;
* a partir de uma busca, chega-se a formas de visualização variadas: * galeria / slideshow * página da mídia
Rodapé;
* informações de uso de disco da mucua
Buscando conteúdos
- Princípio: chegar a todos os conteúdos
- Saída genérica
Formas de exibição da busca
- grid - boa para exibição
- -> galeria / (slideshow/tv)
- lista - boa para encontrar conteúdos específicos
- ordenar listagem
- adicionar/remover colunas
Tipos de buscas:
- por tags
- nas mucuas
- por usuários
- composta
Criar usuári@
- pela interface
- pela administração
Adicionar / editar conteúdos
- Como publicar conteúdo
- Como publicar galeria
- Como editar conteúdo
- Como editar muitos conteúdos
- Categorização de conteúdos / tags
- Como apagar conteúdos
Formatos de arquivos
Sites que servem pra converter arquivos de vídeo em formatos webm http://pt.savefrom.net/ http://firefogg.org/
Instalação e operação técnica
Tutorial sobre a parte mais técnica do Baobáxia, incluindo a instalação da mucua, sincronização e gestão geral do software
Preparação da Mucua
* Instalação zerada de Debian Stable
Se estiver usando debian
Se voce estiver usando DEBIAN, eh necessario fazer o seguinte procedimento:
- existe um pacote que precisa de debian testing (uma versao mais recente do software), que é o 'git annex'
* Para isso, eh preciso adicionar o repositorio debian wheezy-backports ao seu apt.
O git annex é o único pacote que precisa ser baixado de outra distribuição mais adiantada do debian (debian wheezy-backports)
APT eh um programa que o gerencia os pacotes (programas) do debian.
Abra o terminal e entre como root.
Para isso adicione no /etc/apt/sources.list a linha, como usuario root:
Entrar como usuario root:
$ su - #
Lembrete; o caracter $ representa o usuario comum; o caracter # representa o usuario root
Entre na pasta /root
# cd /root # nano /etc/apt/sources.list
Adicione a linha
deb http://ftp.it.debian.org/debian wheezy-backports main
Atualize o repositorio apt
# apt-get update
Instale o Git
# apt-get install -t wheezy-backports git-annex
Se nao estiver usando debian (testado no ubuntu)
Entre como root
$ su - #
Instale o git
# apt-get install git
Instalação da Mucua
Instale aplicativos básicos
# apt-get update && apt-get install bzip2 less
Entre no navegador web e baixe a versão mais atualizada do Baobáxia (pacotão) em:
http://media.mocambos.net/
Baixe o arquivo e descompacte
# wget http://media.mocambos.net/baobaxia_20150402.tbz # tar xjvf baobaxia_20150402.tbz
Atualize o codigo do baobaxia do git:
# cd /root/baobaxia # git pull https://github.com/RedeMocambos/baobaxia
Explore a pasta do baobáxia e leia os arquivos INTRODUCAO.txt, INSTALL e README
# cd baobaxia # ls app AUTHORS.txt _bbx_INTRODUCAO.txt bin clean.sh conf doc INSTALL install.sh LICENSE.txt local mocambos README TODO upgrade
Lembrete;Para ler os arquivos usa-se o nano. Exemplo; # nano LICENSE.txt
Se houver internet, atualize o repositório de código do Baobáxia:
# git pull github master
Rode o instalador:
# ./install.sh
Caso precise reiniciar a instalação (USE COM CUIDADO, VAI ZERAR A INSTALAÇÃO DA MUCUA)!
# ./clean.sh
Ao rodar o instalador, verifique se há mensagens de erro! Isso é importante!! Ajuda a entender o que pode ter dado de errado durante o processo de instalação.
Ao rodar o instalador, ele vai:
1) Baixar pacotes e perguntar se você quer instalar. Responda SIM ou YES (colocar mensagem de aviso do Baobáxia logo no começo)
2) Entra no instalador do Baobáxia
3) Vai perguntar nome da mucua. Responder s/n
4) abdias.mocambos.net s/n. Responder s
5) pergunta se quer pegar do repositório da rede ou local (rede é padrão) -> para instalações sem acesso a internet
6) clona repositório de arquivos do código e copia arquivos básicos do baobáxia (nota mental: talvez seja mais interessante só instalar o baobáxia ao finalizar toda a instalação das dependências do django)
7) instala dependências do django
8) sobe sistema
9) syncdb
10) update_templates *
11) configura usuários
12) sincroniza
13) process_requests
Programas rodando por trás; - supervisor:
Gerencia programas que estão rodando. No caso do baobáxia, são as aplicações: -> bbx -> celery
Certifique-se de que os programas estão rodando, com:
# supervisorctl status bbx RUNNING pid 29839, uptime 23:51:16 celery RUNNING pid 944, uptime 28 days, 9:09:26
A mucua deve estar instalada. Mas ainda não foi sincronizada. :)
Faça o primeiro sync:
# su - exu $ /srv/bbx/bin/bbx-cron.sh
OBS; Durante a minha instalação aqui o comando su - exu não pede senha.
$ cd /srv/bbx/baobaxia $ git remote add github https://github.com/RedeMocambos/baobaxia
Cuidando da mucua
Atualmente algumas funcionalidades não tem acesso pela interface web mas são acessíveis diretamente pelo terminal.
Importante Sempre entre como usuário "exu" no coco (ou como root e depois passe ao usuário exu, com "su - exu"):
ssh root@coco (aquela senha) su - exu
OBS; Aqui o comando su - exu pede senha. (Minha pergunta no email)
O Baobáxia é instalado em dois repositórios git, um para o software que fica em:
/srv/bbx/baobaxia
e outro do acervo em si em:
/data/bbx/repositories/mocambos
Como todos os repositórios git, podemos verificar e atualizar os links para outros clones "remotos". Para ver como estão configurados:
cd /srv/bbx/baobaxia git remote -v
No caso do software deveria ter:
github https://github.com/RedeMocambos/baobaxia
Que podemos adicionar assim:
git remote add github https://github.com/RedeMocambos/baobaxia
Conectando as outras mucuas
Para verificar a conexão dos acervos das mucuas:
cd /data/bbx/repositories/mocambos git remote -v
Deveria ter uma rota para o dpadua (ou outra mucua):
dpadua ssh://exu@dpadua.mocambos.net:9022/data/bbx/repositories/mocambos
Pode adicionar outra conexão, por exemplo pirriera, com:
git remote add pirriera ssh://exu@pirrieta.mocambos.net/data/bbx/repositories/mocambos
Uma vez verificados os remotes podemos sincronizar os repositórios. Em geral o git pode baixar (pull) ou enviar (push) as mudanças para outros clones.
Adicione a chave ssh aos seus remotes
Quando fazemos uma conexão via ssh, a máquina que estamos acessando pede uma senha. Para não precisar preencher a senha todas as vezes, e para que o processamento de pedidos funcione corretamente, é preciso enviar a chave ssh da sua mucua para a mucua remota. Para fazer isso, abra o terminal:
$ su - exu $ ssh-copy-id exu@abdias.mocambos.net -p 2243 [digite a senha de exu da sua mucua]
Pronto! O terminal vai dar uma resposta como a abaixo:
exu@namaste:/data/bbx/repositories/mocambos/abdias$ ssh-copy-id exu@abdias.mocambos.net -p 2243 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys exu@abdias.mocambos.net's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '2243' 'exu@abdias.mocambos.net'" and check to make sure that only the key(s) you wanted were added.
Detalhe: no caso, especificamos a porta ssh como sendo 2243. No caso de uma mucua cuja porta ssh seja a 22, simplesmente faça:
$ ssh-copy-id exu@abdias.mocambos.net
Atualizando o codigo do Baobáxia
Para atualizar o código com a ultima versão no github.com, conectem a mucua à internet.
A seguir, abra um terminal e entre como usuário 'exu':
su - exu cd /srv/bbx/baobaxia git pull github master
Uma vez atualizado o codigo precisa rodar alguns comandos para instalar as atualizações:
cd /srv/bbx/baobaxia/app/django-bbx python manage.py collectstatic --noinput python manage.py syncdb --all python manage.py migrate --all python manage.py update_media_state /srv/bbx/bin/update_templates.sh
Fiquem atentos às mensagens que o sistema retornar. Nem sempre os erros são óbvios, em especial para olhos não treinados. Se perceberem que algo não foi bem, copiem o log e mandem pra gente na lista do npdd (mocambos-npdd @ lists.riseup.net), dando detalhes de onde e como os erros aconteceram.
Sincronizando o acervo
Em vez desse comando para atualizar o acervo do Baobáxia usamos o comando:
/srv/bbx/bin/bbx-cron.sh
Que alem de baixar (pull), juntar (merge) e enviar (push) as mudanças, atualiza localmente os media no Baobáxia.
Enviar ou pedir copias dos conteúdos
O Baobáxia usa para gerenciar os arquivos o software git-annex que permite gerenciar copias dos arquivos entre as mucuas (clones dos repositórios).
A estrutura da pasta, do repositório do acervo (/data/bbx/repositories/mocambos):
├── chasqui │ ├── mocambolas │ └── video │ └── 14 │ └── 08 │ └── 13 │ ├── mineral-b8469.json (Arquivo de metadados) │ └── mineral-b8469.mp4 ├── coco │ ├── imagem │ │ └── 14 │ │ └── 10 │ │ ├── 04 │ │ │ ├── grafiti-coco-b0fe2.jpg │ │ │ ├── grafiti-coco-b0fe2.json (Arquivo de metadados) │ │ │ ├── logo-coco-e4b4e.json (Arquivo de metadados) │ │ │ └── logo-coco-e4b4e.png │ │ └── 06 │ │ ├── plantio-mucua-coco-oficina-nufac-a7152.jpg │ │ └── plantio-mucua-coco-oficina-nufac-a7152.json (Arquivo de metadados) │ ├── mocambolas │ │ ├── bethdeoxum@coco.mocambos.net.json │ │ ├── braza@coco.mocambos.net.json │ │ ├── daniel@coco.mocambos.net.json │ │ ├── iris@coco.mocambos.net.json │ │ ├── meme@coco.mocambos.net.json │ │ ├── pc@coco.mocambos.net.json │ │ └── raiol@coco.mocambos.net.json │ └── video │ └── 14 │ └── 10 │ ├── 04 │ │ ├── oficina-de-coco-em-cuba-com-mae-beth-dd7d3.json (Arquivo de metadados) │ │ └── oficina-de-coco-em-cuba-com-mae-beth-dd7d3.ogg │ └── 06 │ ├── alma-no-olho-ff46d.json (Arquivo de metadados) │ └── alma-no-olho-ff46d.mp4 └-OUTRAS_MUCUAS...
Para enviar uma copia de um conteúdo para outra mucua, por exemplo o video "oficina-de-coco-em-cuba-com-mae-beth-dd7d3.ogg" entramos na pasta e usamos o comando git annex copy:
cd /data/bbx/repositories/mocambos/coco/video/14/10/06/ git annex copy --to dpadua oficina-de-coco-em-cuba-com-mae-beth-dd7d3.ogg
Para receber uma copia de outra mucua a logica e' a mesma, por exemplo para pegar uma copia do video "mineral-b8469.mp4" publicado no chasqui:
cd /data/bbx/repositories/mocambos/chasqui/video/14/08/13/ git annex get mineral-b8469.mp4
O git annex vai tentar pegar a copia atraves das mucuas configuradas como "remote".
Regenerar uma mucua
Sua mucua teve um problema e precisa recriar? Tem jeito.. É possível recriar uma mucua a partir dos conteúdos que tem copia em outras mucuas.
O processo inicial é igual a uma instalação. Quando termina o instalador, precisamos trocar o novo repositório que já vem inicializado com um novo código. Para isso vamos primeiro excluir a pasta mocambos (provavelmente como usuário root):
rm -rf /data/bbx/repositories/mocambos
E agora vamos recriar novamente:
cd /data/bbx/repositories/ git clone ssh://exu@dpadua.mocambos.net:9022/data/bbx/repositories/mocambos
Agora temos um clone do acervo e precisamos reinicializar este clone especificando o UUID da mucua que queremos recriar. Para conseguir os UUID das mucuas pode usar:
cd /data/bbx/repositories/mocambos git annex info
E agora é podemos reinicializar com (coloque o uuid da sua mucua):
git annex reinit [uuid da mucua]
Agora rodando o sync a mucua vai ser regenerada. Para pegar de volta seus conteúdos é só entrar na sua mucua e solicitar copia:
cd /data/bbx/repositories/mocambos/[nome da mucua] git annex get .
E em seguida atualizar o estado dos medias:
/srv/bbx/bin/update-media-state.sh
Acesso a Mucua via tunnel
Aqui no Coco não temos acesso a todos os roteadores para reancaminhar a porta do ssh para o acesso externo. Nesse caso usamos um tunnel ssh reverso que cria uma conexao para dpadua. Assim o ssh do coco esta acessivel na porta 6666 do dpadua.
ssh -fNT -R 6666:localhost:22 exu@dpadua.mocambos.net -p 9022
Para manter ativo o tunnel pode colocar esse script no /etc/rc.local (é necessário antes criar as autenticação via chaves para o usuario exu)
HOME=/home/exu/ autossh -f -N -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/exu/.ssh/id_rsa -R 6666:localhost:22 exu@dpadua.mocambos.net -p 9022 & exit 0
Estrutura de pastas do Baobáxia
/ └── data | └── bbx | ├── db (banco de dados sqlite) | └── repositories (repositórios de mídias - git annex) | └── mocambos └── srv └── bbx ├── baobaxia (código do baobáxia) ├── bin (scripts do baobáxia) ├── envs (variáveis de a mbiente do django) ├── local (pacotes wheel) ├── log (registros/logs de erro e acesso) ├── media (pasta padrão media do django) ├── run (sockets de execução) └── static (conteúdo estático gerado pelo django e interface)
lendo logs
O que é um log? Log é um arquivo texto de registro no qual os programas gravam informações sobre erros e o funcionamento. Os mais comuns são os logs de erros ou de acesso.
os logs estão todos na pasta
$/srv/bbx/log
Abra um terminal, entre como usuário exu
usuario@mucua:~$ su - exu exu@mucua:~$
Liste os arquivos da pasta:
exu@mucua:~$ ls celery gunicorn_supervisor.log nginx-access.log nginx-error.log
Sempre dá pra usar o tab para auto completar o texto que você está escrevendo. Por exemplo,
ao escrever gun [e apertar tab, ele vai completar ou listar todas as possíveis formas de completar] gunicorn_supervisor.log
Para ler as últimas linhas do arquivo de log
$ tail -f /srv/bbx/log/gunicorn_supervisor.log
pastas de dados / sincronização / adicionando remotes
O que é um remote? É uma outra mucua / computador com um repositório de arquivos remoto. Através desses remotes podemos atualizar nossa lista de arquivos, enviar ou receber arquivos para outras mucuas.
Um repositório git (programa no qual o baobaxia é baseado) é uma pasta de arquivos compartilhada entre várias pessoas por meio das mucuas. Essa pasta está localizada no seguinte diretório:
/data/bbx/repositories/mocambos
Para acessar essa pasta, abra o terminal como usuário exu e entre na pasta
$ su - exu (coloque a senha) exu@mucua:~$ cd /data/bbx/repositories/mocambos exu@mucua:/data/bbx/repositories/mocambos$
Perceba que o endereço que você entrou agora faz parte do texto do terminal. Isso pode variar conforme a versão do bash, do seu sistema GNU/Linux. Se listarmos a pasta, veremos as mucuas presentes no repositório:
exu@mucua:/data/bbx/repositories/mocambos$ ls abdias baobaxia.png cabruca coco corisco dpadua gorki kalakuta kaylaeakeem lastSync.txt namaste quilomboomg tamboryo akimpc bbx-test chasqui copaiba djrg embondeiro hyndla kali kora marialaurinda pirriera roseira tupinambas
Cada pasta é o repositório daquela mucua. Por exemplo, se entrarmos em abdias, veremos:
exu@mucua:/data/bbx/repositories/mocambos$ cd abias exu@mucua:/data/bbx/repositories/mocambos/abias$ ls
arquivo audio imagem mocambolas requests video
Cada pasta acima possui uma função.
arquivo -> armazena arquivos de variados tipos (pdf, odt, txt...) audio -> armazena arquivos do tipo áudio (ogg...) imagem -> armazena arquivos do tipo imagem (jpg, png...) mocambola -> armazena informações de usuários/as daquela mucua requests -> armazena pedidos de conteúdos de outras mucuas feitos através dessa mucua video -> armazena arquivos do tipo vídeo (webm, mp4...)
Dentro de cada pasta de conteúdo (arquivo, áudio, imagem e vídeo), os arquivos são gravados em pastas segundo a data, sempre na lógica AA/MM/DD (A=ano, M=mês, D=dia). Por exemplo:
audio/15/03/02/ -> refere-se a conteúdos de áudio publicados no dia 02 de março de 2015 video/14/12/22 -> refere-se a conteúdos de vídeo publicados no dia 22 de dezembro de 2014
Agora que você já navegou um pouco pelas pastas, vamos verificar repositórios remotos.
Lembrando: o que é um remote? é uma máquina com a qual queremos sincronizar a nossa mucua. Para adicionar uma, é preciso descobrir seu endereço. Ela pode estar na internet; assim, terá nomes como:
http://dpadua.mocambos.net http://abdias.mocambos.net http://baobaxia.modspil.dk
Para acessar um remoto, é preciso que ele tenha instalado o programa de servidor de ssh (openssh-server). Assim, ele pode abrir portas para conexões ssh de fora.
----------------------- --------- | abdias.mocambos.net |(22) --------<------| kora | ----------------------- ---------
No exemplo acima, a mucua kora conecta-se à mucua abdias pela porta de número 22; o computador abdias possui porta ssh aberta. O baobáxia faz as conexões via ssh, e para isso é preciso configurar o repositório remoto:
git remote add abdias ssh://abdias.mocambos.net/data/bbx/repositories/mocambos
pegar um endereço ip (endereço na rede)
/sbin/ifconfig eth0 Link encap:Ethernet Endereço de HW 00:21:cc:da:18:b7 inet end.: 192.168.2.183 Bcast:192.168.2.255 Masc:255.255.255.0 endereço inet6: fe80::221:ccff:feda:18b7/64 Escopo:Link UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1 RX packets:582733 errors:51 dropped:0 overruns:0 frame:51 TX packets:299112 errors:806 dropped:0 overruns:0 carrier:808 colisões:76036 txqueuelen:1000 RX bytes:838430053 (799.5 MiB) TX bytes:25796657 (24.6 MiB) IRQ:20 Memória:f2500000-f2520000
no caso, o ip é 192.168.2.183
qual pasta queremos sincronizar / parear
git remote add nomemucua ssh://192.168.2.183/data/bbx/repositories/mocambos
listar remotes
git remote -v
openssh server para poder receber conexoes ssh
Outros erros
Erro de permissão
O repositório sempre deve ser operado com o usuário exu. Caso alguém (mesmo root) acesse e grave arquivos no repositório (pasta /data/bbx/repositories/mocambos), dá pau no sistema.
Pra corrigir, rode (como root):
# sudo su - # chown -R exu:exu /data/bbx/repositories/mocambos
Administração
É possível também acessar os arquivos e editá-los por uma outra interface administrativa, do django. Ela está disponível em:
http://[nomedamucua]/api/admin
Para entrar, coloque o seu login e senha.
Sugestões e problemas
Durante a Pajelança Quilombólica Digital surgiram várias dúvidas, problemas encontrados e sugestões de melhorias. As sugestões estão sendo pontuadas no link abaixo:
Além disso, há espaço para a criação de tickets relacionados ao código do Baobáxia no repositório do Github: