diff --git a/CHANGELOG.md b/CHANGELOG.md
index fe75a91..590dd76 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [0.23.4] - 2026-04-22
+
+### Changed
+- Docs: web installer (`node tools/installer/install-server.js`) is now Option A in all installation guides (`README.md`, `docs/installation.md`, GitHub Pages `docs/install.html`); the pre-built Docker image method is relabelled Option B and the build-from-source method Option C
+
## [0.23.3] - 2026-04-22
### Fixed
diff --git a/README.md b/README.md
index a3a447f..f4ab40a 100644
--- a/README.md
+++ b/README.md
@@ -67,7 +67,16 @@
## Quick Start
-**Option A — pre-built image (fastest, no clone required):**
+**Option A — Web Installer (recommended):**
+
+```bash
+git clone https://github.com/ulsklyc/oikos.git && cd oikos
+node tools/installer/install-server.js
+```
+
+Then open **http://localhost:8090** in your browser. The wizard configures your `.env`, starts Docker, and creates your admin account — no manual steps needed. Requires Node.js 18+ on the host.
+
+**Option B — pre-built image (no clone required):**
```bash
curl -O https://raw.githubusercontent.com/ulsklyc/oikos/main/docker-compose.yml
@@ -77,7 +86,7 @@ docker compose up -d
docker compose exec oikos node setup.js
```
-**Option B — build from source:**
+**Option C — build from source:**
```bash
git clone https://github.com/ulsklyc/oikos.git && cd oikos
diff --git a/docs/install.html b/docs/install.html
index b2cfe83..3dbb4b4 100644
--- a/docs/install.html
+++ b/docs/install.html
@@ -572,19 +572,80 @@
Installation
-
-
-
+
+
+
+
+ Recommended for most users. A browser-based wizard configures your .env, starts Docker, and creates your admin account — no manual steps. Requires Node.js 18+ on the host.
+
+
+
+
1
+
+
Clone the repository
+
Open your terminal and clone Oikos to a folder of your choice.
Run this command from the repository root. The installer server starts on port 8090.
+
+
node tools/installer/install-server.js
+
+
+ Copy
+
+
+
+
+
+
+
3
+
+
Open the wizard in your browser
+
Navigate to the following address. The wizard will guide you through configuration, Docker startup, and admin account creation.
+
+
http://localhost:8090
+
+
+ Copy
+
+
+
+
+ The installer shuts down automatically after setup completes. Your Oikos instance keeps running via Docker.
+
+
+
+
+
+
+
- Recommended for most users. No Git, no build step — just two files and a single command.
+ No Git, no build step — just two files and a single command. Requires only Docker.
prereq_sys_hint: '~500 MB disk for Docker image',
steps_label: 'Step by step',
steps_title: 'Installation',
- tab_a: 'Option A \u2014 Pre-built Image',
- tab_b: 'Option B \u2014 Build from Source',
- option_a_info: 'Recommended for most users. No Git, no build step \u2014 just two files and a single command.',
+ tab_installer: 'Option A \u2014 Web Installer',
+ tab_a: 'Option B \u2014 Pre-built Image',
+ tab_b: 'Option C \u2014 Build from Source',
+ option_installer_info: 'Recommended for most users. A browser-based wizard configures your .env, starts Docker, and creates your admin account \u2014 no manual steps. Requires Node.js 18+ on the host.',
+ option_a_info: 'No Git, no build step \u2014 just two files and a single command. Requires only Docker.',
option_b_info: 'For contributors or those who want to run a custom version. Requires Git. The first build takes a few minutes.',
+ step_inst1_title: 'Clone the repository',
+ step_inst1_desc: 'Open your terminal and clone Oikos to a folder of your choice.',
+ step_inst2_title: 'Start the installer',
+ step_inst2_desc: 'Run this command from the repository root. The installer server starts on port 8090.',
+ step_inst3_title: 'Open the wizard in your browser',
+ step_inst3_desc: 'Navigate to the following address. The wizard will guide you through configuration, Docker startup, and admin account creation.',
+ step_inst3_info: 'The installer shuts down automatically after setup completes. Your Oikos instance keeps running via Docker.',
step_a1_title: 'Download the configuration files',
step_a1_desc: 'Open your terminal and run these two commands. They download the Docker configuration and the template for your settings.',
step_a2_title: 'Create your configuration',
@@ -1009,10 +1079,19 @@ docker compose logs | grep "Server läuft"
prereq_sys_hint: '~500 MB Speicher f\u00fcr das Docker-Image',
steps_label: 'Schritt f\u00fcr Schritt',
steps_title: 'Installation',
- tab_a: 'Option A \u2014 Fertiges Image',
- tab_b: 'Option B \u2014 Aus Quellcode bauen',
- option_a_info: 'Empfohlen f\u00fcr die meisten Nutzer. Kein Git, kein Build-Schritt \u2014 nur zwei Dateien und ein einziger Befehl.',
+ tab_installer: 'Option A \u2014 Web-Installer',
+ tab_a: 'Option B \u2014 Fertiges Image',
+ tab_b: 'Option C \u2014 Aus Quellcode bauen',
+ option_installer_info: 'Empfohlen f\u00fcr die meisten Nutzer. Ein browserbasierter Assistent konfiguriert eure .env, startet Docker und erstellt euer Admin-Konto \u2014 ganz ohne manuelle Schritte. Erfordert Node.js 18+ auf dem Host.',
+ option_a_info: 'Kein Git, kein Build-Schritt \u2014 nur zwei Dateien und ein einziger Befehl. Nur Docker erforderlich.',
option_b_info: 'F\u00fcr Mitwirkende oder wer eine eigene Version ausf\u00fchren m\u00f6chte. Erfordert Git. Der erste Build dauert einige Minuten.',
+ step_inst1_title: 'Repository klonen',
+ step_inst1_desc: '\u00d6ffnet euer Terminal und klont Oikos in einen Ordner eurer Wahl.',
+ step_inst2_title: 'Installer starten',
+ step_inst2_desc: 'F\u00fchrt diesen Befehl vom Projektordner aus. Der Installer-Server startet auf Port 8090.',
+ step_inst3_title: 'Assistenten im Browser \u00f6ffnen',
+ step_inst3_desc: 'Navigiert zur folgenden Adresse. Der Assistent f\u00fchrt euch durch Konfiguration, Docker-Start und Admin-Konto-Erstellung.',
+ step_inst3_info: 'Der Installer beendet sich automatisch nach Abschluss der Einrichtung. Eure Oikos-Instanz l\u00e4uft weiter \u00fcber Docker.',
step_a1_title: 'Konfigurationsdateien herunterladen',
step_a1_desc: '\u00d6ffnet euer Terminal und f\u00fchrt diese zwei Befehle aus. Sie laden die Docker-Konfiguration und die Vorlage f\u00fcr eure Einstellungen herunter.',
step_a2_title: 'Konfiguration erstellen',
diff --git a/docs/installation.md b/docs/installation.md
index e262cfb..8cdaf88 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -1,8 +1,18 @@
## Quick Install
-Two ways to get Oikos running from scratch:
+Three ways to get Oikos running from scratch:
-### Option A — CLI Installer (Linux / macOS)
+### Option A — Web Installer (recommended, all platforms)
+
+```bash
+git clone https://github.com/ulsklyc/oikos.git && cd oikos
+node tools/installer/install-server.js
+# Open http://localhost:8090
+```
+
+Requires Node.js 18+ on the host. The browser-based wizard configures your `.env`, starts Docker, and creates your admin account. Docker still runs the app itself.
+
+### Option B — CLI Installer (Linux / macOS)
```bash
git clone https://github.com/ulsklyc/oikos.git && cd oikos
@@ -17,16 +27,16 @@ Non-interactive mode (CI/provisioning — provide your own `.env`):
bash install.sh --env-file /path/to/.env
```
-### Option B — Web Installer (all platforms with Node.js)
+### Option C — Manual (Docker only, no clone required)
```bash
-git clone https://github.com/ulsklyc/oikos.git && cd oikos
-node tools/installer/install-server.js
-# Open http://localhost:8090
+curl -O https://raw.githubusercontent.com/ulsklyc/oikos/main/docker-compose.yml
+curl -O https://raw.githubusercontent.com/ulsklyc/oikos/main/.env.example
+cp .env.example .env # set SESSION_SECRET and DB_ENCRYPTION_KEY
+docker compose up -d
+docker compose exec oikos node setup.js
```
-Requires Node.js 18+ on the host. Docker still runs the app itself.
-
---
# Installation Guide
@@ -100,11 +110,43 @@ git --version # git version 2.x.x
## Step-by-Step Installation
-There are two ways to get Oikos running. **Option A** (pre-built image) is recommended for most users — no clone required. **Option B** (build from source) is for contributors or if you want to run a custom version.
+There are three ways to get Oikos running. **Option A** (web installer) is recommended for most users — it walks you through every step in your browser. **Option B** (pre-built image) is a quick manual alternative. **Option C** (build from source) is for contributors or custom builds.
---
-### Option A — Pre-built Image (Recommended)
+### Option A — Web Installer (Recommended)
+
+Requires Node.js 18+ and Docker on the host.
+
+#### 1. Clone the Repository
+
+```bash
+git clone https://github.com/ulsklyc/oikos.git
+cd oikos
+```
+
+#### 2. Start the Installer
+
+```bash
+node tools/installer/install-server.js
+```
+
+#### 3. Open the Wizard
+
+Open your browser and navigate to **http://localhost:8090**. The wizard guides you through:
+
+- Basic configuration (host, port, timezone)
+- Security key generation
+- Optional integrations (weather, Google Calendar, Apple CalDAV)
+- Writing your `.env` file
+- Starting the Docker container
+- Creating your admin account
+
+The installer server shuts down automatically after setup completes (or after 30 minutes of inactivity).
+
+---
+
+### Option B — Pre-built Image
A ready-to-use Docker image is published to the GitHub Container Registry on every release. You only need two files.
@@ -148,7 +190,7 @@ Continue with [Step 4 — Verify](#4-verify-the-container-is-running).
---
-### Option B — Build from Source
+### Option C — Build from Source
#### 1. Clone the Repository
@@ -368,7 +410,7 @@ docker compose up -d
## Updates
-### Option A — Pre-built Image
+### Option B — Pre-built Image
Pull the latest published image and restart:
@@ -379,7 +421,7 @@ docker compose up -d
No rebuild needed. The database volume persists across updates.
-### Option B — Build from Source
+### Option C — Build from Source
```bash
cd oikos
@@ -392,12 +434,12 @@ docker compose up -d --build
If the [CHANGELOG](../CHANGELOG.md) mentions database migrations or breaking changes, stop the container before updating:
```bash
-# Option A (pre-built)
+# Option B (pre-built)
docker compose pull
docker compose down
docker compose up -d
-# Option B (build from source)
+# Option C (build from source)
docker compose down
git pull
docker compose up -d --build
@@ -525,7 +567,7 @@ If you have existing data, you need the original encryption key. There is no way
SQLCipher build fails during Docker build
-> **Tip**: If you hit build issues, switch to the pre-built image (Option A above) — it ships with SQLCipher already compiled and requires no local build step.
+> **Tip**: If you hit build issues, switch to the pre-built image (Option B above) — it ships with SQLCipher already compiled and requires no local build step.
The Dockerfile installs these build dependencies: `python3`, `make`, `g++`, `libsqlcipher-dev`. If the build fails, ensure your Docker installation is up to date and has internet access to pull packages.
diff --git a/package-lock.json b/package-lock.json
index 84f96a7..39a0ce0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "oikos",
- "version": "0.23.3",
+ "version": "0.23.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "oikos",
- "version": "0.23.3",
+ "version": "0.23.4",
"license": "MIT",
"dependencies": {
"bcrypt": "^6.0.0",
diff --git a/package.json b/package.json
index 3fd512f..57729f8 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "oikos",
- "version": "0.23.3",
+ "version": "0.23.4",
"description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.",
"main": "server/index.js",
"type": "module",