VINFO Hub de TI

Servidor

Nextcloud e sincronização com AWS S3.

Nextcloud — configurações

SANITIZADO: segredos removidos. Onde aparecer SEU_* / SUA_*, preencha com seus valores reais.

Arquivo: /var/www/html/config/config.php

config.php (referência)

<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',

  'apps_paths' => array (
    0 => array ('path' => '/var/www/html/apps',        'url' => '/apps',        'writable' => false),
    1 => array ('path' => '/var/www/html/custom_apps', 'url' => '/custom_apps', 'writable' => true),
  ),

  'upgrade.disable-web' => true,

  'instanceid'   => 'SEU_INSTANCE_ID',
  'passwordsalt' => 'SEU_PASSWORD_SALT',
  'secret'       => 'SEU_SECRET',

  'trusted_domains' => array (
    0 => 'SEU_IP_LOCAL:PORTA',
    1 => 'seu.dominio.com',
  ),

  'datadirectory' => '/var/www/html/data',
  'dbtype'        => 'mysql',

  'dbname'        => 'SEU_DB_NAME',
  'dbhost'        => 'SEU_DB_HOST',
  'dbport'        => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser'        => 'SEU_DB_USER',
  'dbpassword'    => 'SUA_SENHA_DO_BANCO',

  'installed' => true,
);

AWS S3 — CLI + sync

Segurança: nunca coloque Access Key/Secret diretamente em scripts. Use aws configure, variáveis de ambiente ou IAM Roles.

Instalar AWS CLI (Linux)

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo apt install unzip -y && unzip awscliv2.zip
sudo ./aws/install
aws --version

Configurar credenciais

Opção 1 — recomendada:

aws configure

Opção 2 — variáveis de ambiente:

export AWS_ACCESS_KEY_ID="SEU_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="SEU_SECRET_ACCESS_KEY"
export AWS_DEFAULT_REGION="us-east-1"

Sincronização S3

--exact-timestamps melhora fidelidade por timestamp. --delete mantém espelho (remove no S3 o que foi removido localmente) — use com cuidado.
aws s3 sync /caminho/local s3://seu-bucket/pasta --exact-timestamps
aws s3 sync /caminho/local s3://seu-bucket/pasta --delete

Script de sync (sync_s3.sh)

#!/bin/bash
set -euo pipefail

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export HOME=/home/SEU_USUARIO

# Credenciais: prefira ~/.aws/credentials ou IAM Role
export AWS_ACCESS_KEY_ID="SEU_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="SEU_SECRET_ACCESS_KEY"
export AWS_DEFAULT_REGION="us-east-1"

LOCAL_PATH="/caminho/local"
S3_BUCKET="s3://seu-bucket"
LOG="/var/log/sync_s3.log"

if /usr/bin/aws s3 sync "$LOCAL_PATH" "$S3_BUCKET" --delete; then
  echo "$(date) — sync OK" >> "$LOG"
else
  echo "$(date) — ERRO no sync" >> "$LOG"
fi
chmod +x sync_s3.sh && ./sync_s3.sh

Agendar com Cron

crontab -e
# todo dia às 23h
0 23 * * * /caminho/para/sync_s3.sh >> /var/log/sync_s3.log 2>&1

# 2 vezes por dia (0h e 12h)
0 0,12 * * * /caminho/para/sync_s3.sh

# 1 vez por semana (segunda-feira)
0 0 * * 1 /caminho/para/sync_s3.sh