Install section for 1.1: two downloaded files and a prebuilt image instead of a clone
The page still showed git clone and the old figures (124 tests, 1,067 entries, sixteen migrations). Now: curl the compose file and .env, pull the amd64/arm64 image, update with docker compose pull; 130 tests, 1,095 entries, seventeen migrations; the sample photo for a first try. Checked in the browser in both languages: PDF 210.00 x 297.00 mm, no horizontal scroll at 390 px.
This commit is contained in:
2 files changed
+17
-15
No files matched your search
@@ -12,6 +12,7 @@ interface Props { copy: Copy; canonical: string }
|
|||||||
const { copy: c, canonical } = Astro.props;
|
const { copy: c, canonical } = Astro.props;
|
||||||
|
|
||||||
const GITHUB = 'https://github.com/tillheidrich/klarbild';
|
const GITHUB = 'https://github.com/tillheidrich/klarbild';
|
||||||
|
const RAW = 'https://raw.githubusercontent.com/tillheidrich/klarbild/main';
|
||||||
const SITE = 'https://klarbild-demo.heidrich-digital.de';
|
const SITE = 'https://klarbild-demo.heidrich-digital.de';
|
||||||
|
|
||||||
// The output sizes the preset builder offers, straight from the application's
|
// The output sizes the preset builder offers, straight from the application's
|
||||||
@@ -354,9 +355,10 @@ KLARBILD_MODULES=all</pre>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<pre>git clone {GITHUB}.git
|
<pre>mkdir klarbild && cd klarbild
|
||||||
cd klarbild
|
curl -fsSLO {RAW}/docker-compose.yaml
|
||||||
cp .env.example .env <span class="c">{c.install.comment1}</span>
|
curl -fsSL {RAW}/.env.example -o .env
|
||||||
|
nano .env <span class="c">{c.install.comment1}</span>
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
docker compose logs app <span class="c">{c.install.comment2}</span></pre>
|
docker compose logs app <span class="c">{c.install.comment2}</span></pre>
|
||||||
|
|||||||
+12
-12
@@ -184,7 +184,7 @@ export const EN: Copy = {
|
|||||||
stats: [
|
stats: [
|
||||||
{ n: '210.00', t: '× 297.00 mm on the page when you ask for A4 — measured, not assumed' },
|
{ n: '210.00', t: '× 297.00 mm on the page when you ask for A4 — measured, not assumed' },
|
||||||
{ n: '0', t: 'outbound requests from the print studio. It is arithmetic, sharp and pdf-lib' },
|
{ n: '0', t: 'outbound requests from the print studio. It is arithmetic, sharp and pdf-lib' },
|
||||||
{ n: '124', t: 'tests over the layout engine, the naming scheme and the path checks' },
|
{ n: '130', t: 'tests over the layout engine, the naming scheme and the path checks' },
|
||||||
{ n: '1', t: 'container and a database for the default install' },
|
{ n: '1', t: 'container and a database for the default install' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -246,7 +246,7 @@ export const EN: Copy = {
|
|||||||
lang: {
|
lang: {
|
||||||
kicker: 'Two languages',
|
kicker: 'Two languages',
|
||||||
h2: 'English by default, German all the way through.',
|
h2: 'English by default, German all the way through.',
|
||||||
lead: 'Not a half-translated interface: 1,067 entries, covering every translatable string in the source. The English sentence is the translation key, so a missing entry falls back to readable English rather than to print.sheet.title.',
|
lead: 'Not a half-translated interface: 1,095 entries, covering every translatable string in the source. The English sentence is the translation key, so a missing entry falls back to readable English rather than to print.sheet.title.',
|
||||||
body: 'One environment variable sets the default; visitors switch with the button in the corner and the choice sticks. Adding a third language means copying one JSON file and translating its values.',
|
body: 'One environment variable sets the default; visitors switch with the button in the corner and the choice sticks. Adding a third language means copying one JSON file and translating its values.',
|
||||||
caption: 'The same screen, ?lang=de.',
|
caption: 'The same screen, ?lang=de.',
|
||||||
},
|
},
|
||||||
@@ -262,13 +262,13 @@ export const EN: Copy = {
|
|||||||
},
|
},
|
||||||
install: {
|
install: {
|
||||||
kicker: 'Install',
|
kicker: 'Install',
|
||||||
h2: 'Four lines, then a password in the log.',
|
h2: 'Two files, then a password in the log.',
|
||||||
p1: 'The default compose file runs the application and a PostgreSQL, with files on a volume. No object store, no API key, no account anywhere. A second compose file adds MinIO and turns every module on, for people who want that.',
|
p1: 'The default compose file runs the application and a PostgreSQL, with files on a volume. No object store, no API key, no account anywhere. A second compose file adds MinIO and turns every module on, for people who want that. Nothing to clone and nothing to build: the compose file pulls a prebuilt image for amd64 and arm64, so a Raspberry Pi 4 or 5 runs it too, and an update is docker compose pull.',
|
||||||
p2: 'There are no built-in accounts. The first boot creates one administrator — from ADMIN_USERNAME and ADMIN_PASSWORD if you set them, and otherwise with a generated password printed to the log exactly once.',
|
p2: 'There are no built-in accounts. The first boot creates one administrator — from ADMIN_USERNAME and ADMIN_PASSWORD if you set them, and otherwise with a generated password printed to the log exactly once. No picture at hand for the first try? The print studio has a sample photo one click away.',
|
||||||
cta1: 'Source on GitHub', cta2: 'Releases',
|
cta1: 'Source on GitHub', cta2: 'Releases',
|
||||||
comment1: '# four values at the top; the file says which',
|
comment1: '# four values at the top; the file says which',
|
||||||
comment2: '# your admin password, printed once',
|
comment2: '# your admin password, printed once',
|
||||||
stack: 'Astro on Node, PostgreSQL, sharp and pdf-lib. About 13,700 lines across 117 files. Sixteen forward-only migrations that run themselves on boot. Type check, tests and a secret scan run in CI on every push.',
|
stack: 'Astro on Node, PostgreSQL, sharp and pdf-lib. About 13,800 lines across 115 files. Seventeen forward-only migrations that run themselves on boot. Type check, tests and a secret scan run in CI on every push.',
|
||||||
},
|
},
|
||||||
privacy: {
|
privacy: {
|
||||||
kicker: 'Why self-hosted',
|
kicker: 'Why self-hosted',
|
||||||
@@ -300,7 +300,7 @@ export const DE: Copy = {
|
|||||||
stats: [
|
stats: [
|
||||||
{ n: '210,00', t: '× 297,00 mm auf der Seite, wenn du A4 sagst — nachgemessen, nicht angenommen' },
|
{ n: '210,00', t: '× 297,00 mm auf der Seite, wenn du A4 sagst — nachgemessen, nicht angenommen' },
|
||||||
{ n: '0', t: 'Anfragen nach außen aus dem Druckstudio. Es ist Rechnen, sharp und pdf-lib' },
|
{ n: '0', t: 'Anfragen nach außen aus dem Druckstudio. Es ist Rechnen, sharp und pdf-lib' },
|
||||||
{ n: '124', t: 'Tests über Layout-Engine, Namensschema und Pfadprüfungen' },
|
{ n: '130', t: 'Tests über Layout-Engine, Namensschema und Pfadprüfungen' },
|
||||||
{ n: '1', t: 'Container und eine Datenbank für die Standardinstallation' },
|
{ n: '1', t: 'Container und eine Datenbank für die Standardinstallation' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -362,7 +362,7 @@ export const DE: Copy = {
|
|||||||
lang: {
|
lang: {
|
||||||
kicker: 'Zwei Sprachen',
|
kicker: 'Zwei Sprachen',
|
||||||
h2: 'Englisch als Standard, Deutsch vollständig daneben.',
|
h2: 'Englisch als Standard, Deutsch vollständig daneben.',
|
||||||
lead: 'Keine halb übersetzte Oberfläche: 1.067 Einträge, jeder übersetzbare String im Quelltext ist abgedeckt. Der englische Satz ist der Schlüssel — fehlt ein Eintrag, steht da lesbares Englisch und nicht print.sheet.title.',
|
lead: 'Keine halb übersetzte Oberfläche: 1.095 Einträge, jeder übersetzbare String im Quelltext ist abgedeckt. Der englische Satz ist der Schlüssel — fehlt ein Eintrag, steht da lesbares Englisch und nicht print.sheet.title.',
|
||||||
body: 'Eine Umgebungsvariable setzt den Standard; Besucher schalten mit dem Knopf in der Ecke um, und die Wahl bleibt. Eine dritte Sprache heißt: eine JSON-Datei kopieren und ihre Werte übersetzen.',
|
body: 'Eine Umgebungsvariable setzt den Standard; Besucher schalten mit dem Knopf in der Ecke um, und die Wahl bleibt. Eine dritte Sprache heißt: eine JSON-Datei kopieren und ihre Werte übersetzen.',
|
||||||
caption: 'Derselbe Bildschirm, ?lang=de.',
|
caption: 'Derselbe Bildschirm, ?lang=de.',
|
||||||
},
|
},
|
||||||
@@ -378,13 +378,13 @@ export const DE: Copy = {
|
|||||||
},
|
},
|
||||||
install: {
|
install: {
|
||||||
kicker: 'Installieren',
|
kicker: 'Installieren',
|
||||||
h2: 'Vier Zeilen, dann steht ein Passwort im Log.',
|
h2: 'Zwei Dateien, dann steht ein Passwort im Log.',
|
||||||
p1: 'Die Standard-Compose-Datei startet die Anwendung und ein PostgreSQL, Dateien liegen auf einem Volume. Kein Objektspeicher, kein API-Schlüssel, kein Konto irgendwo. Eine zweite Compose-Datei nimmt MinIO dazu und schaltet alle Module an — für die, die das wollen.',
|
p1: 'Die Standard-Compose-Datei startet die Anwendung und ein PostgreSQL, Dateien liegen auf einem Volume. Kein Objektspeicher, kein API-Schlüssel, kein Konto irgendwo. Eine zweite Compose-Datei nimmt MinIO dazu und schaltet alle Module an — für die, die das wollen. Nichts klonen, nichts bauen: Die Compose-Datei holt ein fertiges Image für amd64 und arm64, ein Raspberry Pi 4 oder 5 reicht also auch, und ein Update ist docker compose pull.',
|
||||||
p2: 'Es gibt keine eingebauten Konten. Der erste Start legt genau einen Administrator an — aus ADMIN_USERNAME und ADMIN_PASSWORD, wenn du sie setzt, sonst mit einem erzeugten Passwort, das genau einmal ins Log geschrieben wird.',
|
p2: 'Es gibt keine eingebauten Konten. Der erste Start legt genau einen Administrator an — aus ADMIN_USERNAME und ADMIN_PASSWORD, wenn du sie setzt, sonst mit einem erzeugten Passwort, das genau einmal ins Log geschrieben wird. Kein Bild zur Hand für den ersten Versuch? Das Druckstudio hat ein Beispielfoto, einen Klick entfernt.',
|
||||||
cta1: 'Quellcode auf GitHub', cta2: 'Releases',
|
cta1: 'Quellcode auf GitHub', cta2: 'Releases',
|
||||||
comment1: '# vier Werte ganz oben; die Datei sagt, welche',
|
comment1: '# vier Werte ganz oben; die Datei sagt, welche',
|
||||||
comment2: '# dein Admin-Passwort, einmalig ausgegeben',
|
comment2: '# dein Admin-Passwort, einmalig ausgegeben',
|
||||||
stack: 'Astro auf Node, PostgreSQL, sharp und pdf-lib. Rund 13.700 Zeilen in 117 Dateien. Sechzehn vorwärts-nur-Migrationen, die beim Start selbst laufen. Typprüfung, Tests und ein Secret-Scan laufen in der CI bei jedem Push.',
|
stack: 'Astro auf Node, PostgreSQL, sharp und pdf-lib. Rund 13.800 Zeilen in 115 Dateien. Siebzehn vorwärts-nur-Migrationen, die beim Start selbst laufen. Typprüfung, Tests und ein Secret-Scan laufen in der CI bei jedem Push.',
|
||||||
},
|
},
|
||||||
privacy: {
|
privacy: {
|
||||||
kicker: 'Warum selbst gehostet',
|
kicker: 'Warum selbst gehostet',
|
||||||
|
|||||||
Reference in new issue
Block a user