OffshoreVps
Tutoriais10 out. 20269 min de leituraPor a equipe da OffshoreVps

Hospede o Nextcloud por conta própria em um VPS com Docker Compose

Execute sua própria nuvem privada para arquivos, calendários e contatos: arquivo Compose, proxy reverso HTTPS, domínios confiáveis, tarefas cron e backups.

O Nextcloud oferece sincronização de arquivos, calendários, contatos e edição de documentos em um servidor que você controla, em vez de entregar seus arquivos a um grande provedor de nuvem. Veja como rodá-lo em um VPS com Docker Compose.

Janela de terminal em um VPS mostrando os comandos usados para hospedar o Nextcloud por conta própria, começando com “mkdir -p ~/nextcloud && cd ~/nextcloud”
O tipo de comandos que você executará no servidor neste guia.

Antes de começar

  • Um VPS com 2 vCPU e 4 GB de RAM é um começo confortável. O armazenamento é a principal limitação, então escolha um tamanho de disco que comporte seus arquivos.
  • Um domínio apontando para o servidor, abordado em nosso guia de DNS.
  • Docker instalado, veja instalar o Docker no Ubuntu.

1. O arquivo Compose

mkdir -p ~/nextcloud && cd ~/nextcloud
cat > compose.yaml <<'EOF'
services:
  db:
    image: mariadb:11
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: change-me-root
      MYSQL_PASSWORD: change-me-db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
    volumes:
      - db:/var/lib/mysql
  redis:
    image: redis:7-alpine
    restart: unless-stopped
  app:
    image: nextcloud:stable
    restart: unless-stopped
    depends_on: [db, redis]
    ports:
      - "127.0.0.1:8080:80"
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: change-me-db
      REDIS_HOST: redis
    volumes:
      - nc:/var/www/html
volumes:
  db:
  nc:
EOF
docker compose up -d

Altere as três senhas antes de rodar. Use strings aleatórias longas.

Os passos deste guia em ordem: 1. Antes de começar; 2. 1. O arquivo Compose; 3. 2. Coloque HTTPS na frente; 4. 3. Conclua a configuração; 5. 4. Mantenha tudo saudável
Os passos deste guia, em ordem.

2. Coloque HTTPS na frente

Adicione um bloco server do Nginx que faça proxy para 127.0.0.1:8080 e depois rode o Certbot como em nosso guia do Nginx. O bloco do proxy precisa destas linhas para que o Nextcloud veja o protocolo correto e os uploads grandes funcionem:

client_max_body_size 2G;
location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
}

3. Conclua a configuração

Abra o seu domínio e crie a conta de administrador. Depois adicione o seu domínio à lista de confiáveis e defina os detalhes do proxy:

docker compose exec -u www-data app php occ config:system:set trusted_domains 1 --value=cloud.example.com
docker compose exec -u www-data app php occ config:system:set overwriteprotocol --value=https

4. Mantenha-o saudável

  • Atualizações: docker compose pull && docker compose up -d, uma versão principal de cada vez.
  • Tarefas em segundo plano: mude para Cron nas configurações de administração e adicione uma entrada de cron no host que execute cron.php a cada cinco minutos.
  • Backups: salve os dois volumes e um dump do banco de dados. Veja como fazer backup de um VPS.
  • Login em dois fatores: ative o app TOTP para todas as contas.