Introdução
Hoje vou mostrar como montar o que eu sinceramente acredito ser a stack de NextCloud mais rápida disponível em 2025:
- OpenLiteSpeed – o servidor web mais rápido, com cache embutido
- LSPHP 8.1/8.2 – a implementação ultrarrápida de PHP da LiteSpeed
- Redis + APCu – para cache e travamento (locking) ultrarrápidos
- Roda totalmente sem root, com o seu próprio usuário
- Protegido com cabeçalhos de segurança adequados, HSTS e pasta de dados isolada
Mesmo que o NextCloud seja comprometido, o invasor ainda não consegue mexer no resto do seu servidor.
Vamos lá!
Passo 1: Proteja sua VPS primeiro
Antes de tudo, proteja o seu servidor. Siga o meu guia completo aqui: Como deixar sua VPS segura
Passo 2: Instale o OpenLiteSpeed, o LSPHP, o Redis e as ferramentas
Rode como root:
# Update system
apt update && apt upgrade -y
# Add OpenLiteSpeed repository
wget -O - https://repo.litespeed.sh | bash
# Install essentials
apt install -y curl gnupg2 imagemagick ffmpeg redis openlitespeed lsphp81* lsphp82* zip unzip mariadb-server mariadb-client
Observação: no Ubuntu 22.04+, o pacote do ImageMagick pode ser libmagickwand-dev + imagemagick. O comando acima funciona na maioria das versões recentes do Debian/Ubuntu.
Ative e reinicie o Redis:
systemctl enable --now redis-server
Passo 3: Crie um usuário de sistema dedicado para o NextCloud
adduser --shell /bin/bash files
usermod -aG redis files # Allow access to Redis socket
Passo 4: Baixe e extraia o NextCloud como o usuário “files”
su - files
mkdir -p ~/public_html
cd ~/public_html
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
rsync -av nextcloud/ ./
rm -rf nextcloud latest.zip .htaccess .user.ini
exit
Passo 5: Configure o painel web de administração do OpenLiteSpeed (porta 7080)
Defina uma senha de administrador:
/usr/local/lsws/admin/misc/admpass.sh
Agora acesse: https://your-vps-ip:7080 e entre.
Configuração do Virtual Host
- Apague o virtual host padrão “Example”
- Adicione um novo Virtual Host:
- Virtual Host Name: yourdomain.com
- Virtual Host Root: /home/files/
- Config File: $SERVER_ROOT/conf/vhosts/$VH_NAME/vhconf.conf
- Document Root: $VH_ROOT/public_html
- Script Handler → Add:
- Suffix: php
- Handler Type: LiteSpeed LVE
- Handler: lsphp81 (ou lsphp82, se preferir o PHP 8.2)
- Rewrite Rules (forçar HTTPS):
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
- Cabeçalhos de segurança (Context → Static → adicione um novo context /):
Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Content-Security-Policy "upgrade-insecure-requests"
- External App → LSPHP → Edit:
- Run as User/Group: files
- PHP_LSAPI_CHILDREN = 100
- LSAPI_AVOID_FORK = 0
- Listeners:
- Apague os listeners padrão
- Adicione HTTP → porta 80
- Adicione HTTPS → porta 443 (Secure = Yes)
- Associe o seu domínio aos dois listeners
Reinício suave (graceful restart) → OpenLiteSpeed → Graceful Restart
Passo 6: Emita o SSL do Let’s Encrypt
apt install -y certbot
certbot certonly --webroot -w /home/files/public_html -d yourdomain.com
Anote os caminhos (você vai precisar deles):
- Fullchain: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
- Privkey: /etc/letsencrypt/live/yourdomain.com/privkey.pem
Adicione-os em:
- Virtual Host → aba SSL
- Listener HTTPS → aba SSL
- Chained Certificate = Yes
Faça o graceful restart de novo.
Passo 7: Renovação automática do SSL
crontab -e
Adicione:
cron0 3 * * * /usr/bin/certbot renew --quiet
Passo 8: Instale e proteja o MariaDB/MySQL
mysql_secure_installation
Depois, crie o banco de dados e o usuário:
mysql -u root -p
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'ncuser'@'localhost' IDENTIFIED BY 'strong-password-here';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'ncuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Passo 9: Otimize o PHP e ative o OPCache + APCu
# Edit the correct php.ini (adjust path if using lsphp82)
sed -i '/usr/local/lsws/lsphp81/etc/php/8.1/litespeed/php.ini' \
-e 's/memory_limit = .*/memory_limit = 1024M/' \
-e 's/upload_max_filesize = .*/upload_max_filesize = 10G/' \
-e 's/post_max_size = .*/post_max_size = 10G/' \
-e 's/max_execution_time = .*/max_execution_time = 3600/' \
-e 's/opcache.enable=.*/opcache.enable=1/' \
-e 's/;opcache.memory_consumption=.*/opcache.memory_consumption=512/' \
-e 's/;opcache.interned_strings_buffer=.*/opcache.interned_strings_buffer=64/' \
-e 's/;opcache.max_accelerated_files=.*/opcache.max_accelerated_files=20000/'
# Enable APCu CLI
echo "apc.enable_cli = 1" >> /usr/local/lsws/lsphp81/etc/php/8.1/litespeed/php.ini
pkill -f lsphp
systemctl restart lsws
Passo 10: Configure o Redis como socket Unix
sed -i 's/port 6379/port 0/' /etc/redis/redis.conf
sed -i 's|# unixsocket /var/run/redis/redis-server.sock|unixsocket /var/run/redis/redis-server.sock|' /etc/redis/redis.conf
sed -i 's/# unixsocketperm 700/unixsocketperm 770/' /etc/redis/redis.conf
sed -i 's/# maxmemory .*/maxmemory 1gb/' /etc/redis/redis.conf
systemctl restart redis-server
Passo 11: Configuração final do NextCloud
Mova a pasta de dados para fora da raiz web (essencial!)
Durante a instalação, defina o diretório de dados como: /home/files/data
Edite o config.php (depois do primeiro login)
su - files
nano /home/files/public_html/config/config.php
Adicione logo depois de ‘installed’ => true,:
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => [
'host' => '/var/run/redis/redis-server.sock',
'port' => 0,
],
Configure as tarefas em segundo plano (cron)
su - files
crontab -e
Adicione:
cron*/5 * * * * /usr/local/lsws/lsphp81/bin/php -f /home/files/public_html/cron.php
Depois, no NextCloud, vá em Administração → Configurações básicas → Tarefas em segundo plano → selecione Cron (recomendado).
Bônus: deixe o occ fácil de usar para sempre
su - files
echo "alias occ='/usr/local/lsws/lsphp81/bin/php /home/files/public_html/occ'" >> ~/.bashrc
source ~/.bashrc
Agora, de qualquer lugar dentro de ~/public_html:
cd ~/public_html
occ status
occ maintenance:repair
occ db:add-missing-indices
Pronto!
Agora você tem:
- A stack de NextCloud mais rápida (OpenLiteSpeed + Redis + APCu)
- Totalmente sem root e isolada
- Renovação automática do SSL
- Cabeçalhos de segurança reforçados
- Proteção adequada da pasta de dados
Aproveite a sua nuvem privada e ultrarrápida!
Obrigado pela leitura! 🚀