From c8f2a73ae3e1edbce44a83c943d66b372116ffca Mon Sep 17 00:00:00 2001 From: Alexander <4584443+DragonStuff@users.noreply.github.com> Date: Wed, 8 Oct 2025 19:43:01 +0900 Subject: [PATCH 1/6] feat(docker): upgrade litestream to v0.5.0 --- docker/server/release/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/server/release/Dockerfile b/docker/server/release/Dockerfile index c58df71112..8162289284 100644 --- a/docker/server/release/Dockerfile +++ b/docker/server/release/Dockerfile @@ -14,8 +14,8 @@ RUN apt-get update && apt-get install -y \ && rm -rf /var/lib/apt/lists/* RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="amd64"; fi && \ - curl https://github.com/benbjohnson/litestream/releases/download/v0.3.9/litestream-v0.3.9-linux-$ARCH.deb -O -L && \ - dpkg -i litestream-v0.3.9-linux-$ARCH.deb + curl https://github.com/benbjohnson/litestream/releases/download/v0.3.9/litestream-v0.5.0-linux-$ARCH.deb -O -L && \ + dpkg -i litestream-v0.5.0-linux-$ARCH.deb ADD https://astral.sh/uv/install.sh /uv-installer.sh RUN sh /uv-installer.sh && rm /uv-installer.sh From b6746a5ab4f1521010f46677dcb3abb3b910f7ba Mon Sep 17 00:00:00 2001 From: Alexander <4584443+DragonStuff@users.noreply.github.com> Date: Wed, 8 Oct 2025 19:44:41 +0900 Subject: [PATCH 2/6] feat: update litestream --- docker/server/stgn/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/server/stgn/Dockerfile b/docker/server/stgn/Dockerfile index 1d01942ae7..bab10113a4 100644 --- a/docker/server/stgn/Dockerfile +++ b/docker/server/stgn/Dockerfile @@ -12,8 +12,8 @@ RUN apt-get update && apt-get install -y \ && rm -rf /var/lib/apt/lists/* RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="amd64"; fi && \ - curl https://github.com/benbjohnson/litestream/releases/download/v0.3.9/litestream-v0.3.9-linux-$ARCH.deb -O -L && \ - dpkg -i litestream-v0.3.9-linux-$ARCH.deb + curl https://github.com/benbjohnson/litestream/releases/download/v0.3.9/litestream-v0.5.0-linux-$ARCH.deb -O -L && \ + dpkg -i litestream-v0.5.0-linux-$ARCH.deb ADD https://astral.sh/uv/install.sh /uv-installer.sh RUN sh /uv-installer.sh && rm /uv-installer.sh From 00170320648d95aca4ba4890b2203ca1f3a2897f Mon Sep 17 00:00:00 2001 From: Alexander <4584443+DragonStuff@users.noreply.github.com> Date: Wed, 8 Oct 2025 20:50:19 +0900 Subject: [PATCH 3/6] fix: incorrect arg Co-authored-by: Andrey Cheptsov <54148038+peterschmidt85@users.noreply.github.com> --- docker/server/release/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/server/release/Dockerfile b/docker/server/release/Dockerfile index 8162289284..9133ea7d94 100644 --- a/docker/server/release/Dockerfile +++ b/docker/server/release/Dockerfile @@ -14,7 +14,7 @@ RUN apt-get update && apt-get install -y \ && rm -rf /var/lib/apt/lists/* RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="amd64"; fi && \ - curl https://github.com/benbjohnson/litestream/releases/download/v0.3.9/litestream-v0.5.0-linux-$ARCH.deb -O -L && \ + curl https://github.com/benbjohnson/litestream/releases/download/v0.5.0/litestream-0.5.0-linux-$ARCH.deb -O -L && \ dpkg -i litestream-v0.5.0-linux-$ARCH.deb ADD https://astral.sh/uv/install.sh /uv-installer.sh From 77df20de5ce3c4f99e77cdcad45849011b1a8aa7 Mon Sep 17 00:00:00 2001 From: Alexander <4584443+DragonStuff@users.noreply.github.com> Date: Wed, 8 Oct 2025 20:50:36 +0900 Subject: [PATCH 4/6] fix: incorrect arg Co-authored-by: Andrey Cheptsov <54148038+peterschmidt85@users.noreply.github.com> --- docker/server/release/Dockerfile | 2 +- docker/server/stgn/Dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/server/release/Dockerfile b/docker/server/release/Dockerfile index 9133ea7d94..5b68b176f4 100644 --- a/docker/server/release/Dockerfile +++ b/docker/server/release/Dockerfile @@ -15,7 +15,7 @@ RUN apt-get update && apt-get install -y \ RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="amd64"; fi && \ curl https://github.com/benbjohnson/litestream/releases/download/v0.5.0/litestream-0.5.0-linux-$ARCH.deb -O -L && \ - dpkg -i litestream-v0.5.0-linux-$ARCH.deb + dpkg -i litestream-0.5.0-linux-$ARCH.deb ADD https://astral.sh/uv/install.sh /uv-installer.sh RUN sh /uv-installer.sh && rm /uv-installer.sh diff --git a/docker/server/stgn/Dockerfile b/docker/server/stgn/Dockerfile index bab10113a4..30cc13590c 100644 --- a/docker/server/stgn/Dockerfile +++ b/docker/server/stgn/Dockerfile @@ -12,8 +12,8 @@ RUN apt-get update && apt-get install -y \ && rm -rf /var/lib/apt/lists/* RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="amd64"; fi && \ - curl https://github.com/benbjohnson/litestream/releases/download/v0.3.9/litestream-v0.5.0-linux-$ARCH.deb -O -L && \ - dpkg -i litestream-v0.5.0-linux-$ARCH.deb + curl https://github.com/benbjohnson/litestream/releases/download/v0.5.0/litestream-0.5.0-linux-$ARCH.deb -O -L && \ + dpkg -i litestream-0.5.0-linux-$ARCH.deb ADD https://astral.sh/uv/install.sh /uv-installer.sh RUN sh /uv-installer.sh && rm /uv-installer.sh From 6df0ac132f6035df12dfe11fe93bb0fdc372e40a Mon Sep 17 00:00:00 2001 From: "Alexander Nicholson 4584443+DragonStuff@users.noreply.github.com" <4584443+DragonStuff@users.noreply.github.com> Date: Wed, 8 Oct 2025 21:44:57 +0900 Subject: [PATCH 5/6] fix: amd64 was renamed to x86_64 in litestream packages --- docker/server/release/Dockerfile | 2 +- docker/server/stgn/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/server/release/Dockerfile b/docker/server/release/Dockerfile index 5b68b176f4..8bd739b885 100644 --- a/docker/server/release/Dockerfile +++ b/docker/server/release/Dockerfile @@ -13,7 +13,7 @@ RUN apt-get update && apt-get install -y \ sqlite3 \ && rm -rf /var/lib/apt/lists/* -RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="amd64"; fi && \ +RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="x86_64"; fi && \ curl https://github.com/benbjohnson/litestream/releases/download/v0.5.0/litestream-0.5.0-linux-$ARCH.deb -O -L && \ dpkg -i litestream-0.5.0-linux-$ARCH.deb diff --git a/docker/server/stgn/Dockerfile b/docker/server/stgn/Dockerfile index 30cc13590c..c6138bd8f3 100644 --- a/docker/server/stgn/Dockerfile +++ b/docker/server/stgn/Dockerfile @@ -11,7 +11,7 @@ RUN apt-get update && apt-get install -y \ sqlite3 \ && rm -rf /var/lib/apt/lists/* -RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="amd64"; fi && \ +RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="x86_64"; fi && \ curl https://github.com/benbjohnson/litestream/releases/download/v0.5.0/litestream-0.5.0-linux-$ARCH.deb -O -L && \ dpkg -i litestream-0.5.0-linux-$ARCH.deb From de1da25e51f20945b7c804ef51fb19f3b29213a6 Mon Sep 17 00:00:00 2001 From: "Alexander Nicholson 4584443+DragonStuff@users.noreply.github.com" <4584443+DragonStuff@users.noreply.github.com> Date: Wed, 8 Oct 2025 22:20:35 +0900 Subject: [PATCH 6/6] feat(docker): replace -if-replica-exists with a simple bash script --- docker/server/entrypoint.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/docker/server/entrypoint.sh b/docker/server/entrypoint.sh index c326937916..6a87468490 100644 --- a/docker/server/entrypoint.sh +++ b/docker/server/entrypoint.sh @@ -7,9 +7,21 @@ if [ -n "${GOOGLE_APPLICATION_CREDENTIALS_JSON}" ]; then echo "${GOOGLE_APPLICATION_CREDENTIALS_JSON}" > "${GOOGLE_APPLICATION_CREDENTIALS_DIR}/application_default_credentials.json" fi +DB_PATH="${HOME}/.dstack/server/data/sqlite.db" +mkdir -p "$(dirname "$DB_PATH")" if [[ -z "${LITESTREAM_REPLICA_URL}" ]]; then - dstack server --host 0.0.0.0 + exec dstack server --host 0.0.0.0 else - litestream restore -if-replica-exists -o ${HOME}/.dstack/server/data/sqlite.db ${LITESTREAM_REPLICA_URL} - litestream replicate -exec "dstack server --host 0.0.0.0" ${HOME}/.dstack/server/data/sqlite.db ${LITESTREAM_REPLICA_URL} + if [[ ! -f "$DB_PATH" ]]; then + echo "Attempting Litestream restore..." + if ! output=$(litestream restore -o "$DB_PATH" "$LITESTREAM_REPLICA_URL" 2>&1); then + if echo "$output" | grep -qiE "cannot calc restore plan"; then + echo "No replica snapshots found; starting with empty database." + else + echo "$output" >&2 + exit 1 + fi + fi + fi + exec litestream replicate -exec "dstack server --host 0.0.0.0" "$DB_PATH" "$LITESTREAM_REPLICA_URL" fi