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.

⭐📘 Instal·lar dropbox a Deepin (linux) replicant/syncronitzant a /volume2/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. Dropbox es 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 web/Dropbox):

Codi

# Carpeta compartida del Synology per a Dropbox

//192.168.1.41/dropbox /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

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

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.

python3 –version al synology-> /usr/local/bin/python3 –version

/usr/local/bin/python3 --version

/usr/local/bin/python3 no està incorporat al PATH (nano ~/.profile : export PATH=»/usr/local/bin:$PATH») i per tant python3 –version no funciona.

s’ha de posar:

/usr/local/bin/python3 --version
/usr/local/bin/python3 --version

llançar el servidor:

python3 -m http.server 5060

/usr/local/bin/python3 -m http.server 5060

Synology permet associar noms de domini a adreces IP fixes internes

proves,local es el servidor Synology_sec amb ip adsads

El fitxer /etc/hosts és un arxiu del sistema que permet associar adreces IP a noms de domini o host sense necessitat d’utilitzar un servidor DNS. Això és útil per a:

Com afegir una nova IP fixa

  • Definir noms de màquines en una xarxa local.
  • Bloquejar dominis indesitjats.
  • Assignar adreces IP fixes a determinats serveis.
  1. Obrir el fitxer /etc/hosts per editar-lo:
sudo nano /etc/hosts
Afegir una nova línia amb la IP i el nom d'amfitrió:
192.168.1.100   servidor-local

  1. Guardar els canvis
  2. Si fas servir nano, prem Ctrl + X, després Y i Enter.

Verificar que funciona correctament:

ping servidor-local

Crear un subdomini al Synology

En primer lloc, hem d’entrar al proveïdor de dominis en el meu cas Entorno digital i crear el subdomini. No entrarà en funciona fins passat un temps de propagació per la xarxa.(pot ser més de 24 hores).

Ara obrim el Synology i entrem a web station i premem crear


Agafo el servei ccc-urquizu-info o en creo un específic per al subdomini, on es pot especificar la versió de PHP a utilitzar i altres configuracions.polidic, de moment té problemes amb la versió 8.0

Aquesta part és la més important observar que aquí es defineix on ha d’apuntar el subdomin: ccc.urquizu.info. Ara només hem de prémer crear

Ara ja està creat. Però encara hem de definir a quina carpeta de www apunta que pot ser diferent de urquizu. En aquest cas serà 0capsa_dic

Hem de crear el servei web-> crear

Pagina web amb Synology. Web station Polic.cat

  • 1 Configuració de llenguatge de script

Aquí s’ha de definir el llenguatge i la versió; php 7.4 per exemple

Encara que hi ha ja la versió 8.2 l’escript polidic en aquesta versió només accepta fins 7.4

També les extensions. he agafat les del wordpress

  • 2 Servei web aquí es defineix la carpeta on hi és l’escript en aquest cas: web/polidic
  • Si no existeix s’ha de crear. Agafar script natiu
  • 3 Portal web
  • 4 fonamental has de tenir configurades les DNS al teu domini en aquest cas polidic.cat a domini digital