📘 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șierulelasticsearch.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
Editează fișierul nano se face o singură dată. Containerul Seafile păstrează pachetul instalat.
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_KEYdin fișier există deja și nu trebuie modificat (este generat automat de Seafile).
11. Configurarea Seafile pentru ONLYOFFICE – seafile.conf
Editează fișierulseafile.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_secrettrebuie să fie identic cu cel dinseahub_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.