NPDD/Baobáxia/Documentação

De Rede Mocambos
< NPDD | Baobáxia(Diferença entre revisões)
Ir para: navegação, pesquisa
(Uso geral)
 
(56 edições intermediárias de 3 usuários não apresentadas)
Linha 1: Linha 1:
 
Documentação do Baobáxia
 
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:
 +
* [[NPDD/Baobáxia/Documentação do Código|Documentação do código]]
  
 
== Uso geral ==
 
== Uso geral ==
Linha 7: Linha 10:
 
=== Navegação básica no ambiente ===
 
=== Navegação básica no ambiente ===
  
Conteúdo da mucua local
+
==== Conteúdo da mucua local; ====
-> barra lateral
+
  
Conteúdo da rede
+
* listagem de conteúdos publicados naquela mucua
  -> Listar mucuas
+
  * quando usuário entra no baobáxia, vai para a página da mucua
  
Conteúdo de outras mucuas
+
==== Barra lateral; ====
  
Ver um conteúdo
+
* informações sobre a mucua atual
  -> galeria / slideshow
+
  * etiquetas
  -> página da mídia
+
  * acesso a outras mucuas
  
Rodapé
+
==== Conteúdo da rede; ====
  -> informações de uso da mucua
+
 
 +
  * 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 ===
 
=== Buscando conteúdos ===
-> Busca - princípios gerais - saída da busca
+
* Princípio: chegar a todos os conteúdos
  -> grid
+
* Saída genérica
  -> galeria / (slideshow/tv)
+
  
  -> lista
+
Formas de exibição da busca
  -> ordenar listagem
+
* grid - boa para exibição
  -> paginação
+
* -> galeria / (slideshow/tv)
  -> adicionar/remover colunas
+
  
-> Busca por tags
+
* lista - boa para encontrar conteúdos específicos
-> Busca composta
+
* ordenar listagem
-> Buscar nas mucuas
+
* adicionar/remover colunas
-> Buscar por usuários
+
 
 +
Tipos de buscas:
 +
* por tags
 +
* nas mucuas
 +
* por usuários
 +
* composta
  
 
=== Criar usuári@ ===
 
=== Criar usuári@ ===
-> pela interface
+
* pela interface
-> pela administração
+
* pela administração
  
 
=== Adicionar / editar conteúdos ===
 
=== Adicionar / editar conteúdos ===
-> Como publicar conteúdo
+
* Como publicar conteúdo
-> Como publicar galeria
+
* Como publicar galeria
-> Como editar conteúdo
+
* Como editar conteúdo
-> Como editar muitos conteúdos
+
* Como editar muitos conteúdos
-> Categorização de conteúdos / tags
+
* Categorização de conteúdos / tags
-> Como apagar conteúdos
+
* 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 ==
 
== Instalação e operação técnica ==
Linha 56: Linha 78:
  
 
  * Instalação zerada de Debian Stable
 
  * Instalação zerada de Debian Stable
  - único pacote que precisa de debian testing é o 'git annex'
 
  
=== Instalação da Mucua ===
+
==== Se estiver usando debian ====
 +
Se voce estiver usando '''DEBIAN''', eh necessario fazer o seguinte procedimento:
  
Baixe a versão mais atualizada do Baobáxia (pacotão) em:
+
  - existe um pacote que precisa de debian testing (uma versao mais recente do software), que é o 'git annex'
http://media.mocambos.net/
+
  
Entre como root:
+
* 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 -
 
  $ su -
  # pwd
+
  #
/root
+
  
Instale aplicativos básicos
+
'''Lembrete;''' o caracter ''$'' representa o usuario comum; o caracter ''#'' representa o usuario ''root''
  
# apt-get update && apt-get install bzip2 less
 
  
O git annex é o único pacote que precisa ser baixado de outra distribuição mais adiantada do debian (debian wheezy-backports)
+
'''Entre na pasta /root'''
Adicione a linha do wheezy-backports aos seus repositórios do apt e salve:
+
  # cd /root
   
+
 
  # nano /etc/apt/sources.list
 
  # nano /etc/apt/sources.list
  
  # Repósitorio Wheezy debian-backports
+
'''Adicione a linha'''
  deb http//ftp.debian.org/debian debian wheeezy-backports main
+
deb http://ftp.it.debian.org/debian wheezy-backports main
  
Instale o git annex do backports:
+
'''Atualize o repositorio apt'''
  # apt-get update
+
  # apt-get update  
# apt-get install -t wheezy-backports git-annex
+
+
Baixe o arquivo e descompacte
+
 
   
 
   
 +
'''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
 
  # wget http://media.mocambos.net/baobaxia_20150402.tbz
 
  # tar xjvf baobaxia_20150402.tbz
 
  # tar xjvf baobaxia_20150402.tbz
  
  Explore a pasta do baobáxia e leia os arquivos INTRODUCAO.txt, INSTALL e README
+
'''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
 
  # cd baobaxia
 
  # ls  
 
  # ls  
 
  app  AUTHORS.txt  _bbx_INTRODUCAO.txt  bin  clean.sh  conf  doc  INSTALL  install.sh  LICENSE.txt  local  mocambos  README  TODO  upgrade
 
  app  AUTHORS.txt  _bbx_INTRODUCAO.txt  bin  clean.sh  conf  doc  INSTALL  install.sh  LICENSE.txt  local  mocambos  README  TODO  upgrade
 
    
 
    
Se houver internet, atualize o repositório de código do Baobáxia:
+
'''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
 
  # git pull github master
  
Rode o instalador:
+
'''Rode o instalador:'''
 
  # ./install.sh
 
  # ./install.sh
  
Caso precise reiniciar a instalação (USE COM CUIDADO, VAI ZERAR A INSTALAÇÃO DA MUCUA)!
+
Caso precise reiniciar a instalação ('''USE COM CUIDADO, VAI ZERAR A INSTALAÇÃO DA MUCUA''')!
 
  # ./clean.sh
 
  # ./clean.sh
  
Ao rodar o instalador, verifique se há mensagens de erro
+
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:
+
'''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 *
+
10) configura usuários
+
11) sincroniza
+
12) process_requests
+
  
Programas por trás
+
'''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:
 
- supervisor:
 
   Gerencia programas que estão rodando. No caso do baobáxia, são as aplicações:
 
   Gerencia programas que estão rodando. No caso do baobáxia, são as aplicações:
Linha 131: Linha 205:
 
   celery                          RUNNING    pid 944, uptime 28 days, 9:09:26
 
   celery                          RUNNING    pid 944, uptime 28 days, 9:09:26
  
A mucua deve estar instalada. Mas ainda não foi sincronizada.
+
A mucua deve estar instalada. Mas ainda não foi sincronizada. :)
  
Faça o primeiro sync:
+
'''Faça o primeiro sync:'''
 
  # su - exu
 
  # su - exu
  $ /srv/bbx/bbx-cron.sh
+
  $ /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
 
  $ cd /srv/bbx/baobaxia
Linha 147: Linha 223:
 
  ssh root@coco (aquela senha)
 
  ssh root@coco (aquela senha)
 
  su - exu
 
  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:
 
O Baobáxia é instalado em dois repositórios git, um para o software que fica em:
Linha 171: Linha 249:
 
  git remote -v
 
  git remote -v
  
deveria ter uma rota para o dpadua (ou outra mucua):
+
Deveria ter uma rota para o dpadua (ou outra mucua):
 
  dpadua      ssh://exu@dpadua.mocambos.net:9022/data/bbx/repositories/mocambos
 
  dpadua      ssh://exu@dpadua.mocambos.net:9022/data/bbx/repositories/mocambos
  
Linha 178: Linha 256:
  
 
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.
 
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 ===
 
=== Atualizando o codigo do Baobáxia ===
  
Então para atualizar o código com a ultima versão no github.com
+
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
 
  cd /srv/bbx/baobaxia
 
  git pull github master
 
  git pull github master
Linha 187: Linha 292:
 
Uma vez atualizado o codigo precisa rodar alguns comandos para instalar as atualizações:
 
Uma vez atualizado o codigo precisa rodar alguns comandos para instalar as atualizações:
 
  cd /srv/bbx/baobaxia/app/django-bbx
 
  cd /srv/bbx/baobaxia/app/django-bbx
. /srv/bbx/envs/bbx/bin/activate
 
 
  python manage.py collectstatic --noinput
 
  python manage.py collectstatic --noinput
 
  python manage.py syncdb --all
 
  python manage.py syncdb --all
 
  python manage.py migrate --all
 
  python manage.py migrate --all
 +
python manage.py update_media_state
 
  /srv/bbx/bin/update_templates.sh
 
  /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.
 +
 +
==== Reiniciando o bbx ====
 +
 +
Para reiniciar, por exemplo, apos atualizar o código:
 +
su -
 +
supervisorctl restart bbx
  
 
=== Sincronizando o acervo ===
 
=== Sincronizando o acervo ===
  
Em vez desse comando para atualizar o acervo do Baobáxia usamos o comando:
+
O acervo é de fato uma pasta, repositório git e git-annex..
 +
 
 +
O sync acontece com os clones/mucuas configurados como "remote".
 +
 
 +
Pode verificar quais estão configurados digitando na para /data/bbx/repositories/mocambos :
 +
git remote -v
 +
Agora podemos syncar com o comando
 +
git annex sync
 +
 
 +
Se por a casa o temos como remote a mucua pirriera, podemos mandar copia de todos os novos midiascom:
 +
git annex copy --to pirriera --fast
 +
 
 +
E pegar eventuais novidades com:
 +
git annex get
 +
 
 +
==== Syncando o básico ====
 +
Agora podemos rodar o script que ira atualizar localmente o estado da mucua:
 +
 
 
  /srv/bbx/bin/bbx-cron.sh
 
  /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.
+
que alem de baixar (pull), juntar (merge) e enviar (push) as mudanças, atualiza localmente os media no Baobáxia.
 +
 
 +
Esse ultimo comando (bbx-cron) pode ser automatizado e pelo resto podemos requisitar copia dos mídias pela interface.
  
 
=== Enviar ou pedir copias dos conteúdos ===
 
=== Enviar ou pedir copias dos conteúdos ===
Linha 252: Linha 384:
  
 
O git annex vai tentar pegar a copia atraves das [[NPDD/Baobáxia/Plantio Mucua Coco#Conectando_as_outras_mucuas|mucuas configuradas como "remote"]].
 
O git annex vai tentar pegar a copia atraves das [[NPDD/Baobáxia/Plantio Mucua Coco#Conectando_as_outras_mucuas|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 [[NPDD/Baobáxia/Documentação#Instala.C3.A7.C3.A3o_da_Mucua|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 [[#Sincronizando_o_acervo|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 ===
 
=== Acesso a Mucua via tunnel ===
Linha 263: Linha 423:
 
  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 &
 
  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
 
  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
 +
 +
=== Ativando o Memcached para melhorar o desempenho ===
 +
 +
As novas mucuas (instaladas desde junho 2015) já vem com memcached instalado.
 +
 +
Para ativar nas mucuas existentes. Ativar o ambiente virtual do python:
 +
. /srv/bbx/envs/bbx/bin/activate
 +
 +
Depois precisar instalar o memcached:
 +
pip install python-memcached
 +
 +
E adicionar ou alterar o settings com:
 +
CACHES = {
 +
    'default': {
 +
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
 +
        'LOCATION': '127.0.0.1:11211',
 +
    }
 +
}
 +
 +
E agora é so reiniciar o bbx.
 +
 +
 +
=== Adicionando outras línguas ===
 +
 +
O suporte multilíngua do baobáxia é baseado no esquema do django, que usa gettext. Para mais detalhes, consulte a [https://docs.djangoproject.com/ja/1.9/topics/i18n/ documentação do django]
 +
 +
1) Primeiro é preciso criar um locale para a língua em questão. Os locales ficam na pasta padrão do django, que por padrão do baobáxia é:
 +
/srv/bbx/baobaxia/app/django-bbx/locale
 +
/srv/bbx/baobaxia/app/django-bbx/locale/pt_BR
 +
/srv/bbx/baobaxia/app/django-bbx/locale/en_US
 +
/srv/bbx/baobaxia/app/django-bbx/locale/es_ES
 +
/srv/bbx/baobaxia/app/django-bbx/locale/it_IT
 +
 +
Em cada pasta, há uma pasta chamada LC_MESSAGES e um arquivo .po:
 +
/srv/bbx/baobaxia/app/django-bbx/locale/it_IT/LC_MESSAGES/django.po
 +
 +
2) Adicione a língua ao django, adicionando-a ao arquivo /srv/bbx/baobaxia/app/django-bbx/bbx/settings.py
 +
 +
LANGUAGES = [
 +
    ('en_US', ugettext('English')),
 +
    ('es_ES', ugettext('Spanish')),
 +
    ('pt_BR', ugettext('Brazilian Portuguese')),
 +
    ('it_IT', ugettext('Italian')),
 +
]
 +
 +
3) Reinicie o supervisor
 +
 +
$ sudo su -
 +
# supervisorctl restart bbx
 +
 +
4) Gere os binários de tradução
 +
 +
$ su - exu
 +
$ . /srv/bbx/envs/bbx/bin/activate
 +
$ cd /srv/bbx/baobaxia/app/django-bbx
 +
$ python manage.py compilemessages
 +
processing file django.po in /srv/bbx/baobaxia/app/django-bbx/locale/en_US/LC_MESSAGES
 +
processing file django.po in /srv/bbx/baobaxia/app/django-bbx/locale/es_ES/LC_MESSAGES
 +
processing file django.po in /srv/bbx/baobaxia/app/django-bbx/locale/pt_BR/LC_MESSAGES
 +
processing file django.po in /srv/bbx/baobaxia/app/django-bbx/locale/it_IT/LC_MESSAGES
 +
 +
5) Gere os templates
 +
 +
$ su - exu
 +
$ . /srv/bbx/envs/bbx/bin/activate
 +
$ cd /srv/bbx/baobaxia/app/django-bbx
 +
$ python manage.py update_templates it_IT
 +
 +
6) Ative a língua na interface
 +
 +
$ su - exu
 +
$ cd /srv/bbx/baobaxia/app/django-bbx/bbx/static/js
 +
$ vim config.js
 +
 +
  "userLang": "it_IT",
 +
 +
7) Copie para o static
 +
 +
$ python manage.py collectstatic --noinput
 +
 +
Pronto!
 +
 +
 +
=== 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:
 +
 +
* [[NPDD/Baobáxia/Contribuições para o Baobáxia]]
 +
 +
Além disso, há espaço para a criação de tickets relacionados ao código do Baobáxia no repositório do Github:
 +
 +
* [https://github.com/RedeMocambos/baobaxia/issues| https://github.com/RedeMocambos/baobaxia/issues]

Edição atual tal como às 12h15min de 10 de março de 2016

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:

Conteúdo

Uso geral

Tutorial sobre o uso geral da plataforma Baobáxia

Navegação básica no ambiente

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.

Reiniciando o bbx

Para reiniciar, por exemplo, apos atualizar o código:

su - 
supervisorctl restart bbx

Sincronizando o acervo

O acervo é de fato uma pasta, repositório git e git-annex..

O sync acontece com os clones/mucuas configurados como "remote".

Pode verificar quais estão configurados digitando na para /data/bbx/repositories/mocambos :

git remote -v

Agora podemos syncar com o comando

git annex sync

Se por a casa o temos como remote a mucua pirriera, podemos mandar copia de todos os novos midiascom:

git annex copy --to pirriera --fast

E pegar eventuais novidades com:

git annex get 

Syncando o básico

Agora podemos rodar o script que ira atualizar localmente o estado da mucua:

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

Esse ultimo comando (bbx-cron) pode ser automatizado e pelo resto podemos requisitar copia dos mídias pela interface.

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

Ativando o Memcached para melhorar o desempenho

As novas mucuas (instaladas desde junho 2015) já vem com memcached instalado.

Para ativar nas mucuas existentes. Ativar o ambiente virtual do python:

. /srv/bbx/envs/bbx/bin/activate

Depois precisar instalar o memcached:

pip install python-memcached

E adicionar ou alterar o settings com:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

E agora é so reiniciar o bbx.


Adicionando outras línguas

O suporte multilíngua do baobáxia é baseado no esquema do django, que usa gettext. Para mais detalhes, consulte a documentação do django

1) Primeiro é preciso criar um locale para a língua em questão. Os locales ficam na pasta padrão do django, que por padrão do baobáxia é:

/srv/bbx/baobaxia/app/django-bbx/locale
/srv/bbx/baobaxia/app/django-bbx/locale/pt_BR
/srv/bbx/baobaxia/app/django-bbx/locale/en_US
/srv/bbx/baobaxia/app/django-bbx/locale/es_ES
/srv/bbx/baobaxia/app/django-bbx/locale/it_IT

Em cada pasta, há uma pasta chamada LC_MESSAGES e um arquivo .po:

/srv/bbx/baobaxia/app/django-bbx/locale/it_IT/LC_MESSAGES/django.po

2) Adicione a língua ao django, adicionando-a ao arquivo /srv/bbx/baobaxia/app/django-bbx/bbx/settings.py

LANGUAGES = [
   ('en_US', ugettext('English')),
   ('es_ES', ugettext('Spanish')),
   ('pt_BR', ugettext('Brazilian Portuguese')),
   ('it_IT', ugettext('Italian')),
]

3) Reinicie o supervisor

$ sudo su -
# supervisorctl restart bbx

4) Gere os binários de tradução

$ su - exu
$ . /srv/bbx/envs/bbx/bin/activate
$ cd /srv/bbx/baobaxia/app/django-bbx
$ python manage.py compilemessages
processing file django.po in /srv/bbx/baobaxia/app/django-bbx/locale/en_US/LC_MESSAGES
processing file django.po in /srv/bbx/baobaxia/app/django-bbx/locale/es_ES/LC_MESSAGES
processing file django.po in /srv/bbx/baobaxia/app/django-bbx/locale/pt_BR/LC_MESSAGES
processing file django.po in /srv/bbx/baobaxia/app/django-bbx/locale/it_IT/LC_MESSAGES

5) Gere os templates

$ su - exu
$ . /srv/bbx/envs/bbx/bin/activate
$ cd /srv/bbx/baobaxia/app/django-bbx
$ python manage.py update_templates it_IT

6) Ative a língua na interface

$ su - exu
$ cd /srv/bbx/baobaxia/app/django-bbx/bbx/static/js
$ vim config.js
 "userLang": "it_IT",

7) Copie para o static

$ python manage.py collectstatic --noinput

Pronto!


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:

Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas
Rede Mocambos