<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Docker Deployment</title><link>https://sourceforge.net/p/lastest/wiki/Docker%2520Deployment/</link><description>Recent changes to Docker Deployment</description><atom:link href="https://sourceforge.net/p/lastest/wiki/Docker%20Deployment/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 06 May 2026 09:06:53 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/lastest/wiki/Docker%20Deployment/feed" rel="self" type="application/rss+xml"/><item><title>Docker Deployment modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Docker%2520Deployment/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1,27 +1,39 @@
 # Docker Deployment

-Deploy Lastest on your home server or any Docker host.
+Lastest ships with two production deploy targets and a Docker-Compose-based home server flow. Both production targets share the same multi-stage Dockerfile.
+
+| Target | Script | Stack |
+|--------|--------|-------|
+| **ZimaBoard / CasaOS** | `pnpm deploy:zima` | Docker Compose -- single host |
+| **Olares / Kubernetes** | `pnpm deploy:olares` | Two-pod app split (envoy + envoy-less) on k8s |

 ---

-## Quick Start
+## Quick Start (home server, Docker Compose)

     :::bash
     git clone https://github.com/las-team/lastest.git
     cd lastest

-    docker-compose up -d
+    docker compose up -d

-Open [http://localhost:3000](http://localhost:3000)
+The bundled compose stack starts:
+- **PostgreSQL** on `:5432` (data persists in the named volume `lastest-pgdata`)
+- **Lastest app** on `:3000`
+
+Open [http://localhost:3000](http://localhost:3000).
+
+&amp;gt; **Embedded Browser pods** are provisioned dynamically by the app. In a single-host Docker Compose deployment they are launched via the kubernetes provisioner against your cluster (`EB_PROVISIONER=kubernetes`, see [Environment Variables]); there is no Compose-only EB fallback.

 ---

 ## Commands

     :::bash

-    docker-compose up -d      # Start in background
-    docker-compose logs -f     # View logs
-    docker-compose down        # Stop
-    docker-compose pull        # Pull latest image
+    docker compose up -d       # Start in background
+    docker compose logs -f      # View logs
+    docker compose down         # Stop (data persists in `lastest-pgdata`)
+    docker compose down -v      # Stop and wipe the database
+    docker compose pull         # Pull latest image

 ---

@@ -30,7 +42,7 @@

 - Based on the official Playwright base image (`mcr.microsoft.com/playwright`)
 - Node.js 20
 - Multi-stage build for smaller final image
-- Health checks via `GET /api/health`
+- Health check via `GET /api/health`
 - Runs as non-root user
 - Entrypoint runs `drizzle-kit push --force` on startup (auto-migrates schema)

@@ -40,37 +52,50 @@

 | Volume | Purpose |
 |--------|---------|
-| `lastest-data` | SQLite database |
-| `lastest-screenshots` | Test screenshots |
-| `lastest-baselines` | Approved baselines |
+| `lastest-pgdata` | PostgreSQL data directory |
+| `lastest-screenshots` | Captured screenshots and baselines |
+| `lastest-runs` | Per-build run artefacts (videos, traces, logs) |
+
+&amp;gt; SQLite is no longer used. Lastest moved to PostgreSQL with Drizzle ORM in v1.10.

 ---

-## Environment Variables
+## Required Environment Variables

-Set these in your `docker-compose.yml` or `.env` file:
+The minimum prod set (see [Environment Variables] for the complete list):

     :::bash

-    # GitHub OAuth (for repository sync + login)
-    GITHUB_CLIENT_ID=your-github-app-id
-    GITHUB_CLIENT_SECRET=your-github-app-secret
-    
-    # See Environment Variables page for full list
-
-See [Environment Variables] for the complete reference.
+    POSTGRES_PASSWORD=...               # Postgres password used by the compose service
+    DATABASE_URL=postgresql://lastest:${POSTGRES_PASSWORD}@db:5432/lastest
+    BETTER_AUTH_SECRET=$(openssl rand -hex 32)
+    SYSTEM_EB_TOKEN=$(openssl rand -hex 32)
+    EB_PROVISIONER=kubernetes
+    EB_NAMESPACE=lastest
+    EB_IMAGE=lastest-embedded-browser:latest
+    LASTEST_URL=https://your-public-host    # URL the EB pods use to reach back

 ---

-## Development Compose
+## Olares (Kubernetes) Deployment

-A development compose file (`docker-compose.dev.yml`) is also available for local development with Docker.
+`pnpm deploy:olares` runs two app pods that share state via the database:
+
+| Pod | Purpose |
+|-----|---------|
+| `lastest-dev` (envoy-fronted) | Public traffic via the Olares envoy gateway |
+| `lastest-internal-dev` (envoy-less) | Internal endpoints (EB callbacks, runner WebSocket) without envoy buffering |
+
+Both must be rolled together when deploying. EB pods are scheduled into the same cluster via the `lastest` namespace -- the manifests live under `k8s/` in the repo.

 ---

-## Embedded Browser Container
+## Embedded Browser Stack

-For cloud deployments where you can't install Playwright locally:
-- The browser runs inside the container
-- Live streaming back to the UI
-- Supports both recording and running tests
-- No local Playwright installation needed
+Tests run **only** inside Embedded Browser pods. Local-Playwright execution on the host is no longer supported -- in any environment (dev or prod) you need:
+
+1. A k8s-compatible cluster (k3d for local dev, your real cluster in prod)
+2. The `lastest` namespace + RBAC from `k8s/`
+3. The `lastest-embedded-browser` image built and reachable to the cluster
+4. `EB_PROVISIONER=kubernetes` plus the EB env vars in [Environment Variables]
+
+For local dev see [Getting Started] -- the `pnpm stack` script bootstraps the whole thing.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:53 -0000</pubDate><guid>https://sourceforge.net250f20f2c0e174fb11d8dbc7fd4ebbc948e521fe</guid></item><item><title>Docker Deployment modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Docker%2520Deployment/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,14 +1,14 @@
 # Docker Deployment

-Deploy Lastest2 on your home server or any Docker host.
+Deploy Lastest on your home server or any Docker host.

 ---

 ## Quick Start

     :::bash

-    git clone https://github.com/dexilion-team/lastest2.git
-    cd lastest2
+    git clone https://github.com/las-team/lastest.git
+    cd lastest
     docker-compose up -d

 Open [http://localhost:3000](http://localhost:3000)
@@ -40,9 +40,9 @@

 | Volume | Purpose |
 |--------|---------|
-| `lastest2-data` | SQLite database |
-| `lastest2-screenshots` | Test screenshots |
-| `lastest2-baselines` | Approved baselines |
+| `lastest-data` | SQLite database |
+| `lastest-screenshots` | Test screenshots |
+| `lastest-baselines` | Approved baselines |

 ---

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:51 -0000</pubDate><guid>https://sourceforge.net5c9523a3df7de4381c7480f089f29f4e63d571bd</guid></item><item><title>Docker Deployment modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Docker%2520Deployment/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="h-docker-deployment"&gt;Docker Deployment&lt;/h1&gt;
&lt;p&gt;Deploy Lastest2 on your home server or any Docker host.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-quick-start"&gt;Quick Start&lt;/h2&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://github.com/dexilion-team/lastest2.git
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;lastest2
docker-compose&lt;span class="w"&gt; &lt;/span&gt;up&lt;span class="w"&gt; &lt;/span&gt;-d
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="nofollow"&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-commands"&gt;Commands&lt;/h2&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;docker-compose&lt;span class="w"&gt; &lt;/span&gt;up&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="c1"&gt;# Start in background&lt;/span&gt;
docker-compose&lt;span class="w"&gt; &lt;/span&gt;logs&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;# View logs&lt;/span&gt;
docker-compose&lt;span class="w"&gt; &lt;/span&gt;down&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# Stop&lt;/span&gt;
docker-compose&lt;span class="w"&gt; &lt;/span&gt;pull&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# Pull latest image&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;hr/&gt;
&lt;h2 id="h-image-details"&gt;Image Details&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Based on the official Playwright base image (&lt;code&gt;mcr.microsoft.com/playwright&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Node.js 20&lt;/li&gt;
&lt;li&gt;Multi-stage build for smaller final image&lt;/li&gt;
&lt;li&gt;Health checks via &lt;code&gt;GET /api/health&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Runs as non-root user&lt;/li&gt;
&lt;li&gt;Entrypoint runs &lt;code&gt;drizzle-kit push --force&lt;/code&gt; on startup (auto-migrates schema)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="h-volumes"&gt;Volumes&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Volume&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lastest2-data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SQLite database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lastest2-screenshots&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Test screenshots&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lastest2-baselines&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Approved baselines&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr/&gt;
&lt;h2 id="h-environment-variables"&gt;Environment Variables&lt;/h2&gt;
&lt;p&gt;Set these in your &lt;code&gt;docker-compose.yml&lt;/code&gt; or &lt;code&gt;.env&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# GitHub OAuth (for repository sync + login)&lt;/span&gt;
&lt;span class="nv"&gt;GITHUB_CLIENT_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-github-app-id
&lt;span class="nv"&gt;GITHUB_CLIENT_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-github-app-secret

&lt;span class="c1"&gt;# See Environment Variables page for full list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;See &lt;span&gt;[Environment Variables]&lt;/span&gt; for the complete reference.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-development-compose"&gt;Development Compose&lt;/h2&gt;
&lt;p&gt;A development compose file (&lt;code&gt;docker-compose.dev.yml&lt;/code&gt;) is also available for local development with Docker.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-embedded-browser-container"&gt;Embedded Browser Container&lt;/h2&gt;
&lt;p&gt;For cloud deployments where you can't install Playwright locally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The browser runs inside the container&lt;/li&gt;
&lt;li&gt;Live streaming back to the UI&lt;/li&gt;
&lt;li&gt;Supports both recording and running tests&lt;/li&gt;
&lt;li&gt;No local Playwright installation needed&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:49 -0000</pubDate><guid>https://sourceforge.net60809aaf08ac92774d6ad15c1041abee5a78e3bb</guid></item></channel></rss>