300 lines
12 KiB
JavaScript
300 lines
12 KiB
JavaScript
/** Static onboarding section and prerequisite definitions. */
|
|
export const STEP_PREREQS = {
|
|
vaultwarden_master_password: [],
|
|
vaultwarden_store_temp_password: ["vaultwarden_master_password"],
|
|
vaultwarden_browser_extension: ["vaultwarden_master_password"],
|
|
vaultwarden_mobile_app: ["vaultwarden_master_password"],
|
|
keycloak_password_rotated: ["vaultwarden_master_password"],
|
|
element_recovery_key: ["keycloak_password_rotated"],
|
|
element_mobile_app: ["element_recovery_key"],
|
|
mail_client_setup: ["vaultwarden_master_password"],
|
|
nextcloud_web_access: ["vaultwarden_master_password"],
|
|
nextcloud_mail_integration: ["nextcloud_web_access"],
|
|
nextcloud_desktop_app: ["nextcloud_web_access"],
|
|
nextcloud_mobile_app: ["nextcloud_web_access"],
|
|
budget_encryption_ack: ["nextcloud_mail_integration"],
|
|
firefly_password_rotated: ["element_recovery_key"],
|
|
firefly_mobile_app: ["firefly_password_rotated"],
|
|
wger_password_rotated: ["firefly_password_rotated"],
|
|
wger_mobile_app: ["wger_password_rotated"],
|
|
jellyfin_web_access: ["vaultwarden_master_password"],
|
|
jellyfin_mobile_app: ["jellyfin_web_access"],
|
|
jellyfin_tv_setup: ["jellyfin_web_access"],
|
|
};
|
|
|
|
export const SECTION_DEFS = [
|
|
{
|
|
id: "vaultwarden",
|
|
title: "Vaultwarden",
|
|
summary: "Self-hosted password manager for Atlas credentials.",
|
|
benefit: "Keeps every lab password encrypted and synced across devices.",
|
|
steps: [
|
|
{
|
|
id: "vaultwarden_master_password",
|
|
title: "Set your Vaultwarden master password",
|
|
action: "confirm",
|
|
description:
|
|
"Open Nextcloud Mail to find the invite, then visit vault.bstein.dev and create your master password. Use the temporary Keycloak password to sign in to Nextcloud for the first time.",
|
|
bullets: [
|
|
"Prefer a long (64+ character) multi word phrase over a single word. Length is stronger than complexity.",
|
|
"Never share, write, or store your password with anyone or anywhere for any reason. Your password must only live between your ears.",
|
|
"Pick something you will not forget, probably something you already know, something easy to remember, maybe something close to you.",
|
|
],
|
|
links: [
|
|
{ href: "https://cloud.bstein.dev", text: "Nextcloud Mail" },
|
|
{ href: "https://vault.bstein.dev", text: "Vaultwarden" },
|
|
],
|
|
guide: { service: "vaultwarden", step: "step1_website" },
|
|
},
|
|
{
|
|
id: "vaultwarden_browser_extension",
|
|
title: "Install the browser extension",
|
|
action: "checkbox",
|
|
description:
|
|
"Install Bitwarden in your browser and point it at vault.bstein.dev (Settings → Account → Environment → Self-hosted).",
|
|
links: [
|
|
{ href: "https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/", text: "Firefox" },
|
|
{ href: "https://chromewebstore.google.com/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb", text: "Chrome" },
|
|
{ href: "https://apps.apple.com/app/bitwarden/id1352778147", text: "Safari" },
|
|
{ href: "https://www.mozilla.org/firefox/new/", text: "Need a browser? Get Firefox" },
|
|
],
|
|
guide: { service: "vaultwarden", step: "step2_browser_extension" },
|
|
},
|
|
{
|
|
id: "vaultwarden_mobile_app",
|
|
title: "Install the mobile app",
|
|
action: "checkbox",
|
|
description: "Install Bitwarden on your phone, set the server to vault.bstein.dev, and enable biometrics.",
|
|
links: [{ href: "https://bitwarden.com/download/", text: "Bitwarden downloads" }],
|
|
guide: { service: "vaultwarden", step: "step3_mobile_app" },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: "element",
|
|
title: "Element",
|
|
summary: "Secure chat, calls, and video for the lab.",
|
|
benefit: "Private messaging with encryption and recovery controls you own.",
|
|
steps: [
|
|
{
|
|
id: "keycloak_password_rotated",
|
|
title: "Connect to Element web",
|
|
action: "confirm",
|
|
description:
|
|
"Sign in to Element with the temporary password. Keycloak will prompt you to set a new password. Store the new password in Vaultwarden.",
|
|
links: [
|
|
{ href: "https://live.bstein.dev", text: "Element" },
|
|
{ href: "https://sso.bstein.dev/realms/atlas/account", text: "Keycloak account" },
|
|
],
|
|
guide: { service: "element", step: "step1_web_access" },
|
|
},
|
|
{
|
|
id: "element_recovery_key",
|
|
title: "Create your recovery key",
|
|
action: "confirm",
|
|
description:
|
|
"In Element settings → Encryption, create a recovery key and store it in Vaultwarden.",
|
|
guide: { service: "element", step: "step2_record_recovery_key" },
|
|
},
|
|
{
|
|
id: "element_mobile_app",
|
|
title: "Optional: install Element X on mobile",
|
|
action: "checkbox",
|
|
description:
|
|
"Install Element X and sign in. Use Element Web → Settings → Sessions to connect your phone via QR.",
|
|
links: [{ href: "https://element.io/download", text: "Element X downloads" }],
|
|
guide: { service: "element", step: "step3_mobile_app_and_qr_code_login" },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: "mail",
|
|
title: "Mail",
|
|
summary: "Your @bstein.dev inbox for lab notifications and contact.",
|
|
benefit: "One address for every Atlas service and shared communication.",
|
|
steps: [
|
|
{
|
|
id: "mail_client_setup",
|
|
title: "Set up mail on a device",
|
|
action: "checkbox",
|
|
description:
|
|
"Use the IMAP/SMTP details on your Account page to add mail to your phone or desktop client (Thunderbird, Apple Mail, FairEmail).",
|
|
links: [{ href: "/account", text: "Open Account details" }],
|
|
guide: { service: "mail", step: "step1_mail_app" },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: "nextcloud",
|
|
title: "Nextcloud",
|
|
summary: "File storage, calendar, and mail hub for the lab.",
|
|
benefit: "Central workspace for docs, sharing, and your mailbox.",
|
|
steps: [
|
|
{
|
|
id: "nextcloud_web_access",
|
|
title: "Sign in to Nextcloud",
|
|
action: "checkbox",
|
|
description:
|
|
"Open Nextcloud, confirm you can access Files, Calendar, and Mail, and keep the tab handy during onboarding.",
|
|
links: [{ href: "https://cloud.bstein.dev", text: "Nextcloud" }],
|
|
guide: { service: "nextcloud", step: "step1_web_access" },
|
|
},
|
|
{
|
|
id: "nextcloud_mail_integration",
|
|
title: "Mail integration ready",
|
|
action: "auto",
|
|
description:
|
|
"Atlas configures your mailbox inside Nextcloud automatically. If this stays pending, use Accounts → Sync Mail and retry.",
|
|
guide: { service: "nextcloud", step: "step2_mail_integration" },
|
|
},
|
|
{
|
|
id: "nextcloud_desktop_app",
|
|
title: "Optional: install the desktop sync app",
|
|
action: "checkbox",
|
|
description: "Install the Nextcloud desktop app to sync files locally.",
|
|
links: [{ href: "https://nextcloud.com/install/", text: "Nextcloud desktop" }],
|
|
guide: { service: "nextcloud", step: "step3_desktop_storage_app" },
|
|
},
|
|
{
|
|
id: "nextcloud_mobile_app",
|
|
title: "Optional: install the mobile app",
|
|
action: "checkbox",
|
|
description: "Install the Nextcloud mobile app for files and photos on the go.",
|
|
links: [{ href: "https://nextcloud.com/install/", text: "Nextcloud mobile" }],
|
|
guide: { service: "nextcloud", step: "step4_mobile_app" },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: "budget",
|
|
title: "Budget Encryption",
|
|
summary: "Actual Budget for private personal finance.",
|
|
benefit: "Encryption keeps your budget data safe and portable.",
|
|
steps: [
|
|
{
|
|
id: "budget_encryption_ack",
|
|
title: "Enable encryption inside Actual Budget",
|
|
action: "checkbox",
|
|
description:
|
|
"Actual Budget does not encrypt by default. Open Settings → Encryption, enable it, and store the key in Vaultwarden.",
|
|
bullets: [
|
|
"Keep the encryption key only in Vaultwarden.",
|
|
"If you lose the key, your budget data cannot be recovered.",
|
|
],
|
|
links: [
|
|
{ href: "https://budget.bstein.dev", text: "Actual Budget" },
|
|
{ href: "https://vault.bstein.dev", text: "Vaultwarden" },
|
|
],
|
|
guide: { service: "budget", step: "step1_encrypt_data" },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: "firefly",
|
|
title: "Firefly III",
|
|
summary: "Personal finance tracker for transactions and reporting.",
|
|
benefit: "Detailed insights, budgets, and exports under your control.",
|
|
steps: [
|
|
{
|
|
id: "firefly_password_rotated",
|
|
title: "Change your Firefly password",
|
|
action: "confirm",
|
|
description:
|
|
"Sign in to money.bstein.dev with the credentials on your Account page, change the password, then confirm here.",
|
|
links: [
|
|
{ href: "https://money.bstein.dev", text: "Firefly III" },
|
|
{ href: "/account", text: "Account credentials" },
|
|
],
|
|
guide: { service: "firefly", step: "step1_web_access" },
|
|
},
|
|
{
|
|
id: "firefly_mobile_app",
|
|
title: "Optional: set up the mobile app",
|
|
action: "checkbox",
|
|
description:
|
|
"Install Abacus (Firefly III), connect to money.bstein.dev, and keep the OAuth credentials in Vaultwarden.",
|
|
links: [
|
|
{ href: "https://github.com/vgsmar/Abacus/releases", text: "Abacus releases" },
|
|
{ href: "/account", text: "Account credentials" },
|
|
],
|
|
guide: { service: "firefly", step: "step2_mobile_app" },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: "wger",
|
|
title: "Wger",
|
|
summary: "Fitness tracking for workouts and nutrition.",
|
|
benefit: "Keeps training plans and progress in one place.",
|
|
steps: [
|
|
{
|
|
id: "wger_password_rotated",
|
|
title: "Change your Wger password",
|
|
action: "confirm",
|
|
description:
|
|
"Sign in to health.bstein.dev with the credentials on your Account page, change the password, then confirm here.",
|
|
links: [
|
|
{ href: "https://health.bstein.dev", text: "Wger" },
|
|
{ href: "/account", text: "Account credentials" },
|
|
],
|
|
guide: { service: "wger", step: "step1_web_access" },
|
|
},
|
|
{
|
|
id: "wger_mobile_app",
|
|
title: "Optional: set up the mobile app",
|
|
action: "checkbox",
|
|
description:
|
|
"Install the Wger mobile app, sign in with your updated credentials, and store the password in Vaultwarden.",
|
|
links: [
|
|
{ href: "https://github.com/wger-project/wger", text: "Wger project" },
|
|
{ href: "/account", text: "Account credentials" },
|
|
],
|
|
guide: { service: "wger", step: "step2_mobile_app" },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: "jellyfin",
|
|
title: "Jellyfin",
|
|
summary: "Self-hosted media streaming for the lab.",
|
|
benefit: "Watch your media anywhere without third-party accounts.",
|
|
steps: [
|
|
{
|
|
id: "jellyfin_web_access",
|
|
title: "Sign in to Jellyfin",
|
|
action: "checkbox",
|
|
description:
|
|
"Sign in with your Atlas username/password (LDAP-backed).",
|
|
links: [{ href: "https://stream.bstein.dev", text: "Jellyfin" }],
|
|
guide: { service: "jellyfin", step: "step1_web_access" },
|
|
},
|
|
{
|
|
id: "jellyfin_mobile_app",
|
|
title: "Optional: install the mobile app",
|
|
action: "checkbox",
|
|
description: "Install Jellyfin on mobile and connect to stream.bstein.dev.",
|
|
links: [{ href: "https://jellyfin.org/downloads/", text: "Jellyfin downloads" }],
|
|
guide: { service: "jellyfin", step: "step2_mobile_app" },
|
|
},
|
|
{
|
|
id: "jellyfin_tv_setup",
|
|
title: "Optional: connect a TV client",
|
|
action: "checkbox",
|
|
description:
|
|
"Use the Jellyfin app on your TV or streaming device (LG, Samsung, Roku, Apple TV, Xbox).",
|
|
links: [{ href: "https://jellyfin.org/downloads/", text: "Jellyfin TV apps" }],
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
export const VAULTWARDEN_TEMP_STEP = {
|
|
id: "vaultwarden_store_temp_password",
|
|
title: "Store the temporary Keycloak password",
|
|
action: "confirm",
|
|
description:
|
|
"Save the temporary Keycloak password in Vaultwarden so you can rotate it later without losing access.",
|
|
links: [{ href: "https://vault.bstein.dev", text: "Vaultwarden" }],
|
|
guide: { service: "vaultwarden", step: "step1_website", tail: 4 },
|
|
};
|