Seafile Pro 13 + OnlyOffice + Caddy — Ghid complet instalare și integrare

📘 Seafile Pro 13 + OnlyOffice + Caddy — Ghid complet instalare și integrare

Ubuntu Server 24.04, instalare cu Docker, Elasticsearch, SeaDoc și integrare OnlyOffice


1. Pregătire sistem (Ubuntu Server 24.04)

sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common nano
Notă: Acest ghid presupune că ești logat cu un utilizator cu drepturi sudo și că rulezi pe Ubuntu Server 24.04.

2. Instalare Docker și Docker Compose plugin

2.1 Instalare Docker

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

2.2 Adăugare utilizator în grupul docker

sudo usermod -aG docker $USER
newgrp docker

2.3 Instalare Docker Compose plugin

sudo apt install docker-compose-plugin -y

docker --version
docker compose version
Notă: Comenzile de verificare trebuie să afișeze versiunile instalate de Docker și Docker Compose plugin.

3. Structura directoarelor pentru Seafile Pro 13

3.1 Creare directoare necesare

sudo mkdir -p /opt/seafile-data /opt/seafile-mysql/db /opt/seafile-caddy /opt/seafile-elasticsearch/data /opt/seadoc-data
sudo chown -R $USER:$USER /opt/seafile*

3.2 Navigare în directorul principal Seafile

cd /opt/seafile
chmod 777 -R /opt/seafile-elasticsearch/data
Atenție: chmod 777 pe Elasticsearch este folosit pentru a evita probleme de permisiuni în containere. În medii de producție critice, poți ajusta permisiunile mai fin, dar pentru simplitate acest ghid folosește 777 pe directorul Elasticsearch.

4. Descărcarea fișierelor oficiale Seafile Pro 13 (Docker)

wget -O .env https://manual.seafile.com/13.0/repo/docker/pro/env
wget https://manual.seafile.com/13.0/repo/docker/pro/seafile-server.yml
wget https://manual.seafile.com/13.0/repo/docker/pro/elasticsearch.yml
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/13.0/repo/docker/caddy.yml

5. Pregătirea imaginii Seafile Pro și a cheilor

5.1 Pull imagine Seafile Pro 13

docker pull seafileltd/seafile-pro-mc:13.0-latest

5.2 Generare cheie JWT privată

apt install pwgen
pwgen -s 40 1   # copiaza cheia generata intr-un fisier (ex. notepad) pentru completare ulterioara

6. Configurarea fișierului .env pentru Seafile Pro 13

Editează fișierul .env:
nano .env
În interior, ajustează variabilele astfel (exemplu complet, adaptat):
#################################
# Docker compose configurations #
#################################
COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,elasticsearch.yml'
COMPOSE_PATH_SEPARATOR=','

## Images
SEAFILE_IMAGE=seafileltd/seafile-pro-mc:13.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_REDIS_IMAGE=redis
SEAFILE_ELASTICSEARCH_IMAGE=elasticsearch:8.15.0
SEAFILE_CADDY_IMAGE=lucaslorentz/caddy-docker-proxy:2.9-alpine
SEADOC_IMAGE=seafileltd/sdoc-server:2.0-latest
NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:13.0-latest
SEASEARCH_IMAGE=seafileltd/seasearch:1.0-latest
MD_IMAGE=seafileltd/seafile-md-server:13.0-latest

## Storage
SEAF_SERVER_STORAGE_TYPE=disk
MD_STORAGE_TYPE=$SEAF_SERVER_STORAGE_TYPE
SS_STORAGE_TYPE=$SEAF_SERVER_STORAGE_TYPE

BASIC_STORAGE_PATH=/opt
SEAFILE_VOLUME=$BASIC_STORAGE_PATH/seafile-data
SEAFILE_MYSQL_VOLUME=$BASIC_STORAGE_PATH/seafile-mysql/db
SEAFILE_ELASTICSEARCH_VOLUME=$BASIC_STORAGE_PATH/seafile-elasticsearch/data
SEAFILE_CADDY_VOLUME=$BASIC_STORAGE_PATH/seafile-caddy
SS_DATA_PATH=$BASIC_STORAGE_PATH/seasearch-data
SEADOC_VOLUME=$BASIC_STORAGE_PATH/seadoc-data

#################################
#      Startup parameters       #
#################################
SEAFILE_SERVER_HOSTNAME=seadoc.danychrys.ro   # <<< !!! MODIFICĂ: pune subdomeniul tău
SEAFILE_SERVER_PROTOCOL=https                 # <<< !!! Recomandat să rămână https
TIME_ZONE=Europe/Bucharest
JWT_PRIVATE_KEY=DfDy1Ne1pVZs16gJHFvlYwvs8JMVuQSKJ9O4KqKbE3X1dxyihWBIVnRyjuouI7Vd   # <<< !!! MODIFICĂ: cheia JWT generată

#####################################
# Third-party service configuration #
#####################################

## Database
SEAFILE_MYSQL_DB_HOST=db
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=barosoft2025   # <<< !!! MODIFICĂ: parola DB (folosește aceeași peste tot)
SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db

## Cache
CACHE_PROVIDER=redis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=barosoft2025                        # <<< !!! MODIFICĂ: parola Redis

######################################
#        Initial variables           #
######################################
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=barosoft2025   # <<< !!! MODIFICĂ: parola root DB

INIT_SEAFILE_ADMIN_EMAIL=barosoft@gmail.com     # <<< !!! MODIFICĂ: email admin Seafile
INIT_SEAFILE_ADMIN_PASSWORD=barosoft2025        # <<< !!! MODIFICĂ: parola admin Seafile

INIT_SS_ADMIN_USER=$INIT_SEAFILE_ADMIN_EMAIL
INIT_SS_ADMIN_PASSWORD=$INIT_SEAFILE_ADMIN_PASSWORD

############################################
# Additional configurations for extensions #
############################################
ENABLE_SEADOC=true
ENABLE_NOTIFICATION_SERVER=false
ENABLE_SEAFILE_AI=false
MD_FILE_COUNT_LIMIT=100000
Atenție: Schimbă toate parolele și email-ul cu valorile tale reale. Nu folosi exemplul din ghid în producție.

7. Ajustarea configurării Elasticsearch (elasticsearch.yml)

Editează fișierul elasticsearch.yml:
nano elasticsearch.yml
În interior:
services:
  elasticsearch:
    image: ${SEAFILE_ELASTICSEARCH_IMAGE:-elasticsearch:8.15.0}   # <<< !!! MODIFICĂ doar dacă vrei altă versiune
    container_name: seafile-elasticsearch
    restart: unless-stopped
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - ES_JAVA_OPTS=-Xms2g -Xmx2g   # <<< !!! MODIFICĂ dacă vrei să ajustezi memoria JVM (ex. -Xms1g -Xmx1g)
      - xpack.security.enabled=false
    ulimits:
      memlock:
        soft: -1
        hard: -1
    mem_limit: 4g   # <<< !!! MODIFICĂ dacă vrei să limitezi memoria containerului (ex. 1g, 4g)
    volumes:
      - "${SEAFILE_ELASTICSEARCH_VOLUME:-/opt/seafile-elasticsearch/data}:/usr/share/elasticsearch/data"
    networks:
      - seafile-net
    ports:
      - "9200:9200"   # <<< !!! MODIFICĂ doar dacă vrei alt port extern (default 9200)

8. Pornirea stack-ului Seafile Pro 13

docker compose up -d

8.1 Verificări de bază

docker compose ps
curl http://localhost:9200/_cluster/health?pretty      # verificare pentru Elasticsearch
curl http://localhost:9200/_cat/indices?v              # listează indexurile existente
docker compose logs -f seafile
OK: Dacă serviciile sunt Up în docker compose ps și Elasticsearch răspunde pe portul 9200, stack-ul de bază Seafile + Elasticsearch + SeaDoc este funcțional.

9. Integrarea ONLYOFFICE cu Seafile Pro 13 + Caddy

9.1 Director și rețea

Asigură-te că ești în directorul principal al stack-ului:
cd /opt/seafile

9.2 Creare container ONLYOFFICE

docker run -d --name onlyoffice \
  -p 6233:80 \
  -v /opt/onlyoffice:/var/www/onlyoffice/Data \
  -e JWT_ENABLED=true \
  -e JWT_SECRET=a8FjK9sL0pQxR2vTzWmYbNcHdEjUfGhI \
  --label caddy=onlyoffice.danychrys.ro \
  --label caddy.reverse_proxy="{{upstreams 80}}" \
  --restart=always \
  onlyoffice/documentserver:8.1.0.1
Explicații:
  • JWT_ENABLED=true → activează tokenul JWT.
  • JWT_SECRET → trebuie să fie identic în Seafile și ONLYOFFICE.
  • labels → Caddy expune automat domeniul onlyoffice.danychrys.ro.
  • -p 6233:80 → acces local pentru testare.
  • /opt/onlyoffice → date persistente ONLYOFFICE.

9.3 Conectarea ONLYOFFICE la rețeaua Seafile

docker network connect seafile-net onlyoffice
Notă: Rețeaua seafile-net este creată automat de instalatorul Seafile Pro. Nu trebuie creată manual.

10. Configurarea Seafile pentru ONLYOFFICE – seahub_settings.py

Intră în containerul Seafile:
docker exec -it seafile bash
Instalează nano (o singură dată):
apt install nano
Precizare: Instalarea nano se face o singură dată. Containerul Seafile păstrează pachetul instalat.
Editează fișierul seahub_settings.py:
nano /opt/seafile/conf/seahub_settings.py
Adaugă următoarele linii la final:
ENABLE_ONLYOFFICE = True
ONLYOFFICE_APIJS_URL = 'https://onlyoffice.danychrys.ro/web-apps/apps/api/documents/api.js'
ONLYOFFICE_JWT_SECRET = 'a8FjK9sL0pQxR2vTzWmYbNcHdEjUfGhI'
Observații:
  • URL-ul APIJS este corect și trebuie să folosească HTTPS.
  • JWT-ul este identic cu cel din containerul ONLYOFFICE.
  • SECRET_KEY din fișier există deja și nu trebuie modificat (este generat automat de Seafile).

11. Configurarea Seafile pentru ONLYOFFICE – seafile.conf

Editează fișierul seafile.conf:
nano /opt/seafile/conf/seafile.conf
Adaugă secțiunea:
[ONLYOFFICE]
enabled = true
jwt_secret = a8FjK9sL0pQxR2vTzWmYbNcHdEjUfGhI
Observații:
  • Secțiunea trebuie să fie exact [ONLYOFFICE].
  • jwt_secret trebuie să fie identic cu cel din seahub_settings.py și containerul ONLYOFFICE.

12. Restartarea serviciilor (Seafile, ONLYOFFICE, Caddy)

Ieși din containerul Seafile:
exit
Repornește serviciile în ordinea recomandată:
docker restart onlyoffice
docker restart seafile-caddy
docker restart seafile
Persistență: Toate configurările sunt salvate pe disc (/opt/seafile, /opt/onlyoffice, etc.). Nimic nu se pierde la restart sau reboot.

13. Test de verificare ONLYOFFICE din Seafile

Verificare HTTP din containerul Seafile:
docker exec -it seafile bash
curl -I https://onlyoffice.danychrys.ro
Răspuns corect așteptat:
HTTP/2 200
sau
HTTP/2 302
Dacă aceste condiții sunt îndeplinite și un fișier .docx încărcat în Seafile se deschide în editorul ONLYOFFICE (nu se mai descarcă), integrarea este completă și funcțională.

14. Comandă oficială de recreare a containerului ONLYOFFICE

Dacă trebuie vreodată să recreezi containerul ONLYOFFICE (schimbare versiune, reset, etc.):
docker stop onlyoffice
docker rm onlyoffice

docker run -d --name onlyoffice \
  -p 6233:80 \
  -v /opt/onlyoffice:/var/www/onlyoffice/Data \
  -e JWT_ENABLED=true \
  -e JWT_SECRET=a8FjK9sL0pQxR2vTzWmYbNcHdEjUfGhI \
  --label caddy=onlyoffice.danychrys.ro \
  --label caddy.reverse_proxy="{{upstreams 80}}" \
  --restart=always \
  onlyoffice/documentserver:8.1.0.1

docker network connect seafile-net onlyoffice
docker restart seafile-caddy

Ghid compilat pentru un setup complet Seafile Pro 13 + OnlyOffice + Caddy, cu Elasticsearch și SeaDoc, pe Ubuntu Server 24.04.