Replicar Dropbox

No. No cal que la carpeta del NAS estigui dins del directori web.

Si el que vols és tenir una carpeta del NAS muntada a Deepin i replicada/sincronitzada com si fos Dropbox, el més important és el tipus d’accés que utilitzarem, no pas que sigui una carpeta web.

Per exemple, al NAS pots tenir:

/volume2/
├── web/
│   └── polidic/
│
├── Documents/
│   └── Miquel/
│
├── Sincronitzacio/
│   └── Deepin/
│
└── altres/

I podríem sincronitzar, per exemple:

NAS
192.168.1.41
/volume2/Sincronitzacio/Deepin
             ↕
Deepin
/home/Miquel/NAS/Deepin

Tens dues coses diferents

1. Muntar la carpeta

Deepin veu directament la carpeta del NAS:

/home/Miquel/NAS/Deepin

però els fitxers físicament continuen estant al NAS.

2. Replicar/sincronitzar-la

Aquí sí que tindries una còpia local:

NAS:    /volume2/Sincronitzacio/Deepin
              ↕ sincronització
PC:     /home/Miquel/Sincronitzacio/Deepin

Això és més semblant a Dropbox: els fitxers existeixen també al PC i al NAS, i el programa manté les dues còpies sincronitzades.

En el teu cas

Com que tens el Synology 192.168.1.41, jo separaria clarament:

/volume2/web/

per a les aplicacions web de Polidic, PHP, etc.

i crearia una carpeta compartida específica, per exemple:

/volume2/Sincronitzacio/

per a les dades que vulguis replicar amb Deepin.

Això té un avantatge important: no barregem les dades de les aplicacions web amb les dades personals que volem sincronitzar.

Si el que busques és exactament una experiència «Dropbox però NAS propi», podem muntar-ho perquè, per exemple:

/home/Miquel/Dropbox-NAS/

es mantingui sincronitzat automàticament amb una carpeta compartida del Synology, incloent canvis en els dos sentits.


Sí. I de fet, si la major part de les vegades només necessites una rèplica NAS → Deepin, jo faria una solució més senzilla que una sincronització bidireccional tipus Dropbox.

La idea seria:

                 RÈPLICA
┌──────────────────────────────┐
│        Synology NAS          │
│        192.168.1.41          │
│                              │
│  /volume2/Dropbox/            │
└──────────────┬───────────────┘
               │
               │  SMB / rsync
               ▼
┌──────────────────────────────┐
│          Deepin              │
│                              │
│ /home/Miquel/Dropbox/        │
└──────────────────────────────┘

La carpeta del NAS no necessita estar dins /volume2/web.

1. Crear la carpeta al Synology

Al NAS crearia una carpeta compartida específica:

Dropbox

que físicament podria ser:

/volume2/Dropbox/

Per exemple:

/volume2/Dropbox/
├── Documents/
├── Llibres/
├── Fotos/
├── Projectes/
└── altres/

A Synology DSM li dones permisos al teu usuari.


2. Compartir-la per SMB

Al Synology:

Panell de control → Serveis de fitxers → SMB

actives SMB.

Així Deepin podrà accedir a:

//192.168.1.41/Dropbox

No cal que sigui una carpeta web.


3. Crear la carpeta local a Deepin

Al PC:

mkdir -p /home/Miquel/Dropbox

Aquí tindríem:

NAS
/volume2/Dropbox/
       │
       │ rèplica
       ▼
Deepin
/home/Miquel/Dropbox/

Però encara no sincronitzaria res.

Primer provaria que Deepin pot llegir correctament el NAS.


4. Per a una rèplica, jo utilitzaria rsync

Això és molt interessant perquè rsync només copia els fitxers nous o modificats.

Per exemple:

rsync -av --delete /origen/ /destinacio/

El comportament seria:

NAS                         Deepin

fitxer1.pdf       ───────►  fitxer1.pdf
foto.jpg          ───────►  foto.jpg
document.odt      ───────►  document.odt

Si demà només canvies document.odt:

NAS                         Deepin

document.odt      ───────►  document.odt
                    només aquest

No torna a copiar tota la carpeta.


5. Una precaució molt important: --delete

Aquesta opció:

--delete

fa que la rèplica sigui exacta.

Per exemple, si al NAS elimines:

NAS
/Dropbox/foto.jpg

la següent rèplica també eliminarà:

Deepin
/home/Miquel/Dropbox/foto.jpg

Això és molt útil per tenir una còpia mirall, però jo no la posaria al principi.

Primer provaria:

rsync -av

sense --delete.

Quan estiguem segurs que tot funciona, ja decidim si volem rèplica estricta.


6. Una qüestió important: NAS → Deepin o bidireccional?

Aquí hi ha una diferència fonamental.

Rèplica NAS → Deepin

NAS
 ↓
Deepin

És la més segura i senzilla.

Si treballes principalment amb els fitxers del NAS, Deepin simplement manté una còpia local.

Sincronització bidireccional

       ┌───────┐
       │       ▼
NAS ◄────────► Deepin

Si modifiques un fitxer al Deepin, el canvi també puja al NAS.

Això ja és més semblant a Dropbox i requereix controlar conflictes, fitxers eliminats, versions, etc.


7. El que jo faria en el teu cas

Començaria amb aquesta estructura:

Synology 192.168.1.41
│
└── /volume2/Dropbox/
       │
       ├── Documents/
       ├── Llibres/
       ├── Projectes/
       └── ...
                │
                │ SMB
                ▼
Deepin
│
└── /home/Miquel/Dropbox/

I faria tres fases:

Fase 1 — Prova manual

Connectar-nos al NAS i comprovar que podem llegir:

//192.168.1.41/Dropbox

Fase 2 — Primera rèplica

Fer una primera còpia:

NAS → Deepin

i comprovar que els fitxers coincideixen.

Fase 3 — Automatitzar

Podríem fer que Deepin executés automàticament, per exemple:

cada hora
     ↓
comprova NAS
     ↓
rsync
     ↓
actualitza /home/Miquel/Dropbox

o fins i tot fer-ho manualment amb un script:

replica_dropbox

I encara hi ha una alternativa molt interessant

Si el que vols és que sigui realment com Dropbox, amb:

  • sincronització automàtica,
  • canvis en els dos sentits,
  • funcionament en segon pla,
  • control de conflictes,

jo miraria Syncthing en lloc de fer-ho simplement amb rsync.

En canvi, si el que vols és «el NAS és el mestre i Deepin en té una còpia local actualitzada», rsync és probablement la solució més neta.

Jo començaria per rsync NAS → Deepin, perquè és molt fàcil de provar i no ens arrisquem a modificar accidentalment els originals del NAS.

Fer visible Dropbox dins home i, per tant, sincronitza-ble amb Synology Drive Client

Aquí tens una nota resumida i clara amb tots els passos per fer que la carpeta Dropbox sigui visible dins home i, per tant, sincronitza ble amb Synology Drive Client 👇

🧩 Objectiu

Fer que la carpeta /volume2/dropbox aparegui dins home (/volume2/homes/urqtejmi) perquè Synology Drive Client la pugui sincronitzar.

🔧 Passos resumits

1️⃣ Activar el servei de carpetes personals

  • A DSM: Panel de control → Usuario y grupo → Avanzado → Habilitar servicio de inicio de usuario
  • Confirmar que la ubicació és Volumen 2 → Això crea /volume2/homes/urqtejmi.

2️⃣ Crear la carpeta de muntatge dins home

bash

mkdir /volume2/homes/urqtejmi/dropbox_home

3️⃣ Muntar Dropbox dins aquesta carpeta (bind mount)

bash

sudo mount --bind /volume2/dropbox /volume2/homes/urqtejmi/dropbox_home
  • Ara dropbox_home mostra el contingut real de /volume2/dropbox.
  • File Station la veu com una carpeta normal dins home.
  • Synology Drive Client la pot sincronitzar sense restriccions.

4️⃣ Validar

bash

ls -l /volume2/homes/urqtejmi/dropbox_home

→ Ha de mostrar els fitxers de Dropbox.

5️⃣ Configurar Synology Drive Client

  • Obrir Drive Client.
  • Seleccionar la carpeta home/dropbox_home.
  • Sincronitzar amb la carpeta local desitjada.

6️⃣ (Opcional) Fer el muntatge permanent

Perquè el bind mount persisteixi després de reiniciar:

Afegir aquesta línia a /etc/fstab:

Codi

/volume2/dropbox /volume2/homes/urqtejmi/dropbox_home none bind 0 0

o bé crear un script d’inici a /usr/local/etc/rc.d/.

✅ Resultat final

  • Dropbox és visible dins home com dropbox_home.
  • Synology Drive Client la pot sincronitzar.
  • No es dupliquen dades ni es perden permisos.

Vols que t’escrigui exactament la línia per a /etc/fstab adaptada al teu NAS (amb format i permisos correctes)?


Aquí tens la nota clara i concisa que em demanaves, Miquel — una guia curta per llançar Synology Drive Client a Deepin quan ho vulguis, sense haver de tornar a investigar res.

🟦 Com llançar Synology Drive Client a Deepin (resum definitiu)

1) Ruta real del programa

A Deepin, Synology Drive Client s’instal·la a:

Codi

/opt/Synology/SynologyDrive/bin/

El programa principal és:

Codi

launcher

🟦 2) Llançar-lo manualment (funciona sempre)

Comanda recomanada:

bash

LD_LIBRARY_PATH=/opt/Synology/SynologyDrive/lib /opt/Synology/SynologyDrive/bin/launcher &

Això és important perquè Deepin no carrega automàticament les biblioteques Qt que porta Synology Drive. Afegint LD_LIBRARY_PATH, el client arrenca sense errors.

🟦 3) Llançament permanent (opcional)

Si vols que funcioni sempre sense afegir LD_LIBRARY_PATH, pots fer-ho persistent:

Opció A: només per a l’usuari Miquel

bash

echo 'export LD_LIBRARY_PATH=/opt/Synology/SynologyDrive/lib:$LD_LIBRARY_PATH' >> ~/.profile

Opció B: per a tot el sistema

bash

echo '/opt/Synology/SynologyDrive/lib' | sudo tee /etc/ld.so.conf.d/synology-drive.conf
sudo ldconfig

Després d’això, pots arrencar-lo simplement amb:

bash

/opt/Synology/SynologyDrive/bin/launcher &

🟦 4) Comprovar que està corrent

bash

ps aux | grep synology

Si veus processos com:

  • launcher
  • synology-drive
  • synology-drive-ui

→ el client està actiu.

🟦 5) On apareix la interfície

Quan arrenca, apareix:

  • la finestra de connexió al NAS
  • la icona de Synology Drive a la barra inferior/superior de Deepin

🟩 Nota final

Amb aquesta guia tens tot el necessari per arrencar Synology Drive Client a Deepin sempre que vulguis, sense errors de biblioteques i sense haver de recordar rutes.

Demà, quan continuem, podem deixar configurada la sincronització perfecta entre:

  • ~/dropbox_home
  • /volume2/dropbox del NAS

perquè Dropbox i Synology Drive treballin com una sola carpeta.

⭐📘 Instal·lar dropbox a Deepin (linux) replicant/syncronitzant a /volume2/web/dropbox (xarxa NAS) com si fos una carpeta local

Objectiu

L’objectiu es instal·lar Dropbox com si fos una carpeta local. Això facilitar`l’accés sense consumir espai de memòria. Dropxox, la munta automàticament en cada reinici.


1) Instal·lar suport SMB/CIFS

(Deepin ja ho porta, però ho validem)

Codi

sudo apt install cifs-utils

2) Crear el punt de muntatge



sudo mkdir -p /mnt/dropbox

3) Crear credencials segures

Això evita posar la contrasenya al fstab.

Codi

sudo nano /etc/samba/dropbox.creds

Dins hi poses:

Codi

username=MIQUEL

password=LA_TEVA_CONTRASENYA

Protegeix el fitxer:

Codi

sudo chmod 600 /etc/samba/dropbox.creds

4) Afegir el muntatge permanent al fstab

Obre el fitxer:

Codi

sudo nano /etc/fstab

Afegeix aquesta línia (adaptada per a Dropbox):

Codi

# Carpeta compartida del Synology per a Dropbox

//192.168.1.41/web /mnt/dropbox cifs credentials=/etc/samba/dropbox.creds,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,nobrl,cache=none,iocharset=utf8,vers=3.0,nofail,_netdev,x-systemd.automount 0 0


Recarrega systemd (imprescindible)

sudo systemctl daemon-reload

5) fer el muntatge i provar

Això fa que Deepin i el calibre (local) vegi calibre-library una carpeta local i que funcioni speech-dispatcher.

Codi

sudo mount -a

Si no surt cap error:

comprovar que la carpeta drpbox s’ha creat:

Aquesta carpeta de fet es una carpeta virtual que no ocupa espai del Deepin però visualitza tota la carpeta web del synology. Aquest no era em meu objectiu, però els muntajes només es poden fer amb carpetes compartides i dropbox penja de web/dropbox. Això se soluciona posant un enllaç just de dropbox a la barra lateral


.

afegim un fitge de prova.txt a

Deepin

comprovem que s’incronitza amb Synology

i amb mòbil

⭐📚 Instal·lar Calibre natiu a Deepin (sense Linglong) perquè la lectura en veu alta funcioni

Perfecte, et preparo una guia completa i ben estructurada per al teu blog. 📝 La tens a punt per publicar:


📚 Guia: Instal·lar Calibre natiu a Deepin (sense Linglong) perquè la lectura en veu alta funcioni

🐛 El problema

Quan instal·les Calibre des de la botiga Deepin, obtens la versió Linglong, que s’executa dins d’un sandbox (contenidor d’aïllament). Aquest sandbox bloqueja l’accés al socket de speech-dispatcher, el servei de síntesi de veu del sistema.

Símptoma: en intentar activar la lectura en veu alta, apareix:

«ERROR: Text-to-Speech unavailable — Could not find speech-dispatcher on your system. Please install it.»

🔍 Per què passa això?

El sandboxing de Linglong aïlla completament l’aplicació del sistema: no veu ni els processos, ni els sockets, ni els serveis de l’hoste. Tot i que speech-dispatcher estigui instal·lat i funcionant, l’aplicació en sandbox no el pot veure.

La solució: instal·lar la versió nativa de Calibre, que s’executa directament al sistema sense cap capa d’aïllament.


✅ Solució en 4 passos

Pas 1 — Desinstal·la la versió Linglong

# Mira si la tens instal·lada
ll-cli list | grep -i calibre

# Desinstal·la-la (substitueix pel nom exacte que et surti)
ll-cli uninstall com.calibre-ebook.calibre

Pas 2 — Instal·la el servei de veu (speech-dispatcher)

sudo apt update
sudo apt install speech-dispatcher speech-dispatcher-espeak-ng espeak-ng

(espeak-ng inclou la veu en català)

Pas 3 — Instal·la Calibre natiu amb l’instal·lador oficial

L’instal·lador oficial de Calibre ho posa tot a /opt/calibre, amb el seu propi Python i Qt inclosos, evitant els conflictes de dependències de Deepin 23 (que té Python 3.12 i Qt6 més nous que els dels repositoris Debian):

sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

(Et demanarà la contrasenya — un cop per cada sudo)

Quan acabi, obre Calibre:

calibre

Pas 4 — Prova la veu en català

spd-say -l ca "Hola, aquest és el Calibre natiu llegint en català"

Si sents la veu, ja ho tens! 🎉


Hem de muntar la llibreria calibre del synology a deepin

sudo mkdir -p /mnt/calibre-library
sudo mount /mnt/calibre-library
ls /mnt/calibre-library

🌐 Calibre a la xarxa: també parlarà?

Sí, sempre que el speech-dispatcher estigui al mateix lloc on s’executa Calibre:

  • Calibre natiu al teu PC → funciona directament, perquè accedeix al socket del teu sistema.
  • Calibre dins d’un contenidor Docker → el contenidor ha de tenir speech-dispatcher instal·lat dins del contenidor (o exposar el socket del hoste com a volum).
  • Calibre-Web (interfície web) → la veu depèn del navegador (Web Speech API), que no necessita speech-dispatcher al servidor.

💡 Consell per a Docker

Si fas servir la imatge oficial de Calibre en Docker i vols TTS, afegeix al contenidor:

apt install speech-dispatcher espeak-ng

o munta el socket del hoste:

-v /run/user/1000/speech-dispatcher:/run/speech-dispatcher

⚠️ Què NO has de fer

OpcióPer què no
Linglong (botiga Deepin)Sandbox → sense accés al socket de veu ❌
FlatpakTambé és sandbox → mateix problema ❌
sudo apt install calibreConflictes de dependències a Deepin 23 (Python 3.12 / Qt6) ❌
OpcióPer què sí
Instal·lador oficial100% natiu, autocontingut, veu garantida ✅

📌 Resum ràpid

1. Desinstal·lar Linglong   → ll-cli uninstall com.calibre-ebook.calibre
2. Instal·lar la veu        → sudo apt install speech-dispatcher espeak-ng
3. Instal·lar Calibre natiu → instal·lador oficial (download.calibre-ebook.com)
4. Provar                   → spd-say -l ca "Hola"

Ja ho tens! Si vols, t’ho puc adaptar en format Markdown perquè el copiïs directament al blog, o afegir-hi captures de pantalla / secció de preguntes freqüents. 😊

⭐📘 Instal·lar Calibre a Deepin (linux) usant /volume2/llibres_deepin (xarxa NAS) com si fos una carpeta local

🎯 Objectiu

L’objectiu es instal·lar calibre a Deepin amb una llibreria compartida com si fos una carpeta local. Això permet que Calibre pugui parlar amb Speech-Dispatcher i també no consumir espai de memòria. Calibre, la munta automàticament en cada reinici.


1) Instal·lar suport SMB/CIFS

(Deepin ja ho porta, però ho validem)

Codi

sudo apt install cifs-utils

2) Crear el punt de muntatge

Escull on vols que Deepin tingui la carpeta del Calibre. Recomanat:

Codi

sudo mkdir -p /mnt/calibre-library

3) Crear credencials segures

Això evita posar la contrasenya al fstab.

Codi

sudo nano /etc/samba/calibre.creds

Dins hi poses:

Codi

username=MIQUEL
password=LA_TEVA_CONTRASENYA

Protegeix el fitxer:

Codi

sudo chmod 600 /etc/samba/calibre.creds

4) Afegir el muntatge permanent al fstab

Obre el fitxer:

Codi

sudo nano /etc/fstab

Afegeix aquesta línia (adaptada per Calibre):

Codi

# Carpeta compartida del Synology per a Calibre
//192.168.1.41/llibres_deepin   /mnt/calibre-library   cifs   credentials=/etc/samba/calibre.creds,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,nobrl,cache=none,iocharset=utf8,vers=3.0,nofail,_netdev,x-systemd.>

Explicació ràpida:

  • //192.168.1.41/llibres_deepin → carpeta compartida del Synology
  • /mnt/calibre-librey → punt de muntatge a Deepin
  • vers=3.0 → SMB3 (el que usa Synology)
  • nofail → Deepin arrenca encara que el NAS estigui apagat
  • uid/gid=1000 → Calibre pot llegir i escriure sense problemes
  • credentials=… → contrasenya segura
  • –

Recarrega systemd (imprescindible)

sudo systemctl daemon-reload

5) fer el muntatge i provar

Això fa que Deepin i el calibre (local) vegi calibre-library una carpeta local i que funcioni speech-dispatcher.

Codi

sudo mount -a

Si no surt cap error:

Codi

ls /mnt/calibre-library

Si hi veus els llibres → muntatge OK i persistent.

6) Configurar Calibre-library

A Calibre:

  1. Preferències → Avançat → Ubicació de la biblioteca
  2. Selecciona: /mnt/calibre-library
  3. Guarda i reinicia Calibre.

7) Validació final

Reinicia Deepin i comprova:

Codi

ls /mnt/calibre-library

Si hi surt la llibreria → ja tens Synology + Deepin + Calibre funcionant de manera automàtica.

Obrim calibre local: /opt/calibre/calibre

Per pasar a la llibreria de xarxa, ara muntada a /mnt/calibre-library:

choose i ja esta:

comprovem la veu:

Hi ha muntanyes d’idiomes a Deepin (linux)

⭐ 📚 Calibre (app taulell) amb la llibreria al Synology, des de Deepin

Guia completa: com obrir el Calibre des del terminal de Deepin (instal·lat des del taulell d’aplicacions)i com instal·lar el Calibre al Synology per tenir la biblioteca centralitzada al NAS.

Part 1 — Obrir el Calibre des del terminal de Deepin

El Calibre de Deepin s’instal·la com a aplicació Linglong (el format d’empaquetatge propi de Deepin). Per tant, no es llança amb una comanda normal, sinó amb ll-cli.

1. Comprovar que el Calibre està instal·lat

ll-cli list | grep -i calibre

Hauries de veure una línia com aquesta:

com.calibre-ebook.calibre   6.29.0.2   main   binary   calibre is a powerful and easy to use e-book manager.

2. Obrir el Calibre des del terminal

ll-cli run com.calibre-ebook.calibre

Si tens més d’una versió instal·lada i vols executar-ne una de concreta:

ll-cli run com.calibre-ebook.calibre/6.29.0.2

3. Muntar la llibreria del Synology

Si la teva biblioteca viu al NAS (com en el meu cas, a la carpeta llibres_deepin), cal muntar-la com a carpeta local perquè el Calibre hi pugui treballar.

Instal·lar les eines de muntatge SMB:

sudo apt install cifs-utils

Crear el fitxer de credencials (/etc/samba/calibre.creds):

username=EL_TEU_USUARI
password=LA_TEVA_CONTRASENYA

Protegir-lo:

sudo chmod 600 /etc/samba/calibre.creds

Afegir el muntatge permanent al /etc/fstab:

//192.168.1.41/llibres_deepin  /mnt/calibre-library  cifs  credentials=/etc/samba/calibre.creds,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,nobrl,cache=none,iocharset=utf8,vers=3.0,nofail  0  0

💡 Les opcions nobrl i cache=none són clau per evitar bloquejos o corrupció de la base de dades SQLite del Calibre quan treballa sobre xarxa.

Muntar i comprovar:

sudo mkdir -p /mnt/calibre-library
sudo mount /mnt/calibre-library
ls /mnt/calibre-library

4. Apuntar el Calibre a la llibreria del NAS

Al Calibre: Canvia/Crea una llibreria → Fes servir una altra llibreria existent i navega fins a /mnt/calibre-library.

A partir d’aquí, el Calibre obre directament la llibreria del Synology, i el muntatge es fa sol a cada reinici gràcies al fstab.


Part 2 — Instal·lar el Calibre al Synology

Per tenir el Calibre funcionant al mateix NAS (com a servidor de contingut, accessible des de qualsevol dispositiu), la manera més neta és amb Docker.

Opció A — Docker (recomanada)

  1. Obre el Centre de paquets del DSM i instal·la Docker (o Container Manager a DSM 7.2+).
  2. Obre Docker → Registre → busca linuxserver/calibre → descarrega la imatge.
  3. A Contenidor → Crea → configura:
ParàmetreValor
Volum/config → carpeta de configuració al NAS
Volum/books → la teva llibreria (llibres_deepin)
Port8080:8080 (HTTP) i 8081:8081 (HTTPS)
VariablesPUID=1024, PGID=100, TZ=Europe/Madrid
  1. Inicia el contenidor i obre http://IP_DEL_SYNOLOGY:8080 des del navegador.

Per línia de comandes (SSH al NAS):

sudo docker run -d \
  --name=calibre \
  -e PUID=1024 -e PGID=100 -e TZ=Europe/Madrid \
  -p 8080:8080 -p 8081:8081 \
  -v /volume1/docker/calibre/config:/config \
  -v /volume1/llibres_deepin:/books \
  --restart unless-stopped \
  linuxserver/calibre

Opció B — Paquet SynoCommunity

  1. A DSM, afegeix el repositori de SynoCommunity (Centre de paquets → Configuració → Fonts de confiança).
  2. Cerca Calibre i instal·la’l.
  3. El servei quedarà actiu i accessible per xarxa.

Accedir-hi des del Deepin

Amb el servidor de contingut del Calibre actiu al Synology, des del Calibre local (Deepin) pots connectar-t’hi:

  • Connectar i compartir → Connecta’t al servidor de contingut → http://IP_DEL_SYNOLOGY:8080
  • O des del navegador de qualsevol dispositiu: http://IP_DEL_SYNOLOGY:8080 (interfície OPDS per a lectors com el Kindle o l’Android).

Resum de comandes útils:

ll-cli list | grep -i calibre        # veure la versió Linglong
ll-cli run com.calibre-ebook.calibre # obrir el Calibre
sudo mount /mnt/calibre-library       # muntar la llibreria del NAS

Si vols, et puc desar aquest post en un fitxer Markdown al teu ordinador (per exemple calibre-synology-deepin.md) perquè el tinguis llest per publicar o adaptar. T’ho faig? 😊

Aquí tens la nota preparada, llesta per enganxar al peu de l’entrada! 📝


📌 Nota d’observacions

a) La comanda calibre no arrenca res — Després d’instal·lar el Calibre natiu a /opt/calibre, la comanda calibre no funciona perquè l’instal·lador no va poder crear els enllaços a /usr/bin. Solució: crear l’enllaç manualment o usar la ruta completa amb la llibreria del Synology:

sudo ln -s /opt/calibre/calibre /usr/local/bin/calibre
/opt/calibre/calibre --with-library /mnt/calibre-library

b) El Calibre local també «recupera» la llibreria del Synology — Tant la versió Linglong com la nativa llegeixen la mateixa configuració (~/.config/calibre) i la llibreria viu al NAS (muntada a /mnt/calibre-library). Per això, amb qualsevol de les dues versions es veuen els mateixos llibres, sense duplicar res.

c) A Deepin (Unix) hi ha moltes més llengües que a Windows — El Calibre a Linux fa servir speech-dispatcher amb el motor espeak-ng, que suporta unes 100 llengües (català, castellà, èuscar, gallec…). A Windows, en canvi, només té les veus SAPI que tinguis instal·lades al sistema, que acostumen a ser poques.

d) El Calibre fa servir speech-dispatcher, no Python — Tot i que el missatge d’error pot fer dubtar, la síntesi de veu del Calibre passa per Qt (QTextToSpeech) → plugin speechd → speech-dispatcher → espeak-ng. Python és el llenguatge en què està escrit el programa, però no intervé en la veu. La confusió amb Firefox/Edge ve de Windows: allà tots dos navegadors fan servir les veus del sistema (SAPI), per això sonen igual; a Linux, Firefox no fa servir speech-dispatcher.


Si la vols amb una mica més d’estil (com una caixa destacada al final de l’article), només cal dir-m’ho i te la maqueto diferent. Gracies a tu! 😊

Veus($lang, $text, ‘🔊’)



Alternativa amb speech-dispatcher

Sí, i és ben senzill! 👌 Tens dues vies per fer la mateixa funció veus($lang, $tex) sense Python:

1. Amb speech-dispatcher → espeak-ng (via spd-say)

veus() {
  spd-say -l "$1" "$2"
}

Ús: veus ca "Hola, això és una prova" o veus en "Hello world"

Si la vols dins de Python igual que ara, només canvia la crida:

import subprocess

def veus(lang, text):
    subprocess.run(["spd-say", "-l", lang, text])

2. Amb espeak-ng directament (sense daemon)

veus() {
  espeak-ng -v "$1" "$2"
}

I en Python:

import subprocess

def veus(lang, text):
    subprocess.run(["espeak-ng", "-v", lang, text])

Diferència: la via 1 passa pel servei speech-dispatcher (més lent però unificat amb tot el sistema); la via 2 crida el motor directament (més ràpid i sense dependre de cap servei). Per a una funció pròpia, la via 2 sol ser més pràctica.

2. És gratuït? Qui n’és el propietari?

  • Gratuït? Sí, totalment. És programari lliure sota llicència GPL-3.0 (codi obert, sense cap cost).
  • Propietari? Cap empresa.espeak-ng és un projecte comunitari de codi obert, sense propietari comercial:
    • Va començar com a eSpeak, creat per Jonathan Duddington (també sense empresa al darrere).
    • espeak-ng és el fork comunitari mantingut per voluntaris, amb Reece H. Dunn com a mantenidor principal.
    • S’allotja a GitHub (espeak-ng/espeak-ng).

Per tant, és lliure, gratuït i obert: el pots usar, modificar i redistribuir sense pagar res a ningú. 🎉

Perfecte! Doncs quan acabis les teves coses pendents, aquí hi serem. 😊

I sí, tens tota la raó: espeak-ng directe és més ràpid perquè salta el daemon (speech-dispatcher) i parla amb el motor cara a cara. La diferència es nota sobretot en frases curtes o si fas moltes crides seguides.

Queda anotat per quan vulguis:

  1. ✅ Calibre natiu a /opt/calibre amb accés al TTS
  2. ⏳ Funció veus($lang, $tex) amb espeak-ng directe (substituint Python)
  3. ⏳ Post del blog amb tota la documentació (incloent les observacions a, b, c, d)

Quan tornis, ho enllestim! 🚀

Prova de veus

Amb el (venv) actiu i situat a /volume2/web/polidic:

🇷🇺 Prova de rus

gtts-cli "Здравствуйте, это проверка русского языка." --lang ru --output prova_ru.mp3

find /volume2/web/polidic -name ‘prova_eu.mp3’ -o -name ‘prova_es.mp3’

🇸🇪 Prova de suec

gtts-cli "Hej, det här är ett test av det svenska språket." --lang sv --output prova_sv.mp3

Permisos de les carpetes TTSW

Resum curt

Perfecte — ja tens el TTS funcionant. A continuació tens la configuració de permisos recomanada i les comandes exactes per aplicar‑la de manera segura.

Permisos recomanats (resum en taula)

RutaPropietari:GrupPermisosPropòsit
/volume2/web/beseit/ttswurqtejmi:users775Projecte; permet treballar al propietari i al grup
/volume2/web/beseit/ttsw/venvhttp:http755Entorn virtual usat per php‑fpm (evita donar escriptura a altres)
/volume2/web/beseit/ttsw/venv/bin/http:httprwxr-xr-x (755)Scripts executables del venv
/volume2/web/beseit/ttsw/venv/* (fitxers)http:httprw-r–r– (644)Fitxers del venv (pyvenv.cfg, libs, etc.)
/volume2/web/beseit/ttsw/tts.pyurqtejmi:users644 (o 755 si s’executa directament)Codi del projecte; lectura per a http, execució només si cal

Comandes exactes per aplicar-ho

Copia i enganxa aquestes comandes al teu terminal:

bash

# 1. directori del projecte (propietari teu usuari)
sudo chown -R urqtejmi:users /volume2/web/beseit/ttsw
sudo chmod 775 /volume2/web/beseit/ttsw

# 2. entorn virtual: propietari http i permisos segurs
sudo chown -R http:http /volume2/web/beseit/ttsw/venv
sudo find /volume2/web/beseit/ttsw/venv -type d -exec chmod 755 {} \;
sudo find /volume2/web/beseit/ttsw/venv -type f -exec chmod 644 {} \;

# 3. assegurar que els binaris són executables
sudo chmod a+rx /volume2/web/beseit/ttsw/venv/bin/*

# 4. fitxer del script TTS (lectura per a http)
sudo chown urqtejmi:users /volume2/web/beseit/ttsw/tts.py
sudo chmod 644 /volume2/web/beseit/ttsw/tts.py
# si vols executar-lo directament com a script (shebang), fer:
# sudo chmod 755 /volume2/web/beseit/ttsw/tts.py

Notes de seguretat i bones pràctiques

  • Per què http:http al venv: evita haver d’obrir permisos a “others” i limita la capacitat d’escriure dins l’entorn només al servei web.
  • Per què 775 al projecte: et permet a tu i al grup editar fitxers sense exposar‑los a tots els usuaris del sistema. Si no necessites que altres del grup accedeixin, usa 750.
  • No deixis 777: evita permisos 777 en directoris de projecte en producció.
  • Reinicia php‑fpm després de canviar propietaris o grups perquè els processos agafin els nous permisos.

Proves finals recomanades

Després d’aplicar els canvis, comprova:

bash

# provar python i l'import com a http
sudo -u http /volume2/web/beseit/ttsw/venv/bin/python -V
sudo -u http /volume2/web/beseit/ttsw/venv/bin/python -c "from gtts import gTTS; print('gTTS OK')"

# provar el script complet
cd /volume2/web/beseit/ttsw
sudo -u http /volume2/web/beseit/ttsw/venv/bin/python tts.py prova.txt prova.mp3 2>&1 | tee /tmp/tts-run.log
ls -lh prova.mp3
tail -n 200 /tmp/tts-run.log

Si vols, et dono un únic script que aplica tots els canvis i fa les proves automàticament; també puc explicar com integrar la ruta del venv/bin/python al teu PHP de forma robusta. Quin prefereixes?

Proves de veu amb Python

Prova 1

Ens situem sobre la carpeta on s’ha creat l’espai virtual TTSW i executem el fitxer de prova.txt amb el text carregat prèviament i executem l’escript tts.py que dona com sortida prova.mp3.

/volume1/web/ttsw/python3 tts.py prova.txt prova.mp3

/volume1/web/ttsw/venv/bin/python3 tts.py prova.txt prova.mp3

/volume1/web/ttsw/venv/bin/python3 tts.py prova.txt prova.mp3

o

/volume2/web/ttsw/venv/bin/python3 tts.py prova.txt prova.mp3



(venv) urqtejmi@synology_vall:/volume2/web/polidic$ python3.12 –version Python 3.12.13 (venv) urqtejmi@synology_vall:/volume2/web/polidic$ // voldria fer una prova de veu amb ttsg-cli pel terminal

Sí. I una petita correcció: crec que et refereixes a gtts-cli, la línia de comandes de gTTS, no ttsg-cli. gtts-cli permet generar un MP3 directament des del terminal i indicar l’idioma.

Com que ara tens el venv actiu i Python 3.12.13, jo faria la prova pas a pas.

1. Comprovar que estem dins del Python 3.12

python3 --version
which python3

Hauria de donar:

Python 3.12.13
/volume2/web/polidic/venv/bin/python3

2. Instal·lar gTTS dins d’aquest venv

python3 -m pip install gTTS

Això instal·larà gTTS dins de /volume2/web/polidic/venv, no al Python del sistema. La documentació oficial indica pip install gTTS com a instal·lació.

3. Comprovar gtts-cli

which gtts-cli

Hauria de sortir:

/volume2/web/polidic/venv/bin/gtts-cli

I:

gtts-cli --version

4. Primera prova en català

gtts-cli "Hola, sóc el Synology i estic parlant amb Python 3.12." --lang ca --output prova_ca.mp3

Si tot va bé:

ls -lh prova_ca.mp3

hauràs de tenir el fitxer MP3.

5. I podem provar anglès

gtts-cli "Hello, this is a test of Python 3.12." --lang en --output prova_en.mp3

I castellà:

gtts-cli "Hola, esta es una prueba de voz." --lang es --output prova_es.mp3

gtts-cli admet --lang i --output precisament per això.

Jo faria ara només els passos 1 i 2:

python3 --version
which python3
python3 -m pip install gTTS

Passa’m la sortida i després comprovarem que gtts-cli està realment dins del venv abans de generar cap veu.

Sí. I una petita correcció: crec que et refereixes a gtts-cli, la línia de comandes de gTTS, no ttsg-cli. gtts-cli permet generar un MP3 directament des del terminal i indicar l’idioma. (gTTS)

Com que ara tens el venv actiu i Python 3.12.13, jo faria la prova pas a pas.

1. Comprovar que estem dins del Python 3.12

python3 --version
which python3

Hauria de donar:

Python 3.12.13
/volume2/web/polidic/venv/bin/python3

2. Instal·lar gTTS dins d’aquest venv

python3 -m pip install gTTS

Això instal·larà gTTS dins de /volume2/web/polidic/venv, no al Python del sistema. La documentació oficial indica pip install gTTS com a instal·lació. (gTTS)

3. Comprovar gtts-cli

which gtts-cli

Hauria de sortir:

/volume2/web/polidic/venv/bin/gtts-cli

I:

gtts-cli --version

4. Primera prova en català

gtts-cli "Hola, sóc el Synology i estic parlant amb Python 3.12." --lang ca --output prova_ca.mp3

Si tot va bé:

ls -lh prova_ca.mp3

hauràs de tenir el fitxer MP3.

5. I podem provar anglès

gtts-cli "Hello, this is a test of Python 3.12." --lang en --output prova_en.mp3

I castellà:

gtts-cli "Hola, esta es una prueba de voz." --lang es --output prova_es.mp3

gtts-cli admet --lang i --output precisament per això. (gTTS)

Jo faria ara només els passos 1 i 2:

python3 --version
which python3
python3 -m pip install gTTS

Passa’m la sortida i després comprovarem que gtts-cli està realment dins del venv abans de generar cap veu.