Bonjour à tous,
Aujourd'hui, je vous propose un tutorial pou installer Sync-In sur votre Synology via Container Manager et derrière le reverse proxy NPM (Ngnix Proxy Manager).
Sync-in est une plateforme open source sécurisée pour stocker, partager, synchroniser et collaborer sur vos fichiers.
Elle se présente comme une alternative à ownCloud, nextCloud ou encore à Synology Drive.
La plateforme open source Sync-in a été créé par Johan Legrand, un développeur français et elle est développée en TypeScript,
Pour avoir plus d'info, voici les sources que j'ai utilisé pour réussir la mise en place :
Il nous faut donc :

Dans le dossier onlyoffice, il faut créer :

Mais sur Synology, le propriétaire du dossier /volume1/docker/sync-in/mariadb peut parfois empêcher MariaDB de créer les fichiers initiaux s’il n’a pas les bonnes permissions en écriture.
Résultat :
Action : Il faut alors donner les droits à l'utilisateur mysql du conteneur au dossier /volume1/docker/sync-in/mariadb.
Connecter vous en SSH à votre NAS (je ne détaille pas cette action) avec le compte root et taper ces deux commandes :
	
	
	
		
Pour réaliser le fichier, toutes les infos sont disponible ici : https://sync-in.com/fr/docs/setup-guide/server
Voici mes conseils :
	
	
	
		
Il faut modifier en fonction de vos infos :
	
		
 en SSH.
La seconde est de créé un projet :

Voici le docker-compose :
	
	
	
		
Il faut modifier en fonction de vos infos :
Il est important de vérifier le correspondance du mot de base de la base maria db entre le docker-compose.yaml et environment.yaml.
Même chose pour le secret d'OnlyOffice.
Enregistrer mais ne lancer pas le projet, nous allons faire la partie reverse proxy avant.
sync-in doit pointer vers http://VOTRE_IP_DU_NAS:33000
syncin-onlyoffice http://VOTRE_IP_DU_NAS:33005
Les ports doivent etre identique à ceux incorporer dans le docker-compse.
Toutes les infos pour réussir sont là : https://sync-in.com/fr/docs/setup-guide/proxy
Je n'ai pas essayé avec le reverse proxy de Synology et je ne suis pas sur qu'il puisse avoir toutes les options nécessaire. Je ne pourrais pas vous accompagner si vous voulez essayer avec lui.
De plus je ne vais pas expliquer comment avoir un certificat pour votre sous domaine. Pour ceux avec un site chez OVH, je vous conseil ce tuto pour avoir un certificat wilcard : https://domopi.eu/configurer-un-certificat-lets-encrypt-wildcard-avec-npm/
Pour éviter de parler plus, voici les captures d'écrans :
Pour le sous domaine syncin.votredomaine.fr



Dans advanced veuillez copier/coller l'info du dessous en adaptant votre IP du NAS :
	
	
	
		
Faire la même chose avec un second host pour onlyoffice.votredomaine.fr



Dans advanced veuillez copier/coller l'info du dessous :
	
	
	
		
Attention, il faut attendre au moins 5 minutes que l'instance sync-db (mariadb) ce lance et initialise la base.
Je vous conseille de couper votre conteneur sync-in, pendant ce temps.
Si vous voulez etre sûr que sync-in ce lance, vérifier les logs de sync-db. Si vous voyer apparaitre cela, il est ok :

Il vous reste plus qu'à vous connecter avec le compte administrateur et le mot de passe mis dans le docker-compose :

Amusez vous bien. Et changer de suite le mot de passe administrateur.
Je ne détail pas l'utilisation mais sachez qu'il est possible de faire monter un dossier webdav sur Windows. Ou d'installer une application (https://sync-in.com/fr/downloads) pour accéder aux documents. Vous pouvez activer le MFA
Merci de m'avoir lu.
PS : Désolé pour mes éventuelles fautes, je n'ai pas utilisé l'IA pour faire le tuto.
PS2 : Le nom de domaine tsubasa.fr est bien fictif.
PS3: Je vous préparer un tuto sur Nextcloud AIO
				
			Aujourd'hui, je vous propose un tutorial pou installer Sync-In sur votre Synology via Container Manager et derrière le reverse proxy NPM (Ngnix Proxy Manager).
Sync-in est une plateforme open source sécurisée pour stocker, partager, synchroniser et collaborer sur vos fichiers.
Elle se présente comme une alternative à ownCloud, nextCloud ou encore à Synology Drive.
La plateforme open source Sync-in a été créé par Johan Legrand, un développeur français et elle est développée en TypeScript,
Pour avoir plus d'info, voici les sources que j'ai utilisé pour réussir la mise en place :
- https://sync-in.com/fr/docs/category/installation--setup
- https://www.it-connect.fr/tuto-sync-in-plateforme-collaborative-open-source/
- https://belginux.com/installer-sync-in-avec-docker/
- Savoir ce connecté en SSH au NAS
- Avoir 1Go ou 2 Go de mémoire à allouer au projet
- Avoir Docker Engine version 24 ou supérieure (ok sous DSM 7)
- Avoir NPM d'installer pour la gestion du certificat et gérer les 2 host nécessaire.
- Connaitre le PUID & le PGID de l'utilisateur Synology ayant les droits sur le dossier /volume1/docker
- Étape 1 : création des dossiers.
Il nous faut donc :
- data
- mariadb
- onlyoffice
- static

Dans le dossier onlyoffice, il faut créer :
- logs
- data
- redis
- rabbitmq
- lib
- fonts
- database

- Étape 2 : Donner les droits
Mais sur Synology, le propriétaire du dossier /volume1/docker/sync-in/mariadb peut parfois empêcher MariaDB de créer les fichiers initiaux s’il n’a pas les bonnes permissions en écriture.
Résultat :
- MariaDB croit initialiser la base.
- Mais il n’arrive pas à écrire les fichiers système.
- Et il ignore totalement les variables d’environnement (MARIADB_ROOT_PASSWORD, etc.).
- Donc : tu te retrouves sans mot de passe root valide.
Action : Il faut alors donner les droits à l'utilisateur mysql du conteneur au dossier /volume1/docker/sync-in/mariadb.
Connecter vous en SSH à votre NAS (je ne détaille pas cette action) avec le compte root et taper ces deux commandes :
		Code:
	
	chown -R 999:999 /volume1/docker/sync-in/mariadb
chmod -R 770 /volume1/docker/sync-in/mariadb- Étape 3 : Création du fichier environment.yaml
Pour réaliser le fichier, toutes les infos sont disponible ici : https://sync-in.com/fr/docs/setup-guide/server
Voici mes conseils :
		YAML:
	
	# Toutes les infos dispo : https://sync-in.com/fr/docs/setup-guide/server
server:
  host: 0.0.0.0 # Adresse IP d'écoute du serveur
  trustProxy: true #Active la gestion des proxies ex. : number, true, false, ou IP https://sync-in.com/fr/docs/setup-guide/proxy#valeurs-possibles
mysql:
  url: "mysql://root:passwordmariadb@syncin-db:3306/sync_in" # Reprendre le même mot de passe du docker-compose - URL de connexion MySQL ex. : mysql://user:password@localhost:3306/database
mail:
  host: "smtp.mail.ovh.net" # Hôte du serveur SMTP
  port: 587
  sender: "Captain Tsubasa<captain@tsubasa.fr>" # Adresse d’envoi ex. : Sync-in<notification@sync-in.com>
  auth:
    user: "captain@tsubasa.fr" # Nom d’utilisateur SMTP
    pass: "passwordmail" # Mot de passe SMTP de votre boite mail.
  secure: false # Connexion SSL true ou false / Je laisse false afin de passer en STARTTLS.
  ignoreTLS: false # Désactive l’utilisation de STARTTLS même si le serveur l’annonce true ou false, par défaut : false
  rejectUnauthorized: true # Rejette la connexion si le certificat TLS du serveur est invalide true ou false, par défaut : false
  logger: false # Active les logs SMTP true ou false
  debug: false # Active le mode débogage true ou false
auth:
  #encryptionKey: keyxencrypt # Clé de chiffrement des secrets utilisateurs dans la base de données, optionnelle mais recommandée.
# Une fois la MFA activée, toute modification ou suppression de la clé de chiffrement rendra les secrets invalides, empêchant toute authentification ultérieure.
  mfa:
    totp:
      enabled: true # Activer l’authentification TOTP pour tous les utilisateurs true ou false, par défaut : true
      issuer: Sync-in # Nom affiché dans l’application d’authentification, valeur par défaut : Sync-in
  cookieSameSite: strict # Politique SameSite pour les cookies : lax, strict, par défaut : strict
  token:
    access:
      secret: keyxencrypt # Secret JWT pour les tokens d’accès
      expiration: "30m" # Durée de validité du token d’accès ex. : 30m
    refresh:
      secret: keyxencrypt # Secret JWT pour les tokens de rafraîchissement
      expiration: "4h" # Durée de validité du token de rafraîchissement ex. : 4h
applications:
  files:
    dataPath: /app/data # Chemin où sont stockées les données utilisateurs. Doit etre identique que l'environnement de l'instance sync-in : - /volume1/docker/sync-in/data:/app/data:rw
    maxUploadSize: 5368709120 # Taille maximale d’un fichier à téléverser par défaut : 5368709120 -> 5 Go
    onlyoffice:
      enabled: true # Active l’intégration OnlyOffice true ou false, par défaut : false
      externalServer: https://onlyoffice.tsubasa.fr # URL de votre serveur OnlyOffice ex. : https://onlyoffice.my-domain.com
      secret: keyxencrypt # Secret JWT partagé avec OnlyOffice. Doit etre identique que l'environnement de l'instance syncin-onlyoffice
      verifySSL: true # Vérifie le certificat SSL true ou false, par défaut : falseIl faut modifier en fonction de vos infos :
- sender: "Captain Tsubasa<captain@tsubasa.fr>
- user: "captain@tsubasa.fr"
- pass: "passwordmail"
- access: secret: keyxencrypt
- refresh: secret: keyxencrypt
- externalServer: https://onlyoffice.tsubasa.fr
- secret: keyxencrypt (onlyoffice)
		Code:
	
	openssl rand -hex 32- Étape 4 : Création du projet sync-in
La seconde est de créé un projet :

Voici le docker-compose :
		YAML:
	
	version: "3.8"
services:
  sync_in:
    image: syncin/server:latest
    container_name: sync-in
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "nc -z 127.0.0.1 8080 || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 90s
    depends_on:
      - mariadb
      - onlyoffice
    ports:
      - 33000:8080
    environment:
      - INIT_ADMIN=true
      - INIT_ADMIN_LOGIN=administrateur
      - INIT_ADMIN_PASSWORD=passwordsyncin # Eviter les caractéres spécial; Cela permet d'initialisé le compte administrateur. Je conseil de modifier le mot de passe à la 1er connexion.
      - PUID=1026 # A vérifier de votre coté
      - PGID=100 # A vérifier de votre coté
    volumes:
      - /volume1/docker/sync-in/environment.yaml:/app/environment/environment.yaml
      - /volume1/docker/sync-in/data:/app/data:rw
      - /volume1/docker/sync-in/static:/app/static/releases:ro
    logging:
      driver: json-file
      options:
        max-size: "25m"
        max-file: "5"
    networks:
      - syncin_network
  mariadb:
    image: mariadb:latest
    container_name: syncin-db
    restart: unless-stopped
    security_opt:
      - no-new-privileges=false
    command: --innodb_ft_cache_size=16000000 --max-allowed-packet=1G
    environment:
      - MYSQL_ROOT_PASSWORD=passwordmariadb # Je vous conseil d'utiliser + - / ! en caracteres speciaux pour eviter une mauvaise interpretation dans le conteneur. Il faut que ce mot de passe soit identique dans le fichier environment.yaml
      - MYSQL_DATABASE=sync_in
      - TZ=Europe/Paris
    volumes:
      - /volume1/docker/sync-in/mariadb:/var/lib/mysql:rw
    networks:
      - syncin_network
  onlyoffice:
    image: onlyoffice/documentserver:latest
    hostname: onlyoffice
    container_name: syncin-onlyoffice
    restart: unless-stopped
    healthcheck:
      test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/80' || exit 1
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 90s
    logging:
      driver: json-file
      options:
        max-size: "25m"
        max-file: "5"
    ports:
      - 33005:80
    environment:
      - JWT_ENABLED=true
      - JWT_SECRET=keyencrypt # Generer une clès 32 et copier à l'identique dans le fichier environment.yaml
      - TZ=Europe/Paris
    volumes:
      - /volume1/docker/sync-in/onlyoffice/logs:/var/log/onlyoffice:rw
      - /volume1/docker/sync-in/onlyoffice/data:/var/www/onlyoffice/Data:rw
      - /volume1/docker/sync-in/onlyoffice/redis:/var/lib/redis:rw
      - /volume1/docker/sync-in/onlyoffice/rabbitmq:/var/lib/rabbitmq:rw
      - /volume1/docker/sync-in/onlyoffice/lib:/var/lib/onlyoffice:rw
      - /volume1/docker/sync-in/onlyoffice/fonts:/usr/share/fonts/truetype/custom:rw
      - /volume1/docker/sync-in/onlyoffice/database:/var/lib/postgresql:rw
    networks:
      - syncin_network
networks:
  syncin_network:
    external: true
    name: syncin_networkIl faut modifier en fonction de vos infos :
- INIT_ADMIN_PASSWORD=passwordsyncin
- MYSQL_ROOT_PASSWORD=passwordmariadb
- JWT_SECRET=keyencrypt
Il est important de vérifier le correspondance du mot de base de la base maria db entre le docker-compose.yaml et environment.yaml.
Même chose pour le secret d'OnlyOffice.
Enregistrer mais ne lancer pas le projet, nous allons faire la partie reverse proxy avant.
- Étape 5 : Reverse proxy avec NPM
sync-in doit pointer vers http://VOTRE_IP_DU_NAS:33000
syncin-onlyoffice http://VOTRE_IP_DU_NAS:33005
Les ports doivent etre identique à ceux incorporer dans le docker-compse.
Toutes les infos pour réussir sont là : https://sync-in.com/fr/docs/setup-guide/proxy
Je n'ai pas essayé avec le reverse proxy de Synology et je ne suis pas sur qu'il puisse avoir toutes les options nécessaire. Je ne pourrais pas vous accompagner si vous voulez essayer avec lui.
De plus je ne vais pas expliquer comment avoir un certificat pour votre sous domaine. Pour ceux avec un site chez OVH, je vous conseil ce tuto pour avoir un certificat wilcard : https://domopi.eu/configurer-un-certificat-lets-encrypt-wildcard-avec-npm/
Pour éviter de parler plus, voici les captures d'écrans :
Pour le sous domaine syncin.votredomaine.fr



Dans advanced veuillez copier/coller l'info du dessous en adaptant votre IP du NAS :
		YAML:
	
	# === Sync-in Advanced Configuration (NPM-friendly) ===
# Timeout élevés pour la co-édition
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
# Autoriser les fichiers volumineux
client_max_body_size 5G;
# WebSocket spécifique à Sync-in
location /socket.io/ {
    proxy_pass http://VOTRE_IP_NAS:33000;
    proxy_http_version 1.1;
}
# Configuration spéciale pour WebDAV Sync-in
location /webdav {
    proxy_pass http://VOTRE_IP_NAS:33000/webdav;
    proxy_buffering off;
    client_max_body_size 0;
}Faire la même chose avec un second host pour onlyoffice.votredomaine.fr



Dans advanced veuillez copier/coller l'info du dessous :
		YAML:
	
	# === OnlyOffice Advanced Configuration ===
# Timeout élevés pour édition collaborative
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
# Fichiers volumineux (documents, tableurs, etc.)
client_max_body_size 5G;- Étape 5 : Lancer le projet
Attention, il faut attendre au moins 5 minutes que l'instance sync-db (mariadb) ce lance et initialise la base.
Je vous conseille de couper votre conteneur sync-in, pendant ce temps.
Si vous voulez etre sûr que sync-in ce lance, vérifier les logs de sync-db. Si vous voyer apparaitre cela, il est ok :

Il vous reste plus qu'à vous connecter avec le compte administrateur et le mot de passe mis dans le docker-compose :

Amusez vous bien. Et changer de suite le mot de passe administrateur.
Je ne détail pas l'utilisation mais sachez qu'il est possible de faire monter un dossier webdav sur Windows. Ou d'installer une application (https://sync-in.com/fr/downloads) pour accéder aux documents. Vous pouvez activer le MFA
Merci de m'avoir lu.
PS : Désolé pour mes éventuelles fautes, je n'ai pas utilisé l'IA pour faire le tuto.
PS2 : Le nom de domaine tsubasa.fr est bien fictif.
PS3: Je vous préparer un tuto sur Nextcloud AIO
			
				Dernière édition: 
				
		
	
										
										
											
	
										
									
								 
	 
	 
 
		

