Alternativa OpenSource ao Dropbox

O NextCloud é uma solução alternativa aos ambiente de armazenamento de arquivos Dropbox, Google Drive, Microsoft OneDrive e por ai vai.

Com o crescimento da procura por armazenamento na nuvem as big techs que antigamente ofereciam armazenamento quase que infinito começaram a restringir a 5GB nas contas free coisa que no começo ofereciam armazenamento quase que infinito como o caso do Microsoft One Drive.

Se você ler os termos de utilização do serviço você poderá ver que a capacidade de armazenamento e a integridade dos arquivos não possuem garantias nos planos free.

Foi por este motivo que eu resolvi criar uma solução própria utilizando uma alternativa fantástica Open Source e armazenando os dados em um ambiente seguro dentro do Docker. Isto me permite mover meus arquivos e a solução completa fica dentro de um container Docker.

Como eu fiz ?

Contratei um armazenamento em cloud com a Mobsale de 100GB onde eu estou armazenando alguns sites e também o meu Drive Next Cloud.

Depois preparei um docker-compose.yml com a estrutura necessária para subir a solução através do Docker Compose.

Você pode baixar isto gratuítamente através do meu Github em:

https://github.com/jaccon/NextCloudDocker

Tendo baixado o repositório, você deve criar no mesmo nível de diretório as pastas src e database onde serão armazenados os arquivos do nextcloud application

Feito isto basta você acessar o host ( IP ou domínio ) com o endereço do NextCloud e configurar com as informações que você utilizou no docker-compose.yml

Caso tenha dúvidas deixe um comentário que irei te ajudar.

Caso tenha gostado de um like no projeto lá no Github e assine meu canal no Youtube em https://www.youtube.com/channel/UCLI_395Gs87LU0cdWWrfvVg

e não esqueça de ativar as notificações para receber todos os novos conteúdos

Acessando container Docker via SSH

Há diversas maneiras de resolver este problema. Eu resolvi criar este tutorial com a técnica que eu utilizo para disponibilizar o acesso remoto dentro de um ambiente dockerizado via SSH.

Para uma manutenção rápida ou até mesma para liberar o acesso para um cliente dentro do seu ambiente o OpenSSH é a melhor opção.
Estou considerando que você já tenha o Docker instalado e configurado em seu ambiente. Vou exemplificar o cenário que eu tive que resolver por aqui e acredito que isto irá ajudar outros devs com a mesma dúvida.

Cenário
– Vamos imaginar que temos um ambiente WordPress e o cliente precisa do acesso shell na máquina para fazer as devidas manutenções e até mesmo configurar um cronjob na máquina.

Instalação

Primeiramente você deve baixar a imagem do Docker com o OpenSSH. Eu deixei uma imagem pronta para você utilizar é só fazer o pull

docker pull jaccon/openssh:latest

Com o comando acima você irá baixar a imagem Docker do OpenSSH para seu ambiente, vamos partir para configurar o nosso Docker Compose.

Perceba que no exemplo abaixo nós já temos um ambiente com um WordPress/PHP, MySQL, phpMyAdmin e agora vamos iniciar o OpenSSH dentro do container.

version: '2'

services:
  app_db:
    image: mysql:5.7
    container_name: app_db
    ports:
      - "8010:3306"
    volumes:
      - ./database/data:/var/lib/mysql
      - ./database/initdb.d:/docker-entrypoint-initdb.d
      - ./etc/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: [email protected]@12345678 # any random string will do
      MYSQL_DATABASE: wordpress # the name of your mysql database
      MYSQL_USER: wordpress # the name of the database user
      MYSQL_PASSWORD: tvFJHsQ2yhQDyrTp # the password of the mysql user

  app_website:
    depends_on:
      - app_db
    image:  wordpress:latest # we're using the image with php7.1 
    container_name: app_website
    ports:
      - "8011:80"
    restart: always
    links:
      - app_db:mysql
    volumes:
      - ./src:/var/www/html
      - ./logs:/var/log/apache2/
      - ./scripts/:/scripts/
      - ./etc/php/php.ini:/usr/local/etc/php/php.ini

  app_ssh:
    image: jaccon/openssh  
    container_name: app_ssh
    ports:
      - "8012:22"
    restart: always
    links:
      - app_db:mysql
    volumes:
      - ./src:/var/www/html
      - ./logs:/var/log/apache2/
      - ./scripts/:/scripts/
      - ./etc/php/php.ini:/usr/local/etc/php/php.ini
      - ./etc/passwd:/etc/passwd
      - ./etc/ssh:/etc/ssh
 
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: app_phpmyadmin
    volumes:
      - ./phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
    links:
      - app_db
    ports:
      - "8013:80"
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=app_db

Veja que nós temos uma entrada app_ssh. É ai que iremos configurar dentro do ambiente op OpenSSH que dará acesso ao conteúdo Dockerizado do servidor Apache onde está rodando o WordPress.

Em resumo nós teremos a entrada no nosso docker-compose.yml que seria:

 app_ssh:
    image: jaccon/openssh  
    container_name: app_ssh
    ports:
      - "8012:22"
    restart: always
       volumes:
      - ./src:/var/www/html
      - ./logs:/var/log/apache2/
      - ./scripts/:/scripts/
      - ./etc/php/php.ini:/usr/local/etc/php/php.ini
      - ./etc/passwd:/etc/passwd
      - ./etc/ssh:/etc/ssh

Depois de iniciar o container pode ser que você tenha que iniciar o openssh e setar a senha do seu usuário. Isto é simples basta executar os comandos abaixo

docker exec -it app_ssh /bin/bash
echo root:[email protected] |chpasswd
/etc/init.d/ssh start

Feito isto o seu servidor SSH já estará configurado. Para acessar basta digitar o endereço ip do seu ambiente e depois adicionar a porta 8012 que foi a porta que foi mapeada para o OpenSSH

ssh [email protected] -p 8012

O comando acima é um exemplo de conexão no qual no exemplo o endereço do ambiente é 192.168.0.1

Se você tiver alguma dúvida utilize os comentários para entrar em contato

Obrigado!

Resolvendo problema de containers Orphans no Docker

Eu resolvi escrever este micro artigo para ajudar ai quem tiver passando pelo mesmo problema. Eu tenho em meu ambiente diversos containers rodando em paralelo e utilizamos o Docker Compose para manipular estes containers. Porém eu particularmente não havia setado o nome do projeto dentro das stacks do docker e isto acabou gerando um problema na hora de subir e baixar os containers pelo docker-compose.

A ideia aqui é simples, precisamos informar o nome dos projetos na hora de subir a stack com docker-compose up para não haver este tipo de incidente.

Então é simples, crie um arquivo .env na raiz do projeto onde você possui o docker-compose.yml com o seguinte conteúdo:

COMPOSE_PROJECT_NAME={project name}

Uma outra maneira de fazer isto é colocando a flag de comando:

docker-compose -p “project_name” up -d

Simples não ? pois é mas muitas vezes só aprendemos colocando em prática. Valeu galera abs,

#fix WARNING: Found orphan containers

Como resolver Unable to resolve “react-native-gesture-handler”

Caso você já tenha passado por este problema ao desenvolver uma aplicação React Native fique sabendo que o erro é comum e pode ser resolvido com uma certa facilidade.

Este erro pode estar relacionado com a sua versão do Expo como foi no meu caso. A solução mais simples para isto é seguir os comandos abaixo:

rm -rf node_modules

e depois:

npm i -s react-native-gesture-handler
expo install react-native-gesture-handler

Ativando o autocomplete de Emmet no VSCode

A funcionalidade de autocomplete chamada de Emmet não é ativada por padrão principalmente se estiver trabalhando com HTML dentro do Javascript comum por exemplo em bibliotecas como React.

O processo para habilitar é muito simples. Dentro do VSCode você deve ir em suas configurações e editar o JSON de configuração do VSCode adicionando as seguintes linhas abaixo:

"emmet.syntaxProfiles": {
        "javascript" : "jsx",
    },
    "emmet.includeLanguages": {
        "javascript" : "javascriptreact",
    },
    "emmet.optimizeStylesheetParsing": false,
    "emmet.triggerExpansionOnTab": true,