Files
start-os/web
Aiden McClelland 0430e0f930 alpha.16 (#3068)
* add support for idmapped mounts to start-sdk

* misc fixes

* misc fixes

* add default to textarea

* fix iptables masquerade rule

* fix textarea types

* more fixes

* better logging for rsync

* fix tty size

* fix wg conf generation for android

* disable file mounts on dependencies

* mostly there, some styling issues (#3069)

* mostly there, some styling issues

* fix: address comments (#3070)

* fix: address comments

* fix: fix

* show SSL for any address with secure protocol and ssl added

* better sorting and messaging

---------

Co-authored-by: Alex Inkin <alexander@inkin.ru>

* fixes for nextcloud

* allow sidebar navigation during service state traansitions

* wip: x-forwarded headers

* implement x-forwarded-for proxy

* lowercase domain names and fix warning popover bug

* fix http2 websockets

* fix websocket retry behavior

* add arch filters to s9pk pack

* use docker for start-cli install

* add version range to package signer on registry

* fix rcs < 0

* fix user information parsing

* refactor service interface getters

* disable idmaps

* build fixes

* update docker login action

* streamline build

* add start-cli workflow

* rename

* riscv64gc

* fix ui packing

* no default features on cli

* make cli depend on GIT_HASH

* more build fixes

* more build fixes

* interpolate arch within dockerfile

* fix tests

* add launch ui to service page plus other small improvements (#3075)

* add launch ui to service page plus other small improvements

* revert translation disable

* add spinner to service list if service is health and loading

* chore: some visual tune up

* chore: update Taiga UI

---------

Co-authored-by: waterplea <alexander@inkin.ru>

* fix backups

* feat: use arm hosted runners and don't fail when apt package does not exist (#3076)

---------

Co-authored-by: Matt Hill <mattnine@protonmail.com>
Co-authored-by: Shadowy Super Coder <musashidisciple@proton.me>
Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com>
Co-authored-by: Alex Inkin <alexander@inkin.ru>
Co-authored-by: Remco Ros <remcoros@live.nl>
2025-12-15 13:30:50 -07:00
..
2025-12-15 13:30:50 -07:00
2023-11-13 15:59:16 -07:00
2023-11-13 15:59:16 -07:00
2025-04-13 13:03:51 -06:00
2025-11-07 10:12:05 +00:00
2023-11-13 15:59:16 -07:00
2025-12-15 13:30:50 -07:00
2025-12-15 13:30:50 -07:00
2025-07-18 18:31:12 +00:00
2025-05-17 18:10:24 -06:00
2025-07-18 18:31:12 +00:00
2023-11-13 15:59:16 -07:00
2025-04-17 09:00:59 -06:00

StartOS Web

StartOS web UIs are written in Angular/Typescript and leverage the Ionic Framework component library.

StartOS conditionally serves one of three Web UIs, depending on the state of the system and user choice.

  • install-wizard - UI for installing StartOS, served on localhost.
  • setup-wizard - UI for setting up StartOS, served on start.local.
  • ui - primary UI for administering StartOS, served on various hosts unique to the instance.

Additionally, there are two libraries for shared code:

  • marketplace - library code shared between the StartOS UI and Start9's brochure marketplace.
  • shared - library code shared between the various web UIs and marketplace lib.

Environment Setup

Install NodeJS and NPM

Check that your versions match the ones below

node --version
v22.15.0

npm --version
v11.3.0

Install and enable the Prettier extension for your text editor

Clone StartOS and load submodules

git clone https://github.com/Start9Labs/start-os.git
cd start-os
git submodule update --init --recursive

Move to web directory and install dependencies

cd web
npm ci
npm run build:deps

Note if you are on Windows you need to install make for these scripts to work. Easiest way to do so is to install Chocolatey and then run choco install make.

Copy config-sample.json to a new file config.json.

cp config-sample.json config.json
  • By default, "useMocks" is set to true.
  • Use "maskAs" to mock the host from which the web UI is served. Valid values are tor, local, localhost, ipv4, ipv6, and clearnet.
  • Use "maskAsHttps" to mock the protocol over which the web UI is served. true means https; false means http.

Running the development server

You can develop using mocks (recommended to start) or against a live server. Either way, any code changes will live reload the development server and refresh the browser page.

Using mocks

Start the standard development server

npm run start:install
npm run start:setup
npm run start:ui

Proxying to a live server

In config.json, set "useMocks" to false

Copy proxy.conf-sample.json to a new file proxy.conf.json

cp proxy.conf-sample.json proxy.conf.json

Replace every instance of "<CHANGEME>" with the hostname of your remote server

Start the proxy development server

npm run start:ui:proxy

Translations

Currently supported languages

  • Spanish
  • Polish
  • German
  • French

Adding a new translation

When prompting AI to translate the English dictionary, it is recommended to only give it 50-100 entries at a time. Beyond that it struggles. Remember to sanity check the results and ensure keys/values align in the resulting dictionary.

Sample AI prompt

Translate the English dictionary below into <language>. Format the result as a javascript object with the numeric values of the English dictionary as keys in the translated dictionary. These translations are for the web UI of StartOS, a graphical server operating system optimized for self-hosting. Comments may be included in the English dictionary to provide additional context.

Adding to StartOS

  • In the shared project:

    1. Create a new file (language.ts) in src/i18n/dictionaries
    2. Update the I18N_PROVIDERS array in src/i18n/i18n.providers.ts (2 places)
    3. Update the languages array in /src/i18n/i18n.service.ts
    4. Add the name of the new language (lowercase) to the English dictionary in src/i18n/dictionaries/en.ts. Add the translations of the new languages name (lowercase) to ALL non-English dictionaries in src/i18n/dictionaries/ (e.g., es.ts, pl.ts, etc.).

    If you have any doubt about the above steps, check the French example PR for reference.

  • Here in this README:

    1. Add the language to the list of supported languages below

Updating the English dictionary

Sample AI prompt

Translate the English dictionary below into the languages beneath the dictionary. Format the result as a javascript object with translated language as keys, mapping to a javascript object with the numeric values of the English dictionary as keys and the translations as values. These translations are for the web UI of StartOS, a graphical server operating system optimized for self-hosting. Comments may be included in the English dictionary to provide additional context.

English dictionary:

'Hello': 420,
'Goodby': 421

Languages:

  • Spanish
  • Polish
  • German
  • French

Adding to StartOS

In the shared project, copy/past the translations into their corresponding dictionaries in /src/i18n/dictionaries.