diff --git a/Dockerfile.cron b/Dockerfile
similarity index 92%
rename from Dockerfile.cron
rename to Dockerfile
index cbdff82..3272c7f 100644
--- a/Dockerfile.cron
+++ b/Dockerfile
@@ -25,7 +25,7 @@ ENV GID=1000
# Copy over the Docker related files.
COPY utils/build/import-seafile-apt-key.sh /
-COPY assets/docker-cron-entrypoint.sh /entrypoint.sh
+COPY assets/cron/docker-entrypoint.sh /entrypoint.sh
# Safely import Seafile APT key, then install both seafile-cli and supervisord.
RUN mkdir -p /etc/apt/sources.list.d/ ;\
@@ -55,7 +55,7 @@ RUN mkdir -p /etc/apt/sources.list.d/ ;\
useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME
# Copy over the required files for Seafile/SupervisorD.
-COPY assets/seafile-cron-healthcheck.sh /home/seafuser/seafile-healthcheck.sh
-COPY assets/seafile-cron-entrypoint.sh /home/seafuser/entrypoint.sh
+COPY assets/cron/seafile-healthcheck.sh /home/seafuser/seafile-healthcheck.sh
+COPY assets/cron/seafile-entrypoint.sh /home/seafuser/entrypoint.sh
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
diff --git a/Dockerfile.bash b/assets/bash/Dockerfile
similarity index 91%
rename from Dockerfile.bash
rename to assets/bash/Dockerfile
index a6b37bb..81d93a6 100644
--- a/Dockerfile.bash
+++ b/assets/bash/Dockerfile
@@ -25,7 +25,7 @@ ENV GID=1000
# Copy over the Docker related files.
COPY utils/build/import-seafile-apt-key.sh /
-COPY assets/docker-bash-entrypoint.sh /entrypoint.sh
+COPY assets/bash/docker-entrypoint.sh /entrypoint.sh
# Safely import Seafile APT key, then install both seafile-cli and supervisord.
RUN mkdir -p /etc/apt/sources.list.d/ ;\
@@ -50,7 +50,7 @@ RUN mkdir -p /etc/apt/sources.list.d/ ;\
useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME
# Copy over the required files for Seafile/SupervisorD.
-COPY assets/seafile-healthcheck.sh /home/seafuser/
-COPY assets/seafile-bash-entrypoint.sh /home/seafuser/entrypoint.sh
+COPY assets/bash/seafile-healthcheck.sh /home/seafuser/
+COPY assets/bash/seafile-entrypoint.sh /home/seafuser/entrypoint.sh
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
diff --git a/assets/docker-bash-entrypoint.sh b/assets/bash/docker-entrypoint.sh
similarity index 100%
rename from assets/docker-bash-entrypoint.sh
rename to assets/bash/docker-entrypoint.sh
diff --git a/assets/seafile-bash-entrypoint.sh b/assets/bash/seafile-entrypoint.sh
similarity index 100%
rename from assets/seafile-bash-entrypoint.sh
rename to assets/bash/seafile-entrypoint.sh
diff --git a/assets/seafile-healthcheck.sh b/assets/bash/seafile-healthcheck.sh
similarity index 100%
rename from assets/seafile-healthcheck.sh
rename to assets/bash/seafile-healthcheck.sh
diff --git a/assets/cron/Dockerfile b/assets/cron/Dockerfile
new file mode 100644
index 0000000..3272c7f
--- /dev/null
+++ b/assets/cron/Dockerfile
@@ -0,0 +1,61 @@
+# Docker Seafile client, help you mount a Seafile library as a volume.
+# Copyright (C) 2019, flow.gunso@gmail.com
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+FROM debian:jessie-slim
+
+# Prevent the packages installation to halt.
+ENV DEBIAN_FRONTEND noninteractive
+# Create the seafile client user.
+ENV UNAME=seafuser
+ENV UID=1000
+ENV GID=1000
+
+# Copy over the Docker related files.
+COPY utils/build/import-seafile-apt-key.sh /
+COPY assets/cron/docker-entrypoint.sh /entrypoint.sh
+
+# Safely import Seafile APT key, then install both seafile-cli and supervisord.
+RUN mkdir -p /etc/apt/sources.list.d/ ;\
+ echo "deb http://deb.seadrive.org jessie main" \
+ > /etc/apt/sources.list.d/seafile.list ;\
+ bash /import-seafile-apt-key.sh ;\
+ apt-get update ;\
+ apt-get install \
+ -o Dpkg::Options::="--force-confold" \
+ -y \
+ seafile-cli \
+ cron ;\
+ apt-get clean ;\
+ apt-get autoclean \
+ -o APT::Clean-Installed=true ;\
+ rm \
+ -f \
+ /var/log/fsck/*.log \
+ /var/log/apt/*.log \
+ /var/cache/debconf/*.dat-old \
+ /import-seafile-apt-key.sh ;\
+ mkdir /volume/ ;\
+ echo "seafuser" > /etc/cron.allow ;\
+ echo "*/20 * * * * /bin/bash /home/seafuser/seafile-healthcheck.sh" \
+ > /var/spool/cron/crontabs/seafuser ;\
+ groupadd -g $GID -o $UNAME ;\
+ useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME
+
+# Copy over the required files for Seafile/SupervisorD.
+COPY assets/cron/seafile-healthcheck.sh /home/seafuser/seafile-healthcheck.sh
+COPY assets/cron/seafile-entrypoint.sh /home/seafuser/entrypoint.sh
+
+ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
diff --git a/assets/docker-cron-entrypoint.sh b/assets/cron/docker-entrypoint.sh
similarity index 100%
rename from assets/docker-cron-entrypoint.sh
rename to assets/cron/docker-entrypoint.sh
diff --git a/assets/seafile-cron-entrypoint.sh b/assets/cron/seafile-entrypoint.sh
similarity index 100%
rename from assets/seafile-cron-entrypoint.sh
rename to assets/cron/seafile-entrypoint.sh
diff --git a/assets/seafile-cron-healthcheck.sh b/assets/cron/seafile-healthcheck.sh
similarity index 100%
rename from assets/seafile-cron-healthcheck.sh
rename to assets/cron/seafile-healthcheck.sh
diff --git a/Dockerfile.supervisord b/assets/supervisord/Dockerfile
similarity index 89%
rename from Dockerfile.supervisord
rename to assets/supervisord/Dockerfile
index 1bafdb2..bf66fc7 100644
--- a/Dockerfile.supervisord
+++ b/assets/supervisord/Dockerfile
@@ -25,7 +25,7 @@ ENV GID=1000
# Copy over the Docker related files.
COPY utils/build/import-seafile-apt-key.sh /
-COPY assets/docker-supervisord-entrypoint.sh /entrypoint.sh
+COPY assets/supervisord/dockerentrypoint.sh /entrypoint.sh
# Safely import Seafile APT key, then install both seafile-cli and supervisord.
RUN mkdir -p /etc/apt/sources.list.d/ ;\
@@ -52,7 +52,7 @@ RUN mkdir -p /etc/apt/sources.list.d/ ;\
useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME
# Copy over the required files for Seafile/SupervisorD.
-COPY assets/supervisord.conf assets/seafile-healthcheck.sh /home/seafuser/
-COPY assets/seafile-supervisord-entrypoint.sh /home/seafuser/entrypoint.sh
+COPY assets/supervisord/supervisord.conf assets/supervisord/seafile-healthcheck.sh /home/seafuser/
+COPY assets/supervisord/seafile-entrypoint.sh /home/seafuser/entrypoint.sh
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
diff --git a/assets/docker-supervisord-entrypoint.sh b/assets/supervisord/docker-entrypoint.sh
similarity index 100%
rename from assets/docker-supervisord-entrypoint.sh
rename to assets/supervisord/docker-entrypoint.sh
diff --git a/assets/seafile-supervisord-entrypoint.sh b/assets/supervisord/seafile-entrypoint.sh
similarity index 100%
rename from assets/seafile-supervisord-entrypoint.sh
rename to assets/supervisord/seafile-entrypoint.sh
diff --git a/assets/supervisord/seafile-healthcheck.sh b/assets/supervisord/seafile-healthcheck.sh
new file mode 100755
index 0000000..16f60d4
--- /dev/null
+++ b/assets/supervisord/seafile-healthcheck.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+# Docker Seafile client, help you mount a Seafile library as a volume.
+# Copyright (C) 2019, flow.gunso@gmail.com
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# `seaf-cli status` output csv-like information with tabulates as separators and columns named in comment lines.
+# The Seafile client should not be restarted while some statuses are occuring, such as "downloading" or "committing".
+#
+# This script grabs the output while ignoring the comments to iterate over the informations set to their columns,
+# then it compares the statuses, when not empty, to the ones that do not require a restart. Finally either restart or don't.
+
+seaf=/usr/bin/seaf-cli
+dont_restart_on=("downloading" "committing" "waiting for sync")
+restart=true
+
+sleep 10s
+while true; do
+ while IFS=$'\t' read -r name status progress; do
+ if [ $status ]; then
+ for dont_restart_on_status in "${dont_restart_on[@]}"; do
+ if [ "$status" == "$dont_restart_on_status" ]; then
+ restart=false; break; break
+ fi
+ done
+ fi
+ done < <($seaf status | grep -v "^#")
+
+ if $restart; then
+ $seaf stop
+ $seaf start
+ fi
+
+ sleep 10m
+done
\ No newline at end of file
diff --git a/assets/supervisord.conf b/assets/supervisord/supervisord.conf
similarity index 100%
rename from assets/supervisord.conf
rename to assets/supervisord/supervisord.conf
diff --git a/utils/publish/feature--cron-or-supervisord.sh b/utils/publish/feature--cron-or-supervisord.sh
index 26f8348..59446dc 100755
--- a/utils/publish/feature--cron-or-supervisord.sh
+++ b/utils/publish/feature--cron-or-supervisord.sh
@@ -26,9 +26,9 @@ fi
echo $CI_REGISTRY_BOT_PASSWORD | docker login -u $CI_REGISTRY_BOT_USERNAME docker.io --password-stdin
# Build and push as staging.
-docker build -t index.docker.io/$CI_REGISTRY_IMAGE:staging-supervisord -f Dockerfile.supervisord .
-docker build -t index.docker.io/$CI_REGISTRY_IMAGE:staging-cron -f Dockerfile.cron .
-docker build -t index.docker.io/$CI_REGISTRY_IMAGE:staging-bash -f Dockerfile.bash .
+docker build -t index.docker.io/$CI_REGISTRY_IMAGE:staging-supervisord -f assets/supervisord/Dockerfile .
+docker build -t index.docker.io/$CI_REGISTRY_IMAGE:staging-cron -f assets/cron/Dockerfile .
+docker build -t index.docker.io/$CI_REGISTRY_IMAGE:staging-bash -f assets/bash/Dockerfile .
docker push index.docker.io/$CI_REGISTRY_IMAGE:staging-supervisord
docker push index.docker.io/$CI_REGISTRY_IMAGE:staging-cron
docker push index.docker.io/$CI_REGISTRY_IMAGE:staging-bash