Este guia descreve como implantar o Seafile (versão Pro ou CE) em conjunto com o OnlyOffice Document Server e o recurso de Wiki, utilizando Docker e docker-compose em um servidor CentOS. O processo inclui a configuração de HTTPS com seus próprios certificados SSL.
- Preparação do Ambiente Docker
Primeiramente, instale o Docker e o docker-compose no seu servidor CentOS.
# Instalação do Docker
sudo yum install -y docker
# Iniciar e habilitar o serviço do Docker
sudo systemctl start docker
sudo systemctl enable docker
# Verificação da instalação
docker version
Em seguida, instale o docker-compose. Uma opção é usar o gerenciador de pacotes ou baixar o binário diretamente do GitHub.
# Tentativa via yum (pode falhar em versões mais antigas)
sudo yum install -y docker-compose
# Alternativa: baixar o binário manualmente (verifique a versão mais recente)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Verificar versão
docker-compose version
Certifique-se de que seu usuário tenha permissão para executar comandos Docker. Adicione-o ao grupo docker e reinicie o serviço, se necessário.
- Configuração do Seafile via Docker Compose
Crie um diretório de trabalho, por exemplo /opt/seafile-deploy, e dentro dele, crie o arquivo docker-compose.yml com o conteúdo a seguir. Ajuste as variáveis de ambiente, senhas, volumes de dados e o nome do host conforme sua necessidade.
version: '3.8'
services:
seafile-database:
image: mariadb:10.11
container_name: seafile-db-container
environment:
- MYSQL_ROOT_PASSWORD=SuaSenhaRootComplexa
- MYSQL_LOG_CONSOLE=true
volumes:
- ./database-data:/var/lib/mysql
networks:
- seafile-internal-net
restart: always
seafile-cache:
image: memcached:1.6
container_name: seafile-cache-container
entrypoint: memcached -m 256
networks:
- seafile-internal-net
restart: always
seafile-search:
image: seafileltd/elasticsearch-with-ik:5.6.16
container_name: seafile-search-container
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 2g
volumes:
- ./search-index:/usr/share/elasticsearch/data
networks:
- seafile-internal-net
restart: always
seafile-app:
image: docker.seafile.top/seafileltd/seafile-pro-mc:latest
container_name: seafile-app-container
ports:
- "80:80"
- "443:443"
volumes:
- ./seafile-data:/shared
environment:
- DB_HOST=seafile-database
- DB_ROOT_PASSWD=SuaSenhaRootComplexa
- SEAFILE_ADMIN_EMAIL=admin@seudominio.com
- SEAFILE_ADMIN_PASSWORD=SuaSenhaAdminSegura
- SEAFILE_SERVER_LETSENCRYPT=false
- SEAFILE_SERVER_HOSTNAME=seafile.seudominio.com
depends_on:
- seafile-database
- seafile-cache
- seafile-search
networks:
- seafile-internal-net
restart: always
networks:
seafile-internal-net:
driver: bridge
No diretório /opt/seafile-deploy, inicie todos os serviços em modo destacado.
docker-compose up -d
Acompanhe os logs para monitorar a inicialização:
docker-compose logs -f
- Configuração de SSL e Nginx para o Seafile
Após a inicialização bem-sucedida, crie um diretório para seus certificados SSL dentro do volume de dados do Seafile.
mkdir -p ./seafile-data/ssl
Copie seus certificados (arquivo .crt ou .pem e a chave privada .key) para este diretório.
Edite a configuração do Nginx embutida no container Seafile. O arquivo pode ser encontrado em ./seafile-data/nginx/conf/seafile.nginx.conf.
Localize ou crie o bloco server para a porta 443 e configure-o para usar seus certificados:
server {
listen 443 ssl;
server_name seafile.seudominio.com;
ssl_certificate /shared/ssl/seu_certificado.pem;
ssl_certificate_key /shared/ssl/sua_chave_privada.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# ... restante da configuração proxy para seafile ...
location / {
proxy_pass http://seafile-app-container:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# ... outras diretivas de proxy ...
}
}
Recarregue a configuração do Nginx dentro do container:
docker exec seafile-app-container nginx -s reload
Certifique-se de que as portas 80 e 443 estejam liberadas no firewall do seu servidor.
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
- Instalação do OnlyOffice Document Server
Puxe a imagem oficial do OnlyOffice e inicie um novo container. Mapeie portas diferentes das usadas pelo Seafile e crie volumes para persistência de dados.
# Criar diretórios para dados do OnlyOffice
mkdir -p /opt/onlyoffice-data/{logs,data,lib,db}
# Executar o container
docker run -d \
--name onlyoffice-server \
--restart=always \
-p 8080:80 \
-p 8443:443 \
-v /opt/onlyoffice-data/logs:/var/log/onlyoffice \
-v /opt/onlyoffice-data/data:/var/www/onlyoffice/Data \
-v /opt/onlyoffice-data/lib:/var/lib/onlyoffice \
-v /opt/onlyoffice-data/db:/var/lib/postgresql \
onlyoffice/documentserver
- Configuração de SSL para o OnlyOffice
Para configurar HTTPS no OnlyOffice, copie a configuração do Nginx padrão do container para o host, modifique-a e copie-a de volta.
# Copiar configuração
docker cp onlyoffice-server:/etc/onlyoffice/documentserver/nginx/ds.conf /tmp/onlyoffice-ds.conf
Edite o arquivo /tmp/onlyoffice-ds.conf. Dentro do bloco server na porta 443, aponte para seus certificados SSL, que devem ser colocados em /opt/onlyoffice-data/data/certs/.
# Dentro do bloco server:
ssl_certificate /var/www/onlyoffice/Data/certs/seu_certificado.pem;
ssl_certificate_key /var/www/onlyoffice/Data/certs/sua_chave_privada.key;
Copie o arquivo modificado de volta e reinicie o container:
docker cp /tmp/onlyoffice-ds.conf onlyoffice-server:/etc/onlyoffice/documentserver/nginx/ds.conf
# Copie também seus certificados para /opt/onlyoffice-data/data/certs/ se ainda não o fez.
docker restart onlyoffice-server
- Integração do Seafile com o OnlyOffice
Adicione as seguintes configurações ao arquivo seahub_settings.py localizado em ./seafile-data/seafile/conf/seahub_settings.py (caminho no host). Substitua o URL pelo endereço HTTPS do seu servidor OnlyOffice.
# Habilitar a integração com o OnlyOffice
ENABLE_ONLYOFFICE = True
VERIFY_ONLYOFFICE_CERTIFICATE = True # Defina como False se seu certificado for autoassinado e não quiser erros
ONLYOFFICE_APIJS_URL = 'https://onlyoffice.seudominio.com:8443/web-apps/apps/api/documents/api.js'
ONLYOFFICE_FILE_EXTENSION = (
'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx',
'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods'
)
ONLYOFFICE_EDIT_FILE_EXTENSION = ('docx', 'pptx', 'xlsx')
Reinicie o container Seafile para aplicar as mudanças:
cd /opt/seafile-deploy
docker-compose restart seafile-app
- Configuração de Auto-Salvamento no OnlyOffice
Para garantir que as edições sejam salvas periodicamente no Seafile, configure o auto-salvamento no OnlyOffice.
# Copiar o arquivo de configuração
docker cp onlyoffice-server:/etc/onlyoffice/documentserver/local.json /tmp/onlyoffice-local.json
Edite o arquivo /tmp/onlyoffice-local.json e adicione ou modifique a seção CoAuthoring como mostrado abaixo:
{
"services": {
"CoAuthoring": {
"autoAssembly": {
"enable": true,
"interval": "5m"
},
"sql": {
...
}
}
}
}
Copie o arquivo de volta e reinicie o OnlyOffice:
docker cp /tmp/onlyoffice-local.json onlyoffice-server:/etc/onlyoffice/documentserver/local.json
docker restart onlyoffice-server
- Ativação do Recurso de Wiki no Seafile
Para habilitar a funcionalidade de Wiki no Seafile, adicione a seguinte linha ao mesmo arquivo seahub_settings.py:
ENABLE_WIKI = True
Reinicie o Seafile novamente. Após reiniciar, você pode publicar qualquer biblioteca de arquivos do Seafile como um Wiki. Crie uma biblioteca, adicione arquivos Markdown (.md), e use a opção "Publicar como Wiki" nas configurações da biblioteca. Os arquivos serão ordenados pelo nome do arquivo, portanto, use uma nomenclatura como 01-Introducao.md, 02-Configuracao.md para controlar a ordem de exibição.