Compare commits

...

35 Commits

Author SHA1 Message Date
hysyeah
f93448f8b2 fix: stop app if it is hami cause unschedule no wait (#2531)
* fix: stop app if it is hami cause unschedule

* ingore param from req if size=0
2026-02-12 20:35:10 +08:00
hysyeah
e546aeb3e7 fix: set amd apu/gpu limit key to amd.com/gpu (#2516) 2026-02-10 15:42:22 +08:00
hys
2ae096946b fix: set amd apu/gpu limit key to amd.com/gpu 2026-02-10 14:52:51 +08:00
eball
62e6b1de90 Merge branch 'main' into module-appservice
* main:
  docs: add OpenClaw tutorial (#2506)
  docs: batch add docs for one (#2457)
  settings, market, files, vault, desktop: fix some ui bugs (#2503)
  feat(cli): add more lines to default journalctl limit (#2502)
  app-service: handle case for system apps without configuration in permission API  (#2499)
  fix(cli): seperate dmesg args for dmesg logs (#2497)
  docs: add FAQs about activation and login (#2481)
  docs: add middleware data access and integration guides (#2444)
  docs: add docs for distributing olares apps (#2484)
2026-02-09 15:58:39 +08:00
eball
17b4fdaf7f fix: update app-service image version to 0.5.2 2026-02-09 15:57:04 +08:00
eball
45a326230e fix: handle case for system applications without configuration in provider list (#2507) 2026-02-09 15:14:35 +08:00
Power-One-2025
d2e685abd8 docs: add OpenClaw tutorial (#2506)
* add OpenClaw tutorial

* modify images, refine text for clarity

* add to index page, add description

* adjust table

* remove hidden text

* refinements for consistency

* update for clarity and concise
2026-02-09 11:03:05 +08:00
Yajing
ae2b6b1353 docs: batch add docs for one (#2457)
* add index and faq

* add comfyui

* add vpn and ssh

* add deerflow

* add expand storage

* fix link

* fix meta

* refine first boot & spec

* refine redeem basic plan

* add open webui & fix formatting

* batch review

* add rest image

* update introduction

* add zh-cn

* add nav

* add screenshots

* add single-drive setup & update dual-drive setup

* add egpu

* add steam

* fix lint

* align en and zh-cn

* fix image path

* fix lint
2026-02-07 15:58:15 +08:00
berg
8cbdc32725 settings, market, files, vault, desktop: fix some ui bugs (#2503)
feat: update system frontend version
2026-02-05 23:51:13 +08:00
dkeven
c696be90e6 feat(cli): add more lines to default journalctl limit (#2502) 2026-02-05 23:50:46 +08:00
eball
9487ef8862 app-service: handle case for system apps without configuration in permission API (#2499)
* fix: failed release upgrade

* fix: helm upgrade do not use atomic param and allow upgrade failed release

* fix: v2 app stop

* fix: check k8s request before into installing state

* fix: add spec ports

* feat(appservice): support updating more fields in api & controller (#2472)

* fix: app uninstall delete data (#2478)

* fix: handle case for system apps without configuration in permission API (#2498)

* app-service: handle case for system apps without configuration in permission API

---------

Co-authored-by: hys <hysyeah@gmail.com>
Co-authored-by: dkeven <82354774+dkeven@users.noreply.github.com>
2026-02-05 23:50:09 +08:00
dkeven
a982a1568a fix(cli): seperate dmesg args for dmesg logs (#2497) 2026-02-05 23:49:05 +08:00
Power-One-2025
60d445f92a docs: add FAQs about activation and login (#2481)
* add: FAQs about activation and login

* Apply suggestion from @fnalways

Co-authored-by: Yajing <110797546+fnalways@users.noreply.github.com>

* Apply suggestion from @fnalways

Co-authored-by: Yajing <110797546+fnalways@users.noreply.github.com>

* address comments

---------

Co-authored-by: Yajing <110797546+fnalways@users.noreply.github.com>
2026-02-05 23:38:51 +08:00
Meow33
839133fc27 docs: add middleware data access and integration guides (#2444)
* docs: add guides to view middleware data

* docs: add guide for grafana

* docs: add guide for otel and integration guides for other middleware

* docs: add guide for elasticsearch

* docs: update based on suggestions

* Update zh.ts

* docs: update content

* docs: resolve conflict
2026-02-05 23:34:59 +08:00
Meow33
2e6405ae1b docs: add docs for distributing olares apps (#2484)
* docs: add docs for distributing olares apps

* docs: update translation

* Apply suggestion from @fnalways

Co-authored-by: Yajing <110797546+fnalways@users.noreply.github.com>

* docs: refine documentation structure

* docs: fix punctuations

---------

Co-authored-by: Yajing <110797546+fnalways@users.noreply.github.com>
2026-02-05 20:22:47 +08:00
eball
914c99e5df Merge branch 'main' into module-appservice
* main:
  Modify release-daemon.yaml for arm64 support
  fix: seafile trim commit_id for syncing and change psql ccnet init (#2495)
  backup: sync systemEnv default remote url (#2492)
  download-server: nats message publish modify (#2489)
  fix(cli): clear master host config when uninstalling (#2488)
  market, settings: support optional data deletion and fix bugs. (#2486)
  fix(cli): do not override upgrade target version by config file (#2483)
  app-service: feat app uninstall delete data (#2480)
2026-02-05 17:23:00 +08:00
eball
8f85a09564 app-service: handle case for system apps without configuration in permission API 2026-02-05 17:21:45 +08:00
eball
65b57fbf66 fix: handle case for system apps without configuration in permission API (#2498) 2026-02-05 17:19:13 +08:00
eball
5109ad001c Modify release-daemon.yaml for arm64 support
Add support for arm64 architecture in release daemon workflow
2026-02-05 14:24:33 +08:00
lovehunter9
4d850312f0 fix: seafile trim commit_id for syncing and change psql ccnet init (#2495) 2026-02-05 12:09:16 +08:00
aby913
1265ca929c backup: sync systemEnv default remote url (#2492)
* fix: get systemenv remove host

* backup: sync systemEnv default value
2026-02-05 00:30:52 +08:00
simon
6302bee05d download-server: nats message publish modify (#2489)
download
2026-02-05 00:29:45 +08:00
dkeven
2838d95f25 fix(cli): clear master host config when uninstalling (#2488) 2026-02-05 00:29:11 +08:00
berg
d3d7fc372d market, settings: support optional data deletion and fix bugs. (#2486)
* feat: support optional data deletion when uninstalling apps in Market

* market: add deleteData switch, add users info

* feat: update system frontend version

---------

Co-authored-by: aby913 <aby913@163.com>
2026-02-04 21:51:14 +08:00
dkeven
2bc061fcd8 fix(cli): do not override upgrade target version by config file (#2483) 2026-02-04 21:50:00 +08:00
hysyeah
f14cc982b5 app-service: feat app uninstall delete data (#2480)
* fix: failed release upgrade

* fix: helm upgrade do not use atomic param and allow upgrade failed release

* fix: v2 app stop

* fix: check k8s request before into installing state

* fix: add spec ports

* feat(appservice): support updating more fields in api & controller (#2472)

* fix: app uninstall delete data (#2478)

---------

Co-authored-by: dkeven <82354774+dkeven@users.noreply.github.com>
2026-02-03 21:52:20 +08:00
hysyeah
b91566d6cd fix: app uninstall delete data (#2478) 2026-02-03 20:33:47 +08:00
dkeven
de87bd6b8e feat(appservice): support updating more fields in api & controller (#2472) 2026-02-03 20:32:14 +08:00
hys
95291474cb fix: add spec ports 2026-02-03 20:31:32 +08:00
hys
7a23d52b13 fix: check k8s request before into installing state 2026-02-03 20:31:32 +08:00
hys
93a9fcd834 fix: v2 app stop 2026-02-03 20:31:32 +08:00
hys
45a3e91bbd fix: helm upgrade do not use atomic param and allow upgrade failed release 2026-02-03 20:31:32 +08:00
hys
c9bac68646 fix: failed release upgrade 2026-02-03 20:31:32 +08:00
dkeven
dd727befe7 fix(cli): bind config item to the effective command (#2474) 2026-02-03 20:14:14 +08:00
dkeven
83561bf1b7 feat: support more scheme update to env crs (#2473) 2026-02-03 20:09:19 +08:00
342 changed files with 15044 additions and 551 deletions

View File

@@ -46,7 +46,15 @@ jobs:
- name: install udev-devel and pcap-devel
run: |
sudo apt update && sudo apt install -y libudev-dev libpcap-dev
sudo dpkg --add-architecture arm64
# Only modify ubuntu official sources, not third-party sources
sudo sed -i 's/^deb http:\/\/azure.archive.ubuntu.com/deb [arch=amd64] http:\/\/azure.archive.ubuntu.com/' /etc/apt/sources.list.d/ubuntu.sources 2>/dev/null || true
sudo sed -i 's/^Types: deb$/Types: deb\nArchitectures: amd64/' /etc/apt/sources.list.d/ubuntu.sources 2>/dev/null || true
# Add arm64 sources
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports noble main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/arm64.list
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports noble-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64.list
sudo apt update
sudo apt install -y libudev-dev libpcap-dev libudev-dev:arm64 libpcap-dev:arm64
- name: Install x86_64 cross-compiler
run: sudo apt-get update && sudo apt-get install -y build-essential

View File

@@ -317,7 +317,7 @@ spec:
chown -R 1000:1000 /uploadstemp && \
chown -R 1000:1000 /appdata
- name: olares-app-init
image: beclab/system-frontend:v1.8.5
image: beclab/system-frontend:v1.8.10
imagePullPolicy: IfNotPresent
command:
- /bin/sh

View File

@@ -43,6 +43,15 @@ userEnvs:
- envName: OLARES_USER_SMTP_SECURITY_PROTOCOLS
type: string
editable: true
options:
- title: "TLS"
value: "tls"
- title: "SSL"
value: "ssl"
- title: "StartTLS"
value: "starttls"
- title: "None"
value: "none"
- envName: OLARES_USER_OPENAI_APIKEY
type: password
editable: true

View File

@@ -281,7 +281,7 @@ func collectSystemdLogs(tw *tar.Writer, options *LogCollectOptions) error {
}
func collectDmesgLogs(tw *tar.Writer, options *LogCollectOptions) error {
cmd := exec.Command("dmesg -T")
cmd := exec.Command("dmesg", "-T")
output, err := cmd.Output()
if err != nil {
return err
@@ -645,7 +645,7 @@ func checkServiceExists(service string) bool {
func NewCmdLogs() *cobra.Command {
options := &LogCollectOptions{
Since: "7d",
MaxLines: 3000,
MaxLines: 20000,
OutputDir: "./olares-logs",
IgnoreKubeErrors: false,
}

View File

@@ -13,6 +13,7 @@ import (
"github.com/beclab/Olares/cli/cmd/ctl/user"
"github.com/beclab/Olares/cli/version"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
func NewDefaultCommand() *cobra.Command {
@@ -25,6 +26,11 @@ func NewDefaultCommand() *cobra.Command {
Short: "Olares Installer",
CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true},
Version: version.VERSION,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
viper.BindPFlags(cmd.InheritedFlags())
viper.BindPFlags(cmd.PersistentFlags())
viper.BindPFlags(cmd.Flags())
},
Run: func(cmd *cobra.Command, args []string) {
if showVendor {
fmt.Println(version.VENDOR)

View File

@@ -211,6 +211,9 @@ func NewArgument() *Argument {
arg.IsOlaresInContainer = os.Getenv(ENV_CONTAINER_MODE) == "oic"
si.IsOIC = arg.IsOlaresInContainer
// Ensure BaseDir is initialized before loading master.conf
// so master host config can be loaded from ${base-dir}/master.conf reliably.
arg.SetBaseDir(viper.GetString(FlagBaseDir))
arg.loadMasterHostConfig()
return arg
}
@@ -382,6 +385,10 @@ func (a *Argument) loadMasterHostConfig() {
}
}
func (a *Argument) ClearMasterHostConfig() {
a.MasterHostConfig = &MasterHostConfig{}
}
func (a *Argument) SetManifest(manifest string) {
a.Manifest = manifest
}

View File

@@ -18,7 +18,6 @@ func AddNodePipeline() error {
}
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetConsoleLog("addnode.log", true)
if err := arg.MasterHostConfig.Validate(); err != nil {

View File

@@ -19,7 +19,6 @@ func ChangeIPPipeline() error {
var arg = common.NewArgument()
arg.SetOlaresVersion(terminusVersion)
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetConsoleLog("changeip.log", true)
arg.SetKubeVersion(kubeType)
arg.SetMinikubeProfile(viper.GetString(common.FlagMiniKubeProfile))

View File

@@ -12,7 +12,6 @@ import (
func CheckDownloadInstallationPackage() error {
arg := common.NewArgument()
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
runtime, err := common.NewKubeRuntime(*arg)
if err != nil {

View File

@@ -13,7 +13,6 @@ import (
func DownloadInstallationPackage() error {
arg := common.NewArgument()
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))
arg.SetOlaresCDNService(viper.GetString(common.FlagCDNService))

View File

@@ -13,7 +13,6 @@ import (
func DownloadInstallationWizard() error {
arg := common.NewArgument()
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetOlaresCDNService(viper.GetString(common.FlagCDNService))
runtime, err := common.NewKubeRuntime(*arg)

View File

@@ -15,7 +15,6 @@ import (
func InstallGpuDrivers() error {
arg := common.NewArgument()
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetConsoleLog("gpuinstall.log", true)
runtime, err := common.NewKubeRuntime(*arg)
if err != nil {

View File

@@ -20,7 +20,6 @@ func CliInstallTerminusPipeline() error {
}
arg := common.NewArgument()
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetKubeVersion(viper.GetString(common.FlagKubeType))
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))
arg.SetMinikubeProfile(viper.GetString(common.FlagMiniKubeProfile))

View File

@@ -8,7 +8,6 @@ import (
"github.com/beclab/Olares/cli/pkg/core/module"
"github.com/beclab/Olares/cli/pkg/core/pipeline"
"github.com/beclab/Olares/cli/pkg/terminus"
"github.com/spf13/viper"
)
func MasterInfoPipeline() error {
@@ -17,7 +16,6 @@ func MasterInfoPipeline() error {
fmt.Println("error: Only Linux nodes can be added to an Olares cluster!")
os.Exit(1)
}
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetConsoleLog("masterinfo.log", true)
if err := arg.MasterHostConfig.Validate(); err != nil {

View File

@@ -11,7 +11,6 @@ import (
func StartPreCheckPipeline() error {
var arg = common.NewArgument()
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetConsoleLog("precheck.log", true)
runtime, err := common.NewKubeRuntime(*arg)

View File

@@ -28,7 +28,6 @@ func PrepareSystemPipeline(components []string) error {
}
var arg = common.NewArgument()
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetKubeVersion(viper.GetString(common.FlagKubeType))
arg.SetMinikubeProfile(viper.GetString(common.FlagMiniKubeProfile))
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))

View File

@@ -18,7 +18,6 @@ func CliInstallStoragePipeline() error {
}
arg := common.NewArgument()
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))
arg.SetStorage(getStorageConfig())

View File

@@ -20,10 +20,10 @@ func UninstallTerminusPipeline() error {
var arg = common.NewArgument()
arg.SetOlaresVersion(version)
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetConsoleLog("uninstall.log", true)
arg.SetKubeVersion(kubeType)
arg.SetStorage(getStorageConfig())
arg.ClearMasterHostConfig()
phase := viper.GetString(common.FlagUninstallPhase)
all := viper.GetBool(common.FlagUninstallAll)

View File

@@ -30,13 +30,7 @@ func UpgradeOlaresPipeline() error {
return fmt.Errorf("error parsing current Olares version: %v", err)
}
// should only be and defaults to the current cli version
// this argument is for backwards-compatibility with older olaresd
targetVersionStr := viper.GetString(common.FlagVersion)
if targetVersionStr == "" {
targetVersionStr = version.VERSION
}
targetVersion, err := utils.ParseOlaresVersionString(targetVersionStr)
targetVersion, err := utils.ParseOlaresVersionString(version.VERSION)
if err != nil {
return fmt.Errorf("error parsing target Olares version: %v", err)
}
@@ -46,7 +40,6 @@ func UpgradeOlaresPipeline() error {
}
arg := common.NewArgument()
arg.SetBaseDir(viper.GetString(common.FlagBaseDir))
arg.SetOlaresVersion(viper.GetString(common.FlagVersion))
arg.SetConsoleLog("upgrade.log", true)
arg.SetKubeVersion(phase.GetKubeType())

View File

@@ -6,6 +6,7 @@ import (
"path/filepath"
"strings"
"github.com/beclab/Olares/cli/pkg/common"
"github.com/beclab/Olares/cli/pkg/core/util"
)
@@ -57,6 +58,10 @@ func (m *Manager) Package() error {
return err
}
if err := m.packageEnvConfig(); err != nil {
return err
}
return nil
}
@@ -121,3 +126,19 @@ func (m *Manager) packageGPU() error {
filepath.Join(m.distPath, "wizard/config/gpu"),
)
}
func (m *Manager) packageEnvConfig() error {
fmt.Println("packaging env config ...")
systemEnvSrc := filepath.Join(m.olaresRepoRoot, "build", common.OLARES_SYSTEM_ENV_FILENAME)
userEnvSrc := filepath.Join(m.olaresRepoRoot, "build", common.OLARES_USER_ENV_FILENAME)
if err := util.CopyFile(systemEnvSrc, filepath.Join(m.distPath, common.OLARES_SYSTEM_ENV_FILENAME)); err != nil {
return err
}
if err := util.CopyFile(userEnvSrc, filepath.Join(m.distPath, common.OLARES_USER_ENV_FILENAME)); err != nil {
return err
}
return nil
}

View File

@@ -125,6 +125,11 @@ func (t *CreateUserEnvConfigMap) Execute(runtime connector.Runtime) error {
return nil
}
desiredBytes, err := os.ReadFile(userEnvPath)
if err != nil {
return errors.Wrap(err, "failed to read user env config file")
}
configK8s, err := ctrl.GetConfig()
if err != nil {
return errors.Wrap(err, "failed to get kubernetes config")
@@ -144,17 +149,24 @@ func (t *CreateUserEnvConfigMap) Execute(runtime connector.Runtime) error {
defer cancel()
name := "user-env"
namespace := common.NamespaceOsFramework
cm := &corev1.ConfigMap{}
err = ctrlclient.Get(ctx, types.NamespacedName{Name: name, Namespace: common.NamespaceOsFramework}, cm)
err = ctrlclient.Get(ctx, types.NamespacedName{Name: name, Namespace: namespace}, cm)
if apierrors.IsNotFound(err) {
// create via kubectl from file
kubectl, _ := util.GetCommand(common.CommandKubectl)
cmd := fmt.Sprintf("%s -n %s create configmap %s --from-file=%s=%s",
kubectl, common.NamespaceOsFramework, name, common.OLARES_USER_ENV_FILENAME, userEnvPath,
)
if _, cerr := runtime.GetRunner().SudoCmd(cmd, false, true); cerr != nil {
return errors.Wrap(errors.WithStack(cerr), "failed to create user-env configmap")
cm = &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: namespace,
},
Data: map[string]string{
common.OLARES_USER_ENV_FILENAME: string(desiredBytes),
},
}
if err := ctrlclient.Create(ctx, cm); err != nil && !apierrors.IsAlreadyExists(err) {
return errors.Wrap(err, "failed to create user-env configmap")
}
logger.Infof("Created user env configmap from %s", userEnvPath)
return nil
}
@@ -162,57 +174,21 @@ func (t *CreateUserEnvConfigMap) Execute(runtime connector.Runtime) error {
return errors.Wrap(err, "failed to get user-env configmap")
}
// If exists, merge missing envs and update via client
newDataBytes, err := os.ReadFile(userEnvPath)
if err != nil {
return errors.Wrap(err, "failed to read user env config file")
}
var newCfg UserEnvConfig
if err := yaml.Unmarshal(newDataBytes, &newCfg); err != nil {
return errors.Wrap(err, "failed to parse user env config file")
}
var existingCfg UserEnvConfig
existingContent := cm.Data[common.OLARES_USER_ENV_FILENAME]
if existingContent != "" {
if err := yaml.Unmarshal([]byte(existingContent), &existingCfg); err != nil {
return errors.Wrap(err, "failed to parse existing user env configmap data")
}
}
existingSet := make(map[string]struct{}, len(existingCfg.UserEnvs))
for _, e := range existingCfg.UserEnvs {
existingSet[e.EnvName] = struct{}{}
}
missing := 0
for _, e := range newCfg.UserEnvs {
if _, ok := existingSet[e.EnvName]; !ok {
existingCfg.UserEnvs = append(existingCfg.UserEnvs, e)
missing++
}
}
if missing == 0 {
logger.Infof("No new user envs to add; configmap up to date")
return nil
}
updatedBytes, err := yaml.Marshal(existingCfg)
if err != nil {
return errors.Wrap(err, "failed to marshal updated user env config")
}
if cm.Data == nil {
cm.Data = map[string]string{}
}
cm.Data[common.OLARES_USER_ENV_FILENAME] = string(updatedBytes)
if cm.Data[common.OLARES_USER_ENV_FILENAME] == string(desiredBytes) {
logger.Infof("user-env configmap is up to date")
return nil
}
cm.Data[common.OLARES_USER_ENV_FILENAME] = string(desiredBytes)
if err := ctrlclient.Update(ctx, cm); err != nil {
return errors.Wrap(err, "failed to update user-env configmap")
}
logger.Infof("Appended %d missing user env(s) and updated configmap", missing)
logger.Infof("Updated user env configmap from %s", userEnvPath)
return nil
}

View File

@@ -7,15 +7,15 @@ import (
"github.com/beclab/Olares/cli/pkg/core/task"
)
type upgrader_1_12_6_20260122 struct {
type upgrader_1_12_5_20260122 struct {
breakingUpgraderBase
}
func (u upgrader_1_12_6_20260122) Version() *semver.Version {
return semver.MustParse("1.12.6-20260122")
func (u upgrader_1_12_5_20260122) Version() *semver.Version {
return semver.MustParse("1.12.5-20260122")
}
func (u upgrader_1_12_6_20260122) UpgradeSystemComponents() []task.Interface {
func (u upgrader_1_12_5_20260122) UpgradeSystemComponents() []task.Interface {
pre := []task.Interface{
&task.LocalTask{
Name: "UpgradeL4BFLProxy",
@@ -28,5 +28,5 @@ func (u upgrader_1_12_6_20260122) UpgradeSystemComponents() []task.Interface {
}
func init() {
registerDailyUpgrader(upgrader_1_12_6_20260122{})
registerDailyUpgrader(upgrader_1_12_5_20260122{})
}

View File

@@ -1,5 +1,5 @@
import { defineConfig, type DefaultTheme } from "vitepress";
import { oneSidebar } from './one.en.ts';
const side = {
"/manual/": [
{
@@ -17,7 +17,7 @@ const side = {
link: "/manual/help/olares",
},
{
text: "Installation FAQs",
text: "Setup & access FAQs",
link: "/manual/help/installation",
},
{
@@ -133,53 +133,8 @@ const side = {
},
],
},
{
text: "LarePass",
link: "/manual/larepass/",
collapsed: true,
items: [
{
text: "Manage accounts",
collapsed: true,
items: [
{ text: "Create accounts", link: "/manual/larepass/create-account" },
{ text: "Back up mnemonics", link: "/manual/larepass/back-up-mnemonics" },
{ text: "Manage integrations", link: "/manual/larepass/integrations" },
],
},
{ text: "Use VPN", link: "/manual/larepass/private-network" },
{
text: "Manage device",
collapsed: true,
items: [
{ text: "Activate Olares", link: "/manual/larepass/activate-olares" },
{ text: "Manage Olares", link: "/manual/larepass/manage-olares" },
],
},
{ text: "Manage files", link: "/manual/larepass/manage-files" },
// collapsed: true,
//items: [
// {text: "Common file operations", link:"/manual/larepass/manage-files"},
// {text: "Sync and share", link:"/manual/larepass/sync-share"}
// ]
// },
{
text: "Manage passwords",
collapsed: true,
items: [
{ text: "Autofill passwords", link: "/manual/larepass/autofill" },
{ text: "Generate 2FA codes", link: "/manual/larepass/two-factor-verification" },
],
},
/*{
text: "Manage knowledge",
link: "/manual/larepass/manage-knowledge",
},*/
],
},
{
text: "Olares applications",
collapsed: true,
link: "/manual/olares/",
items: [
{ text: "Desktop", link: "/manual/olares/desktop", },
@@ -403,42 +358,53 @@ const side = {
],
},
{
text: "Tutorials",
link: "/manual/best-practices/",
text: "LarePass",
link: "/manual/larepass/",
collapsed: true,
items: [
{
text: "Set up custom domain",
link: "/manual/best-practices/set-custom-domain",
text: "Manage accounts",
collapsed: true,
items: [
{ text: "Create accounts", link: "/manual/larepass/create-account" },
{ text: "Back up mnemonics", link: "/manual/larepass/back-up-mnemonics" },
{ text: "Manage integrations", link: "/manual/larepass/integrations" },
],
},
{ text: "Use VPN", link: "/manual/larepass/private-network" },
{
text: "Manage knowledge with Wise",
link: "/manual/best-practices/organize-content",
text: "Manage device",
collapsed: true,
items: [
{ text: "Activate Olares", link: "/manual/larepass/activate-olares" },
{ text: "Manage Olares", link: "/manual/larepass/manage-olares" },
],
},
{ text: "Manage files", link: "/manual/larepass/manage-files" },
// collapsed: true,
//items: [
// {text: "Common file operations", link:"/manual/larepass/manage-files"},
// {text: "Sync and share", link:"/manual/larepass/sync-share"}
// ]
// },
{
text: "Install a multi-node Olares cluster",
link: "/manual/best-practices/install-olares-multi-node",
},
{
text: "Install Olares on PVE with GPU Passthrough",
link: "/manual/best-practices/install-olares-gpu-passthrough",
},
{
text: "Expand storage in Olares",
link: "/manual/best-practices/expand-storage-in-olares",
},
{
text: "Access Olares locally",
link: "/manual/best-practices/local-access",
text: "Manage passwords",
collapsed: true,
items: [
{ text: "Autofill passwords", link: "/manual/larepass/autofill" },
{ text: "Generate 2FA codes", link: "/manual/larepass/two-factor-verification" },
],
},
/*{
text: "Manage knowledge",
link: "/manual/larepass/manage-knowledge",
},*/
],
},
{ text: "Glossary", link: "/manual/glossary" },
],
"/space/": [
{
text: "Olares Space",
link: "/space/",
collapsed: true,
items: [
{
text: "Manage accounts",
@@ -479,6 +445,38 @@ const side = {
{ text: "Billing", link: "/space/billing" },
],
},
{
text: "Tutorials",
link: "/manual/best-practices/",
collapsed: true,
items: [
{
text: "Set up custom domain",
link: "/manual/best-practices/set-custom-domain",
},
{
text: "Manage knowledge with Wise",
link: "/manual/best-practices/organize-content",
},
{
text: "Install a multi-node Olares cluster",
link: "/manual/best-practices/install-olares-multi-node",
},
{
text: "Install Olares on PVE with GPU Passthrough",
link: "/manual/best-practices/install-olares-gpu-passthrough",
},
{
text: "Expand storage in Olares",
link: "/manual/best-practices/expand-storage-in-olares",
},
{
text: "Access Olares locally",
link: "/manual/best-practices/local-access",
},
],
},
{ text: "Glossary", link: "/manual/glossary" },
],
"/use-cases/": [
{
@@ -570,6 +568,10 @@ const side = {
text: "LobeChat",
link: "/use-cases/lobechat",
},
{
text: "OpenClaw",
link: "/use-cases/openclaw",
},
],
},
],
@@ -786,12 +788,153 @@ const side = {
// ],
// },
{
text: "Submit application",
text: "Middleware",
link: "/developer/develop/mw-overview",
collapsed: true,
link: "/developer/develop/submit/",
items: [
{
text: "Elasticsearch",
collapsed: true,
items :[
{
text: "Integrate with Elasticsearch",
link: "/developer/develop/mw-integrate-with-es", },
{
text: "View Elasticsearch data",
link: "/developer/develop/mw-view-es-data",
},
]
},
{
text: "Grafana",
link :"/developer/develop/mw-view-grafana-data",
},
{
text: "MariaDB",
collapsed: true,
items :[
{
text: "Integrate with MariaDB",
link: "/developer/develop/mw-integrate-with-mariadb", },
{
text: "View MariaDB data",
link: "/developer/develop/mw-view-mariadb-data",
},
]
},
{
text: "MinIO",
collapsed: true,
items :[
{
text: "Integrate with MinIO",
link: "/developer/develop/mw-integrate-with-minio", },
{
text: "View MinIO data",
link: "/developer/develop/mw-view-minio-data",
},
]
},
{
text: "MongoDB",
collapsed: true,
items :[
{
text: "Integrate with MongoDB",
link: "/developer/develop/mw-integrate-with-mongodb", },
{
text: "View MongoDB data",
link: "/developer/develop/mw-view-mongodb-data",
},
]
},
{
text: "MySQL",
collapsed: true,
items :[
{
text: "Integrate with MySQL",
link: "/developer/develop/mw-integrate-with-mysql", },
{
text: "View MySQL data",
link: "/developer/develop/mw-view-mysql-data",
},
]
},
{
text: "NATS",
link :"/developer/develop/mw-view-nats-data",
},
{
text: "OpenTelemetry",
link :"/developer/develop/mw-view-otel-data",
},
{
text: "PostgreSQL",
collapsed: true,
items :[
{
text: "Integrate with PostgreSQL",
link: "/developer/develop/mw-integrate-with-pg", },
{
text: "View PostgreSQL data",
link: "/developer/develop/mw-view-pg-data",
}
]
},
{
text: "RabbitMQ",
collapsed: true,
items :[
{
text: "Integrate with RabbitMQ",
link: "/developer/develop/mw-integrate-with-rabbitmq", },
{
text: "View RabbitMQ data",
link: "/developer/develop/mw-view-rabbitmq-data",
}
]
},
{
text: "Redis",
collapsed: true,
items :[
{
text: "Integrate with Redis",
link: "/developer/develop/mw-integrate-with-redis", },
{
text: "View Redis data",
link: "/developer/develop/mw-view-redis-data",
}
]
},
]
},
],
},
{
text: "Distribute Olares apps",
link: "/developer/develop/distribute-index",
items: [
{
text: "Summit apps",
link: "/developer/develop/submit-apps",
},
{
text: "Manage app lifecycle",
link: "/developer/develop/manage-apps",
},
{
text: "Promote your apps",
link:"/developer/develop/promote-apps"
},
{
text: "Publish paid apps",
link: "/developer/develop/paid-apps",
},
],
},
{
text: "Contribute to Olares",
items: [
@@ -913,12 +1056,15 @@ export const en = defineConfig({
socialLinks: [{ icon: "github", link: "https://github.com/beclab/olares" }],
nav: [
{ text: "Olares", link: "/manual/overview" },
{ text: "Olares Space", link: "/space/" },
{ text: "Use Cases", link: "/use-cases/" },
{ text: "Developer Guide", link: "/developer/concepts/" },
{ text: "Olares OS", link: "/manual/overview" },
{ text: "Olares One", link: "/one/" },
{ text: "Use cases", link: "/use-cases/" },
{ text: "Developer guide", link: "/developer/concepts/" },
],
sidebar: side,
sidebar: {
...side,
...oneSidebar,
},
},
});

229
docs/.vitepress/one.en.ts Normal file
View File

@@ -0,0 +1,229 @@
import { defineConfig, type DefaultTheme } from "vitepress";
export const oneSidebar: DefaultTheme.Sidebar = {
"/one/": [
{
text: "Olares One",
link: "/one/",
items: [
{
text: "Technical spec",
link: "/one/spec",
},
{
text: "FAQs",
link: "/one/faq",
},
],
},
{
text: "Initial setup",
items: [
{
text: "First boot",
link: "/one/first-boot",
},
{
text: "Access Olares securely",
link: "/one/access-olares-via-vpn",
},
{
text: "Redeem membership",
link: "/one/redeem-membership",
},
]
},
{
text: "Onboarding",
items: [
{
text: "Open WebUI with Ollama",
link: "/one/open-webui",
},
{
text: "Generate images with ComfyUI",
link: "/one/comfyui",
},
{
text: "Switch GPU mode",
link: "/one/gpu",
},
]
},
{
text: "Use",
items: [
{
text: "Customize Olares",
link: "/one/customize",
},
{
text: "Manage files",
link: "/one/files",
},
{
text: "Install & update apps",
link: "/one/market",
},
{
text: "Secure passwords",
link: "/one/vault",
},
{
text: "Download YouTube videos",
link: "/one/wise-download",
},
{
text: "Deploy an app",
link: "/one/deploy",
},
]
},
// {
// text: "Manage",
// items: [
// {
// text: "Set up app entrances",
// link: "/one/app-entrances",
// },
// {
// text: "Create users",
// link: "/one/users",
// },
// ]
// },
{
text: "Monitor",
items: [
{
text: "System resources",
link: "/one/dashboard",
},
{
text: "Traffic",
link: "/one/space",
},
]
},
{
text: "Explore",
items: [
{
text: "Play Steam games",
collapsed: true,
items: [
{
text: "Streaming",
link: "/one/steam-stream"
},
{
text: "Direct play",
link: "/one/steam-direct-play",
}]
},
{
text: "Access Windows in Olares",
link: "/one/windows",
},
{
text: "Generate music with Ace-Step",
link: "/one/ace-step",
},
{
text: "Deep research with DeerFlow",
link: "/one/deerflow",
},
]
},
{
text: "Advanced",
items: [
{
text: "SSH into Olares One",
link: "/one/access-terminal-ssh",
},
{
text: "Expand storage",
collapsed: true,
items:
[
{
text: "USB drive",
link: "/one/expand-storage-usb-drive",
},
{
text: "External SSD",
link: "/one/expand-storage-external-ssd",
},
{
text: "NVMe SSD",
link: "/one/expand-storage-internal-ssd",
},
]
},
{
text: "Connect two Olares One",
link: "/one/connect-two-olares-one"
// items:
// [
// {
// text: "Manage GPU",
// link: "/one/two-one-gpu",
// },
// {
// text: "Run larger local LLMs",
// link: "/one/two-one-llm",
// }
// ]
},
{
text: "Set up with eGPU",
link: "/one/egpu",
},
{
text: "Dual-boot Olares OS with Windows",
collapsed: true,
items:
[
{
text: "Dual-drive setup (Recommended)",
link: "/one/dual-boot-dual-drive",
},
{
text: "Single-drive setup",
link: "/one/dual-boot-single-drive",
}
,
{
text: "Install NVIDIA driver",
link: "/one/install-nvidia-driver",
}
]
},
{
text: "Create a bootable USB",
link: "/one/create-drive",
},
]
},
{
text: "System update",
items: [
{
text: "Update OS",
link: "/one/update",
},
{
text: "Back up & restore",
link: "/one/backup-resotre",
},
{
text: "Factory reset",
link: "/one/factory-reset",
},
]
},
],
}

229
docs/.vitepress/one.zh.ts Normal file
View File

@@ -0,0 +1,229 @@
import { defineConfig, type DefaultTheme } from "vitepress";
export const oneSidebar: DefaultTheme.Sidebar = {
"/zh/one/": [
{
text: "Olares One",
link: "/zh/one/",
items: [
{
text: "Technical spec",
link: "/zh/one/spec",
},
{
text: "FAQs",
link: "/zh/one/faq",
},
],
},
{
text: "Initial setup",
items: [
{
text: "First boot",
link: "/zh/one/first-boot",
},
{
text: "Access Olares securely",
link: "/zh/one/access-olares-via-vpn",
},
{
text: "Redeem Olares Space membership",
link: "/zh/one/redeem-membership",
},
]
},
{
text: "Onboarding",
items: [
{
text: "Open WebUI with Ollama",
link: "/zh/one/open-webui",
},
{
text: "Generate images with ComfyUI",
link: "/zh/one/comfyui",
},
{
text: "Switch GPU mode",
link: "/zh/one/gpu",
},
]
},
{
text: "Use",
items: [
{
text: "Customize Olares",
link: "/zh/one/customize",
},
{
text: "Manage files",
link: "/zh/one/files",
},
{
text: "Install & update apps",
link: "/zh/one/market",
},
{
text: "Secure passwords",
link: "/zh/one/vault",
},
{
text: "Download YouTube videos",
link: "/zh/one/wise-download",
},
{
text: "Deploy an app",
link: "/zh/one/deploy",
},
]
},
// {
// text: "Manage",
// items: [
// {
// text: "Set up app entrances",
// link: "/zh/one/app-entrances",
// },
// {
// text: "Create users",
// link: "/zh/one/users",
// },
// ]
// },
{
text: "Monitor",
items: [
{
text: "System resources",
link: "/zh/one/dashboard",
},
{
text: "Traffic",
link: "/zh/one/space",
},
]
},
{
text: "Explore",
items: [
{
text: "Play Steam games",
collapsed: true,
items: [
{
text: "Streaming",
link: "/zh/one/steam-stream"
},
{
text: "Direct play",
link: "/zh/one/steam-direct-play",
}]
},
{
text: "Access Windows in Olares",
link: "/zh/one/windows",
},
{
text: "Generate music with Ace-Step",
link: "/zh/one/ace-step",
},
{
text: "Deep research with DeerFlow",
link: "/zh/one/deerflow",
},
]
},
{
text: "Advanced",
items: [
{
text: "SSH into Olares One",
link: "/zh/one/access-terminal-ssh",
},
{
text: "Expand storage",
collapsed: true,
items:
[
{
text: "USB drive",
link: "/zh/one/expand-storage-usb-drive",
},
{
text: "External SSD",
link: "/zh/one/expand-storage-external-ssd",
},
{
text: "NVMe SSD",
link: "/zh/one/expand-storage-internal-ssd",
},
]
},
{
text: "Connect two Olares One",
link: "/zh/one/connect-two-olares-one"
// items:
// [
// {
// text: "Manage GPU",
// link: "/zh/one/two-one-gpu",
// },
// {
// text: "Run larger local LLMs",
// link: "/zh/one/two-one-llm",
// }
// ]
},
{
text: "Set up with eGPU",
link: "/zh/one/egpu",
},
{
text: "Dual-boot Olares OS with Windows",
collapsed: true,
items:
[
{
text: "Dual-drive setup (Recommended)",
link: "/zh/one/dual-boot-dual-drive",
},
{
text: "Dual-drive setup",
link: "/zh/one/dual-boot-single-drive",
}
,
{
text: "Install NVIDIA driver",
link: "/zh/one/install-nvidia-driver",
}
]
},
{
text: "Create a bootable USB",
link: "/zh/one/create-drive",
},
]
},
{
text: "System update",
items: [
{
text: "Update OS",
link: "/zh/one/update",
},
{
text: "Back up & restore",
link: "/zh/one/backup-resotre",
},
{
text: "Factory reset",
link: "/zh/one/factory-reset",
},
]
},
],
}

View File

@@ -1,5 +1,5 @@
import { defineConfig, type DefaultTheme } from "vitepress";
import { oneSidebar } from './one.zh.ts';
const side = {
"/zh/manual/": [
{
@@ -17,7 +17,7 @@ const side = {
link: "/zh/manual/help/olares",
},
{
text: "安装激活",
text: "安装配置与访问",
link: "/zh/manual/help/installation",
},
{
@@ -132,53 +132,8 @@ const side = {
},
],
},
{
text: "LarePass",
link: "/zh/manual/larepass/",
collapsed: true,
items: [
{
text: "管理账户",
collapsed: true,
items: [
{ text: "创建账户", link: "/zh/manual/larepass/create-account" },
{ text: "备份助记词", link: "/zh/manual/larepass/back-up-mnemonics" },
{ text: "管理集成", link: "/zh/manual/larepass/integrations" },
],
},
{ text: "使用专用网络", link: "/zh/manual/larepass/private-network" },
{
text: "管理设备",
collapsed: true,
items: [
{ text: "激活 Olares", link: "/zh/manual/larepass/activate-olares" },
{ text: "管理 Olares", link: "/zh/manual/larepass/manage-olares" },
],
},
{ text: "管理文件", link: "/zh/manual/larepass/manage-files" },
// collapsed: true,
// items: [
// {text: "常用文件操作", link:"/zh/manual/larepass/manage-files"},
// {text: "同步与共享", link:"/zh/manual/larepass/sync-share"}
// ]
// },
{
text: "管理密码",
collapsed: true,
items: [
{ text: "自动填充", link: "/zh/manual/larepass/autofill" },
{ text: "双重验证", link: "/zh/manual/larepass/two-factor-verification" },
],
},
/*{
text: "管理内容",
link: "/zh/manual/larepass/manage-knowledge",
},*/
],
},
{
"text": "Olares 应用",
"collapsed": true,
"link": "/zh/manual/olares/",
"items": [
{ "text": "桌面", "link": "/zh/manual/olares/desktop" },
@@ -399,9 +354,97 @@ const side = {
]
},
{
text: "教程",
text: "LarePass",
link: "/zh/manual/larepass/",
collapsed: true,
items: [
{
text: "管理账户",
collapsed: true,
items: [
{ text: "创建账户", link: "/zh/manual/larepass/create-account" },
{ text: "备份助记词", link: "/zh/manual/larepass/back-up-mnemonics" },
{ text: "管理集成", link: "/zh/manual/larepass/integrations" },
],
},
{ text: "使用专用网络", link: "/zh/manual/larepass/private-network" },
{
text: "管理设备",
collapsed: true,
items: [
{ text: "激活 Olares", link: "/zh/manual/larepass/activate-olares" },
{ text: "管理 Olares", link: "/zh/manual/larepass/manage-olares" },
],
},
{ text: "管理文件", link: "/zh/manual/larepass/manage-files" },
// collapsed: true,
// items: [
// {text: "常用文件操作", link:"/zh/manual/larepass/manage-files"},
// {text: "同步与共享", link:"/zh/manual/larepass/sync-share"}
// ]
// },
{
text: "管理密码",
collapsed: true,
items: [
{ text: "自动填充", link: "/zh/manual/larepass/autofill" },
{ text: "双重验证", link: "/zh/manual/larepass/two-factor-verification" },
],
},
/*{
text: "管理内容",
link: "/zh/manual/larepass/manage-knowledge",
},*/
],
},
{
text: "Olares Space",
link: "/zh/space/",
collapsed: true,
items: [
{
text: "管理账号",
link: "/zh/space/manage-accounts",
},
{
text: "托管 Olares",
collapsed: true,
items: [
{
text: "创建 Olares",
link: "/zh/space/create-olares",
},
{
text: "管理 Olares",
link: "/zh/space/manage-olares",
},
],
},
{
text: "托管域名",
collapsed: true,
items: [
{
text: "设置自定义域名",
link: "/zh/space/host-domain",
},
{
text: "管理域名",
link: "/zh/space/manage-domain",
},
],
},
{
text: "备份与恢复",
link: "/zh/space/backup-restore",
},
{ text: "计费", link: "/zh/space/billing" },
],
},
{
text: "教程",
link: "/zh/manual/best-practices/",
collapsed: true,
items: [
{
text: "设置自定义域名",
@@ -429,58 +472,13 @@ const side = {
},
{
text: "本地访问 Olares",
link: "/zh/manual/best-practices/local-access",
link: "/manual/best-practices/local-access",
},
],
},
{ text: "术语", link: "/zh/manual/glossary" },
],
"/zh/space/": [
{
text: "Olares Space",
link: "/zh/space/",
collapsed: true,
items: [
{
text: "管理账号",
link: "/zh/space/manage-accounts",
},
{
text: "托管 Olares",
collapsed: true,
items: [
{
text: "创建 Olares",
link: "/zh/space/create-olares",
},
{
text: "管理 Olares",
link: "/zh/space/manage-olares",
},
],
},
{
text: "托管域名",
collapsed: true,
items: [
{
text: "设置自定义域名",
link: "/zh/space/host-domain",
},
{
text: "管理域名",
link: "/zh/space/manage-domain",
},
],
},
{
text: "备份与恢复",
link: "/zh/space/backup-restore",
},
{ text: "计费", link: "/zh/space/billing" },
],
},
],
"/zh/use-cases/": [
{
text: "应用示例",
@@ -615,7 +613,6 @@ const side = {
link: "/zh/developer/install/cli/olares-cli",
collapsed: true,
items: [
{ text: "访问 Olares 终端", link: "/zh/developer/reference/access-olares-terminal" },
{
text: "backups",
link: "/zh/developer/install/cli/backups",
@@ -774,11 +771,153 @@ const side = {
// },
// ],
// },
{
text: "中间件",
link: "/zh/developer/develop/mw-overview",
collapsed: true,
items: [
{
text: "Elasticsearch",
collapsed: true,
items :[
{
text: "集成 Elasticsearch",
link: "zh/developer/develop/mw-integrate-with-es", },
{
text: "查看 Elasticsearch 数据",
link: "zh/developer/develop/mw-view-es-data",
},
]
},
{
text: "Grafana",
link: "zh/developer/develop/mw-view-grafana-data",
},
{
text: "MariaDB",
collapsed: true,
items :[
{
text: "集成 MariaDB",
link: "zh/developer/develop/mw-integrate-with-mariadb", },
{
text: "查看 MariaDB 数据",
link: "zh/developer/develop/mw-view-mariadb-data",
},
]
},
{
text: "MinIO",
collapsed: true,
items :[
{
text: "集成 MinIO",
link: "zh/developer/develop/mw-integrate-with-minio", },
{
text: "查看 MinIO 数据",
link: "zh/developer/develop/mw-view-minio-data",
},
]
},
{
text: "MongoDB",
collapsed: true,
items :[
{
text: "集成 MongoDB",
link: "zh/developer/develop/mw-integrate-with-mongodb", },
{
text: "查看 MongoDB 数据",
link: "zh/developer/develop/mw-view-mongodb-data",
},
]
},
{
text: "MySQL",
collapsed: true,
items :[
{
text: "集成 MySQL",
link: "zh/developer/develop/mw-integrate-with-mysql", },
{
text: "查看 MySQL 数据",
link: "zh/developer/develop/mw-view-mysql-data",
},
]
},
{
text: "NATS",
link :"zh/developer/develop/mw-view-nats-data",
},
{
text: "OpenTelemetry",
link :"zh/developer/develop/mw-view-otel-data",
},
{
text: "PostgreSQL",
collapsed: true,
items :[
{
text: "集成 PostgreSQL",
link: "zh/developer/develop/mw-integrate-with-pg", },
{
text: "查看 PostgreSQL 数据",
link: "zh/developer/develop/mw-view-pg-data",
}
]
},
{
text: "RabbitMQ",
collapsed: true,
items :[
{
text: "集成 RabbitMQ",
link: "zh/developer/develop/mw-integrate-with-rabbitmq", },
{
text: "查看 RabbitMQ 数据",
link: "zh/developer/develop/mw-view-rabbitmq-data",
}
]
},
{
text: "Redis",
collapsed: true,
items :[
{
text: "集成 Redis",
link: "zh/developer/develop/mw-integrate-with-redis", },
{
text: "查看 Redis 数据",
link: "zh/developer/develop/mw-view-redis-data",
},
]
},
]
},
],
},
{
text: "分发 Olares 应用",
link: "/zh/developer/develop/distribute-index",
items: [
{
text: "提交应用",
collapsed: true,
link: "/zh/developer/develop/submit/",
link: "/zh/developer/develop/submit-apps",
},
{
text: "管理应用",
link: "/zh/developer/develop/manage-apps",
},
{
text: "推广应用",
link:"/zh/developer/develop/promote-apps"
},
{
text: "发布付费应用",
link: "/zh/developer/develop/paid-apps",
},
],
},
{
@@ -902,12 +1041,15 @@ export const zh = defineConfig({
socialLinks: [{ icon: "github", link: "https://github.com/beclab/olares" }],
nav: [
{ text: "Olares", link: "zh/manual/overview" },
{ text: "Olares Space", link: "/zh/space/" },
{ text: "Olares OS", link: "zh/manual/overview" },
{ text: "Olares One", link: "/zh/one/" },
{ text: "应用示例", link: "/zh/use-cases/" },
{ text: "开发者文档", link: "/zh/developer/concepts/" },
],
sidebar: side,
sidebar: {
...side,
...oneSidebar,
},
},
});

View File

@@ -0,0 +1,107 @@
---
outline: [2, 3]
description: Understand how application distribution works in Olares.
---
# Distribute Olares applications
Distributing applications on Olares is based on open standards and automated validation.
If your application is already packaged as an Olares Application Chart (OAC), you can publish it to Olares Market and make it available to users with minimal friction.
This guide walks you through the distribution lifecycle of an Olares application, from understanding how Market indexing works to publishing, maintaining, and promoting your app.
## Before you begin
Before distributing your application, it helps to understand a few core concepts:
- **[Olares Application Chart (OAC)](/developer/develop/package/chart.md)**
The packaging format used to describe an Olares application, including metadata, ownership, versioning, and installation configuration.
- **Application index**
A service that provides application metadata to Olares Market. Olares includes a default public index, and developers can deploy their own.
- **Terminus-Gitbot**
The automated validation system that checks application submissions and enforces distribution rules.
- **Owners file (`owners`)**
A file in the OAC root directory used to validate ownership and permissions. The file has no extension.
```text
owners:
- <your-github-username>
- <collaborator1-username>
- <collaborator2-username>
```
- **Control files**
Special empty files in the OAC root directory that control distribution status:
- `.suspend`: suspend distribution
- `.remove`: remove an app from the Market
For details, see [Manage the app lifecycle](/developer/develop/manage-apps.md#control-files).
## Ownership and collaboration
To collaborate as a team:
- Add all maintainers to the owners file (recommended). Each listed owner can independently fork the repo and submit changes for that app.
- Add teammates as collaborators to your forked repository so they can push commits to your PR branch.
## App distribution workflow
### 1. Prepare your app package
Before an app can be distributed, it must be packaged as an **Olares Application Chart (OAC)**.
At this stage, developers typically:
- Develop and test the app on an Olares host.
- Verify installation and upgrade behavior.
- Finalize chart metadata and structure.
For details, see [Olares Application Chart (OAC)](/developer/develop/package/chart.md).
### 2. Submit the app to the default index
Olares Market indexes applications from Git repositories.
To publish an app to the default public index, developers submit their OAC by opening a PR to the official repository.
During submission:
- The PR title declares the action type.
- Terminus-Gitbot validates file scope, ownership, and version rules.
- Valid PRs are merged automatically without manual review.
For details, see [Submit applications](/developer/develop/submit-apps.md).
### 3. Automated validation and indexing
After a PR is submitted, Terminus-Gitbot performs automated checks to ensure the submission follows distribution rules.
If all checks pass, the PR is merged automatically.
After a short delay, the application becomes visible in Olares Market.
### 4. Manage the application lifecycle
After an application is published, developers continue to manage its lifecycle through Pull Requests.
Lifecycle actions include:
- Releasing new versions.
- Temporarily suspending distribution.
- Permanently removing an application from the Market.
These actions are controlled using PR types and special control files in the OAC.
For details, see [Manage the app lifecycle](/developer/develop/manage-apps.md).
### 5. Optimize your Market listing
Once published, you can improve how your app is presented in Olares Market by adding icons, screenshots, and featured images.
For details, see [Promote your apps](/developer/develop/promote-apps.md).
### 6. (Optional) Publish paid applications
Olares Market also supports paid application distribution.
Paid apps require additional identity registration, pricing configuration, and license management.
For details, see [Publish paid applications](/developer/develop/paid-apps.md).

View File

@@ -27,4 +27,4 @@ To publish your application to the Olares Market, you must structure it accordin
## Step 3: Submit your application
Once your application is built and packaged, the final step is to share it with the Olares community.
* **[Submit to Market](./submit/index.md)**: Learn how to submit your application to the Olares Market for review and distribution.
* **[Submit to Market](/developer/develop/distribute-index.md)**: Learn how to submit your application to the Olares Market for review and distribution.

View File

@@ -0,0 +1,72 @@
---
outline: [2, 3]
description: Learn how to update, suspend, or remove your application from Olares Market.
---
# Manage the app lifecycle
This guide explains how to manage an application after it has been published, including updating, suspending, or removing it from Olares Market.
All actions are performed through Pull Requests (PRs) to the `main` branch. Terminus-Gitbot supports three lifecycle actions after your app is published:
- **UPDATE**: Keep your app up to date. Release new versions, fix bugs, or adjust configurations.
- **SUSPEND**: Pause distribution. Stop new discovery, downloads, and installs in Olares Market without affecting existing users.
- **REMOVE**: Retire the app. Permanently stop distribution and prevent the chart folder name from being reused.
:::tip Reduce conflicts
Before opening the PR, sync your fork and rebase your branch onto the latest `main` to reduce potential conflicts.
:::
## Control files
Control files are special empty files in the OAC root directory that manage an application's distribution status in Olares Market.
| File name | Used for | Version rule | Content needed |
|--|--|--|--|
| `.suspend` | Suspend distribution | Upgrade (>) | Empty file |
| `.remove` | Remove application | Same (=) | Empty file |
An `UPDATE` PR or a `NEW` PR must not include these files. They are only used for `SUSPEND` and `REMOVE`.
## Update an app (UPDATE)
To update an existing application, such as releasing a new version, changing configurations, or updating the owners, submit a PR with type `UPDATE`.
The PR must meet the following requirements:
- **Version bump**: The new Chart version must be greater than the current version in the repository. Any change to a chart must bump the Chart version.
- **Clean directory**: The OAC root must not contain `.suspend` or `.remove` files.
- **No conflict**: The PR branch must not conflict with `beclab/apps:main`.
:::warning No rollbacks
Olares Market does not support version rollbacks. If an issue occurs, you must submit a new version to fix it.
:::
## Suspend an app (SUSPEND)
To temporarily stop your application from being listed, downloaded, or installed, submit a PR with type `SUSPEND`.
The PR must meet the following requirements:
- **Version bump**: The Chart version must be greater than the current version in the repository.
- **Control file**: The OAC root directory contains the `.suspend` file and does not contain the `.remove` file.
- **No conflict**: The PR branch must not conflict with `beclab/apps:main`.
After the PR is merged, the application is no longer listed in Olares Market. Users who have already installed the application can continue to use it.
## Remove an app (REMOVE)
To permanently remove an application from Olares Market, submit a PR with type `REMOVE`.
The PR must meet the following requirements:
- **Same version**: The Chart version in the PR title must be the same as the current version in the repository.
- **Control file**: After the change, the `.remove` file is the only file in the OAC root directory.
- **No conflict**: The PR branch must not conflict with `beclab/apps:main`.
:::warning
Removal is irreversible.
:::
After the PR is merged:
- The chart folder name cannot be reused by the application owners.
- Users who have already installed the application can continue to use it.

View File

@@ -0,0 +1,72 @@
---
outline: [2, 3]
description: Learn how to integrate your app with Elasticsearch service in Olares.
---
# Integrate with Elasticsearch
Use Olares Elasticsearch middleware by declaring it in `OlaresManifest.yaml`, then mapping the injected values to your container environment variables.
## Install Elasticsearch service
Install the Elasticsearch service from Market.
1. Open Market from Launchpad and search for "Elasticsearch".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Configure `OlaresManifest.yaml`
In `OlaresManifest.yaml`, add the required middleware configuration.
- Use the `username` field to specify the Elasticsearch user.
- Use the `indexes` field to request one or more indexes. Each index name is used as the key in `.Values.elasticsearch.indexes`.
**Example**
```yaml
middleware:
elasticsearch:
username: elasticlient
indexes:
- name: aaa
```
## Inject environment variables
In your deployment YAML, map the injected `.Values.elasticsearch.*` fields to the environment variables your app uses.
**Example**
```yaml
containers:
- name: my-app
env:
- name: ES_HOST
value: "{{ .Values.elasticsearch.host }}"
- name: ES_PORT
value: "{{ .Values.elasticsearch.port }}"
- name: ES_USER
value: "{{ .Values.elasticsearch.username }}"
- name: ES_PASSWORD
value: "{{ .Values.elasticsearch.password }}"
# Index name
# The index name configured in OlaresManifest (for example, aaa)
- name: ES_INDEX
value: "{{ .Values.elasticsearch.indexes.aaa }}"
```
## Elasticsearch Values reference
Elasticsearch Values are predefined environment variables injected into `values.yaml` during deployment. They are system-managed and not user-editable.
| Key | Type | Description |
|--|--|--|
|`.Values.elasticsearch.host`| String | Elasticsearch service host |
|`.Values.elasticsearch.port`| Number | Elasticsearch service port |
|`.Values.elasticsearch.username`| String | Elasticsearch username |
|`.Values.elasticsearch.password`| String | Elasticsearch password |
|`.Values.elasticsearch.indexes` | Map<String,String> | The requested index name is used<br> as the key. For example, if you request `aaa`, the value is available at `.Values.elasticsearch.indexes.aaa`. |

View File

@@ -0,0 +1,72 @@
---
outline: [2, 3]
description: Learn how to integrate your app with MariaDB service in Olares.
---
# Integrate with MariaDB
Use Olares MariaDB middleware by declaring it in `OlaresManifest.yaml`, then mapping the injected values to your container environment variables.
## Install MariaDB service
Install the MariaDB service from Market.
1. Open Market from Launchpad and search for "MariaDB".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Configure `OlaresManifest.yaml`
In `OlaresManifest.yaml`, add the required middleware configuration.
- Use the `username` field to specify the database username.
- Use the `databases` field to request one or more databases. Each database name is used as the key in `.Values.mariadb.databases`.
**Example**
```yaml
middleware:
mariadb:
username: mariadbclient
databases:
- name: aaa
```
## Inject environment variables
In your deployment YAML, map the injected `.Values.mariadb.*` fields to the environment variables your app uses.
**Example**
```yaml
containers:
- name: my-app
# For MariaDB, the corresponding value is as follows
env:
- name: MDB_HOST
value: "{{ .Values.mariadb.host }}"
- name: MDB_PORT
value: "{{ .Values.mariadb.port }}"
- name: MDB_USER
value: "{{ .Values.mariadb.username }}"
- name: MDB_PASSWORD
value: "{{ .Values.mariadb.password }}"
# Database Name
# The database name configured in OlaresManifest (e.g., aaa)
- name: MDB_DB
value: "{{ .Values.mariadb.databases.aaa }}"
```
## MariaDB Values reference
MariaDB Values are predefined environment variables injected into `values.yaml` during deployment. They are system-managed and not user-editable.
| Key | Type | Description |
|--|--|--|
| `.Values.mariadb.host` | String | MariaDB database host |
| `.Values.mariadb.port` | Number | MariaDB database port |
| `.Values.mariadb.username` | String | MariaDB database username |
| `.Values.mariadb.password` | String | MariaDB database password |
| `.Values.mariadb.databases` | Map<String,String> | The requested database name is used as the key. <br/>For example, if you request `aaa`, the value is available at `.Values.mariadb.databases.aaa`. |

View File

@@ -0,0 +1,73 @@
---
outline: [2, 3]
description: Learn how to integrate your app with MinIO service in Olares.
---
# Integrate with MinIO
Use Olares MinIO middleware by declaring it in `OlaresManifest.yaml`, then mapping the injected values to your container environment variables.
## Install MinIO service
Install the MinIO service from Market.
1. Open Market from Launchpad and search for "MinIO".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Configure `OlaresManifest.yaml`
In `OlaresManifest.yaml`, add the required middleware configuration.
- Use the `username` field to specify the MinIO access key.
- Use the `buckets` field to request one or more buckets. Each bucket name is used as the key in `.Values.minio.buckets`.
**Example**
```yaml
middleware:
minio:
username: miniouser
buckets:
- name: mybucket
```
## Inject environment variables
In your deployment YAML, map the injected `.Values.minio.*` fields to the environment variables your app uses.
**Example**
```yaml
containers:
- name: my-app
# For MinIO, the corresponding values are as follows
env:
# Construct the endpoint using host and port
- name: MINIO_ENDPOINT
value: "{{ .Values.minio.host }}:{{ .Values.minio.port }}"
- name: MINIO_PORT
value: "{{ .Values.minio.port }}"
- name: MINIO_ACCESS_KEY
value: "{{ .Values.minio.username }}"
- name: MINIO_SECRET_KEY
value: "{{ .Values.minio.password }}"
# Bucket name
# The bucket name configured in OlaresManifest (e.g., mybucket)
- name: MINIO_BUCKET
value: "{{ .Values.minio.buckets.mybucket }}"
```
## MinIO Values reference
MinIO Values are predefined environment variables injected into `values.yaml` during deployment. They are system-managed and not user-editable.
| Key | Type | Description |
|--|--|--|
| `.Values.minio.host` | String | MinIO service host |
| `.Values.minio.port` | Number | MinIO service port |
| `.Values.minio.username` | String | MinIO access key |
| `.Values.minio.password` | String | MinIO secret key |
| `.Values.minio.buckets` | Map<String,String> | The requested bucket name is used as the key. <br>For example, if you request `mybucket`, the value is available at `.Values.minio.buckets.mybucket`. |

View File

@@ -0,0 +1,76 @@
---
outline: [2, 3]
description: Learn how to integrate your app with MongoDB service in Olares.
---
# Integrate with MongoDB
Use Olares MongoDB middleware by declaring it in `OlaresManifest.yaml`, then mapping the injected values to your container environment variables.
## Install MongoDB service
Install the MongoDB service from Market.
1. Open Market from Launchpad and search for "MongoDB".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Configure `OlaresManifest.yaml`
In `OlaresManifest.yaml`, add the required middleware configuration.
- Use the `username` field to specify the MongoDB database user.
- Use the `databases` field to request one or more databases.
- (Optional) Use the `script` field under each database to specify initialization scripts that are executed after the database is created.
**Example**
```yaml
middleware:
mongodb:
username: chromium
databases:
- name: chromium
script:
- 'db.getSiblingDB("$databasename").myCollection.insertOne({ x: 111 });'
# Please make sure each line is a complete query.
```
## Inject environment variables
In your deployment YAML, map the injected `.Values.mongodb.*` fields to the environment variables your app uses.
**Example**
```yaml
containers:
- name: my-app
# For MongoDB, the corresponding values are as follows
env:
- name: MONGODB_HOST
value: "{{ .Values.mongodb.host }}"
- name: MONGODB_PORT
value: "{{ .Values.mongodb.port }}"
- name: MONGODB_USER
value: "{{ .Values.mongodb.username }}"
- name: MONGODB_PASSWORD
value: "{{ .Values.mongodb.password }}"
# Database name
# The database name configured in OlaresManifest (e.g., app_db)
- name: MONGODB_DATABASE
value: "{{ .Values.mongodb.databases.app_db }}"
```
## MongoDB Values reference
MongoDB Values are predefined environment variables injected into `values.yaml` during deployment. They are system-managed and not user-editable.
| Key | Type | Description |
|--|--|--|
| `.Values.mongodb.host` | String | MongoDB database host |
| `.Values.mongodb.port` | Number | MongoDB database port |
| `.Values.mongodb.username` | String | MongoDB database username |
| `.Values.mongodb.password` | String | MongoDB database password |
| `.Values.mongodb.databases` | Map<String,String> | The requested database name is used as the key. <br/>For example, if you request `app_db`, the value is available at `.Values.mongodb.databases.app_db`. |

View File

@@ -0,0 +1,72 @@
---
outline: [2, 3]
description: Learn how to integrate your app with MySQL service in Olares.
---
# Integrate with MySQL
Use Olares MySQL middleware by declaring it in `OlaresManifest.yaml`, then mapping the injected values to your container environment variables.
## Install MySQL service
Install the MySQL service from Market.
1. Open Market from Launchpad and search for "MySQL".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Configure `OlaresManifest.yaml`
In `OlaresManifest.yaml`, add the required middleware configuration.
- Use the `username` field to specify the MySQL database user.
- Use the `databases` field to request one or more databases. Each database name is used as the key in `.Values.mysql.databases`.
**Example**
```yaml
middleware:
mysql:
username: mysqlclient
databases:
- name: aaa
```
## Inject environment variables
In your deployment YAML, map the injected `.Values.mysql.*` fields to the environment variables your app uses.
**Example**
```yaml
containers:
- name: my-app
# For MySQL, the corresponding values are as follows
env:
- name: MDB_HOST
value: "{{ .Values.mysql.host }}"
- name: MDB_PORT
value: "{{ .Values.mysql.port }}"
- name: MDB_USER
value: "{{ .Values.mysql.username }}"
- name: MDB_PASSWORD
value: "{{ .Values.mysql.password }}"
# Database name
# The database name configured in OlaresManifest (e.g., aaa)
- name: MDB_DB
value: "{{ .Values.mysql.databases.aaa }}"
```
## MySQL Values reference
MySQL Values are predefined environment variables injected into `values.yaml` during deployment. They are system-managed and not user-editable.
| Key | Type | Description |
|--|--|--|
| `.Values.mysql.host` | String | MySQL database host |
| `.Values.mysql.port` | Number | MySQL database port |
| `.Values.mysql.username` | String | MySQL database username |
| `.Values.mysql.password` | String | MySQL database password |
| `.Values.mysql.databases` | Map<String,String> | The requested database name is used as the key. <br/>For example, if you request `aaa`, the value is available at `.Values.mysql.databases.aaa`. |

View File

@@ -0,0 +1,81 @@
---
outline: [2, 3]
description: Learn how to integrate your app with the built-in PostgreSQL service in Olares.
---
# Integrate with PostgreSQL
Use Olares PostgreSQL middleware by declaring it in `OlaresManifest.yaml`, then mapping the injected values to your container environment variables.
:::info PosgreSQL installed
PostgreSQL service has been installed by default.
:::
## Configure `OlaresManifest.yaml`
In `OlaresManifest.yaml`, add the required middleware configuration.
- Use the `scripts` field to specify scripts that should be executed after the database is created.
- Use the `extensions` field to add the corresponding extension in the database.
:::info Variable injection in scripts
The OS provides two variables, `$databasename` and `$dbusername`, which will be replaced by Olares Application Runtime when the command is executed.
:::
**Example**
```yaml
middleware:
postgres:
username: immich
databases:
- name: immich
extensions:
- vectors
- earthdistance
scripts:
- BEGIN;
- ALTER DATABASE $databasename SET search_path TO "$user", public, vectors;
- ALTER SCHEMA vectors OWNER TO $dbusername;
- COMMIT;
```
## Inject environment variables
In your deployment YAML, map the injected `.Values.postgres.*` fields to the environment variables your app uses.
**Example**
```yaml
containers:
- name: my-app
env:
# The database name configured in OlaresManifest, specified in middleware.postgres.databases[i].name
# NOTE: Replace <dbname> with the actual name defined in the Manifest (e.g., immich)
- name: DB_POSTGRESDB_DATABASE
value: {{ .Values.postgres.databases.<dbname> }}
# Host
- name: DB_POSTGRESDB_HOST
value: {{ .Values.postgres.host }}
# Port
- name: DB_POSTGRESDB_PORT
value: "{{ .Values.postgres.port }}"
# Username
- name: DB_POSTGRESDB_USER
value: {{ .Values.postgres.username }}
# Password
- name: DB_POSTGRESDB_PASSWORD
value: {{ .Values.postgres.password }}
```
## PostgreSQL Values reference
PostgreSQL Values are predefined environment variables injected into `values.yaml` during deployment. They are system-managed and not user-editable.
| Key | Type | Description |
|--|--|--|
| `.Values.postgres.host` | String | PostgreSQL database host |
| `.Values.postgres.port` | Number | PostgreSQL database port |
| `.Values.postgres.username` | String | PostgreSQL database username |
| `.Values.postgres.password` | String | PostgreSQL database password |
| `.Values.postgres.databases` | Map<String,String> | The requested database name is used as the key. <br>For example, if you request `app_db`, the value is available at `.Values.postgres.databases.app_db`|

View File

@@ -0,0 +1,91 @@
---
outline: [2, 3]
description: Learn how to integrate your app with RabbitMQ service in Olares.
---
# Integrate with RabbitMQ
Use Olares RabbitMQ middleware by declaring it in `OlaresManifest.yaml`, then mapping the injected values to your container environment variables.
## Install RabbitMQ service
Install the RabbitMQ service from Market.
1. Open Market from Launchpad and search for "RabbitMQ".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Configure `OlaresManifest.yaml`
In `OlaresManifest.yaml`, add the required middleware configuration.
- Use the `username` field to specify the RabbitMQ user.
- Use the `vhosts` field to request one or more virtual hosts (vhosts). Each vhost name is used as the key in `.Values.rabbitmq.vhosts`.
**Example**
```yaml
middleware:
rabbitmq:
username: rabbitmquser
vhosts:
- name: aaa
```
## Inject environment variables
In your deployment YAML, map the injected `.Values.rabbitmq.*` fields to the environment variables your app uses.
**Example**
```yaml
containers:
- name: my-app
# For RabbitMQ, the corresponding values are as follows
env:
- name: RABBITMQ_HOST
value: "{{ .Values.rabbitmq.host }}"
- name: RABBITMQ_PORT
value: "{{ .Values.rabbitmq.port }}"
- name: RABBITMQ_USER
value: "{{ .Values.rabbitmq.username }}"
- name: RABBITMQ_PASSWORD
value: "{{ .Values.rabbitmq.password }}"
# Vhost
# The vhost name configured in OlaresManifest (e.g., aaa)
- name: RABBITMQ_VHOST
value: "{{ .Values.rabbitmq.vhosts.aaa }}"
```
## Construct a RabbitMQ connection URI
After configuring the environment variables, you can read them in your application code to construct the connection string.
Below is an example of constructing an AMQP URL using the environment variables:
```Go
// Read environment variables
user := os.Getenv("RABBITMQ_USER")
password := os.Getenv("RABBITMQ_PASSWORD")
vhost := os.Getenv("RABBITMQ_VHOST")
host := os.Getenv("RABBITMQ_HOST")
portMQ := os.Getenv("RABBITMQ_PORT")
// Construct AMQP connection string
// Format: amqp://user:password@host:port/vhost
url := fmt.Sprintf("amqp://%s:%s@%s:%s/%s", user, password, host, portMQ, vhost)
```
## RabbitMQ Values reference
RabbitMQ Values are predefined environment variables injected into `values.yaml` during deployment. They are system-managed and not user-editable.
| Key | Type | Description |
|--|--|--|
| `.Values.rabbitmq.host` | String | RabbitMQ service host |
| `.Values.rabbitmq.port` | Number | RabbitMQ service port |
| `.Values.rabbitmq.username` | String | RabbitMQ username |
| `.Values.rabbitmq.password` | String | RabbitMQ password |
| `.Values.rabbitmq.vhosts` | Map<String,String> | The requested vhost name is used as the key. <br/>For example, if you request `aaa`, the value is available at `.Values.rabbitmq.vhosts.aaa`. |

View File

@@ -0,0 +1,65 @@
---
outline: [2, 3]
description: Learn how to integrate your app with the built-in Redis service in Olares.
---
# Integrate with Redis
Use Olares Redis middleware by declaring it in `OlaresManifest.yaml`, then mapping the injected values to your container environment variables.
:::info Redis installed
Redis service has been installed by default.
:::
## Configure `OlaresManifest.yaml`
In `OlaresManifest.yaml`, add the required Redis middleware configuration.
- Use the `password` field to specify the Redis access password.
- Use the `namespace` field to request a Redis namespace.
**Example**
```yaml
middleware:
redis:
password: password
namespace: db0
```
## Inject environment variables
In your deployment YAML, map the injected `.Values.redis.*` fields to the environment variables your app uses.
**Example**
```yaml
containers:
- name: my-app
env:
# Host
- name: REDIS_HOST
value: {{ .Values.redis.host }}
# Port
# Quote the value to ensure it's treated as a string
- name: REDIS_PORT
value: "{{ .Values.redis.port }}"
# Password
# Quote the value to handle special characters correctly
- name: REDIS_PASSWORD
value: "{{ .Values.redis.password }}"
# Namespace
# NOTE: Replace <namespace> with the actual namespace defined in OlaresManifest (e.g., db0)
- name: REDIS_NAMESPACE
value: {{ .Values.redis.namespaces.<namespace> }}
```
## Redis Values reference
Redis Values are predefined environment variables injected into `values.yaml` during deployment. They are system-managed and not user-editable.
| Key | Type | Description |
|--|--|--|
| `.Values.redis.host` | String | Redis service host |
| `.Values.redis.port` | Number | Redis service port |
| `.Values.redis.password`| String | Redis service password |
| `.Values.redis.namespaces` | Map<String, String> | The requested namespace is used as the key. <br>For example, if you request `app_ns`, the value is available at `.Values.redis.namespaces.app_ns`. |

View File

@@ -0,0 +1,64 @@
---
outline: [2, 3]
description: Learn what middleware is in Olares and navigate to access and integration guides for each supported service.
---
# Middleware in Olares
Middleware refers to infrastructure services that sit between your application and the system, providing data storage, messaging, and other common capabilities.
Our middleware documentation is organized into two types of guides:
- **Access and manage data**: Connect to a running service to inspect data and troubleshoot issues.
- **App integrate**: Configure your app to use a middleware service in Olares using `OlaresManifest.yaml`.
## Document types
### Access and manage data
Access and manage data guides explain how to connect to a running middleware service for administration.
Use these guides when you want to:
- Inspect stored data or indexes.
- Run queries or commands.
- Debug application behavior.
- Verify service status.
The access method (e.g., CLI, Dashboard, or Bytebase) depends on the service.
### App integration
App integration guides explain how to connect your application to a middleware service.
Use these guides when you want your application to:
- Declare dependencies in `OlaresManifest.yaml`.
- Request service resources.
- Read system-injected connection values in your application.
Integration is declarative and handled by Olares at deployment time.
## Supported services
### Databases and caching
| Service | Access and manage data | App integration |
| --- | --- | --- |
| Elasticsearch | [Access](./mw-view-es-data.md) | [Integrate](./mw-integrate-with-es.md) |
| MariaDB | [Access](./mw-view-mariadb-data.md) | [Integrate](./mw-integrate-with-mariadb.md) |
| MongoDB | [Access](./mw-view-mongodb-data.md) | [Integrate](./mw-integrate-with-mongodb.md) |
| MySQL | [Access](./mw-view-mysql-data.md) | [Integrate](./mw-integrate-with-mysql.md) |
| PostgreSQL | [Access](./mw-view-pg-data.md) | [Integrate](./mw-integrate-with-pg.md) |
| Redis | [Access](./mw-view-redis-data.md) | [Integrate](./mw-integrate-with-redis.md) |
### Messaging and streaming
| Service | Access and manage data | App integration |
| --- | --- | --- |
| RabbitMQ | [Access](./mw-view-rabbitmq-data.md) | [Integrate](./mw-integrate-with-rabbitmq.md) |
| NATS | [Access](./mw-view-nats-data.md) | — |
### Storage and observability
| Service | Access and manage data | App integration |
| --- | --- | --- |
| MinIO | [Access](./mw-view-minio-data.md) | [Integrate](./mw-integrate-with-minio.md) |
| Grafana | [Access](./mw-view-grafana-data.md) | — |
| OpenTelemetry | [Access](./mw-view-otel-data.md) | — |

View File

@@ -0,0 +1,69 @@
---
outline: [2, 3]
description: Learn how to connect to and manage Elasticsearch data in Olares using Bytebase.
---
# View Elasticsearch data
To use Elasticsearch in Olares, install it from Market first. This guide explains how to access and manage Elasticsearch data using Bytebase.
## Install Elasticsearch service
Before connecting, install the Elasticsearch service from Market.
1. Open Market from Launchpad and search for "Elasticsearch".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Get connection information
Before connecting, obtain Elasticsearch connection details from Control Hub.
1. Open Control Hub from Launchpad.
2. In the left navigation pane, go to Middleware and select **Elasticsearch**.
3. On the Details panel, record the following information:
- **Host**: Used for Bytebase connection.
- **User**: Used for Bytebase connection.
- **Password**: Used for Bytebase connection.
![Elasticsearch details](/images/developer/develop/middleware/mw-es-details.png#bordered){width=60% style="margin-left:0"}
## Manage via Bytebase
Bytebase provides a graphical interface for database management and schema changes.
### Prerequisites
:::info MongoDB app required
Bytebase uses MongoDB to store its metadata. Install MongoDB before installing Bytebase.
:::
1. Open Market and search for "MongoDB".
2. Click **Get**, then **Install**, and wait until the service is running.
3. After MongoDB is installed, search for "Bytebase" in Market.
4. Click **Get**, then **Install**.
### First-time setup
When launching Bytebase for the first time, you must configure an administrator account.
:::tip
Remember these credentials. Only the admin account can create new database instances.
:::
1. Open Bytebase from Launchpad.
2. Follow the on-screen prompts to set up your admin account with email and password.
### Create an Elasticsearch instance
1. Log in to Bytebase with your admin account.
2. In the left navigation pane, select **Instances**, then click **+ Add Instance**.
3. Choose **Elasticsearch** as the database type.
4. Fill in the connection fields using values from Control Hub:
- **Host or Socket**: Enter the **Host** address and do not include the port.
- **Port**: Keep the default, usually `9200`.
- **Username**: Enter the **User** value from Control Hub.
- **Password**: Enter the **Password** value from Control Hub.
5. Click **Test Connection** to verify connectivity, then click **Create**.
Creating an instance in Bytebase does not create a new database. Once the instance is created, you can use the corresponding client tools to inspect and manage data.

View File

@@ -0,0 +1,67 @@
---
outline: [2, 3]
description: Learn how to visualize Prometheus metrics in Olares using Grafana dashboards.
---
# Use Grafana dashboards
To visualize system metrics in Olares, you can run Grafana and connect it to the built-in Prometheus service. This guide explains how to install Grafana, connect the data source, and import a standard dashboard.
## Install Grafana
Before using Grafana, install it from Market.
1. Open Market from Launchpad and search for "Grafana".
2. Click **Get**, then **Install**.
3. In the pop-up window, set your login credentials:
- `GF_USERNAME`: Grafana login username.
- `GF_PASSWORD`: Grafana login password.
:::tip Remember your login credentials
These are the login credentials for Grafana. You will need them if you access Grafana later.
:::
![Set login credentials](/public/images/developer/develop/middleware/mw-grafana-set-login.png#bordered){width=90% style="margin-left:0"}
4. Wait for the installation to complete.
## Access Grafana
1. Open **Grafana** from Launchpad, then click <i class="material-symbols-outlined">open_in_new</i> to open it in a new tab.
2. On the login screen, enter the `GF_USERNAME` and `GF_PASSWORD` you configured during installation.
After logging in, you will see the Grafana home page.
## Add Prometheus data source
Olares runs a built-in Prometheus service that collects system metrics.
To connect Grafana to this internal service:
1. In the Grafana left navigation pane, go to **Connections** > **Data sources**.
2. Click **Add data source**, then select **Prometheus**.
3. For the **Prometheus server URL** field, enter:
```text
http://dashboard.<olaresid>.olares.com
```
Replace `<olaresid>` with your Olares ID.
4. Click **Save & test** at the bottom of the page. If the connection is successful, you will see the prompt below.
![Successful connection](/public/images/developer/develop/middleware/mw-grafana-connect.png#bordered){width=90% style="margin-left:0"}
## Create a dashboard
This approach is suitable when you need custom metrics and visualizations and are familiar with PromQL.
1. In the left navigation pane, click **Dashboards**.
2. Click **+ Create dashboard**, then select **+ Add visualization**.
3. Select **prometheus** as the data source.
4. Configure panels, PromQL queries, and expressions as needed.
5. Click **Save dashboard** in the top-right corner for future use.
## Import a dashboard (recommended)
If you do not need to build dashboards from scratch, you can import existing dashboards.
1. Visit the [Grafana Dashboard library](https://grafana.com/grafana/dashboards/).
2. Download the required dashboard as a `JSON` file.
3. In Grafana, click <i class="material-symbols-outlined">add_2</i> in the top-right corner and select **Import dashboard**.
4. Upload the `JSON` file, and select **prometheus** as the data source.
5. Click **Import** to complete the import.
Imported dashboards provide predefined panels and queries and can be customized after import.
![Imported dashboard](/public/images/developer/develop/middleware/mw-grafana-dashboard.png#bordered){width=90%}

View File

@@ -0,0 +1,91 @@
---
outline: [2, 3]
description: Learn how to connect to and manage MariaDB data in Olares using CLI or Bytebase.
---
# View MariaDB data
To use MariaDB in Olares, install it from Market first. This guide explains how to access and manage MariaDB data using CLI or Bytebase.
## Install MariaDB service
Before connecting, install the MariaDB service from Market.
1. Open Market from Launchpad and search for "MariaDB".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Get connection information
Before connecting, obtain MariaDB connection details from Control Hub.
1. Open Control Hub from Launchpad.
2. In the left navigation pane, go to Middleware and select **Mariadb**.
3. On the Details panel, record the following information:
- **Host**: Used for Bytebase connection.
- **User**: Used for Bytebase connection.
- **Password**: Used for both CLI and Bytebase.
![MariaDB details](/images/developer/develop/middleware/mw-mariadb-details.png#bordered){width=60% style="margin-left:0"}
## Access via CLI
You can use the Olares terminal to access the MariaDB container for debugging or data operations.
1. In Control Hub, open the Olares terminal at the bottom of the left navigation pane.
2. Retrieve the Pod name for the middleware:
```bash
kubectl get pods -n mariadb-middleware
```
3. Record the Pod name, then enter the container:
```bash
kubectl exec -it -n mariadb-middleware <mariadb-pod> -- sh
```
4. Connect to MariaDB:
```bash
mysql -u root -p
```
5. When prompted, enter the password you retrieved from Control Hub.
## Manage via Bytebase
Bytebase provides a graphical interface for database management and schema changes.
### Prerequisites
:::info MongoDB app required
Bytebase uses MongoDB to store its metadata. Install MongoDB before installing Bytebase.
:::
1. Open Market and search for "MongoDB".
2. Click **Get**, then **Install**, and wait until the service is running.
3. After MongoDB is installed, search for "Bytebase" in Market.
4. Click **Get**, then **Install**.
### First-time setup
When launching Bytebase for the first time, you must configure an administrator account.
:::tip
Remember these credentials. Only the admin account can create new database instances.
:::
1. Open Bytebase from Launchpad.
2. Follow the on-screen prompts to set up your admin account with email and password.
### Create a MariaDB instance
1. Log in to Bytebase with your admin account.
2. In the left navigation pane, select **Instances**, then click **+ Add Instance**.
3. Choose **MariaDB** as the database type.
4. Fill in the connection fields using values from Control Hub:
- **Host or Socket**: Enter the **Host** address and do not include the port.
- **Port**: Keep the default, usually `3306`.
- **Username**: Enter the **User** value from Control Hub.
- **Password**: Enter the **Password** value from Control Hub.
5. Click **Test Connection** to verify connectivity, then click **Create**.
Creating an instance in Bytebase does not create a new database. Once the instance is created, you can use the corresponding client tools to inspect and manage data.

View File

@@ -0,0 +1,44 @@
---
outline: [2, 3]
description: Learn how to install MinIO and manage object storage in Olares using the MinIO Dashboard.
---
# View MinIO data
This guide explains how to install MinIO and manage object storage using MinIO Dashboard in Olares.
## Install MinIO service
Before using object storage, install the MinIO service from Market.
1. Open Market from the Launchpad and search for "MinIO".
2. Click **Get**, then **Install**, and wait for the installation to complete.
After installation, MinIO service and its connection details will appear in the Middleware list in Control Hub.
## Install MinIO Dashboard
MinIO Dashboard depends on the MinIO service and can only be installed after MinIO is available.
1. In Market, search for "MinIO Dashboard".
2. Click **Get**, then **Install**, and wait for the installation to complete.
## Get connection information
Before connecting, obtain MinIO connection details from the Control Hub.
1. Open Control Hub from Launchpad.
2. In the left navigation pane, go to Middleware and select **Minio**.
3. On the Details panel, record the following information:
- **User**: Used for MinIO Dashboard connection.
- **Password**: Used for MinIO Dashboard connection.
![MinIO details](/images/developer/develop/middleware/mw-minio-details.png#bordered){width=60% style="margin-left:0"}
## Manage via MinIO Dashboard
MinIO Dashboard provides a graphical interface for creating buckets, browsing files, and managing permissions.
1. Open MinIO Dashboard from the Launchpad.
2. On the login screen, enter the **User** and **Password** values obtained from Control Hub.
Upon successful login, you can browse buckets and manage objects directly from the interface.

View File

@@ -0,0 +1,83 @@
---
outline: [2, 3]
description: Learn how to view and manage MongoDB data in Olares using CLI or Bytebase.
---
# View MongoDB data
To use MongoDB in Olares, install it from Market first. This guide walks you through the installation steps and shows how to access it from Olares.
## Install MongoDB service
Before connecting, install the MongoDB service from Market.
1. Open Market from the Launchpad and search for "MongoDB".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Get connection information
Before connecting, obtain MongoDB connection details from the Control Hub.
1. Open Control Hub from Launchpad.
2. In the left navigation pane, go to Middleware and select **Mongodb**.
3. On the Details panel, record the following information:
- **Mongos**: The host address provided by Control Hub. Used for Bytebase connection.
- **User**: Used for Bytebase connection.
- **Password**: Used for both CLI and Bytebase.
![MongoDB details](/images/developer/develop/middleware/mw-mongodb-details.png#bordered){width=60% style="margin-left:0"}
## Access via CLI
You can use the Olares terminal to access the MongoDB container.
1. In Control Hub, open the Olares terminal at the bottom of the left navigation pane.
2. Retrieve the Pod name for the middleware:
```bash
kubectl get pods -n os-platform | grep tapr-middleware
```
3. Record the Pod name that starts with `tapr-middleware`, then enter the container:
```bash
kubectl exec -it -n os-platform <tapr-middleware-pod> -- sh
```
4. Connect to MongoDB using `mongosh`:
```bash
mongosh "mongodb://root:<your password from controlhub>@mongodb-mongodb-headless.mongodb-middleware:27017"
```
## Manage via Bytebase
Bytebase provides a graphical interface for database management and schema changes.
### Install Bytebase
1. Open Market and search for "Bytebase".
2. Click **Get**, then **Install**.
### First-time setup
When launching Bytebase for the first time, you must configure an administrator account.
:::tip
Remember these credentials. Only the admin account can create new database instances.
:::
1. Open Bytebase from Launchpad.
2. Follow the on-screen prompts to set up your admin account with email and password.
### Create a MongoDB instance
1. Log in to Bytebase with your admin account.
2. In the left navigation pane, select **Instances**, then click **+ Add Instance**.
3. Choose **MongoDB** as the database type.
4. Fill in the connection fields using values from Control Hub:
- **Host or Socket**: Enter the **Mongos** host address and do not include the port.
- **Port**: Keep the default, usually `27017`.
- **Username**: Enter the **User** value from Control Hub.
- **Password**: Enter the **Password** value from Control Hub.
5. Click **Test Connection** to verify connectivity, then click **Create**.
Creating an instance in Bytebase does not create a new database. Once the instance is created, you can use the corresponding client tools to inspect and manage data.

View File

@@ -0,0 +1,85 @@
---
outline: [2, 3]
description: Learn how to view and manage MySQL data in Olares using CLI or Bytebase.
---
# View MySQL data
To use MySQL in Olares, install it from Market first. This guide walks you through the installation steps and shows how to access it from Olares.
## Install MySQL service
Before connecting, install the MySQL service from Market.
1. Open Market from the Launchpad and search for "MySQL".
2. Click **Get**, then **Install**, and wait for the installation to complete.
Once installed, the service and its connection details will appear in the Middleware list in Control Hub.
## Get connection information
Before connecting, obtain MySQL connection details from the Control Hub.
1. Open Control Hub from Launchpad.
2. In the left navigation pane, go to Middleware and select **Mysql**.
3. On the Details panel, record the following information:
- **Host**: Used for Bytebase connection.
- **User**: Used for Bytebase connection.
- **Password**: Used for both CLI and Bytebase.
![MySQL details](/images/developer/develop/middleware/mw-mysql-details.png#bordered){width=60% style="margin-left:0"}
## Access via CLI
You can use the Olares terminal to access the MySQL container.
1. In Control Hub, open the Olares terminal at the bottom of the left navigation pane.
2. Enter the MySQL container. The container name is fixed.
```bash
kubectl exec -it -n mysql-middleware mysql-mysql-0 -- sh
```
3. Connect to MySQL:
```bash
mysql -u root -p
```
4. When prompted, enter the password you retrieved from Control Hub.
## Manage via Bytebase
Bytebase provides a graphical interface for database management and schema changes.
### Prerequisites
:::info MongoDB app required
Bytebase uses MongoDB to store its metadata. Install MongoDB before installing Bytebase.
:::
1. Open Market and search for "MongoDB".
2. Click **Get**, then **Install**, and wait until the service is running.
3. After MongoDB is installed, search for "Bytebase" in Market.
4. Click **Get**, then **Install**.
### First-time setup
When launching Bytebase for the first time, you must configure an administrator account.
:::tip
Remember these credentials. Only the admin account can create new database instances.
:::
1. Open Bytebase from Launchpad.
2. Follow the on-screen prompts to set up your admin account with email and password.
### Create a MySQL instance
1. Log in to Bytebase with your admin account.
2. In the left navigation pane, select **Instances**, then click **+ Add Instance**.
3. Choose **MySQL** as the database type.
4. Fill in the connection fields using values from Control Hub:
- **Host or Socket**: Enter the **Host** address and do not include the port.
- **Port**: Keep the default, usually `3306`.
- **Username**: Enter the **User** value from Control Hub.
- **Password**: Enter the **Password** value from Control Hub.
5. Click **Test Connection** to verify connectivity, then click **Create**.
Creating an instance in Bytebase does not create a new database. Once the instance is created, you can use the corresponding client tools to inspect and manage data.

View File

@@ -0,0 +1,76 @@
---
outline: [2, 3]
description: Learn how to subscribe to and publish messages in Olares using NATS CLI, and understand the NATS Subject naming rules and permission model.
---
# Subscribe and publish messages with NATS
This guide explains how to use the `nats-box` CLI tool to test NATS message subscription and publication within the Olares cluster, and provides an overview of the NATS Subject naming rules and permission model.
## Get connection information
Before connecting, obtain NATS connection details from the Control Hub.
1. Open Control Hub from Launchpad.
2. In the left navigation pane, go to Middleware and select **Nats**.
3. On the Subject panel, select a target Subject and record the corresponding information from the same row:
- **Subject**: The target message subject.
- **User**: The connection username.
- **Password**: The connection password.
![Nats details](/public/images/developer/develop/middleware/mw-nats-details.png#bordered){width=60% style="margin-left:0"}
## Access via CLI
`nats-box` provides a convenient way to test NATS subscriptions and publications from within the cluster.
### Deploy `nats-box`
1. Download the example [`nats-box.yaml`](http://cdn.olares.com/common/nats-box.yaml) file, then upload it to the Olares machine.
2. Navigate to the directory containing the YAML file and deploy `nats-box`:
```bash
kubectl apply -f nats-box.yaml
```
3. Retrieve the name of the `nats-box` Pod:
```bash
kubectl get pods -n os-platform | grep nats-box
```
4. Enter the `nats-box` container:
```bash
kubectl exec -it -n os-platform <nats-box-pod> -- sh
```
### Subscribe to messages
Use the Subject, User, and Password obtained from Control Hub to subscribe:
```bash
nats sub <subject-from-controlhub> --user=<user-from-controlhub> --password=<password-from-controlhub> --all
```
### Publish messages
Publish a message to the specified Subject:
```bash
nats pub <subject-from-controlhub> '{"hello":"world"}' --user=<user-from-controlhub> --password=<password-from-controlhub>
```
## Subject naming and permission reference
This section describes the Subject naming convention and permission model used in Olares.
### Subject structure
NATS Subjects use a three-level structure separated by dots (.): `<prefix>.<event>.<olaresId>`.
| Level | Name | Description |
|--|--|--|
| 1st |`<prefix>` | Source Identifier. <ul><li>**System services**: Fixed as `os`.</li><li>**Third-party apps**: Uses the corresponding `appId`. </li></ul>|
| 2nd | `<event>` | Event type or Domain. <br>Examples: `users`, `groups`, `files`, `notification`. |
| 3rd |`<olaresId>` | Represents the Olares ID of the user space. |
### Permission model
Read and write permissions for Subjects vary depending on the application type.
| App type | Permission scope | Description |
|--|--|--|
| User space app| Read-only | Can only subscribe to Subjects with a three-level structure containing its own `<olaresId>`. |
| System/Cluster app| System-level access | <ul><li>**Subscribe**: Can subscribe to system-level Subjects (e.g., `os.users`, `os.groups`).</li><li>**Write**: Can write to second-level Subjects within its own space.</li><li>**Global Read**: Requires separate approval to subscribe to all second-level Subjects.</li></ul> |

View File

@@ -0,0 +1,188 @@
---
outline: [2, 3]
description: Learn how to enable OpenTelemetry auto-instrumentation in an Olares cluster and view trace data in Jaeger.
---
# View OpenTelemetry data
This guide walks you through enabling OpenTelemetry auto-instrumentation for services running in an Olares cluster and viewing trace data in Jaeger.
## Prerequisites
- Your target service runs as a Kubernetes workload (Deployment, StatefulSet, or DaemonSet).
- You have access to run `kubectl` against the Olares cluster.
- You can generate some traffic to the target service. Trace data is generated only when traffic exists.
## Install Jaeger
Jaeger is used to visualize trace data. Install Jaeger from Market.
1. Open Market from Launchpad and search for "Jaeger".
2. Click **Get**, then **Install**, and wait for the installation to complete.
## Apply tracing configuration
Prepare the tracing backend configuration before enabling auto-instrumentation.
1. Click [`otc.yaml`](https://cdn.olares.com/common/otc.yaml) to download the configuration file.
2. Upload the file to your Olares host.
3. In the directory containing the file, apply it:
```bash
kubectl apply -f otc.yaml
```
## Configure service access
To enable OpenTelemetry auto-instrumentation, add specific **annotations** to the **Pod template** of your workload.
Auto-instrumentation is triggered entirely by annotations. No code changes are required.
:::info Rules for service access configuration
- Add annotations under `.spec.template.metadata.annotations` (Pod template, not top-level metadata).
- Pods will be recreated (rollout) for injection to take effect.
:::
:::tip Saving changes
After you finish editing with `kubectl edit`, save and exit the editor. Kubernetes will roll out updated Pods automatically in most cases.
:::
### BFL service (StatefulSet)
1. Edit the StatefulSet:
```bash
kubectl edit sts -n user-space-<olaresid> bfl
```
2. Under `.spec.template.metadata.annotations`, add:
```yaml
spec:
template:
metadata:
labels:
tier: bfl
# Locate here and add annotations
annotations:
instrumentation.opentelemetry.io/inject-go: "olares-instrumentation"
instrumentation.opentelemetry.io/go-container-names: "api"
instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/bfl-api"
instrumentation.opentelemetry.io/inject-nginx: "olares-instrumentation"
instrumentation.opentelemetry.io/inject-nginx-container-names: "ingress"
```
### ChartRepo (Deployment)
1. Edit the Deployment:
```bash
kubectl edit deploy -n os-framework chartrepo-deployment
```
2. Under `.spec.template.metadata.annotations`, add:
```yaml
spec:
template:
metadata:
labels:
app: chartrepo
io.bytetrade.app: "true"
# Locate here and add annotations
annotations:
instrumentation.opentelemetry.io/inject-go: "olares-instrumentation"
instrumentation.opentelemetry.io/go-container-names: "chartrepo"
instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/root/app"
```
### Olares app (Deployment)
1. Edit the Deployment:
```bash
kubectl edit deploy -n user-space-<olaresid> olares-app-deployment
```
2. Under `.spec.template.metadata.annotations`, add:
```yaml
spec:
template:
metadata:
labels:
app: olares-app
io.bytetrade.app: "true"
# Locate here and add annotations
annotations:
instrumentation.opentelemetry.io/inject-nodejs: "olares-instrumentation"
instrumentation.opentelemetry.io/nodejs-container-names: "user-service"
instrumentation.opentelemetry.io/inject-nginx: "olares-instrumentation"
instrumentation.opentelemetry.io/inject-nginx-container-names: "olares-app"
```
### Files (DaemonSet)
1. Edit the DaemonSet:
```bash
kubectl edit ds -n os-framework files
```
2. Under `.spec.template.metadata.annotations`, add:
```yaml
spec:
template:
metadata:
labels:
app: files
# Locate here and add annotations
annotations:
instrumentation.opentelemetry.io/inject-nginx: "olares-instrumentation"
instrumentation.opentelemetry.io/inject-nginx-container-names: "nginx"
instrumentation.opentelemetry.io/inject-go: "olares-instrumentation"
instrumentation.opentelemetry.io/go-container-names: "gateway,files,uploader"
instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/filebrowser"
```
### Market (Deployment)
1. Edit the Deployment:
```bash
kubectl edit deploy -n os-framework market-deployment
```
2. Under `.spec.template.metadata.annotations`, add:
```yaml
spec:
template:
metadata:
labels:
app: appstore
io.bytetrade.app: "true"
# Locate here and add annotations
annotations:
instrumentation.opentelemetry.io/inject-go: "olares-instrumentation"
instrumentation.opentelemetry.io/go-container-names: "appstore-backend"
instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/opt/app/market"
```
### System server (Deployment)
1. Edit the Deployment:
```bash
kubectl edit deploy -n user-system-<olaresid> system-server
```
2. Under `.spec.template.metadata.annotations`, add:
```yaml
spec:
template:
metadata:
labels:
app: systemserver
# Locate here and add annotations
annotations:
instrumentation.opentelemetry.io/go-container-names: "system-server"
instrumentation.opentelemetry.io/inject-go: "olares-instrumentation:"
instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/system-server"
```
## View traces in Jaeger
:::info Traces may appear with a delay
After rollout, traces may take 15 minutes to appear. Make sure the service receives traffic.
:::
Generate traffic to the service.
1. Open Jaeger from Launchpad.
2. Select the service name from the **Service** dropdown.
3. Click **Find Traces** to view trace data.
![View traces](/images/developer/develop/middleware/mw-jaeger.png#bordered)

View File

@@ -0,0 +1,77 @@
---
outline: [2, 3]
description: Learn how to view and manage PostgreSQL data in Olares using CLI or Bytebase.
---
# View PostgreSQL data
PostgreSQL is available by default in Olares. This guide walks you through accessing it from Olares.
## Get connection information
Before connecting, obtain PostgreSQL connection details from the Control Hub.
1. Open Control Hub from Launchpad.
2. In the left navigation pane, go to Middleware and select **Postgres**.
3. On the Details panel, record the following information:
- **Host**: Used for Bytebase connection.
- **User**: Used for Bytebase connection.
- **Password**: Used for both CLI and Bytebase.
![PostgreSQL details](/images/developer/develop/middleware/mw-pg-details.png#bordered){width=60% style="margin-left:0"}
## Access via CLI
You can use the Olares terminal to access the database container.
1. In Control Hub, open the Olares terminal at the bottom of the left navigation pane.
2. Enter the PostgreSQL container. The container name is fixed.
```bash
kubectl exec -it -n os-platform citus-0 -- sh
```
3. Connect to the PostgreSQL database:
```bash
psql -h citus-0 -U olares
```
4. When prompted, enter the password you retrieved from Control Hub.
## Manage via Bytebase
Bytebase provides a graphical interface for database management and schema changes.
### Prerequisites
:::info MongoDB app required
Bytebase uses MongoDB to store its metadata. Install MongoDB before installing Bytebase.
:::
1. Open Market and search for "MongoDB".
2. Click **Get**, then **Install**, and wait until the service is running.
3. After MongoDB is installed, search for "Bytebase" in Market.
4. Click **Get**, then **Install**.
### First-time setup
When launching Bytebase for the first time, you must configure an administrator account.
:::tip
Remember these credentials. Only the admin account can create new database instances.
:::
1. Open Bytebase from Launchpad.
2. Follow the on-screen prompts to set up your admin account with email and password.
### Create a PostgreSQL instance
1. Log in to Bytebase with your admin account.
2. In the left navigation pane, select **Instances**, then click **+ Add Instance**.
3. Choose **PostgreSQL** as the database type.
4. Fill in the connection fields using values from Control Hub:
- **Host or Socket**: Enter the **Host** address and do not include the port.
- **Port**: Keep the default, usually `5432`.
- **Username**: Enter the **User** value from Control Hub.
- **Password**: Enter the **Password** value from Control Hub.
5. Click **Test Connection** to verify connectivity, then click **Create**.
Creating an instance in Bytebase does not create a new database. Once the instance is created, you can use the corresponding client tools to inspect and manage data.

View File

@@ -0,0 +1,44 @@
---
outline: [2, 3]
description: Learn how to install RabbitMQ and manage RabbitMQ resources in Olares using RabbitMQ Dashboard.
---
# View RabbitMQ data
This guide explains how to install RabbitMQ and manage data using RabbitMQ Dashboard in Olares.
## Install RabbitMQ service
Before using RabbitMQ, install the RabbitMQ service from Market.
1. Open Market from the Launchpad and search for "RabbitMQ".
2. Click **Get**, then **Install**, and wait for the installation to complete.
After installation, RabbitMQ service and its connection details will appear in the Middleware list in Control Hub.
## Install RabbitMQ Dashboard
RabbitMQ Dashboard depends on the RabbitMQ service and can only be installed after RabbitMQ is available.
1. In Market, search for "RabbitMQ Dashboard".
2. Click **Get**, then **Install**, and wait for the installation to complete.
## Get connection information
Before connecting, obtain RabbitMQ connection details from the Control Hub.
1. Open Control Hub from Launchpad.
2. In the left navigation pane, go to Middleware and select **Rabbitmq**.
3. On the Details panel, record the following information:
- **User**: Used for RabbitMQ Dashboard connection.
- **Password**: Used for RabbitMQ Dashboard connection.
![RabbitMQ details](/images/developer/develop/middleware/mw-rabbitmq-details.png#bordered){width=60% style="margin-left:0"}
## Manage via RabbitMQ Dashboard
RabbitMQ Dashboard provides a graphical interface for viewing and managing RabbitMQ resources.
1. Open RabbitMQ Dashboard from the Launchpad.
2. On the login screen, enter the **User** and **Password** values obtained from Control Hub.
Upon successful login, access the management interface to view and manage RabbitMQ resources.

View File

@@ -0,0 +1,75 @@
---
outline: [2, 3]
description: Learn how to view and manage Redis data in Olares using CLI or Bytebase.
---
# View Redis data
Redis is available by default in Olares. This guide walks you through accessing it from Olares.
## Get connection information
Before connecting, obtain Redis connection details from the Control Hub.
1. Open Control Hub from Launchpad.
2. In the left navigation pane, go to Middleware and select **Redis**.
3. On the Details panel, record the following information:
- **Host**: Used for Bytebase connection.
- **Password**: Used for both CLI and Bytebase.
![Redis details](/public/images/developer/develop/middleware/mw-redis-details.png#bordered){width=60% style="margin-left:0"}
## Access via CLI
You can use the Olares terminal to access the database container.
1. In Control Hub, open the Olares terminal at the bottom of the left navigation pane.
2. Enter the Redis container. The container name is fixed.
```bash
kubectl exec -it -n os-platform kvrocks-0 -- sh
```
3. Connect to the Redis database:
```bash
redis-cli -p 6666 -a <your password from control-hub>
```
## Manage via Bytebase
Bytebase provides a graphical interface for database management and schema changes.
### Prerequisites
:::info MongoDB app required
Bytebase uses MongoDB to store its metadata. Install MongoDB before installing Bytebase.
:::
1. Open Market and search for "MongoDB".
2. Click **Get**, then **Install**, and wait until the service is running.
3. After MongoDB is installed, search for "Bytebase" in Market.
4. Click **Get**, then **Install**.
### First-time setup
When launching Bytebase for the first time, you must configure an administrator account.
:::tip
Remember these credentials. Only the admin account can create new database instances.
:::
1. Open Bytebase from Launchpad.
2. Follow the on-screen prompts to set up your admin account with email and password.
### Create a Redis instance
1. Log in to Bytebase with your admin account.
2. In the left navigation pane, select **Instances**, then click **+ Add Instance**.
3. Choose **Redis** as the database type.
4. Fill in the connection fields using values from Control Hub:
- **Host or Socket**: Enter the **Host** address and do not include the port.
- **Port**: Keep the default, usually `6379`.
- **Username**: Leave it empty.
- **Password**: Enter the **Password** value from Control Hub.
5. Click **Test Connection** to verify connectivity, then click **Create**.
Creating an instance in Bytebase does not create a new database. Once the instance is created, you can use the corresponding client tools to inspect and manage data.

View File

@@ -0,0 +1,234 @@
---
outline: [2, 3]
description: Learn how to publish paid apps in Olares Market and manage sales using the Merchant app.
---
# Publish paid applications
Starting from Olares v1.12.3, Olares Market supports paid application distribution. To sell apps, developers must register their Olares ID (DID) on the blockchain and install the Merchant app to manage licenses, orders, and payout records.
:::info Closed Beta
This feature is currently in Closed Beta. To publish paid apps, please contact us at [hi@olares.com](mailto:hi@olares.com) to apply for access.
Currently, only paid applications (pay-to-download) are supported. In-app purchases and subscriptions are under development.
:::
This guide explains how to publish paid applications and configure Merchant.
## Prerequisites
Before starting, ensure that you have:
- Olares ID: A valid Olares ID (e.g., `alice123@olares.com`).
- Olares OS: A working Olares host running v1.12.3 or later.
- Developer access: Approved developer status (apply via email).
- Environment: A local computer with Node.js installed.
## Set up a wallet and fund gas fees
To enable payments, you must register your Olares ID (DID) on the blockchain. This is an on-chain interaction and requires a small Gas Fee.
### Set up a crypto wallet
This guide uses MetaMask as an example. You may use other wallet apps.
1. Open LarePass on your phone.
2. Go to **Settings** > **Safety** > **Mnemonic phrase** to view your mnemonic phrase.
:::warning Security alert
Your mnemonic phrase is a high-privilege credential for your account. Never share it or upload it to a public code repository. Perform the following steps in a secure local environment.
:::
3. Install the MetaMask extension in your browser.
4. In MetaMask, select **Add wallet** > **Import a wallet**, and enter your Olares mnemonic phrase.
### Fund your wallet
Registration consumes a small amount of ETH on the Optimism network as gas fees.
1. In MetaMask, switch to **Optimism (OP Mainnet)**.
2. Copy your wallet address. It should start with `0x`.
![Copy MetaMask wallet address](/images/developer/develop/distribute/metamask-wallet-add.png#bordered){width=50%}
3. Send a small amount of ETH to this address. At least 0.0005 ETH is recommended for subsequent gas fees.
## Generate and register RSA keys
To ensure transaction security and license uniqueness, generate an RSA key pair and register the public key on-chain under your Olares ID.
### Generate an RSA key pair
1. Install the `did-cli` tool:
```bash
npm install -g @beclab/olaresid
```
2. Generate a default 2048-bit RSA key pair:
```bash
did-cli rsa generate
```
When the command succeeds, you should see output similar to the following:
![RSA key pair generated](/images/developer/develop/distribute/metamask-rsa-key-pairs.png#bordered){width=60%}
3. View the generated keys:
```bash
cat ./rsa-public.pem
cat ./rsa-private.pem
```
:::info Security alert
Keep `rsa-private.pem` safe. You will need it later when configuring the Merchant app.
:::
### Register the RSA public key
Bind the generated public key to your Olares ID. It requires signing with your mnemonic phrase and will consume gas.
1. Export your mnemonic as a temporary environment variable and wrap the value in double quotes:
```bash
export PRIVATE_KEY_OR_MNEMONIC="xx xxx xx ..."
echo $PRIVATE_KEY_OR_MNEMONIC
```
2. Check whether your Olares ID already has an RSA public key:
```bash
did-cli rsa get alice123@olares.com --network mainnet
```
If you see the following message, you can continue:
```text
❌ No RSA public key set for this domain
```
3. Verify the owner wallet address and make sure it matches the wallet you funded previously:
```bash
did-cli owner alice123@olares.com --network mainnet
```
Example output:
```text
👤 Owner: 0x3.....
```
4. Register the RSA public key on-chain:
```bash
did-cli rsa set alice123@olares.com ./rsa-public.pem --network mainnet
```
5. Verify registration:
```bash
did-cli rsa get alice123@olares.com --network mainnet
```
6. Clear the mnemonic phrase from your environment:
```bash
unset PRIVATE_KEY_OR_MNEMONIC
echo $PRIVATE_KEY_OR_MNEMONIC
```
If nothing is printed, it is cleared.
## Configure your app (OAC)
A paid app is almost the same as a free app. You only need two additional items:
- Add a `price.yaml` file at the chart root (OAC root).
- Expose `VERIFIABLE_CREDENTIAL` to the app so it can read the user's purchase credential.
### Add pricing configuration
Create `price.yaml` at the chart root:
```yaml
# Developer's Olares instance address
developer: alice123.olares.com
# Paid app
paid:
# product_id format: repoName-appName-productId
product_id: apps-appname-paid
price:
- chain: optimism | eth
token_symbol: USDC | USDT
receive_wallet: "0xcbbcd55960eC62F1dCFBac17C2a2341E4f0e81c8"
product_price: 100000
description:
- lang: en
title: Purchase item title
description: Purchase item description
icon: https://item.icon.url
# In-app purchase or subscription items (not implemented yet)
products: []
```
### Enable license checks
Your app can read the user's purchase credential via an injected environment variable.
Add the env var in the pod template where you need purchase enforcement:
```yaml
- name: VERIFIABLE_CREDENTIAL
value: "{{ .Values.olaresEnv.VERIFIABLE_CREDENTIAL }}"
```
Declare the variable in `OlaresManifest.yaml`:
```yaml
envs:
- envName: VERIFIABLE_CREDENTIAL
required: true
type: string
editable: false
applyOnChange: true
```
For detailed environment variable behavior, see [environment variables in `OlaresManifest.yaml`](/developer/develop/package/manifest.md#envs).
### Submit your app
Follow the [standard submission flow](/developer/develop/submit-apps.md) to create a Pull Request.
## Install and set up Merchant
The Merchant app is your checkout and management panel. It allows you to:
- View developer info (product list, RSA keys, payout wallet, orders).
- Issue product licenses.
- Verify licenses when apps start.
:::info Keep Merchant online
Purchase requests require real-time callbacks to your Olares host for verification. Keep the host running Merchant online 24/7 with a stable, fast network connection. Host offline or unstable network may directly prevent users from completing purchases.
:::
### Install Merchant
1. Open Olares Market and search for "Merchant".
2. Click **Get**, then **Install**.
### Initial setup
After installation completes, open Merchant from Launchpad.
1. On the login screen, enter your developer Olares ID and click **Import Developer**.
2. Merchant automatically loads your on-chain product info and RSA public key.
3. Open your private key file:
```bash
cat ./rsa-private.pem
```
Copy the full content, paste it into the Merchant dialog, then click **Import private key**.
## Manage sales in Merchant
After setup, Merchant opens the Home dashboard, where you can monitor identity status, key configuration, wallet assets, and transaction history.
:::info
The Store and Buy App pages in the left navigation are currently for debugging/testing only. You can ignore them in the current publishing workflow.
:::
### Sync status
The status indicator above the transaction list supports manual refresh:
- `Synced`: Up to date.
- `Syncing`: Pulling data from chain.
- `Not synced`: Not synchronized.
- `Error`: Sync failed. Check network connectivity.
### Transaction fields
| Field | Description|
|--|--|
| Wallet | Developer wallet address managed by Merchant|
| Type | Transaction type:<ul><li>`Incoming`: revenue as receiver</li><li>`Outgoing`: payment sent as sender</li></ul>|
| Tx Hash | The hash of the transaction record, a unique identifier for the on-chain<br> transaction.|
| From/To | Counterparty address, shown based on the transaction type:<ul><li>`Incoming`: sender address</li><li>`Outgoing`: recipient address </li></ul> |
| Contract | Token contract address, indicating the asset type and source involved in <br>the transaction.<ul><li>**Native**: native ETH transfer with no contract interaction </li><li>**[Contract address]**: ERC-20 token smart contract address</li></ul> |
| Amount | Transaction amount, denominated in the token specified by the Contract.|
| Time | The timestamp when the transaction is confirmed and recorded on-chain.|
| Product | <ul><li>**Product ID**: a transaction related to an Olares app purchase</li><li>**-**: a regular transfer not associated with app sales</li></ul> |
### Update developer information
To change RSA keys, product info, pricing, or receiving wallet:
1. [Regenerate RSA keys](#generate-and-register-rsa-keys) or [update your app configurations](#configure-your-app-oac), then submit a PR with updated information.
2. Wait for the PR to be reviewed and merged.
3. After the PR is merged, open Merchant from Launchpad. When prompted, click **Update / Re-install** to apply the latest configuration. Changes take effect immediately.

View File

@@ -0,0 +1,46 @@
---
outline: [2, 3]
description: Optimize your app listing with images and icons in Olares Market.
---
# Promote your apps
High-quality visuals help your application stand out in Olares Market. This guide covers asset specifications and how to generate image URLs for your app listing.
## Application assets
Configure these assets in your [`OlaresManifest.yaml`](/developer/develop/package/manifest.md).
### Application icon
**Required**. Displayed on the Launchpad and in the Market list.
- **Location**: Configure the icon URL in the icon field under `metadata` or `entrances` in `OlaresManifest.yaml`.
- **Format**: PNG or WEBP
- **Dimensions**: 256 × 256 pixels
- **Size**: No larger than 512 KB
### Promote images
**Recommended**. Displayed on the application details page. We recommend uploading at least 2 images.
- **Location**: Configure image URLs in the `promoteImage` field under `spec` in `OlaresManifest.yaml`.
- **Format**: JPEG, PNG, or WEBP
- **Dimensions**: 1440 × 900 pixels
- **Size**: No larger than 8 MB per image
- **Limit**: Up to 8 images
### Featured image
**Optional**. Used for recommendations in Olares Market or displayed on the "My Olares" section.
- **Location**: Configure the image URL in the `featuredImage` field under `spec` in `OlaresManifest.yaml`.
- **Format**: JPEG, PNG, or WEBP
- **Dimensions**: 1440 × 900 pixels
- **Size**: No larger than 8 MB
- **Limit**: One image only
### Image hosting service
You can also host images on your own server or use the Olares image hosting service:
1. Open [Olares Market image hosting](https://imghost.olares.com/).
2. Select the image type: **app icon**, **featured image** or **promotional image**.
3. Upload and preview the image.
4. Copy the generated URL and paste it into your `OlaresManifest.yaml`.

View File

@@ -0,0 +1,89 @@
---
outline: [2, 3]
description: Learn how to submit applications in Olares Market.
---
# Submit applications
This guide explains how to submit a new Olares application to the default index by creating a Pull Request (PR) against `beclab/apps:main`.
Terminus-Gitbot validates your PR based on the title, file scope, and ownership rules, and automatically close invalid PRs.
## Prerequisites
Before submitting, make sure your application has been fully tested on Olares.
Recommended workflow:
- Use [Studio](/developer/develop/tutorial/develop.md) development container to test and debug in a real online environment.
- [Install the app via Olares Market](/developer/develop/tutorial/package-upload.md) to test installation and upgrades as a user would.
## Submit a new application
### Step 1: Add your OAC to your fork
1. Fork the [official repository](https://github.com/beclab/apps) `beclab/apps`.
2. In your fork, add your [Olares Application Chart (OAC)](/developer/develop/package/chart.md) under a new folder.
3. Create an [`owners` file](/developer/develop/distribute-index.md#before-you-begin) (no extension) in your OAC root directory. Ensure your GitHub username is included.
:::info Folder naming convention
The folder name is your OAC directory name (chart folder name). Terminus-Gitbot uses it in the PR title and for file-scope validation. It must:
- Contain only lowercase letters and digits.
- Not include hyphens (`-`).
- Be no longer than 30 characters.
:::
### Step 2: Create a draft PR
Create a draft PR targeting the `beclab/apps:main` branch.
Terminus-Gitbot checks both your PR metadata (such as the title and file scope) and your chart content (such as required files in the OAC root). Make sure you have completed Step 1 before proceeding.
To pass the Terminus-Gitbot automated checks, your PR must strictly follow these rules:
1. **Title format**: The title must imply your intent and follow this exact format:
```text
[PR type][Chart folder name][Version] Title content
```
| Field | Description|
|--|--|
| PR type | <ul><li>**NEW**: Submit a new application. </li><li>**UPDATE**: Update an already successfully merged application.</li><li>**REMOVE**: Remove an already successfully merged application.<br></li><li>**SUSPEND**: Suspend an already successfully merged application from<br> distribution through the application store.</li></ul> |
| Chart folder name | The directory name of your OAC. Must match the naming convention. |
| Version | Chart version of your app. It must match:<ul><li>`version` in `Chart.yaml`</li><li>`version` under `metadata` in `OlaresManifest.yaml`</li></ul> |
| Title content | A brief summary of your PR. |
2. **File scope**: The PR only adds or modifies content under the chart folder name declared in the title.
3. **No duplicate PR**: Ensure no other Open or Draft PR exists for this chart folder.
4. **Clean structure (For new apps)**:
- The folder name does not already exist in `beclab/apps:main`.
- Your chart folder does not contain [control files](/developer/develop/manage-apps.md#control-files) (`.suspend` or `.remove`).
:::tip Draft PR is editable
During the Draft stage, you can continue pushing commits to adjust your files.
:::
When everything is ready, click **Ready for review**.
### Step 3: Wait for Terminus-Gitbot
After you submit, Terminus-Gitbot automatically validates the PR.
- If all checks pass, Terminus-Gitbot automatically merges the PR into `beclab/apps:main`.
- After a short delay, your application appears in Olares Market.
## Track PR status
### Type labels
When your PR is labeled `NEW`, `UPDATE`, `REMOVE`, or `SUSPEND`, it indicates the PR type in the title is recognized.
:::warning No type change
- Do not change the PR type after it is labeled.
- If the type is wrong, close the PR and create a new PR.
:::
### Status labels
- `waiting to submit`: Issues found. You may continue pushing commits. Terminus-Gitbot will re-check and update the status.
- `waiting to merge`: All checks passed and the PR is queued for auto-merge. Do not push new commits or manually intervene.
- `merged`: The PR has been merged into `beclab/apps:main`.
- `closed`: The PR is invalid or contains unrecoverable issues. Do not reopen it. Fix the issues and submit a new PR.

View File

@@ -1,123 +1,81 @@
---
outline: [2, 3]
description: Understand how application distribution works in Olares.
---
# Distribute Olares applications
# Submit Application
Distributing applications on Olares is based on open standards and automated validation.
If your application is already packaged as an Olares Application Chart (OAC), you can publish it to Olares Market and make it available to users with minimal friction.
## Submitting Your Application
This guide walks you through the distribution lifecycle of an Olares application, from understanding how Market indexing works to publishing, maintaining, and promoting your app.
**Brief Overview**
## Before you begin
1. Test your application on Olares, create the Olares Application Chart according to [guideline](../package/chart.md).
2. Fork the official [application repository of Olares Market](https://github.com/beclab/apps). Add your application's chart. Create a **PR** to `beclab/apps:main`.
3. Wait for **GitBot** to check your PR. If needed, modify PR until it passes.
4. Once the PR is merged, your application is ready to launch.
Before distributing your application, it helps to understand a few core concepts:
- **[Olares Application Chart (OAC)](/developer/develop/package/chart.md)**
The packaging format used to describe an Olares application, including metadata, ownership, versioning, and installation configuration.
- **Application index**
A service that provides application metadata to Olares Market. Olares includes a default public index, and developers can deploy their own.
- **Terminus-Gitbot**
The automated validation system that checks application submissions and enforces distribution rules.
## App distribution workflow
### 1. Prepare your app package
Before an app can be distributed, it must be packaged as an **Olares Application Chart (OAC)**.
At this stage, developers typically:
- Develop and test the app on an Olares host.
- Verify installation and upgrade behavior.
- Finalize chart metadata and structure.
For details on packaging and chart structure, see:
- [Olares Application Chart (OAC)](/developer/develop/package/chart.md)
### 2. Submit the app to the default index
Olares Market indexes applications from Git repositories.
To publish an app to the default public index, developers submit their OAC by opening a Pull Request (PR) to the official repository.
During submission:
- The PR title declares the action type.
- GitBot validates file scope, ownership, and version rules.
- Valid PRs are merged automatically without manual review.
### 3. Automated validation and indexing
After a PR is submitted, **Terminus-Gitbot** performs automated checks to ensure the submission follows distribution rules.
If all checks pass, the PR is merged automatically.
After a short delay, the application becomes visible in Olares Market.
### 4. Manage the application lifecycle
After an application is published, developers continue to manage its lifecycle through Pull Requests.
Lifecycle actions include:
- Releasing new versions.
- Temporarily suspending distribution.
- Permanently removing an application from the Market.
These actions are controlled using PR types and special control files in the OAC.
### 1. Develop and test your application
### 5. Optimize your Market listing
Before submitting an application, please ensure that it has been thoroughly tested on your Olares.
- Use Studio's dev-container to test and debug your application in a real online environment. [Learn more about Studio](../tutorial/develop.md).
- Use the [custom installation](../tutorial/package-upload.md) in the Market app for user testing.
Once published, you can improve how your app is presented in Olares Market by adding icons, screenshots, and featured images.
### 2. Submit an application
The submission of the application needs to be completed through a **Pull Request**. Here's how:
- Fork the official [application repository of Olares Market](https://github.com/beclab/apps) and add your application's chart in your forked repository.
- Create a `Draft PR` pointing to `beclab/apps:main`.
- Please edit your PR title and text according to the template.
- **PR Title** must in this format: [PR Type][FolderName][version]Title Content
- `PR Type` includes:
- NEW: Submit a new application
- UPDATE: Update an already successfully merged application
- REMOVE: Remove an already successfully merged application
- SUSPEND: Suspend an already successfully merged application from distribution through the application store
- `FolderName` is your Olares Application Chart name. It must adhere to the naming requirements in [chart specification](../package/chart.md).
- `version` refers to your application chart's `Chart Version`, which needs to be consistent with the `version` field in `Chart.yaml` and metadata section of `OlaresManifest.yaml`
- To prevent your PR from being incorrectly parsed or closed, please adhere to the following rules:
- Your PR title must contain only one `PR Type`, `FolderName`, and `version`.
- Your `PR Type` must be one of the predefined types.
- A PR should only add or modify content under the `FolderName` declared in the PR title.
- Only one Open PR or Draft PR can exist at a time with the same `FolderName`.
- You must be one of the owners of the folder you wish to modify. Owners are listed in the `owners` file within the chart. If you're submitting a new application, your GitHub username should be included in the `owners` file.
- During the Draft PR phase, you can continuously adjust your PR content and add new commits. Once everything is ready, click on the **'Ready for review'** button to submit the PR and call on **GitBot** to check.
:::info NOTE
The title and content of the PR are crucial for **GitBot**. Please adhere to the template specifications when filling them out. **GitBot** may automatically close any invalid PRs.
:::
### 6. (Optional) Publish paid applications
### 3. Track your PR status
- When your PR is labeled with `PR type`, it indicates that your PR title is valid. Please **do not modify the `PR Type` afterwards.** If it doesn't reflect your intentions, simply close it and create a new one.
Olares Market also supports paid application distribution.
Paid apps require additional identity registration, pricing configuration, and license management.
- You can track the progress of your PR through the status tags:
- `waiting to submit`: your PR has an issue and requires further modification before merging.
- `closed`: your PR is invalid or contains uncorrectable errors.
- `waiting to merge`: Everything is progressing smoothly. Your PR has passed the check and is now awaiting auto-merge by the **GitBot**.
- `merged`: your PR has been automatically merged into the `beclab/apps:main`.
- If **GitBot** automatically closes your PR, please **do not reopen** it. This implies that the PR has irreparable issues, and **GitBot** had to terminate the check process. You can submit a new PR after making necessary modifications.
- During the `waiting to submit` state, you can continue to submit commits to modify your application chart. **GitBot** will recheck the application chart files and update the PR status upon receiving a new commit.
- Once your PR passes all checks, it will be automatically merged into the `beclab/apps:main`. The application will be listed on **Olares Market** after a while.
- If you encounter any issues during the submission process, feel free to reach out to the Olares team or seek assistance from the community.
## Managing Your Application
You can continue managing and maintaining your application by creating a Pull Request to `beclab/apps:main`. You can upgrade your application, modify its availability, or completely remove it from the **Olares Market**.
The process of managing applications is similar to submission.You create a specific type of Pull Request, and GitBot takes care of the rest. Olares uses **special control files** in the root directory of application chart to manage the application's status. These **special control files** are empty files with specific suffix, such as `.suspend` and `.remove`
:::info NOTE
No ".suspend" or ".remove" files should be included in the initial submission.
:::
### Update
When you need to update a published application, you need to create an `UPDATE` PR.
**Please note:**
- Whenever you make changes to your application chart, such as upgrade the program, update metadata, or change owner list, be sure to upgrade your chart version.
- The chart version in the updated application chart must be ***greater than*** the current version in the repository.
- No `.suspend` or `.remove` files included in the root directory of updated application chart.
- The **Olares Market** does not offer version rollback. If there are any issues with your application, you need to submit a new version to fix it.
- To avoid potential conflicts, we recommend syncing your fork and rebase the commits of PR to the latest main branch.
### Suspend
If for any reason you want to temporarily disable your application's download and installation from the **Olares Market**, submit a `SUSPEND` PR.
**Please note:**
- The chart version in the submitted application chart must ***match*** the current version in the repository.
- The root directory you submit should contain the `.suspend` file and should not contain the `.remove` file.
- Once the suspend PR passes check and merges, the application store will stop listing your application.
- Users who have already downloaded and installed the application can continue to use it after suspension.
### Remove
If for any reason you want to remove your application from the **Olares Market**, submit a `REMOVE` PR.
**Please note:**
- Completely empty the files in the current application directory and add a `.remove` file to the root directory.
- Once the remove PR passes check and merges, the application store will remove your application.
- You will not be able to reuse the same directory or application chart name in the future.
- Users who have already downloaded and installed the application can continue to use it after removal.
## Promoting Your Application
Utilizing well-organized application descriptions, screenshots, and promotional images to highlight the features and functions of your application can help attract new users in the Market. Screenshots and previews can intuitively demonstrate the user experience, helping your application stand out.
To add promotional images on the application detail page, include links to these assets in the `promoteImage` fields within the `spec` section of the `OlaresManifest.yaml` file.
:::info **Assets Specifications for the Olares Market**
- The application's **icon** must be in PNG or WEBP format, up to 512 KB, with a size of 256x256 px.
- It is highly recommended to upload at least 2 **screenshots** for promotion. **Screenshots** must be in JPEG, PNG, or WEBP format, up to 8MB each, with a size of 1440x900 px. You can upload up to 8 **screenshots**.
- If you wish to have your application featured in the store, a **featured image** is required. Add a link to this image in the `featuredImage` field within the `spec` section of the `OlaresManifest.yaml` file. The image must be in JPEG, PNG, or WEBP format, up to 8MB, with a size of 1440x900 px
:::
## Inviting Others to Collaborate
There are two ways to invite others to develop Olares applications together:
1. Add others developer's GitHub usernames to the `owners` file. Each developer listed in `owners` can then fork the repository and submit their changes independently.
2. Add others as collaborators to your forked repository. In this case, you create the Pull Request as a representative, and all others can jointly commit to the branch that is planned to merge.

View File

@@ -16,7 +16,7 @@ Before uploading, ensure your images are in the correct format.
## Upload and link assets
1. Navigate to the [Olares Market Image Hosting service](https://imghost.joinolares.cn/).
1. Navigate to the [Olares Market Image Hosting service](https://imghost.olares.com/).
2. Select the type of asset you are uploading (e.g., Icon).
3. Drag and drop your prepared file into the upload area, or click to select it.
4. Click the image thumbnail to make simple edits if necessary.

View File

@@ -2,9 +2,9 @@
outline: [2, 3]
description: Find answers to common questions during the installation and activation of Olares.
---
# Olares installation and activation FAQs
# Olares installation, activation & login FAQs
This page lists the FAQs about installing, configuring, and activating Olares on your hardware.
This page lists the FAQs about installing, configuring, activating, and logging into Olares on your hardware.
## Installation
### What platforms does Olares support?
@@ -75,4 +75,50 @@ Ensure both your phone and Olares device are on the same network. If they are no
In situations where you cannot connect via Wi-Fi, you can use the Bluetooth network setup in the LarePass app to connect Olares to the same network as your phone.
For details, see [Activate Olares using Bluetooth](../../manual/larepass/activate-olares.md#activate-olares-using-bluetooth).
For details, see [Activate Olares using Bluetooth](../../manual/larepass/activate-olares.md#activate-olares-using-bluetooth).
### I received the MFA binding error. How can I resolve it?
The request to bind Multi-Factor Authentication (MFA) failed due to a network timeout. Check your network connection and retry the setup process.
### I received a DID binding error. How to resolve it?
The request to the binding-zone interface failed due to a network timeout. This usually happens during account activation. Ensure your network is stable and retry.
### What does this error message mean: "Invalid jws, timestamp is out of range"?
This occurs when there is a significant time difference (greater than 20 minutes) between the device running LarePass and the Olares device. Check the system time on your computer or phone and ensure it is synced correctly with internet time.
### I see this error message during setup: "Resolve name error". How to fix it?
This error means your Olares device cannot connect to the Olares identity service, which is usually caused by the network issue. Check your internet connection and ensure your Olares device has proper network access.
## Login and authentication
### What should I do when I see "Authentication failed, incorrect password"?
This indicates the password entered is not accurate. Double-check your password for issues like typos or case sensitivity and try again.
### What does this mean: "Authentication failed, user not found"?
The system cannot find an account associated with the username entered. Verify that the username is correct and this username is already registered on Olares.
### I received an error saying "Authentication failed, failed to query user from lldap service". How to resolve it?
The system was unable to retrieve user details from the internal directory. This might happen if the user data is corrupted or if the service is momentarily busy. Try again or contact your administrator.
### I am locked out with the message "too many failed login attempts, retry again later after 5 minutes". What should I do?
For security reasons, the system temporarily locks logins after multiple incorrect attempts. Wait for 5 minutes and then try logging in again.
### Why am I getting "Authentication failed, disk space is full"?
Your Olares device storage is completely full, which prevents the authentication service from running correctly. Free up disk space on the device to resolve this issue.
### What does this error message mean: "Authentication failed, lldap service is unavailable"?
The internal identity service "LLDAP" on your Olares device is not running or is experiencing issues. Restart the Olares device and try again, or contact your administrator.
### What does this error message mean: "Authentication failed, citus service is unavailable"?
The internal database service "Citus" is currently unavailable. This is usually a temporary system issue. Restart your Olares device.

View File

@@ -7,12 +7,6 @@ description: Learn about Olares, an open-source sovereign cloud OS for local AI.
Olares is an open-source personal cloud operating system designed to empower you to own and manage your digital assets locally. Instead of relying on public cloud services, you can deploy powerful open-source alternatives locally on Olares, such as Ollama for hosting LLMs, ComfyUI for image generation, and Perplexica for private, AI-driven search and reasoning. Imagine the power of the cloud, but with you in complete command.
:::info Open source & monetization model
Olares follows a model similar to **Android**:
- The **Olares OS** (the software) is fully **open source**, ensuring transparency, community collaboration, and extensibility. Check out our [GitHub](https://github.com/beclab/Olares).
- The **hardware** (devices running Olares) can be licensed and distributed by manufacturers, enabling sustainable growth through hardware offerings and ecosystem partnerships.
:::
<div class="cta">
<a href="./get-started/">
<div class="content">

View File

@@ -0,0 +1,95 @@
---
outline: [2,3]
description: Learn how to access your Olares services securely using the LarePass VPN.
head:
- - meta
- name: keywords
content: Olares, LarePass VPN, local access
---
# Access Olares services securely using LarePass VPN
Typically, you access Olares services through a browser using a URL like `https://desktop.<username>.olares.com`. This way, you can reach your services from any device at any time.
While this address works from anywhere, it's recommended to enable the LarePass VPN to ensure your connection is always secure and efficient. The client automatically detects your network environment and selects the best connection method:
- **At home**: It establishes a direct **Intranet** connection to allow faster file transfers on your local network.
- **From remote**: It switches to a secure encrypted tunnel to ensure you remain connected safely when accessing remotely.
## Prerequisites
**Hardware** <br>
- Your Olares One is set up and accessible.
- A client device (computer or mobile phone) with internet access.
## Step 1: Download LarePass
To use the secure VPN connection, the LarePass client must be installed on the device you are using to access Olares.
- **Mobile**: Use the LarePass app installed during the Olares ID creation process.
- **Desktop**: Download and install the LarePass desktop client.
1. Visit <AppLinkGlobal />.
2. Download the version compatible with your operating system.
3. Install the application and log in with your Olares ID.
## Step 2: Enable LarePass VPN
Once installed, enable the VPN directly on the device.
:::tip Always enable VPN for remote access
Keep LarePass VPN enabled. It automatically prioritizes the fastest available route to ensure you always get the best speed possible without manual switching.
:::
:::info iOS and macOS setup
On iOS or macOS, you may be prompted to add a VPN Configuration to your system settings the first time you enable the feature. Allow this to complete the setup.
:::
<tabs>
<template #On-LarePass-mobile-client>
1. Open the LarePass app and go to **Settings**.
2. In the **My Olares** card, toggle on the VPN switch.
![Enable LarePass VPN on mobile](/images/manual/get-started/larepass-vpn-mobile.png#bordered)
</template>
<template #On-LarePass-desktop-client>
1. Open the LarePass app and click your avatar in the top-left corner to open the user menu.
2. Toggle on the switch for **VPN connection**.
![Enable LarePass VPN on desktop](/images/manual/get-started/larepass-vpn-desktop.png#bordered)
</template>
</tabs>
## Step 3: Verify the connection type
Once enabled, check the status indicator in LarePass to confirm how you are connected:
| Status | Description |
|:-------------|:---------------------------------------------------------|
| **Intranet** | Direct connection via your local LAN IP. Fastest speeds. |
| **P2P** | Direct encrypted tunnel between devices. High speed. |
| **DERP** | Routed via a secure relay server. Used as a fallback. |
## Troubleshooting
### Why doesn't LarePass VPN work on my Mac anymore?
If the VPN was working previously but has stopped, you might need to reset the system extension.
:::info
Depending on your macOS version, the UI might look slightly different.
:::
1. Open System Settings, search for "Extension", and select **Login Items & Extensions**.
2. Scroll to the **Network Extensions** section and click the info icon (ⓘ) to view loaded extensions.
3. Find LarePass, click the three dots (...), and select **Delete Extension**.
4. Restart your Mac.
5. Open the LarePass desktop client and re-enable the VPN.
### Why can't I enable LarePass VPN on Windows?
Third-party antivirus software may mistakenly flag the LarePass client, blocking the VPN service.
If prompted by your antivirus when opening LarePass for the first time, allow the application to continue.
If the VPN still fails to enable:
1. Check your antivirus software to see if LarePass was blocked.
2. Add the main LarePass executable to the allowlist or exclusions of your antivirus.
3. Restart LarePass and try enabling the VPN again.
## Learn more
- [Access Olares locally](../manual/best-practices/local-access.md): Explore detailed instructions for all available local network connection methods.
- [Access Olares terminal](access-terminal-ssh.md): Learn how to connect to the host shell using SSH or the Control Hub web terminal.
- [Network](../developer/concepts/network.md): Learn about the different entry points in Olares.

View File

@@ -0,0 +1,109 @@
---
outline: [2, 3]
description: Learn how to access the Olares One host terminal for command-line usage via Control Hub or SSH.
head:
- - meta
- name: keywords
content: SSH, Olares Terminal, Control Hub
---
# Connect to Olares One via SSH <Badge type="tip" text="10 min" />
Certain development and operational tasks, such as connecting Olares One with other devices to form a cluster, require direct command-line access.
Olares One is primarily used as a headless device, so you can access the terminal remotely without a monitor or keyboard connected to it.
You can connect to the host shell using one of the following methods:
- **Control Hub Terminal** is a web-based interface for direct root access. It is recommended for quick tasks.
- **Secure Shell (SSH)** is the standard protocol for remote management and complex operations.
## Before you begin
- The default username and password for Olares One are both `olares`.
:::warning Reset default SSH password
Even if you primarily use the Control Hub terminal, you must reset this password immediately in **Settings > My hardware** to secure your device against unauthorized access.
:::
- SSH access grants powerful control over the system. Ensure you keep your credentials secure.
## Prerequisites
**Hardware**
- Your Olares One is set up and connected to a network.
- A client device, such as a computer, is required to access the terminal.
**Experience**
- Basic familiarity with terminal commands and the command-line interface (CLI).
**LarePass** (Required for remote access)
- The LarePass app is installed on your device. This is required only if you plan to connect via SSH from a remote location outside your local network.
## Method 1: Access via Control Hub
For quick access without configuring SSH clients, you can use the web-based terminal built directly into Control Hub.
1. Open the Control Hub app.
2. In the left sidebar, under the **Terminal** section, click **Olares**.
![Terminal](/images/manual/olares/controlhub-terminal.png#bordered)
You can now execute system commands directly in the embedded terminal.
:::tip Run as `root`
The Control Hub terminal runs as `root` by default. You do not need to use `sudo` before commands.
:::
## Method 2: Access via SSH
SSH establishes a secure session over the network, allowing you to use command-line operations for Olares One on your current device.
### Get IP address of Olares One
To connect via SSH, you first need to find the internal IP address of your Olares One.
1. Open the LarePass app, and go to **Settings** > **System** to navigate to the **Olares management** page.
![Tap the System card](/images/manual/get-started/larepass-system.png#bordered)
2. Tap on the device card.
3. Scroll down to the **Network** section. You can find the **Intranet IP** there.
:::tip Check via Control Hub
You can check the IP using the `ifconfig` command in the Control Hub terminal.
Look for your active connection, typically named `enp3s0` (wired) or `wlo1` (wireless). The IP address follows `inet`.
:::
### Connect via SSH (local network)
If your computer and the Olares One are on the same Wi-Fi or LAN:
1. Open a terminal on your computer.
2. Run the `ssh` command using Olares One's local IP address:
```bash
ssh <username>@<host_ip_address>
```
For example:
```bash
ssh olares@192.168.31.155
```
3. Enter the host password when prompted.
### Connect via SSH (remote access)
If you are away from home, you can use LarePass VPN to bridge the connection securely.
#### Allow SSH access via VPN
For security, SSH access via VPN is disabled by default. You must enable it once.
1. On Olares, open the Settings app.
2. Navigate to **VPN**.
3. Toggle on **Allow SSH via VPN**.
#### Enable LarePass VPN
1. Open the LarePass desktop client on your computer.
2. Click your avatar in the top-left corner and toggle on **VPN connection**.
![Enable LarePass VPN on desktop](/images/manual/get-started/larepass-vpn-desktop.png#bordered)
3. Open a terminal on your computer.
4. Run the `ssh` command using Olares One's local IP address. LarePass handles the routing automatically.
```bash
ssh <username>@<host_ip_address>
```
For example:
```bash
ssh olares@192.168.31.155
```
5. Enter the host password when prompted.

182
docs/one/ace-step.md Normal file
View File

@@ -0,0 +1,182 @@
---
outline: [2, 3]
description: Step-by-step guide to installing ACE-Step AI on Olares, generating songs with lyrics or instrumentals, optimizing audio with retake and repainting, and using Audio2Audio to transform reference audio into new music.
head:
- - meta
- name: keywords
content: ACE-Step, AI music
---
# Create AI-generated music with ACE-Step <Badge type="tip" text="15 min" />
ACE-Step is an open-source music generation model developed by ACE Studio and StepFun. It generates music from lyrics and style tags, and supports editing tools such as retake, repainting, and Audio2Audio.
This guide walks you through installation, first-time generation, and basic editing workflows on Olares One.
## Learning objectives
By the end of this tutorial, you will learn how to:
- Generate songs with lyrics, tags, and stylistic controls.
- Locate and download your generated audio files.
- Refine tracks by adjusting the style, editing sections, extending the song, or using a reference clip to reshape it.
## Prerequisites
Before you begin, make sure you have:
- Olares One connected to a stable network.
- Sufficient disk space to download models.
## Install and set up ACE-Step
With your Olares device ready, follow these steps to install ACE-Step and begin generating music.
### Install ACE-Step
Follow these steps to install ACE-Step.
1. Open Market, and search for "ACE-Step".
![Install ACE-Step](/images/one/ace-market.png#bordered)
2. Click **Get**, then **Install**.
3. Wait a few minutes for the installation to complete.
### Download required models on first-time launch
Once installation finishes, open ACE-Step from Launchpad.
Olares will automatically download and install required models. A **Download Manager** window will appear, showing model size and download progress.
![ACE-Step Download Manager](/images/manual/use-cases/ace-step-download-manager.png#bordered){width=500}
After the download completes, the ACE-Step generation interface will open automatically.
## Generate your first track
Follow these steps to set your parameters and begin music generation.
### Set basic parameters
- **Audio Duration**: Drag the slider to choose the track length (up to 240 seconds). If left at the default (`-1`), the audio length will be random.
- **Format**: Select the audio format from `MP3`, `ogg`, `wav`, and `flac`.
:::tip MP3 recommended
It's recommended to change the default output format to MP3. This results in much smaller file sizes, faster loading, and a better overall experience.
:::
- **Lora Name or Path**: Select a LoRA model if available. Currently, only a Chinese rap LoRA is available by default.
- **Tags**: Enter descriptors for style, mood, rhythm, or instruments, separated by commas. For example:
```plain
Chinese Rap, J-Pop, Anime, kawaii future bass, Female vocals, EDM, Super Fast
```
- **Lyrics**: Enter your lyrics. Use structural tags to organize the song flow:
- `[verse]` for the main verse.
- `[chorus]` for the chorus.
- `[bridge]` for the bridge.
:::tip Generate an **instrumental-only** track
Enter the tag `[instrumental]` or `[inst]` in the **Lyrics** area to generate music without vocals.
:::
### Start generation
1. Click **Generate** when all parameters are set.
2. Once generation is complete, click the **Play** button to preview your track.
![Generate the audio](/images/manual/use-cases/ace-step-generate.png#bordered){width=80%}
### Save the generated music
You can save your generated music via two methods.
<tabs>
<template #Direct-download>
Click the <i class="material-symbols-outlined">download</i> button in the upper right corner to save the audio file directly to your local device.
</template>
<template #From Olares Files>
1. Open Files.
2. Navigate to: `/Home/AI/output/acestepv2`.
3. Right-click the generated audio file and save it to your local device.
</template>
</tabs>
## Optimize your audio
ACE-Step offers powerful tools to refine and modify specific parts of your generated track.
### Regenerate the entire segment
You can generate a new version of the entire track.
1. Click the **retake** tab.
2. Adjust the **variance** slider:
- Higher values: Create a significantly different version.
- Lower values: Keep the new version closer to the original.
3. Click **Retake** and wait for the generation.
![Preview the retake](/images/manual/use-cases/ace-step-retake.png#bordered){width=90%}
### Regenerate a specific section
You can update only a selected time range while keeping the rest of the track unchanged.
1. Click the **repainting** tab.
2. Adjust the **variance** slider:
- Higher values: Create a significantly different version of the selected section.
- Lower values: Keep the new section closer to the original.
3. Adjust the **Repaint Start Time** and **Repaint End Time** sliders to select the section you want to regenerate.
4. Select the source for repainting:
- `text2music`: The original song generated via Text2Music.
- `last_repaint`: The previous repainted version.
- `upload`: The audio you uploaded.
5. Click **Repaint** and wait for the generation.
![Preview the repaint](/images/manual/use-cases/ace-step-repaint.png#bordered){width=90%}
### Edit lyrics
You can edit lyrics to modify specific lines without affecting the rest of the track.
1. Click the **edit** tab.
2. Copy the original lyrics and paste them into the **Edit Lyrics** area.
3. Modify only the specific lines you wish to change.
4. Under **Edit Type**, select `only_lyrics`.
5. Click **Edit** and wait for the generation.
![Edit lyrics](/images/manual/use-cases/ace-step-edit-lyrics.png#bordered){width=90%}
### Edit tags
You can edit tags to reset the style or timbre of the track.
1. Click the **edit** tab.
2. Enter the new style or timbre tags (e.g., `hard rock` or `male tenor vocals`) in the **Edit Tags** area.
3. In **Edit Type**, select `remix`.
4. Click **Edit** and wait for the generation.
![Edit tags](/images/manual/use-cases/ace-step-edit-tags.png#bordered)
### Extend the audio
You can extend the length of the original track by adding new audio before or after it.
1. Click the **extend** tab.
2. Adjust the sliders:
- **Left Extend Length**: Add new audio *before* the original audio.
- **Right Extend Length**: Add new audio *after* the original audio.
3. Select the source to extend:
- `text2music`: The original song generated via Text2Music.
- `last_extend`: The previous extended version.
- `upload`: The audio you uploaded.
4. Click **Extend** and wait for the generation.
![Extend tags](/images/manual/use-cases/ace-step-extend.png#bordered)
## Audio2Audio
You can create a new track based on a **reference audio** clip you upload. The AI analyzes characteristics such as timbre, rhythm, and style to produce a track with a similar feel.
1. Check the box to **Enable Audio2Audio**.
2. Upload an existing music clip to serve as the reference.
3. Adjust the **Refer audio strength** slider. A higher value results in music more similar to the reference track.
4. Select a **Preset** style, or keep the default.
5. Set other parameters as needed.
6. Click **Generate** to create new music with an atmosphere similar to the reference audio.
![Audio2Audio](/images/manual/use-cases/ace-step-audio2audio.png#bordered)

136
docs/one/backup-resotre.md Normal file
View File

@@ -0,0 +1,136 @@
---
outline: [2, 3]
description: Learn how to back up and restore files and app data on Olares One.
head:
- - meta
- name: keywords
content: Back up, restore
---
# Back up and restore data <Badge type="tip" text="15 min" />
Olares One provides a built-in backup feature to protect important files and app data. You can create full and incremental backups, store them on local or network storage, and restore data from any available snapshot when needed.
## Learning objectives
By the end of this tutorial, you will learn how to:
- Create backup tasks for folders and supported applications.
- Configure backup locations, schedules, and password protection.
- Manage existing backup tasks.
- Restore files to a specific directory or recover app data from a snapshot.
## Back up your data
A backup task defines what to back up, where to store it, and when it runs.
### Create a backup task
1. Go to **Settings** > **Backup**.
2. Click **Add backup task**. If prompted, select **Back up files** or **Back up apps** to proceed.
3. On the Add backup task page, configure the following settings:
| Field | Description |
|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Backup location** | <ul><li>**Local path**: Select an external device such as a USB drive, SMB <br>share, or external hard drive.</li><br><li>**Olares Space**: Scan the QR code in **Settings** > your avatar > **Olares<br> Space** via LarePass.<br></li><li> **AWS S3 or Tencent COS**: Click **Add account** in the dialog, or go to <br>**Settings** > **Integrations** > **Link your accounts & data**.</li></ul> |
| **Region** | Cloud only. Select the region of your storage bucket. |
| **Backup path** | File backup only. Browse and select the specific directory to back up. |
| **Select application** | App backup only. Select the app to back up. Currently, only Wise is<br> supported. |
| **Backup name** | Enter a recognizable task name. We recommend including the<br> purpose and a timestamp. |
| **Snapshot frequency** | Choose **Every day**, **Every week**, or **Every month**. |
| **Run backup at** | Set the specific time of day for the backup to run. |
| **Backup password** | Set a password to encrypt your snapshots. |
| **Confirm password** | Re-enter the password you set. |
![Add backup task](/images/one/settings-add-backup.png#bordered)
4. Click **Submit** to create and start the task.
- The first run will be a full backup.
- Subsequent runs will be incremental backups (saving only changes).
### Manage backup tasks
Once created, tasks appear in the list. Click the arrow <i class="material-symbols-outlined">chevron_right</i> next to a task to view details.
| Action | Description |
|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Manage** | <ul><li> **Edit**: Modify snapshot frequency and time.<br></li><li> **Pause**: Pause the task.<br></li><li> **Delete**: Remove the task and all associated snapshots.</li></ul> |
| **Snapshot now** | Run a backup immediately. |
![Manage backup tasks](/images/one/settings-manage-backup-task.png#bordered){width=85% style="display:block;margin-left:0;margin-right:auto;"}
### View snapshot records
At the bottom of the backup detail page, you can review snapshots for this task:
| Field | Description |
|-------------------|---------------------------------------------|
| **Creation time** | When the snapshot was created. |
| **Size** | Total size of the snapshot data. |
| **Status** | The execution status of the snapshot. |
| **Backup type** | Whether it is a full or incremental backup. |
![View snapshots](/images/one/settings-snapshots.png#bordered){width=70% style="display:block;margin-left:0;margin-right:auto;"}
## Restore data
You can restore files to a specific folder or recover application data using any valid snapshot.
### Create a restore task
1. Go to **Settings** > **Restore**.
2. Click **Add restore task**.
3. Choose the method below that matches where your backup is stored.
### Restore from a local path
Use this method for backups stored on USB drives or SMB shares connected to Olares.
1. Select the local backup path. The path must point to the specific backup task folder.
If the backup name is `demo`, and the backup location is `/documents`, the path should be:
```text
/documents/olares-backups/demo-xxxx
```
2. Enter your backup password.
3. Click **Query snapshots** to load available snapshots.
4. Click **Restore** next to your target snapshot.
5. Start the restore:
- Files: Select the restore location then click **Start restore**.
- Wise: Click **Start restore** directly (no destination path required).
### Restore from Olares Space
Use this method if you backed up to Olares Space. You will need the LarePass mobile app.
1. Open LarePass and scan to sign in to [Olares Space](https://space.olares.com).
2. On the **Backup** page, locate the backup task and click **View Details**.
3. Get a snapshot URL:
- Click **Restore** (top right) to get the latest snapshot URL, or
- Select a specific snapshot and click **Restore** next to it.
4. Copy the URL and paste it into the **Backup URL** field in the From Space URL page.
5. Enter your backup password.
6. Start the restore:
- Files: Select the restore location and destination folder, then click **Start restore**.
- Wise: Click **Start restore** directly.
### Restore from cloud storage (AWS S3 / Tencent COS)
Use this method for backups stored on AWS S3 or Tencent COS.
1. Open your cloud storage console and locate the `olares-backups` directory.
2. Select the target backup folder and generate a **pre-signed URL**.
- For AWS S3, see the [AWS S3 documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html) on pre-signed URLs.
- For Tencent COS, follow [Tencent Cloud documentation](https://cloud.tencent.com/document/product/436/68284) for generating temporary access URLs.
3. Copy the generated URL.
4. Paste it into the **Backup URL** field on the From AWS S3 URL or From Tencent COS URL page.
5. Enter your backup password.
6. Click **Query snapshots** to load available snapshots.
7. Click **Restore** next to your target snapshot.
8. Start the restore:
- Files: Select the restore location and destination folder, then click **Start restore**.
- Wise: Click **Start restore** directly.
## Monitor restore tasks
Once created, the restore task appears in the task list on the Restore page. Click the arrow <i class="material-symbols-outlined">chevron_right</i> next to a task to view details and manage restore tasks.
- Cancel: Stop the process while it is running.
- View data: Once the status shows `Completed`, click **Open folder** or **Open app** to access the restored data.

124
docs/one/comfyui.md Normal file
View File

@@ -0,0 +1,124 @@
---
outline: [2,3]
description: Learn how to install ComfyUI, manage models via the ComfyUI Launcher, and generate high-performance images and videos on Olares One.
head:
- - meta
- name: keywords
content: local ai, comfyui, nunchaku, wan
---
# Generate images and videos with ComfyUI <Badge type="tip" text="1 h" />
ComfyUI is a powerful, node-based interface for Stable Diffusion that transforms AI media generation into a visual programming experience.
Olares provides ComfyUI Shared to allow multiple users to share models, plugins, and workflow resources within the cluster. It also features ComfyUI Launcher, providing administrator users with a simple way to manage ComfyUI resources and runtime environments.
## Learning objectives
- Install and configure the ComfyUI service.
- Use ComfyUI Launcher to download optimized model packages.
- Generate high-quality images using the Nunchaku Flux.1-dev workflow.
- Generate videos using the Wan 2.2 model.
## Before you begin
For image generation:
- Olares One is equipped with an NVIDIA RTX 5090 mobile GPU. This allows you to leverage the Nunchaku Flux.1-dev model to generate images significantly faster than standard FP16 or FP8 versions.
- Nunchaku Flux.1-dev is an optimized model utilizing SVDQuant quantization (NVFP4). It is designed to deliver high-performance inference on this specific hardware while maintaining minimal loss in visual quality.
## Prerequisites
**Hardware** <br>
- Olares One connected to a stable network.
- Sufficient disk space to download models.
**User permissions**
- Admin privileges to install ComfyUI from the Market, and to start or stop the ComfyUI service for the cluster.
## Step 1: Install ComfyUI
1. Open Market, and search for "ComfyUI".
2. Click **Get**, then **Install**, and wait for installation to complete.
![Install ComfyUI](/images/one/comfyui.png#bordered)
After it finished, you can see two icons for ComfyUI on Launchpad:
- **ComfyUI**: The client interface for ComfyUI.
- **ComfyUI Launcher**: The core management dashboard. You must use this tool to start the ComfyUI service before you can use the client.
## Step 2: Download model package
To generate content, you must first download the specific model package.
1. Open ComfyUI Launcher, and scroll down to **Package installation**.
2. For image generation, select **Nunchaku Flux FP4 Package** and click **GET ALL**. This downloads the necessary Nunchaku plugin and quantized models.
3. For video generation, select **Wan 2.2 Text to Video 14B Package** and click **GET ALL** to download necessary models.
![Install model package](/images/one/comfyui-install-model-package.png#bordered)
:::info ComfyUI service restart required
Whenever you install a new model package or custom node, you must restart the ComfyUI service for the changes to take effect.
:::
## Step 3: Start the ComfyUI service
1. In ComfyUI Launcher, click **START** in the upper-right corner.
![Start ComfyUI](/images/one/comfyui-start.png#bordered)
:::tip Initialization time
The initial startup typically takes 1020 seconds as the environment initializes.
:::
2. Once the status changes to "Running," click **OPEN**. This will launch the ComfyUI client in a new browser tab.
## Step 4: Generate images
This section uses the `nunchaku-flux.1-dev-qencoder` workflow to help you get started.
1. In the ComfyUI client, click the **ComfyUI** icon in the top-left corner to open the menu.
2. Select **View** > **Browse Templates**.
3. Under **EXTENSIONS**, select **ComfyUI-nunchaku**.
4. Choose the template: **nunchaku-flux.1-dev-qencoder**.
![Open Nunchaku workflow](/images/one/comfyui-nunchaku-templates.png#bordered)
5. Prepend `public/` to the filename in each model loader node. For example:
- **Default**: `clip_I.safetensors`
- **Change to**: `public/clip_I.safetensors`
:::info Shared model path
ComfyUI in Olares uses a file structure that differs from the standard installation. This change allows models to be shared between ComfyUI and SD Web UI.
:::
![Change model path](/images/one/comfyui-nunchaku-change-model-path.png#bordered)
6. Replace the text in **CLIP Text Encode** to update the prompt for your image. For example:
```plain
8-bit cyberpunk: Blocky pixel cat holds "olares is fast!" neon on pixel street.
```
7. Click **Run** in the toolbar to start generation.
## Step 5: Generate videos
This section uses the Wan 2.2 workflow.
1. In ComfyUI, open the ComfyUI menu and select **View** > **Browse Templates**.
2. Under the **GENERATION TYPE** category, select **Video**.
3. Select the template: **Wan 2.2 14B Text to Video**.
![Open Wan 2.2 workflow](/images/one/comfyui-video-templates.png#bordered)
4. Prepend `public/` to the filename in each model loader node. For example:
- **Default**: `wan_2.1_vae.safetensors`
- **Change to**: `public/wan_2.1_vae.safetensors`
:::info Shared model path
ComfyUI in Olares uses a file structure that differs from the standard installation. This change allows models to be shared between ComfyUI and SD Web UI.
:::
![Change model path](/images/one/comfyui-wan-change-model-path.png#bordered){width=90%}
5. Locate the **CLIP Text Encode** node and enter a detailed prompt for your video.
```plain
A woman with long brown hair and light skin smiles at another woman with long blonde hair. The woman with brown hair wears a black jacket and has a small, barely noticeable mole on her right cheek. The camera angle is a close-up, focused on the woman with brown hair's face. The lighting is warm and natural, likely from the setting sun, casting a soft glow on the scene. The scene appears to be real-life footage.
```
6. Click **Run** in the toolbar to start generation. Video generation takes significantly longer than image generation.
## Step 6: Download output files
You can download all output images and videos from Olares One to your local computer.
1. Open the Files app.
2. Navigate to the following directory:
```plain
External/olares/ai/output/comfyui
```
![View output files](/images/one/comfyui-output.png#bordered)
3. Select the files you wish to save.
4. Right-click and select **Download** to save them to your local computer.
## Resources
- [ComfyUI official docs](https://docs.comfy.org/)
- [ComfyUI-nunchaku docs](https://nunchaku.tech/docs/ComfyUI-nunchaku/index.html)
- [Manage ComfyUI using ComfyUI Launcher](../use-cases/comfyui-launcher.md)

View File

@@ -0,0 +1,141 @@
---
outline: [2, 3]
description: A technical guide for deploying a scalable Olares cluster. Learn how to configure a master node, resolve hostname conflicts, and join worker nodes to the cluster.
head:
- - meta
- name: keywords
content: Cluster, Kubernetes, Multi-node, Worker node, Master node
---
# Set up a multi-node Olares cluster <Badge type="tip" text="1.5 h" />
For advanced use cases requiring higher availability and distributed storage, you can physically connect two Olares One units to form a single, unified cluster.
## Learning objectives
- Configure a master node with distributed storage support.
- Resolve hostname conflicts between nodes.
- Join a worker node to the cluster using the Olares CLI.
## Before you begin
- The default username and password for Olares One are both `olares`.
:::warning Reset default SSH password
Even if you primarily use the Control Hub terminal, you must reset this password immediately in **Settings** > **My hardware** to secure your device against unauthorized access.
:::
- SSH access grants powerful control over the system. Ensure you keep your credentials secure.
## Prerequisites
**Hardware**<br>
- Two Olares One units connected to the same local area network.
- Both units running the same version of Olares OS.
- You know the local IP addresses of both units.
**Experience**<br>
- Familiarity with terminal commands.
- Basic understanding of Kubernetes node management.
**Software**<br>
- LarePass installed on your mobile phone.
## Step 1: Set up the master node
:::danger Clean installation required
Setting up a cluster requires a clean environment. If Olares OS is already installed on this device, you must uninstall it first:
```bash
sudo olares-cli uninstall --all
```
:::
The first Olares One unit will serve as the master node.
1. Access the master node via SSH using its local IP address.
```bash
ssh olares@<Master-IP-Address>
```
2. Initialize the local storage service MinIO which backs the distributed file system.
```bash
sudo olares-cli install storage
```
3. Install Olares with JuiceFS enabled. This allows data to be shared across multiple nodes.
```bash
sudo olares-cli install --with-juicefs=true
```
4. The installation script will prompt you for your Olares ID details.
For example, if your full Olares ID is `alice123@olares.com`:
- **Domain name**: Press `Enter` to use the default domain name or type `olares.com`.
- **Olares ID**: Enter the prefix of your Olares ID. In this example, enter `alice123`.
Upon completion of the installation, the initial system information, including the Wizard URL and the initial login password, will appear on the screen. You will need them later in the activation stage.
![Wizard URL](/images/manual/get-started/wizard-url-and-login-password.png)
5. Use the Wizard URL and initial one-time password to activate. This process connects the Olares device with your Olares ID using LarePass.
a. Enter the Wizard URL in your browser. You will be directed to the welcome page. Press any key to continue.
![Open wizard](/images/manual/get-started/open-wizard.png#bordered)
b. Follow the on-screen instructions to continue the activation.
After setup is complete, the LarePass app returns to the home screen, and the Wizard redirects you to the Olares login page.
## Step 2: Set up the worker node
1. Access the worker node via SSH.
```bash
ssh olares@<Worker-IP-Address>
```
2. Update the hostname:
```bash
sudo hostnamectl set-hostname olares-worker
```
:::info
By default, all Olares One units have the hostname `olares`. Kubernetes requires unique hostnames for every node in a cluster. Before joining it to the cluster, you must ensure it has a unique hostname.
:::
3. Verify that the worker node can communicate with the master and that versions are compatible.
```bash
sudo olares-cli node masterinfo \
--master-host=<Master-IP-Address> \
--master-ssh-user=olares \
--master-ssh-password=<Password>
```
Example output:
```bash
current: root
2026-01-13T06:10:41.874Z [Job] [Get Master Info] start ...
2026-01-13T06:10:41.874Z [Module] GetMasterInfo
2026-01-13T06:10:42.528Z Got master info:
OlaresVersion: 1.12.3
JuiceFSEnabled: true
KubernetesType: k3s
MasterNodeName: olares
AllNodes: olares
2026-01-13T06:10:42.528Z [A] olares: GetMasterInfo success (654.711582ms)
2026-01-13T06:10:42.529Z [A] olares-worker: AddNodePrecheck success (37.084µs)
2026-01-13T06:10:42.529Z [Job] Get Master Info execute successfully!!! (654.871193ms)
```
4. Run the add node command. Ensure the `--version` matches the version found in the pre-check output (e.g., `1.12.3`):
```bash
sudo olares-cli node add \
--master-host=<Master-IP-Address> \
--master-ssh-user=olares \
--master-ssh-password=<Password> \
--version=<Olares-Version>
```
5. Perform the same installation and activation steps for the worker node.
## Step 3: Verify the cluster
Once the join command completes, verify that the nodes are communicating correctly.
Check the status of all nodes in the Kubernetes cluster with the following command:
```bash
kubectl get nodes
```
## Resources
- [Olares CLI](../developer/install/cli/node.md): Explore the Olares CLI.
- [Olares environment variables](../developer/install/environment-variables.md): Learn about the environment variables that enable advanced configurations of Olares.

68
docs/one/create-drive.md Normal file
View File

@@ -0,0 +1,68 @@
---
outline: [2, 3]
description: Learn how to create a bootable USB installer for Olares OS using balenaEtcher.
head:
- - meta
- name: keywords
content: Olares, Olares One, install Olares, bootable USB, ISO, balenaEtcher
---
# Create a bootable USB drive <Badge type="tip" text="15 min"/>
To reinstall or recover Olares OS on your Olares One, you must create a bootable USB installation drive. This drive allows you to reset the device to its factory state.
:::warning Data loss warning
This process will erase all data on your USB drive. If you have important files on the drive, back them up before proceeding.
:::
:::warning Image compatibility
Olares One requires a specific system image designed for its hardware. If you install the generic self-hosted ISO, Olares One will fail to boot.
:::
## Prerequisites
- USB flash drive: A drive with 8 GB or higher capacity.
:::info
Ensure that your USB drive is empty or backed up. The flashing process re-formats the drive, which means existing data on it will be permanently deleted.
:::
- Computer: A Windows, macOS, or Linux computer to perform the setup.
- Internet connection: Stable network for downloading the image file and related software.
## Step 1. Download Olares image
Get the official installation file for the Olares operating system.
1. Click [Download Olares ISO](https://cdn.olares.com/one/olares.iso).
2. The latest image file `olares.iso` is automatically downloaded to your computer.
## Step 2. Install flashing tool
It is recommended to use balenaEtcher for this task because it is free, easy to use, and works on all major operating systems.
1. Go to the [balenaEtcher website](https://etcher.balena.io/).
2. Download and install the version appropriate for your computer (Windows, macOS, or Linux).
## Step 3. Flash the drive
Use balenaEtcher to turn your USB stick into a bootable installer.
1. Insert your USB flash drive into the computer.
2. Open balenaEtcher.
3. Follow the steps on the screen:
a. Click **Flash from file** and select the Olares ISO file you downloaded.
b. Click **Select target** and select your USB drive.
c. Click **Flash!** to start writing the installer to the USB drive.
![Bootable USB](/images/one/balenaEtcher.png#bordered)
4. When the flashing process is completed, the USB drive is ready to use, and you can safely eject it.
## Next steps
You can now insert the bootable USB drive into Olares One or other target hardware to begin the installation.
## Resources
- [Install Olares via ISO](../manual/get-started/install-linux-iso.md)
- [Install Olares](../manual/get-started/install-olares.md)
- [Installation FAQs](../manual/help/installation.md)

110
docs/one/customize.md Normal file
View File

@@ -0,0 +1,110 @@
---
outline: [2, 3]
description: Learn how to personalize your Olares experience by customizing your desktop background, system theme, and designing your public profile page.
head:
- - meta
- name: keywords
content: Profile, personal webpage, decentralized webpage
---
# Customize Olares <Badge text="15 min"/>
Olares allows you to customize both your private workspace and your public identity. This guide shows you how to set up your desktop appearance and design a profile page to share with others.
## Learning objectives
By the end of this tutorial, you will learn how to:
- Switch between light and dark system themes.
- Customize your desktop and login screen wallpapers.
- Design your public profile with social links and content blocks.
- Style your page and share it.
## Customize Olares desktop
You can adjust the look and feel of your local Olares environment through the system settings.
1. Open Settings from the Dock.
2. Select **Appearance** in the sidebar.
![Customize desktop](/images/one/setting-appearance.png#bordered){width=80%}
### Set system theme
In **Theme**, choose between **Light** or **Dark** mode.
The change takes effect immediately.
### Change wallpaper
You can set a distinct look for your desktop and login screen.
1. In **Wallpaper** , select the target: **Desktop background** or **Login background**.
2. Choose a background:
- Built-in: Browse and select from the provided images.
- Custom: Click <i class="material-symbols-outlined">add_photo_alternate</i>, select an image file from your computer, then click **Open**.
## Design your public profile
Your Olares profile is a public homepage available at `https://{your-olares-id}.olares.com`. You can use it as a landing page, portfolio, or digital business card.
![Profile](/images/manual/olares/profile.png)
Open Profile from the Dock to start editing. The editor has four tabs: **Header**, **Social**, **Blocks**, and **Appearance**.
![Profile icon](/images/one/profile-icon.png#bordered){width=95%}
:::tip Automatic save
All changes are saved automatically as you make them.
:::
### Set up header
Use the **Header** tab to define your identity at the top of the page. You can choose a layout style, upload your avatar, and set your display name.
![Profile header](/images/one/profile-header.png#bordered){width=95%}
:::tip Keep it simple
A clear name plus a one-line description is usually enough to make a good first impression.
:::
### Add social links
Use the **Social** tab to display icons under your header. This connects visitors to your presence on other platforms such as X, GitHub, or LinkedIn.
You can add links for multiple platforms and choose which ones to display. To hide a link temporarily, toggle it off without deleting the saved value.
![Profile social links](/images/one/profile-social.png#bordered){width=95%}
### Build with blocks
Use the **Blocks** tab to construct the main body of your page. Click **+ Add Block** and select a type to enter the editing screen.
Each block type helps you share different content:
- **Text:** Add a title or paragraph. You can adjust text alignment and background transparency.
- **Link:** Enter a website URL or email address. You can customize the button title, subtitle, and shadow style.
- **Image:** Upload a photo. You can add a description and choose the aspect ratio that fits your image best.
![Profile blocks](/images/one/profile-add-block.png#bordered){width=95%}
Once you have added your blocks, you can manage the layout directly in the list:
- Drag items to reorder them.
- Toggle a block off to hide it temporarily.
- Copy a block to reuse its style.
### Configure appearance
Use the **Appearance** tab to define the visual style. You can select a preset theme, and manually fine-tune the fonts and block shapes to match your style.
![Profile appearance](/images/one/profile-appearance.png#bordered){width=95%}
## Share your profile
Your profile is available at `https://{your-olares-id}.olares.com`.
When you are ready, click the **<i class="material-symbols-outlined">share</i> Share** button. You can:
- Share directly to social platforms.
- Generate a QR code.
- Export a shareable image card that works as a digital business card.
![Profile share](/images/one/profile-share.png#bordered){width=95%}

142
docs/one/dashboard.md Normal file
View File

@@ -0,0 +1,142 @@
---
outline: [2, 3]
description: Monitor your Olares system health. Learn how to check CPU and memory usage, manage disk storage, and identify resource-heavy applications.
head:
- - meta
- name: keywords
content: Olares, Olares One, monitor system, system resources, app status, CPU usage, memory usage, disk space, fan speed
---
# Monitor system and application status <Badge type="tip" text="10 min" />
The Dashboard app provides a centralized, real-time view of your system's status. Use it to check available storage, monitor hardware temperatures, and identify which applications are using the most resources.
This guide walks you through the most common tasks for maintaining a healthy system.
## Learning objectives
- View the system status overview.
- Check detailed usage for specific hardware. This guide uses "Disk" as the example.
- Monitor fan speed and temperature.
- Identify and manage resource-intensive applications.
## Before you begin
Familiarize yourself with the key metrics used to measure system performance.
| Metric | Description | why it matters |
|:-----------------|:----------------------------------------|:-------------------------------------------------------------------|
| CPU usage | Percentage of processor power used | Prolonged high usage makes the system slow and unresponsive. |
| Memory usage | Percentage of RAM in use | If RAM is full, apps might crash or freeze. |
| Average CPU load | Average number of active processes | High load indicates system overload. |
| Disk usage | Percentage of storage space filled | Running out of space prevents saving new files or installing apps. |
| Inode usage | Percentage of index nodes (inodes) used | Exhaustion prevents new file creation. |
| Disk throughput | Data transfer rate (MB/s) | Important for large file transfers. |
| IOPS | Input/Output Operations Per Second | Critical for small file or random data access. |
| Network traffic | Internet usage (Mbps) | High traffic can slow down remote access and downloads. |
| Pod status | Number of active app containers | Indicates if your applications are running, pending, or failed. |
| Fan speed | Cooling fan speed (RPM) | Higher speeds indicate the system is working hard to cool down. |
## Check system health
The **Overview** page shows you the health of your device at a glance.
1. Open the Dashboard app from the Launchpad.
![Find Dashboard app](/images/one/find-dashboard.png#bordered)
You are on the **Overview** page by default.
![Dashboard overview](/images/one/dashboard-overview.png#bordered)
2. Check the **Cluster's physical resources** section. Cards in this section provide an instant snapshot of your hardware status:
- **CPU core**: The "brain" of your system. High percentages indicate heavy processing.
- **Memory Gi**: The "workspace" for running apps. If this is full, the system might become slow or unresponsive.
- **Disk**: Your local storage space usage.
- **Pods**: The total number of active application units running on your system.
- **GPU**: Graphics processing power, used for AI tasks or media rendering.
- **Network**: Real-time upload and download speeds.
- **Fan**: Current cooling status.
## View resource details
Click on any resource card to see detailed metrics. Take the common task "managing storage (Disk)" for example.
1. On the **Overview** page, in the **Cluster's physical resources** section, click the **Disk Gi** card.
![Disk card](/images/one/dashboard-disk-card.png#bordered)
2. On the **Disk details** panel, you can view the following information:
- Identity and status: The disk name (e.g., nvme0n1), type (SSD), and overall health status (e.g., Normal).
- Storage usage: A visual bar chart displaying the exact amount of used space versus available space.
- Hardware specifications: Technical details including the model name, serial number, interface protocol (e.g., NVMe), and total capacity.
- Health metrics: Statistics such as the current temperature, total power-on duration, and total data written.
![Disk details](/images/one/dashboard-disk-details.png#bordered)
3. To view exactly which folders are taking up space, click **Occupancy analysis** in the top right corner.
![Disk details-Occupancy analysis](/images/one/dashboard-occupancy.png#bordered)
This view lists every file system, helping you see exactly where your storage is being allocated.
![Disk details-Storage usage](/images/one/dashboard-storage-usage.png#bordered){width=90%}
You can follow this same pattern to check other resources.
## Monitor hardware status
The dedicated **Fan** panel helps you ensure your Olares One is not overheating.
1. On the **Overview** page, find the **Fan** card.
![Dashboard Fan card](/images/one/dashboard-fan-card.png#bordered)
2. Click it to view real-time statistics:
- Fan speed: Current RPM (Revolutions Per Minute).
- Temperature: Current temperature of the main hardware components.
- Power: Current power consumption of the GPU.
![Dashboard Fan details](/images/one/dashboard-fan-details.png#bordered)
:::tip Adjust cooling mode
To change the fan profile (e.g., from **Silent mode** to **Performance mode**), go to **Settings** > **My hardware** > **Power mode**.
:::
## Track application performance
If your system feels slow, a specific application might be consuming too many resources.
### Quick ranking
On the **Overview** page, scroll down to the **Usage ranking** section. This lists the top 5 applications currently using the most CPU or memory.
![Dashboard usage ranking](/images/one/dashboard-usage-ranking.png#bordered)
### Detailed application list
For a complete view of all running services:
1. From the left navigation pane, click **Applications**.
2. Sort the list using the dropdown menu in the top right:
- Sort by CPU usage: Find processor-heavy apps.
- Sort by memory usage: Find memory-hungry apps.
- Sort by inbound traffic: Find apps downloading the most data.
- Sort by outbound traffic: Find apps uploading the most data.
![Applications dashboard](/images/one/dashboard-applications.png#bordered)
## Next steps
If you identify an application consuming excessive resources, you can take actions to restore system speed. For example,
- Restart the app: Often, apps consume excess resources due to a temporary error. Restarting it usually fixes the problem.
- Stop or uninstall the app: If an app consistently slows down your system and you don't need it, you can stop it or uninstall it completely to free up resources for other tasks.
## Resources
- [Uninstall applications](../manual/olares/market/market.md#uninstall-applications)
- [My hardware](../manual/olares/settings/my-olares.md#my-hardware)

280
docs/one/deerflow.md Normal file
View File

@@ -0,0 +1,280 @@
---
outline: [2, 3]
description: Learn how to set up DeerFlow on your Olares device, complete with Ollama integration and Tavily for web research.
head:
- - meta
- name: keywords
content: Deerflow, Ollama, Deep research
---
# Deep research with DeerFlow <Badge type="tip" text="20 min" />
DeerFlow is an open-source framework that transforms a simple research topic into a comprehensive, detailed report.
This guide will walk through the process of setting up DeerFlow on your Olares device, integrating it with a local Ollama model and the Tavily search engine for web-enabled research.
## Learning objectives
- Configure DeerFlow to communicate with a local LLM via Ollama.
- Configure the Tavily search API for web access.
- Execute deep research tasks and manage reports.
## Before you begin
DeerFlow connects to Ollama using the `.com` domain.
* For local access: If the **Authentication model** for the Ollama API is **None**, LarePass VPN is not required.
* For remote access: You must enable LarePass VPN.
## Prerequisites
**Hardware** <br>
- Olares One connected to a stable network.
- Sufficient disk space to download models.
**User permissions**
- Admin privileges to install Ollama from the Market.
**External services** <br>
- A [Tavily](https://www.tavily.com/) account is required to generate an API key for web search. The free plan is sufficient.
**LarePass** (Required for remote access)
- The LarePass app is installed on your device. This guide uses the desktop application to demonstrate the configuration and usage from desktop.
## Step 1: Install Ollama and DeerFlow
1. Open Market, and search for "Ollama".
![Install Ollama](/images/manual/use-cases/ollama.png#bordered)
2. Click **Get**, then **Install**, and wait for installation to complete.
3. Repeat the same steps to install "DeerFlow".
![Install DeerFlow](/images/manual/use-cases/deerflow.png#bordered)
## Step 2: Install models and configure Ollama
### Install language models
1. Open Ollama from the Launchpad.
2. Download a model using the `pull` command:
```bash
ollama pull [model]
```
For example:
```bash
ollama pull cogito:14b
```
:::warning Reasoning models are not supported
DeerFlow currently supports non-reasoning models only. Additionally, Gemma-3 models are unsupported due to the lack of tool usage capabilities.
:::
:::tip Check Ollama library
If you are unsure which model to download, check the [Ollama Library](https://ollama.com/library) to explore available models.
:::
3. Verify the download:
```bash
ollama ls
```
If the model appears in the list, it is ready to use.
### Configure API access
To use Ollama as the backend for DeerFlow, you must configure the API to allow access for other applications.
### Verify authentication level
By default, Ollama API's authentication level is set to **Internal**, allowing applications on the same local network to access it.
As Super Admin, you can verify or modify the authentication level:
1. Open Settings, then navigate to **Applications** > **Ollama** > **Ollama API**.
2. Confirm that **Authentication level** is set to **Internal**.
3. (Optional) If you prefer not to enable LarePass VPN, set **Authentication model** to **None**.
4. Click **Submit** if you made changes.
![Verify authentication level](/images/manual/use-cases/ollama-authentication-level.png#bordered)
### Get the endpoint
1. On the same settings page, click **Set up endpoint**.
2. Copy the address for later use.
![Get Ollama endpoint](/images/manual/use-cases/ollama-endpoint.png#bordered)
### Optinal: Enable LarePass VPN
If you are accessing Olares from a remote network, or if you have selected an authentication model other than **None**, you must enable LarePass VPN on your client device to establish a connection.
1. Open the LarePass app, and click your avatar in the top-left corner to open the user menu.
2. Toggle on the switch for **VPN connection**.
![Enable LarePass VPN on desktop](/images/manual/get-started/larepass-vpn-desktop.png#bordered)
## Step 3: Configure DeerFlow
DeerFlow requires connection details for the LLM. You will configure this by editing the `conf.yaml` file using either the graphical interface or the command line.
### Configure DeerFlow to use Ollama
<tabs>
<template #Use-graphical-interface>
1. Open the Files app and navigate to `/Applications/Data/Deerflow/app/`.
2. Locate the `conf.yaml` file and double-click to open it.
![Find `conf.yaml` in Files](/images/manual/use-cases/deerflow-conf-yaml-in-files.png#bordered)
3. Click <span class="material-symbols-outlined">box_edit</span> in the top-right corner to open the text editor.
4. Modify the default model settings:
```yaml
BASIC_MODEL:
base_url: # Your Ollama API endpoint (ensure /v1 suffix is included)
model: # The model name
api_key: # Any non-empty string
```
For example:
```yaml
BASIC_MODEL:
base_url: https://a5be22681.laresprime.olares.com
model: "cogito:14b"
api_key: ollama
```
5. Click <span class="material-symbols-outlined">box_edit</span> to save the file.
</template>
<template #Use-command-line>
You can edit the configuration file directly on the host machine via the terminal.
1. Open Control Hub and select the DeerFlow project from the sidebar.
2. Navigate to **Deployments** > **deerflow** and click the running pod.
3. Expand the **deerflow** container details to view the **Volumes** section.
![Locate DeerFlow's containers](/images/manual/use-cases/deerflow-locate-containers.png#bordered)
![Find app folder](/images/manual/use-cases/deerflow-app-volume.png#bordered)
4. Copy this path.
5. Open the Olares terminal from Control Hub, and change directory to the copied path using the `cd` command:
```bash
# Replace with your actual path
cd /olares/rootfs/userspace/pvc-userspace-laresprime-raizlofhiszoin5c/Data/deerflow/app
```
6. Edit the `conf.yaml` file using a command-line text editor like `nano` or `vi`. For example:
```Bash
nano conf.yaml
```
7. Modify the default model settings:
```yaml
BASIC_MODEL:
base_url: # Your Ollama API endpoint (ensure /v1 suffix is included)
model: # The model name
api_key: # Any non-empty string
```
For example:
```yaml
BASIC_MODEL:
base_url: https://a5be22681.laresprime.olares.com/v1
model: "cogito:14b"
api_key: ollama
```
8. Save the changes and exit the editor.
</template>
</tabs>
### Configure DeerFlow to use Tavily
To enable web search, add your Tavily API key to the application configuration.
1. In Control Hub, select the DeerFlow project.
2. Click **Configmaps** in the resource list and select **deerflow-config**.
![Browse to DeerFlow's configmaps](/images/manual/use-cases/deerflow-configmap.png#bordered)
3. Click <span class="material-symbols-outlined">edit_square</span> in the top-right to open the editor.
4. Add the following key-value pairs under the `data` section:
```yaml
SEARCH_API: tavily
TAVILY_API_KEY: tvly-xxx # Your Tavily API Key
```
![Configure Tavily](/images/manual/use-cases/deerflow-configure-tavily.png#bordered)
5. Click **Confirm** to save the changes.
### Restart DeerFlow
Restart the service to apply the new model and search configurations.
1. In Control Hub, select the DeerFlow project.
2. Under **Deployments**, locate **deerflow** and click **Restart**.
![Restart DeerFlow](/images/manual/use-cases/deerflow-restart.png#bordered)
3. In the confirmation dialog, type `deerflow` and click **Confirm**.
4. Wait for the status icon to turn green, which indicates the service has successfully restarted.
## Step 4: Run DeerFlow
### Run a deep research task
1. Open DeerFlow from the Olares Launchpad.
2. Click **Get Started** and enter your research topic in the prompt box.
![Enter research prompt](/images/manual/use-cases/deerflow-enter-prompt.png#bordered)
3. (Optional) Click the wand icon to have DeerFlow refine your prompt for better results.
4. Enable **Investigation**.
5. (Optional) Select your preferred writing style (e.g., **Popular Science**).
6. Click <span class="material-symbols-outlined">arrow_upward</span> to send the request.
DeerFlow will generate a preliminary research plan. Review and edit this plan if necessary, or allow it to proceed.
![Generate research plan](/images/manual/use-cases/deerflow-generate-research-plan.png#bordered)
Once the process is complete, a detailed analysis report will be displayed.
![View research report](/images/manual/use-cases/deerflow-generate-research-report.png#bordered)
To audit the sources and steps taken, click the **Activities** tab.
![Review research activities](/images/manual/use-cases/deerflow-review-research-activities.png#bordered)
### Edit and save the report
:::info Verify citations
AI models may occasionally generate inaccurate citations or "hallucinated" links. Be sure to manually verify important sources in the citations section.
:::
1. Click <span class="material-symbols-outlined">edit</span> in the top-right corner to enter editing mode.
2. You can adjust formatting using Markdown or select a section and ask the AI to improve or expand it.
![Ask AI to edit the report](/images/manual/use-cases/deerflow-ask-ai-to-edit.png#bordered)
3. Click <span class="material-symbols-outlined">undo</span> in the top-right corner to exit editing mode.
4. Click <span class="material-symbols-outlined">download</span> to save the report to your local machine as a Markdown file.
## Advanced usage
### Add an MCP server
The Model Context Protocol (MCP) extends DeerFlow's capabilities by integrating external tools. For example, adding the Fetch server allows the agent to scrape and convert web content into Markdown for analysis.
1. Open your DeerFlow app, and click <span class="material-symbols-outlined">settings</span> to open the **Settings** dialog.
2. Select the **MCP** tab and click **Add Servers**.
3. Paste the JSON configuration for the server. The following example adds the fetch server:
```json
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}
```
4. Click **Add**. The server is automatically enabled and available for research agents.
![Add MCP server](/images/manual/use-cases/deerflow-add-mcp-server.png#bordered)
### Turn research report to a podcast (TTS)
DeerFlow can convert reports into MP3 audio using a Text-to-Speech (TTS) service, such as Volcengine TTS. This requires adding API credentials to the application environment.
1. Obtain your **Access Token** and **App ID** from the [Volcengine](https://console.volcengine.com) console.
2. In Control Hub, select the DeerFlow project and go to **Configmaps** > **deerflow-config**.
3. Click the **Edit** icon in the top-right corner.
4. Add the following keys under the `data` section:
```yaml
VOLCENGINE_TTS_ACCESS_TOKEN: # Your Access Token
VOLCENGINE_TTS_APPID: # Your App ID
```
5. Click **Confirm** to save the changes.
6. Navigate to **Deployments** > **deerflow** and click **Restart**.
Once restarted, DeerFlow should detect these keys and the podcast/TTS feature will be available.
## Troubleshooting
### DeerFlow does not generate a response
If the agent fails to start or hangs:
* **Restart Ollama**: Restart the Ollama service in **Control Hub**.
- **Check model compatibility**: DeerFlow does not support reasoning models (e.g., DeepSeek R1). Switch to a standard chat model and try again.
- **Check endpoint configuration**: Ensure the Ollama API endpoint in `conf.yaml` includes the `/v1` suffix.
### No web search results during the research
If the report is generic and lacks external data:
- **Check model capabilities**: The selected LLM may lack strong tool-calling capabilities. Switch to a model known for effective tool use, such as Qwen 2.5 or Llama 3.1.
- **Verify API Key**: Ensure the `TAVILY_API_KEY` in the ConfigMap is correct and the account has remaining quota.
## Resources
- [DeerFlow GitHub](https://github.com/bytedance/deer-flow)
- [Download and run local AI models via Ollama](../use-cases/ollama.md)

260
docs/one/deploy.md Normal file
View File

@@ -0,0 +1,260 @@
---
outline: [2, 3]
description: Deploy a single-container Docker app to Olares using Studio.
head:
- - meta
- name: keywords
content: Olares Studio, Docker, Container
---
# Deploy an app <Badge type="tip" text="20 min" />
Studio is the easiest way to run a single-container Docker app on Olares. You do not need to write code.
In this tutorial, you will deploy [Wallos](https://hub.docker.com/r/bellamy/wallos) (a personal subscription tracker) and learn how to translate a standard Docker configuration into Studio settings.
:::tip Recommended for testing
Studio-created deployments are best suited for development, testing, or temporary use.
:::
## Learning objectives
By the end of this tutorial, you will learn how to:
- Translate a standard `docker run` command or `docker-compose.yaml` into Olares Studio settings.
- Configure CPU and memory, and add environment variables.
- Map storage volumes so data persists, or is intentionally temporary.
- Customize the application's name and icon after deployment.
## Prerequisites
Before you begin, ensure you have:
- Olares version 1.12.2 or later.
- A container image for the app that exists and is accessible from the Olares host.
- The app's `docker run` command or `docker-compose.yaml` for reference.
## Install Studio
1. Open Market and search for "Studio".
2. Click **Get**, then **Install**.
## Reference: Docker configuration
Use either format below as a reference. You will copy the same values into Studio fields.
::: code-group
```docker{3-6,8} [docker run command]
docker run -d \
--name wallos \
-v /path/to/config/wallos/db:/var/www/html/db \
-v /path/to/config/wallos/logos:/var/www/html/images/uploads/logos \
-e TZ=America/Toronto \
-p 8282:80 \
--restart unless-stopped \
bellamy/wallos:latest
```
```yaml{5-6,7-10,12-14} [docker compose]
version: '3.0'
services:
wallos:
container_name: wallos
image: bellamy/wallos:latest
ports:
- "8282:80/tcp"
environment:
TZ: 'America/Toronto'
# Volumes store your data between container upgrades
volumes:
- './db:/var/www/html/db'
- './logos:/var/www/html/images/uploads/logos'
restart: unless-stopped
```
:::
## Create and configure the app
### Create the project
1. Open Studio and select **Create a new application**.
2. Enter an app name, for example: `wallos`, and click **Confirm**.
3. Select **Port your own container to Olares**.
![Port your own container to Olares](/images/manual/olares/studio-port-your-own-container-to-olares.png#bordered)
### Configure image and port
These fields define the app's core runtime settings. You can find the values in the Docker configuration above.
| Studio field | Value to enter | Source: `docker run` | Source: `docker-compose.yaml`|
| -- | -- | -- | -- |
| Image | `bellamy/wallos:latest` | Last token in the command | Value of `image:`|
| Port | `80` | Container port in `-p HOST:CONTAINER`, which is the value after `:` | Container port in `ports:`, which is the value after `:` and before `/` if present|
:::info Why only the container port
A port mapping is HOST:CONTAINER. The container port is the internal port the app listens on. The host port is the external port you access. Studio manages external access automatically, so you only need to enter the container port.
:::
1. For the **Image** field, paste `bellamy/wallos:latest`.
2. For the **Port** field, enter `80`.
### Configure instance specifications
Instance specifications define the CPU and memory allocated to this app.
In the **Instance Specifications** section, enter the minimum CPU and memory requirements. For example:
- **CPU**: 2 core
- **Memory**: 1 G
![Deploy Wallos](/images/manual/olares/studio-deploy-wallos.png#bordered)
### Add environment variables
Environment variables pass configuration values into the container.
| Studio field | Value to enter | Source: `docker run` | Source: `docker-compose.yaml`|
| -- | -- | -- | -- |
| key | `TZ` | Find `-e KEY=VALUE`, use the text before `=` | Under `environment:`, use the left side of `KEY: VALUE`|
| value | `America/Toronto` | Find `-e KEY=VALUE`, use the text after `=` | Under `environment:`, use the right side of `KEY: VALUE`|
1. Scroll down to **Environment Variables**, and click **+ Add**.
2. In this example, enter the key-value pair:
- **key**: `TZ`
- **value**: `America/Toronto`
3. Click **Submit**. Repeat this process for any other variables.
![Add environment variables](/images/manual/olares/studio-add-environment-variables.png#bordered)
### Add storage volumes
Volumes keep data after restarts and reinstalls.
#### Before you begin
In Studio, you need to fill in two fields for each volume:
1. **Mount path**: In Docker, a volume looks like `HOST:CONTAINER`. Use the part after `:` as the mount path.
2. **Host path**: In Studio, host path has two inputs:
- Prefix: `/app/data`, `/app/cache`, or `/app/Home`.
| Host path prefix | Description |
| --- | --- |
| `/app/data` | Persistent app data. Data can be accessed across nodes and is not deleted<br> when the app is uninstalled. Appears under `/Data/studio` in Files. |
| `/app/cache` | Temporary app data. Data is stored in the node's local disk and is deleted<br> when the app is uninstalled. Appears under `/Cache/<device-name>/studio` <br>in Files. |
| `/app/Home` | User data directory. Mainly used for reading external user files. Data is <br>not deleted.|
- Host path: Enter the target folder, starting with `/`, for example `/db` or `/logos`.
:::info Host path rules
Studio automatically prefixes the full path with the app name. If the app name is `test` and you set host path `/app/data/folder1`, the actual path becomes `/Data/studio/test/folder1` in Files.
:::
#### Configure volumes for Wallos
Wallos requires two volumes. Add them one by one.
**Volume A: Database**
Source mapping:
- In `docker run`: `/path/to/config/wallos/db:/var/www/html/db`
- In `docker-compose.yaml`: `./db:/var/www/html/db`.
This data is for high-frequency I/O and does not need to be saved permanently. Map it to `/app/cache` so it will be deleted when the app is uninstalled.
1. Click **+ Add** next to **Storage Volume**.
2. For **Host path**, select `/app/cache`, then enter `/db`.
3. For **Mount path**, enter `/var/www/html/db`.
4. Click **Submit**.
**Volume B: Logos**
Source mapping:
- In `docker run`: `/path/to/config/wallos/logos:/var/www/html/images/uploads/logos`
- In `docker-compose.yaml`: `./logos:/var/www/html/images/uploads/logos`.
This is user-uploaded data that should be persistent and reusable, even if the app is reinstalled. Map it to `/app/data`.
1. Click **+ Add** next to **Storage Volume**.
2. For **Host path**, select `/app/data`, then enter `/logos`.
3. For **Mount path**, enter `/var/www/html/images/uploads/logos`.
4. Click **Submit**.
![Add volumes](/images/manual/olares/studio-add-storage-volumes.png#bordered){width=90%}
You can check Files later to verify the mounted paths.
![Check mounted path in Files](/images/manual/olares/studio-check-mounted-path-in-files.png#bordered){width=90%}
### Optional: Configure GPU or database middleware
If your app needs GPU, enable the **GPU** option under **Instance Specifications** and select the GPU vendor.
![Enable GPU](/images/manual/olares/studio-enable-GPU.png#bordered){width=90%}
If your app needs Postgres or Redis, enable it under **Instance Specifications**.
![Enable databases](/images/manual/olares/studio-enable-databases.png#bordered){width=90%}
When enabled, Studio provides dynamic variables. You must use these variables in the **Environment Variables** section for your app to connect to the database.
- **Postgres variables:**
| Variables | Description |
|--------------|-----------------------|
| $(PG_USER) | PostgreSQL username |
| $(PG_DBNAME) | Database name |
| $(PG_PASS) | Postgres Password |
| $(PG_HOST) | Postgres service host |
| $(PG_PORT) | Postgres service port |
- **Redis variables:**
| Variables | Description |
|---------------|--------------------|
| $(REDIS_HOST) | Redis service host |
| $(REDIS_PORT) | Redis service port |
| $(REDIS_USER) | Redis username |
| $(REDIS_PASS) | Redis password |
### Deploy and test the app
1. Click **Create** at the bottom of the page. Studio will generate the project files and deploy the app automatically.
2. Wait for Studio to generate the package files for your app. You can check the status in the bottom bar.
3. When the app is successfully deployed, click **Preview** in the top-right corner to launch it. If **Preview** does not appear, refresh the page.
![Preview wallos](/images/manual/olares/studio-preview-wallos.png#bordered)
## Manage the app
### Update name and icon
Apps deployed from Studio include a `-dev` suffix and a default icon. You can polish this by editing the manifest file.
![Check deployed app](/images/manual/olares/studio-app-with-dev-suffix.png#bordered)
1. In Studio, click **<span class="material-symbols-outlined">box_edit</span>Edit** in the top-right to open the editor.
2. Click `OlaresManifest.yaml` to view the content.
3. Change the `title` field under `entrance` and `metadata`. For example, change `wallos` to `Wallos`.
4. Replace the default icon image address of field `icon` under `entrance` and `metadata`.
![Edit `OlaresManifest.yaml`](/images/manual/olares/studio-edit-olaresmanifest1.png#bordered)
5. Click <span class="material-symbols-outlined">save</span> in the top-right to save changes.
6. Click **Apply** to reinstall with the updated package.
:::info
If no changes are detected since the last deployment, clicking **Apply** will simply return to the app status page without reinstalling.
:::
![Change app icon](/images/manual/olares/studio-change-app-icon1.png#bordered)
### Remove the app
If you no longer need the app, you can remove it.
1. In Studio, click <span class="material-symbols-outlined">more_vert</span> in the top-right corner.
2. You can choose to:
- **Uninstall**: Removes the running app from Olares, but keeps the project in Studio so you can continue editing the package.
- **Delete**: Uninstalls the app and removes the project from Studio. This action is irreversible.
## Troubleshoot problems
### Cannot install the app
If installation fails, review the error at the bottom right of the page and click **View** to expand details.
![Check app status](/images/manual/olares/studio-check-app-status.png#bordered)
### App runs but does not work
Once running, you can manage the app from its deployment details page in Studio. The interface of this page is similar to Control Hub. If details don't appear, refresh the page. You can:
- Use **Stop** and **Restart** controls to reset the process. This action can often resolve runtime issues like a frozen process.
- Check events or logs to investigate runtime errors. See [Export container logs for troubleshooting](/manual/olares/controlhub/manage-container.md#export-container-logs-for-troubleshooting) for details.
![App deployment details](/images/manual/olares/studio-app-deployment-details.png#bordered)
## Resources
- [Package and upload your app to Market](/developer/develop/tutorial/package-upload.md): Learn how to package and upload an app for Market.
- [Develop in a dev container](/developer/develop/tutorial/develop.md): Develop in an isolated environment identical to the production runtime.
- [Add icons, feature image, and promotional images](/developer/develop/tutorial/assets.md): Prepare and upload icons, feature image, and promotional images for your Olares apps.

View File

@@ -0,0 +1,65 @@
---
outline: [2,3]
description: Learn how to install Windows on a secondary SSD to create a dual-boot system on Olares One.
head:
- - meta
- name: keywords
content: Dual-boot, Windows, NVMe SSD, BIOS, Windows installation
---
# Dual-boot Windows on a secondary SSD <Badge type="tip" text="30 min" />
For competitive gaming or Windows-exclusive software, you can add a secondary NVMe SSD to create a dual-boot system.
This dual-drive configuration physically isolates the systems. This ensures Olares OS remains stable and secure while providing full native performance for your Windows applications.
## Prerequisites
**Hardware**<br>
- A secondary NVMe M.2 SSD physically installed in Olares One.
- A USB flash drive containing a bootable Windows installation media.
- A wired keyboard and mouse.
- A monitor connected to Olares One.
## Step 1: Boot into BIOS
1. Insert the Windows USB boot drive into a USB port on Olares One.
2. Power on Olares One or restart if it is already running.
3. Immediately press and hold the **Delete** key repeatedly until the BIOS setup screen appears.
## Step 2: Boot from USB
1. Navigate to the **Boot** tab using the arrow keys on your keyboard.
2. Locate **Boot Option #1** or **Boot Override** and select your USB flash drive.
3. Press **Enter** to boot from the USB drive immediately.
4. The system will restart and load the Windows installation interface.
## Step 3: Install Windows
1. Follow the on-screen prompts to begin the Windows installation.
:::danger Select the correct drive
You must carefully identify the secondary SSD.
Selecting the wrong drive will permanently erase your Olares data.
:::
2. When the installation finishes and the system restarts, unplug the Windows USB drive.
Once installation is complete, the system will restart into Windows automatically.
## Switch between operating systems
Because the operating systems are on separate physical drives, you switch between them using the BIOS boot priority.
### Switch to Olares OS
1. Restart Olares One.
2. Press **Delete** repeatedly to enter BIOS.
3. Go to the **Boot** tab.
4. Set **Boot Option #1** to the SSD containing Olares OS.
5. Press **F4** to confirm.
### Switch to Windows
1. Restart Olares One.
2. Press **Delete** repeatedly to enter BIOS.
3. Set **Boot Option #1** to the secondary SSD containing Windows.
4. Press **F4** to confirm.
## Resources
- [Install NVIDIA drivers on Windows](install-nvidia-driver.md)
- [Run a Windows VM on Olares One](windows.md)

View File

@@ -0,0 +1,154 @@
---
outline: [2,3]
description: Install Windows and Olares OS on a single SSD using a dual-boot configuration.
head:
- - meta
- name: keywords
content: Dual-boot, Single SSD, Windows, Ubuntu, Olares OS, Partitioning
---
# Dual-boot Windows on a single SSD <Badge type="tip" text="45 min" />
Run both Windows and Olares OS on Olares One without adding a second drive.
This configuration installs Windows first, then sets up Ubuntu Linux alongside it, and finally deploys Olares OS.
## Prerequisites
**Hardware**<br>
- Olares One connected to Power.
- Wired keyboard and mouse connected to Olares One.
- (Recommended) An Ethernet cable connecting Olares One to your router.
- A USB flash drive contains Windows installation media.
- A USB flash drive contains Ubuntu Server or Desktop (24.04 LTS or newer) installation media.
**Network**<br>
- A reliable internet connection.
- Your mobile phone connected to the same network.
**Software**<br>
- [You have downloaded the LarePass app and created an Olares ID](first-boot.md#step-1-power-on-and-install-larepass).
:::danger Backup required
Partitioning a drive carries a risk of data loss. If you have important data on your current drive, backup everything to an external source before proceeding.
:::
## Step 1: Install Windows
1. Insert the Windows USB boot drive into a USB port on Olares One.
2. Power on Olares One or restart if it is already running.
3. Immediately press and hold the **Delete** key repeatedly until the BIOS setup screen appears.
4. Navigate to the **Boot** tab using the arrow keys on your keyboard.
5. Locate **Boot Option #1** or **Boot Override** and select your USB flash drive.
6. Press **Enter** to boot from the USB drive immediately.
7. Follow the on-screen prompts to begin the Windows installation.
8. When the installation finishes and the system restarts, unplug the Windows USB drive.
The system will boot into Windows automatically.
## Step 2: Create a partition for Ubuntu
1. Once Windows is running, right-click the **Start** button and select **Disk Management**.
2. Right-click your main `C:` partition and select **Shrink Volume**.
3. Enter the amount of space to free up for Olares. Minimum 150 GB is required.
:::tip
Avoid splitting the drive into two equal sizes. Using distinct sizes makes it easier to identify the correct partition later during the Ubuntu installation.
:::
4. Click **Shrink** to create a block of unallocated space.
## Step 3: Install Ubuntu
Olares OS runs on top of a Linux kernel. You will install Ubuntu to serve as the host system.
1. Insert the Ubuntu USB drive and restart Olares One.
2. Press **Delete** repeatedly to enter BIOS, then select the USB drive as the boot device.
3. Follow the installer prompts until you reach the **Installation type** screen.
4. Select **Install Ubuntu alongside Windows Boot Manager**.
:::tip
If this option does not appear, select the manual installation option to manually assign the unallocated space to Ubuntu.
:::
5. When the installation finishes and the system restarts, unplug the Ubuntu USB drive.
The system will boot into Ubuntu automatically.
## Step 4: Install Olares OS
1. Log in to Ubuntu using your username and password.
2. Open a terminal window if using Ubuntu Desktop or use the command line directly.
3. Run the official installation script:
```bash
curl -fsSL https://olares.sh | bash
```
4. At the end of the installation process, you will be prompted to enter your domain name and Olares ID.
![Enter domain name and Olares ID](/images/manual/get-started/enter-olares-id.png)
For example, if your full Olares ID is `alice123@olares.com`:
- **Domain name**: Press `Enter` to use the default domain name or type `olares.com`.
- **Olares ID**: Enter the prefix of your Olares ID. In this example, enter `alice123`.
Upon completion of the installation, the initial system information, including the Wizard URL and the initial login password, will appear on the screen. You will need them later in the activation stage.
![Wizard URL](/images/manual/get-started/wizard-url-and-login-password.png)
## Step 5: Activate Olares OS
1. Enter the Wizard URL in the browser on Ubuntu, or use a browser on another computer connected to the same network.
![Open wizard](/images/manual/get-started/open-wizard.png#bordered)
2. Enter the one-time password and click **Continue**.
![Enter password](/images/manual/get-started/wizard-enter-password.png#bordered)
3. Select the system language.
![Select language](/images/manual/get-started/select-language.png#bordered)
4. Select a reverse proxy node that is geographically closest to your location.
![Select FRP](/images/manual/get-started/wizard-frp.png#bordered)
5. Activate Olares using LarePass app.
a. Open LarePass app, and tap **Scan QR code** to scan the QR code on the Wizard page and complete the activation.
![Activate Olares](/images/manual/get-started/activate-olares.png#bordered)
b. Reset the login password.
After setup is complete, the LarePass app returns to the home screen, and the browser redirects you to the Olares login page.
## Switch between operating systems
You switch between Windows and Olares using the BIOS boot priority.
### Switch to Olares OS
1. Restart Olares One.
2. Press **Delete** repeatedly to enter BIOS.
3. Go to the **Boot** tab.
4. Set **Boot Override** to Ubuntu.
5. Press **F4** to confirm.
### Switch to Windows
1. Restart Olares One.
2. Press **Delete** repeatedly to enter BIOS.
3. Go to the **Boot** tab.
4. Set **Boot Override** to Windows.
5. Press **F4** to confirm.
## Troubleshooting
### An error occurs during installation
If an error occurs during installation, use the following command to uninstall first:
```bash
olares-cli uninstall --all
```
After uninstalling, retry the installation by running the original installation command.
### The Ubuntu interface is lagging
When you first boot into the Ubuntu desktop, the interface might feel laggy. This is because the GPU drivers for Ubuntu are not yet installed.
Proceed with the Olares OS installation. The installation script automatically installs the necessary GPU drivers, which will resolve the lag.
## Resources
- [Install NVIDIA drivers on Windows](install-nvidia-driver.md)

51
docs/one/egpu.md Normal file
View File

@@ -0,0 +1,51 @@
---
outline: [2,3]
description: Learn how to expand your Olares One's graphical performance by connecting an external GPU (eGPU).
head:
- - meta
- name: keywords
content: eGPU, external graphics card, Thunderbolt 5, hardware expansion
---
# Connect to an external graphics card (eGPU) <Badge type="tip" text="5 min" />
Olares One supports connecting external graphics cards (eGPU) to boost performance for gaming, AI model training, etc.
:::danger Power off before connecting
Do not hot-swap the external GPU.
Olares One does not support connecting or disconnecting the external GPU while the system is running. Doing so might cause system crashes, data loss, or hardware damage.
Always shut down Olares One completely before connecting or disconnecting the device.
:::
## Prerequisites
**Hardware**<br>
- The external GPU must support the Thunderbolt 5 protocol and be compatible with Ubuntu/Linux environments.
- Ensure the external GPU has its own independent power source connected.
:::warning Compatibility
The external GPU must be compatible with Linux (Ubuntu). Unsupported devices might not be recognized by the system.
:::
## Step 1: Connect the eGPU
1. Open Settings, and select **My hardware** > **Shutdown**.
![Shut down Olares One](/images/one/shut-down-olares-one.png#bordered)
2. Scan the displayed QR code using the LarePass app. When the prompt appears in the app, tap **Confirm** to shut down Olares One.
3. Once Olares One is fully powered off, plug the cable from your external GPU into the USB-C port on Olares One.
4. Press the power button to turn on Olares One.
## Step 2: Verify connection
To verify that the external graphics card is recognized:
1. Log in to Olares, and open Dashboard.
2. Select the **GPU** card. You should see your external card listed alongside the internal GPU.
![Verify eGPU connection](/images/one/egpu-verify.png#bordered)
## Disconnect the eGPU
To safely remove the eGPU:
1. Shut down Olares One completely using the steps above.
2. Turn off the power to the external GPU.
3. Unplug the USB-C cable from Olares One.
4. Press the power button to turn on Olares One.

View File

@@ -0,0 +1,161 @@
---
outline: [2, 3]
description: Learn how to manually mount an external SSD to Olares One for temporary or permanent storage expansion.
head:
- - meta
- name: keywords
content: Olares One, external SSD, expand storage
---
# Expand storage via external SSD <Badge type="tip" text="30 min" />
You can manually mount high-capacity external SSDs to specific system paths on Olares One.
This approach is recommended for long-term storage expansion, such as downloading more or larger local AI models.
:::warning HDD support
This guide is intended for SSDs. Mechanical Hard Disk Drives (HDDs) have not been tested with Olares One.
:::
:::info Mount path
Currently, only mounts under the `/olares/share` directory are supported.
Mounting flexibility will be improved in future versions.
:::
## Prerequisites
**Hardware**
- Your Olares One is set up and running.
- The external SSD is connected to Olares One.
**SSH access**
- [SSH access to Olares One](access-terminal-ssh.md).
**Experience**
- Basic familiarity with terminal commands and the command-line interface (CLI).
## Step 1: Identify the drive
1. Connect to your Olares One terminal via SSH or from the Control Hub.
2. Run the following command to view detected drives:
```bash
sudo fdisk -l
```
3. Identify your target drive from the output. Each drive lists its partitions under the **Device** column, such as `/dev/nvme1n1p1`, `/dev/nvme1n1p2`, or `/dev/sdb1`.
![Partition list](/images/manual/tutorials/expand-storage-partition.png#bordered)
4. Note the target partition you intend to mount. For example: `/dev/nvme1n1p1`.
## Step 2: Mount the partition
### Option A: Temporarily mount a partition
Temporary mounting is suitable for one-time tasks such as data migration. The configuration will be lost if the device reboots.
1. Create a directory for the mount point:
```bash
sudo mkdir -p /olares/share/<directory_name>
```
Replace `<directory_name>` with a custom name.
2. Mount the partition to this directory:
```bash
sudo mount /dev/<partition> /olares/share/<directory_name>
```
For example:
```bash
sudo mount /dev/nvme1n1p1 /olares/share/hdd0
```
3. Navigate to the **External** directory in Files to verify the mount. You should see the new folder content.
![Check mount result](/images/manual/tutorials/expand-storage-mount-result-en.png#bordered)
### Option B: Permanently mount a partition
For long-term usage, you must configure the system to mount the drive automatically at boot using the `/etc/fstab` file.
1. Get the UUID.
:::tip Use UUID to identify device
Using the UUID is safer than using device names (like `/dev/sdb1`), which can change if you plug drives into different ports.
:::
a. Run the following command:
```bash
lsblk -f
```
b. Note down following information:
- **FSTYPE**: File system type (e.g., `ext4`, `xfs`).
- **UUID**: Unique identifier of the partition.
![Check mount result](/images/manual/tutorials/expand-storage-fstype.png#bordered)
2. Create the mount directory:
```bash
sudo mkdir -p /olares/share/<directory_name>
```
Replace `<directory_name>` with a custom name.
3. Open the configuration file.
```bash
sudo vi /etc/fstab
```
4. Add the mount entry. Add a new line at the end of the file using the following format:
```bash
UUID=<UUID> /olares/share/<directory_name> <FSTYPE> defaults,nofail 0 0
```
For example:
```bash
UUID=1234-ABCD /olares/share/my_disk ext4 defaults,nofail 0 0
```
5. Press `Esc`, type `:wq`, and hit **Enter** to save your changes and exit the editor.
6. Run the following command to verify the configuration.
```bash
mount -a
```
:::tip Prevent boot failure
An incorrect `/etc/fstab` configuration might prevent your system from booting.
It is strongly recommended to run `mount -a` first to validate the configuration before rebooting.
:::
If no errors appear, the setup is successful.
7. After reboot, confirm the drive is automatically mounted in the **External** directory.
## Step 3: Unmount a partition
:::warning Irreversible operation
Ensure no programs or terminals are accessing the directory before unmounting.
:::
To safely remove the drive or delete the mount point configuration:
1. Unmount the partition:
```bash
sudo umount /olares/share/<directory_name>
```
2. (Optional) Remove the directory If you no longer need the folder:
```bash
rm -rf /olares/share/<directory_name>
```
## Resources
- [Manage files in Olares](../manual/olares/files/index.md)
- [Expand storage via USB devices](expand-storage-usb-drive.md)
- [Expand storage using internal SSD](expand-storage-internal-ssd.md)

View File

@@ -0,0 +1,157 @@
---
outline: [2, 3]
description: Learn how to expand storage on Olares One using an NVMe M.2 SSD.
head:
- - meta
- name: keywords
content: Olares One, NVMe SSD, expand storage, LVM, olares-cli
---
# Expand storage with an NVMe M.2 SSD <Badge type="tip" text="15 min" />
If you have installed a secondary internal NVMe SSD in your Olares One, you can merge it into the main system storage using the `olares-cli`.
Unlike external drives which are mounted as separate folders, this method uses Logical Volume Management (LVM) to seamlessly extend your root file system.
## Before you begin
:::warning One-time irreversible operation
- This is a one-time operation. The SSD becomes an integral part of the system volume and cannot be easily separated later.
- If you physically uninstall this SSD after extension, the Olares file system will be incomplete, causing the OS to crash or fail to boot. You will need to manually reinstall Olares OS.
:::
The Olares One motherboard includes two PCIe SSD slots:
* Slot 1 (PCIe 4.0): Occupied by the preinstalled 2TB system SSD.
* Slot 2 (PCIe 5.0): Available for expansion.
You can use this second slot to expand your current system storage.
## Prerequisites
**Hardware**
- Your Olares One is set up and running.
- A secondary NVMe M.2 SSD is physically installed in Olares One.
**SSH access**
- [SSH access to Olares One](access-terminal-ssh.md).
**Experience**
- Basic familiarity with terminal commands and the command-line interface (CLI).
## Step 1: Identify the unmounted disk
1. Connect to your Olares One terminal via SSH or from the Control Hub.
2. List block devices on the host:
```bash
lsblk | grep -v loop
```
3. Check the size and mount points to identify the new disk.
Example output:
```text
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 931G 0 part /
nvme1n1 259:3 0 931.5G 0 disk
```
In this example, `sda` is the system drive which is mounted at `/` and `/boot`, while `nvme1n1` is the new, unmounted SSD.
## Step 2: Extend system storage
1. Verify that Olares recognizes the unmounted disk:
```bash
olares-cli disk list-unmounted
```
2. Run the extension command:
```bash
olares-cli disk extend
```
3. When the command prompts for confirmation, type `YES` to proceed.
```bash
WARNING: This will DESTROY all data on /dev/<device>
Type 'YES' to continue, CTRL+C to abort:
```
Example output:
```bash
Selected volume group to extend: olares-vg
Selected logical volume to extend: data
Selected unmounted device to use: /dev/nvme0n1
Extending logical volume data in volume group olares-vg using device /dev/nvme0n1
WARNING: This will DESTROY all data on /dev/nvme0n1
Type 'YES' to continue, CTRL+C to abort: YES
Selected device /dev/nvme0n1 has existing partitions. Cleaning up...
Deleting existing partitions on device /dev/nvme0n1...
Creating partition on device /dev/nvme0n1...
Creating physical volume on device /dev/nvme0n1...
Extending volume group olares-vg with logic volume data on device /dev/nvme0n1...
Disk extension completed successfully.
id LV VG LSize Mountpoints
1 data olares-vg <3.63t /var,/olares
2 root olares-vg 100.00g /
3 swap olares-vg 1.00g
...
```
## Step 3: Verify the extension
You can verify the storage increase from Control Hub (UI), or via the command line.
<tabs>
<template #Via-Dashboard-(UI)>
1. Open Dashboard.
2. Check the Disk section to confirm the total system storage capacity has increased.
![Check disk volume in Dashboard](/images/manual/tutorials/expand-dashboard-disk.png#bordered)
</template>
<template #Via-command-line>
1. Check the total size of the `/olares` directory:
```bash
df -h /olares
```
Example output:
```text
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/olares--vg-root 1.8T 285G 1.4T 17% /olares
```
The **Size** column should now reflect the combined capacity.
2. Confirm the disk structure:
```bash
lsblk | grep -v loop
```
Example output:
```bash
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 1.9T 0 disk
└─nvme0n1p1 259:2 0 1.9T 0 part
└─olares--vg-data 252:2 0 3.6T 0 lvm /olares /var
nvme1n1 259:3 0 1.9T 0 disk
├─nvme1n1p1 259:4 0 512M 0 part /boot/efi
└─nvme1n1p2 259:5 0 1.9T 0 part
├─olares--vg-root 252:1 0 100G 0 lvm /
└─olares--vg-swap 252:0 0 1G 0 lvm [SWAP]
```
You should see your new disk (e.g., `nvme0n1`) listed under the `olares--vg-data` group, sharing the same mount point as your primary data partition.
</template>
</tabs>
## Resources
- [Expand storage via USB devices](expand-storage-usb-drive.md)
- [Expand storage using external SSD](expand-storage-external-ssd.md)
- [`olares-cli disk`](../developer/install/cli/disk.md).

View File

@@ -0,0 +1,37 @@
---
outline: [2, 3]
description: Learn how to expand storage on Olares One using USB devices.
head:
- - meta
- name: keywords
content: Olares One, USB storage, expand storage, file management
---
# Expand storage via USB devices <Badge type="tip" text="5 min" />
Olares One automatically detects and mounts inserted USB storage devices, allowing you to instantly expand your storage capacity for media, backups, or file transfers.
## Prerequisites
**Hardware**
- A compatible USB flash drive.
:::warning Compatibility
Olares One is tested with Samsung and SanDisk USB drives. Other brands might not be recognized by the system.
:::
## Connect and access storage
1. Insert your USB flash drive into an available USB port on Olares One. It will be mounted automatically.
2. Open the Files app and select **External** in the sidebar to access your files.
## Safely remove the device
Although the system automatically unmounts the device when you physically unplug it, removing a drive while data is being written can cause file corruption.
It is recommended to manually eject the device first:
1. Open the Files app.
2. Right-click the USB drive in the sidebar and select **Unmount**.
3. Once the drive disappears from the list, you can safely unplug it.
## Resources
- [Manage files in Olares](../manual/olares/files/index.md)
- [Expand storage using external SSD](expand-storage-external-ssd)
- [Expand storage using internal SSD](expand-storage-internal-ssd.md)

44
docs/one/factory-reset.md Normal file
View File

@@ -0,0 +1,44 @@
---
outline: [2, 3]
description: Learn how to restore your Olares One to factory settings using LarePass.
head:
- - meta
- name: keywords
content: Factory reset, Olares One
---
# Reset to factory settings <Badge type="tip" text="10 min" />
Resetting to factory settings returns your Olares One to the initial setup state.
:::warning Data loss
This will permanently delete all accounts, settings, and data on the device. This action cannot be undone.
:::
## Learning objectives
By the end of this tutorial, you will learn how to:
- Perform a factory reset from LarePass.
- Complete the required confirmation and local password verification.
## Prerequisites
Before starting, ensure that:
- Olares One is powered on.
- Your phone and Olares One are on the same network.
- You are signed in to LarePass as an administrator.
## Reset Olares One to factory settings
1. Open LarePass on your phone and go to **Settings**.
2. In the **My Olares** card, tap **System** to enter the **Olares management** page.
3. Tap **Restore to factory settings**.
4. Review the risk prompt, then tap **Restore to factory settings** to continue.
![Review risk prompt](/images/manual/larepass/review-risk-prompt.png#bordered)
5. Enter your local LarePass lock screen password and tap **Confirm**.
![Enter local unlock password](/images/manual/larepass/enter-password-to-uninstall.png#bordered)
If you have not set a local password, you will be prompted to set one first.
6. Wait for the reset process to complete.
Once finished, Olares One reboots into the initial setup phase. You will be redirected to the activation flow, where you can scan the local network to reinstall or reactivate Olares.

266
docs/one/faq.md Normal file
View File

@@ -0,0 +1,266 @@
---
outline: [2,3]
description: Frequently asked questions regarding Olares One
head:
- - meta
- name: keywords
content: Olares One, Olares, personal cloud
---
# Olares One FAQs
This page lists frequently asked questions from the Olares community regarding Olares One and system capabilities.
:::tip Support for Olares One owners
If you require assistance with product features, hardware warranty, or a specific use case, contact technical support directly via WhatsApp or email at hi@olares.com. We respond to inquiries within two business days.
:::
## Product & spec
### What is Olares One?
Olares One is a dedicated personal cloud device designed for local AI. It integrates workstation-grade hardware with Olares OS, an open-source operating system that allows you to run AI agents and store data on hardware you physically control.
### What is personal cloud?
A personal cloud is a private infrastructure that replicates the utility of public cloud services such as anywhere-access to files and computing power but runs entirely on your own hardware to ensure data sovereignty.
### What are the technical specifications for Olares One?
* **Processor**: Intel Ultra 9 275HX
* **GPU**: NVIDIA RTX 5090 Mobile
* **Memory**: 96GB RAM
* **Storage**: 2TB NVMe SSD
For details, see [Olares One specifications](spec).
### How loud is the device?
Olares One is designed to operate quietly even under load. In lab testing, the device generates 19dB when idle and remains under 39dB under maximum load.
### What is the power consumption?
The device consumes 30W in standby. Under load, the GPU power depends on your selected mode:
- **Silent Mode**: GPU 95W
- **Performance Mode**: GPU 175W
When the CPU is fully utilized on its own, power consumption reaches 120W. During combined maximum load, the system balances power distribution with the CPU operating at 55W and the GPU at 175W.
The thermal design is engineered to sustain these performance levels.
### What ports are available?
The device includes the following physical ports:
* 1 × Thunderbolt 5 with 80 Gbps bandwidth
* 1 × RJ45 Ethernet at 2.5 Gbps
* 1 × USB-A 3.2 Gen2 with 10 Gbps speed
* 1 × HDMI 2.1 with 48 Gbps bandwidth
### How is Olares One different from DGX Spark, AI Max+ 395 and other AI PCs?
Olares One is a personal cloud solution rather than a traditional personal computer.
A personal cloud runs as a stable, external service accessible anytime from any device, whereas a PC is client-based software designed for direct interaction via monitor and keyboard.
Specifically, Olares One utilizes the NVIDIA CUDA stack on x86 architecture. This ensures broad compatibility with standard open-source AI applications, avoiding the adaptation challenges often found in ARM-based AI PCs or devices without CUDA support.
And Olares OS simplifies local AI with one-click deployment and workflow integration, distinct from the manual software management typical of standard PCs.
### Can I upgrade or expand the hardware?
Yes. You can modify the hardware through several internal slots and expansion ports:
* **Storage**: The motherboard includes two PCIe SSD slots (one PCIe 4.0 and one PCIe 5.0). The preinstalled 2TB SSD occupies the PCIe 4.0 slot, leaving the second slot available for system storage expansion via LVM or for a dual-boot configuration.
* **Memory**: The RAM capacity can be upgraded to a maximum of 128GB.
* **External graphics & displays**: The Thunderbolt 5 port supports eGPU enclosures for connecting external graphics cards. It also supports docking stations to connect up to two external monitors simultaneously (up to 8K resolution), with video output handled by the RTX 5090 Mobile.
### Is there a way to view the Olares OS UI via HDMI?
Currently, the HDMI output does not display a full desktop UI like a traditional PC. The HDMI port currently displays an Ubuntu shell or Steam Headless output for gaming.
Future updates target the ability to run a lightweight browser or ChromeOS instance directly via HDMI, allowing users to interact with the system using a monitor, keyboard, and mouse.
### Can I update or configure the BIOS?
Yes. Users can update the BIOS themselves as new versions are released. All BIOS options are fully unlocked, allowing users to configure settings according to their own needs.
### Is Olares One designed for "always-on" operation?
Yes. Olares One is positioned as a personal AI cloud and is capable of supporting 24/7 continuous operation reliably. It is designed to support scenarios like LLM hosting.
### Are there additional fees to use Olares One?
No. Olares OS and all future system updates are completely free.
### Can I use the device without an internet connection?
Yes. After a one-time activation, the device can work entirely offline. You can access it via your local network without any internet connection required.
### Does the device have failsafes for power outages?
Olares One uses the ext4 Linux file system to prevent file system corruption during sudden power loss. Hardware protection is managed through the power supply and motherboard design, which includes voltage regulation.
Olares OS also includes a built-in automatic backup mechanism for periodic, encrypted backups to external locations.
Looking ahead, we are working on the following improvements:
1. Enhanced support for UPS devices to ensure graceful shutdowns during power interruptions.
2. Native support for Time Machine-style snapshot backups.
### Does the device support a GPU MUX switch?
Yes. Olares One supports both GPU MUX and Optimus modes. The system is set to GPU MUX mode by default to enable a direct connection to the discrete GPU, but this can be changed in the BIOS.
## AI & gaming
### Can I run Kimi K2 on Olares One?
Kimi K2 has around 1 trillion parameters and requires approximately 1024 GB of VRAM, so we haven't made it available in the Olares Market yet.
However, given that AI model sizes have been shrinking roughly tenfold each year, there is a good chance that a KimiK2level model could run on Olares One by mid2026.
### Can local AI models access the internet for research?
Yes. We support several applications that enable this. For example:
* **Perplexica**: An opensource alternative to Perplexity. It retrieves the latest information using SearxNG and analyzes it with a local LLM.
* **DeerFlow**: An opensource alternative to OpenResearch. It uses RAGFlow to configure a local knowledge base, integrates Tavily for web search, and performs analysis using a local LLM.
### Can I use a NAS for storage and use Olares for AI processing?
Yes, we highly recommend this workflow. You can mount your NAS to Olares One as an SMB share. Olares can then index, sort, and process the photos and videos stored on the NAS via apps like Immich.
### Can I use Olares AI features on my iPhone or Mac?
Yes. Olares supports secure remote access. You can use your iPhone or Mac to query the AI models running on your Olares One from anywhere.
### How does the 120B model run on Olares One and how fast is it?
We tested the `gpt-oss:120b` model. Since the model size exceeds the dedicated GPU memory, part of the model is loaded into the 96GB of system memory and processed by the CPU.
In our testing, `gpt-oss:120b` achieves approximately 36.16 tokens/s.
For better efficiency, we recommend `qwen3-30b-a3b`. It delivers superior results while being significantly smaller, reaching speeds of up to 157 tokens/s, or around 81 tokens/s with 8 concurrent requests.
For the detailed testing methodology, Refer to https://blog.olares.com/local-ai-hardware-performance-benchmarking/.
### Can I use LM Studio to manage models on Olares?
LM Studio is designed as a client-side desktop application rather than a server-side service, so it cannot be installed directly on Olares One.
However, you have two alternatives:
* Use native apps like OpenWebUI or LobeChat, which offer similar functionality.
* Run a local instance of LM Studio on your computer and configure it to access the AI models hosted on Olares One via API.
### Will performance drop if I load multiple models at once?
Under normal circumstances, loading multiple models that exceed GPU memory would cause a crash. Olares addresses this with a time-slicing mechanism.
Models not actively in use are temporarily swapped to the 96GB system memory, while the active model is loaded into the GPU. This allows you to keep multiple models "ready" with only about a 5% performance overhead during switching.
Alternatively, you can:
- Split the GPU memory so multiple apps run simultaneously without swapping.
- Assign the entire GPU to a single application for maximum raw performance.
All these modes can be switched directly from Olares Settings. No other modifications are required.
### Is the device capable of high-end gaming?
Yes. You can connect a monitor to play directly via Steam, or use it as a game server to stream titles to your laptop, TV, or phone via Moonlight.
### Can I use Olares One for VR devices such as Quest 3?
We expect to begin broad testing with VR and AR devices in early 2026.
### How does gaming performance compare to Windows?
Olares One supports gaming in two ways: streaming as a Steam server via Moonlight, or playing directly by connecting a monitor.
In direct play scenarios, our data shows Cyberpunk 2077 achieving approximately 90% of the performance of the same hardware running Windows. This is comparable to other high-end Linux gaming setups. We expect compatibility to improve further as SteamOS adoption grows.
## Operating system
### Can I run Windows on Olares One?
Yes. For users who only need to run occasional Windows applications, we recommend installing the Windows app from the Olares Market. This runs a virtual machine accessible via RDP, which provides a seamless remote desktop experience when used with the built-in VPN.
Alternatively, you can install a second internal drive for a dual-boot setup or completely replace Olares OS with a native Windows installation.
### Can the Windows VM use the GPU?
Currently, GPU passthrough is not supported. The NVIDIA RTX 5090 Mobile functions as the primary GPU for Olares OS to power local AI applications. Assigning it to a virtual machine would detach it from the host OS, disabling these features.
Windows VMs utilize the integrated Intel graphics, which handle lightweight tasks effectively. For GPU-intensive workloads like gaming, we recommend setting up a dual-boot configuration.
### Can I wipe Olares OS and install Linux or Windows natively?
Yes. You have full ownership of the hardware. You can wipe the pre-installed OS to install Windows or any Linux distribution. In this configuration, Olares One functions as a standard high-performance workstation equipped with an NVIDIA RTX 5090 Mobile GPU, allowing you to use a monitor, keyboard, and mouse like a standard desktop computer.
### How do I set up a dual-boot system?
We recommend installing a second NVMe SSD in the available slot to keep the operating systems on separate drives.
For a clean installation, install Windows first, followed by Olares OS.
Since Olares OS is based on Ubuntu 24.04, it follows standard Linux dual-boot procedures.
### Can I set Olares OS as the default boot option but switch to Windows when needed?
Yes. Both the UEFI Boot Manager and GRUB support this configuration. You can set Olares OS as the persistent default boot option in the BIOS. To boot into Windows for specific tasks like gaming, you can select the Windows Boot Manager during the startup sequence.
## Clustering
### Can I connect two Olares One units together?
Yes. Olares OS is built on Kubernetes, which allows multiple Olares devices to form a cluster. Applications are automatically scheduled within the cluster, and models can be loaded across multiple devices.
Forming a cluster currently requires command-line operations. We expect to introduce a fully UIbased experience to manage this process in future updates.
### Does clustering make a single game or AI task run faster?
No. Clustering improves total system throughput (concurrency), but it does not double the speed of a single task. For example, by clustering two units:
- You can run Elden Ring on one unit and Cyberpunk 2077 on another simultaneously. However, you cannot combine two units to run a single instance of Cyberpunk 2077 at double the frame rate.
- You can generate two images in 6 seconds, but cannot generate a single image in 3 seconds.
### How does clustering benefit AI workloads?
Clustering allows you to run larger models or complex workflows that a single device cannot handle.
For Large Language Models (LLMs), the system uses vLLM pipeline parallelism to distribute the model across multiple units. This allows you to run much larger models than a single device could support, though inference speed will be slower than using multiple GPUs on a single motherboard due to network latency.
It also enables complex pipelines. For example, you can run a digital human application where the LLM runs on one node while the Text-to-Speech (TTS) and Automatic Speech Recognition (ASR) services run on another.
### Does clustering increase the available memory?
Yes. The total available memory capacity roughly doubles when connecting two identical units. The system distributes different applications across nodes to maximize the available resources.
### Can I cluster with third-party devices like Mac Studio or DGX Spark?
Currently, Olares only supports clustering devices with the same architecture running the same OS.
Support for third-party devices is in development. We target initial clustering compatibility for Mac Studio, DGX Spark, and AI MAX 395+ in future updates.
### Can I use a NAS as part of the cluster?
No. Most NAS operating systems are closed environments and cannot run Olares nodes.
However, Olares One can mount NAS directories via the SMB protocol. This allows you to manage files on your NAS as if they were local folders on the Olares One.
### How does GPU scheduling work in a cluster?
Olares OS manages GPU allocation at the operating system level. Ideally, we categorize GPU scheduling into four stages of complexity:
1. Single node, single GPU.
2. Single node, multiple GPUs.
3. Multiple nodes, multiple GPUs (same architecture).
4. Multiple nodes, multiple GPUs (different architectures).
Olares currently operates at Stage 3. We can cluster multiple devices running the same OS and architecture (e.g., multiple Olares One units).
Stage 4, such as clustering Olares One and Mac devices together, is not yet fully automated. Currently, this setup requires manual intervention, such as pulling the specific container images for the corresponding architecture yourself. We are expect to rewrite our scheduling algorithm to automate this support in the near future.
### Is federated learning or shared compute supported?
We are exploring directions such as federated learning, distributed training of smaller LLMs, and providing services similar to Vast.ai.
While feasible given the hardware's VRAM and power profile, delivering a production-ready solution is a long-term goal that may take over a year. We view this primarily as the responsibility of application-layer protocols (like EXO) rather than the core OS kernel.
### Why is the Ethernet port limited to 2.5Gbps if the device is meant for clustering?
We understand that 10Gbps is preferred for clustering to maximize data transfer between nodes. However, the inclusion of a 2.5Gbps Ethernet port is a strict limitation imposed by the hardware platform vendor.
## Advanced usage and configuration
### Does Olares support multiple users with their own accounts?
Yes. Olares is a multiuser system. You can create separate accounts for friends or family, and they can connect using their own LaresPass.
The system currently supports three account roles:
* **Super Admin**: The user who initially activates the system and manages admins.
* **Admin**: Can perform clusterlevel tasks.
* **Member**: Standard access to shared services.
### Can I host a mail server on Olares One?
Hosting a mail server is technically possible but complex.
We support opensource solutions like MailinaBox, Mailserver, and Mailcow. However, selfhosted email servers are often flagged as spam by major providers, which makes reliable delivery difficult.
### Is it possible to install a VPN for outbound traffic?
We have builtin support for Tailscale and Headscale. This allows you to configure and use a specific exit node for your outbound traffic.
### Do I need a static IP to host Olares One as a server?
No. A static IP address is not required. We provide two external access options: reverse proxy and VPN. These solutions allow you to securely access your device from anywhere without needing a static IP.
### Can I use my own domain to access Olares One?
Yes. You can host Olares One using your own domain name.
Currently, you must point the NS records of your subdomain to Olares' name servers so we can set up the reverse proxy for you. We are working on an update for users who wish to manage their own reverse proxy or do not require public internet access.
### Is there a way to access the device without the internet?
Yes. We provide a fully local access option using a `.local` domain.
If the device is on a LAN but blocked from public access, you can use the `.local` domain to access all features normally. If the device has zero internet connectivity, features relying on external services (like the App Market) will be unavailable.
### Can Olares One function as a media server?
Yes. Olares One can function as a Plex server. It supports hardware-accelerated transcoding, utilizing both the CPU and GPU for efficient decoding.
### Can I use SMB to sync or back up files to a NAS?
Yes. Olares One supports SMB sharing, allowing you to sync files with or back up data to an external NAS.
### Is the filesystem encrypted?
By default, the system does not use full-disk encryption. We are working to make this a standard, user-configurable option in the near future.

179
docs/one/files.md Normal file
View File

@@ -0,0 +1,179 @@
---
outline: [2, 3]
description: Get started with the Files app on your Olares One. Learn the interface layout, how to upload your first files, preview and edit content, search your drive, and connect external cloud storage like Google Drive.
head:
- - meta
- name: keywords
content: Olares, Olares One, upload files, manage files, access cloud files, Olares Files app
---
# Manage files <Badge type="tip" text="15 min" />
Olares's built-in Files app provides a secure and efficient solution for file storage and synchronization. It allows you to access your personal files anywhere, keep data synchronized across devices, and manage third-party cloud storage in one place.
Operations in Files are essentially the same as in other file managers. This guide introduces some common tasks in Files to get you started.
## Learning objectives
- Know the Files interface.
- Upload files from your local computer. This guide uploads a `.pdf` document and a `.txt` file as the example.
- Preview and edit supported file types.
- Locate files using the system search.
## Before you begin
### Interface overview
Familiarize yourself with the workspace. The Files interface mainly consists of the following areas:
* Drive: Stores your personal files such as documents and pictures.
* Sync: A library-based storage area for files requiring frequent modifications or real-time synchronization.
* Application: Reserved for application-specific data. Primarily for development and debugging, not general file storage.
* Cloud storage: Access files from integrated services such as Google Drive and AWS S3.
* Share: A centralized hub for managing shared folders.
![Files](/images/manual/olares/files-index.png#bordered)
### File formats support
The Files app supports the following file formats for previewing and editing:
- Preview:
* Images: JPG, JPEG, PNG, BMP, WEBP, SVG
* Videos: MP4, MKV, MOV, MPEG, MTS, WMV, WEBM, RM, 3GP
* Audio: MP3, WMA, WAV, OGG, AAC, M4A, APE, FLAC
* Text: PDF, TXT, JS, CSS, XML, YAML, HTML
- Edit:
* TXT, JS, CSS, XML, YAML, HTML
## Upload files
Populate your server with content by uploading documents via the Files app.
1. Open the Files app from the Dock or Launchpad.
![Find and open the Files app](/images/one/find-files-app.png#bordered)
2. In the left sidebar, select the directory where you want to upload files. For example, **Documents**.
![Select upload destination](/images/one/upload-file.png#bordered)
3. Upload the PDF document and text file using one of these methods:
- Drag and drop files from your local file manager into the Files window.
- Click <i class="material-symbols-outlined">drive_folder_upload</i> in the top right corner.
- Right-click in an empty space and select from the context menu.
:::info Upload progress indicator
During upload, a notification in the lower right corner displays the upload status.
:::
4. When the upload is completed, the files are listed in the directory you selected.
![File upload completed](/images/one/upload-file-completed.png#bordered)
:::info Resumable uploads
If your internet connection drops, the upload stops automatically. When the connection is back, Olares resumes the upload from exactly where it left off, so you don't have to start over.
:::
## Preview & edit files
You can view and modify many common file types directly in the Files app without downloading them.
- To preview the PDf document, double-click it.
![Find Files app](/images/one/preview-file.png#bordered)
- To edit the text file:
1. Double-click it.
![Preview a text file](/images/one/open-txt.png#bordered)
2. Click <i class="material-symbols-outlined">edit_square</i> in the top-right corner.
3. Modify the content, and then save your changes by clicking <i class="material-symbols-outlined">save</i>.
![Edit and save text file](/images/one/edit-save-file.png#bordered)
## Search files
Locate files quickly using the global desktop search.
1. Click <i class="material-symbols-outlined">search</i>in the Dock to open the search window.
![Search files](/images/one/search-dock.png#bordered)
2. Select **Drive** as the search scope.
![Select drive](/images/one/select-drive.png#bordered)
3. In the **Search files** field, enter the keywords related to the file you're looking for. For example, `txt`. The results are listed.
![Search a txt file](/images/one/search-txt.png#bordered)
4. Double-click to open it in the Files app directly.
## Download files
Download files to your local computer.
1. Open the Files app from the Dock or Launchpad.
2. Right-click the target file, and then select **Download**.
The file is downloaded via your web browser's standard download manager.
:::info
Web browsers cannot download entire folders or extremely large files reliably. For these tasks, install the LarePass Desktop application to unlock folder downloads and resume capabilities.
:::
## Delete files
:::warning
Deleted files cannot be recovered.
:::
1. Open the Files app from the Dock or Launchpad.
2. Right-click the target file, and then click **Delete**.
3. In the **Delete** window, click **Confirm**.
<!--## Next steps
Integrate external storage services like Google Drive, Dropbox, or AWS S3 to view and manage your cloud-based files directly in Olares without switching applications.
1. Authorize the connection and add the drive to your Files app.
a. Connect your service using the supported method accordingly:
- OAuth-based storage services such as Google Drive and Dropbox: Connect via the [LarePass app](../manual/larepass/integrations.md#add-a-cloud-drive-via-oauth).
- API credential-based services such as AWS S3 and Tencent Cloud Object Storage (COS): Connect via the [LarePass app](../manual/larepass/integrations.md#add-a-cloud-storage-using-api-keys) or [Olares Settings](../manual/olares/settings/integrations.md#add-cloud-object-storage-via-api-keys).
b. Open the Files app and confirm that the service appears as a drive under **Cloud Drive**.
2. After the cloud storage is connected, you can interact with the cloud files from the Files app as if they were local.
a. Open the Files app and select the cloud storage.
b. Manage the cloud files the same way as you manage your local files. Changes made in the Files app sync instantly to the cloud provider.
- Upload and download files
- Preview supported file types
- Rename, move, or delete files and folders
3. To remove the drive, delete the integration in the LarePass app or Olares Settings.
a. Remove the integration to disconnect the drive:
- [Remove integration in LarePass](../manual/larepass/integrations.md#disconnect-integrations)
- [Remove integration in Olares Settings](../manual/olares/settings/integrations.md#view-and-manage-connected-services)
b. Verify that the drive disappears from the Files app.
The drive disappears from your Files app, but your data remains safe on the cloud service.-->
## Resources
- [Basic file operations](../manual/olares/files/add-edit-download.md)
- [Share files](../manual/olares/files/share-files.md)
- [Sync files to local](../manual/olares/files/sync-files.md)
- [Mount SMB](../manual/olares/files/mount-SMB.md)
- [Mount cloud storage](../manual/olares/files/mount-cloud-storage.md)
- [LarePass official page](https://www.olares.com/larepass)

131
docs/one/first-boot.md Normal file
View File

@@ -0,0 +1,131 @@
---
description: Learn how to set up your Olares One for the first time, including setting up hardware, installing the client app, creating your Olares account, connecting to your device, installing & activating the system, and logging into your Olares.
head:
- - meta
- name: keywords
content: Olares, Olares One, first boot, initial setup, first time use
---
# First boot
This guide walks you through setting up your Olares One for the first time.
## Setup overview
- You do not need to connect a monitor, keyboard, or mouse to the Olares One. The entire configuration is handled via your mobile phone.
- The LarePass app is your primary tool for initial setup, authentication, and remote access management.
## Prerequisites
**Hardware**
- Olares One connected to Power.
- (Recommended) An Ethernet cable connecting Olares One to your router.
**Network**
- A reliable internet connection.
- Your mobile phone (iOS or Android) connected to the same network.
## Step 1: Power on and install LarePass
1. Power on Olares One. The status LED turns solid white, indicating the device is powered on.
2. Search for "LarePass" in the Apple App Store or Google Play Store. Install and open the app on your mobile device.
3. Follow the on-screen instructions to create your Olares ID. This unique identifier acts as your username across the entire Olares ecosystem.
![Create Olares ID](/images/one/create-olares-id.png#bordered){width=90%}
## Step 2: Connect Olares One
Once your ID is ready, you need to discover and link your Olares One.
<tabs>
<template #Set-up-via-wired-LAN>
1. Ensure your Olares One is connected to your router via Ethernet.
2. In the LarePass app, tap **Discover nearby Olares**.
![Discover nearby Olares](/images/one/discover-nearby-olares.png#bordered){width=90%}
3. Select your Olares One from the list of available devices.
</template>
<template #Set-up-via-Wi-Fi-(Bluetooth)>
If wired access is not available, use Bluetooth to configure Wi-Fi credentials.
1. In the LarePass app, tap **Discover nearby Olares**.
2. Tap **Bluetooth network setup** at the bottom.
3. Select your device from the Bluetooth list and tap **Network setup**.
4. Follow the prompts to connect Olares One to the Wi-Fi network your phone is currently using.
5. Once connected, return to the main screen and tap **Discover nearby Olares** again to find your device.
</template>
</tabs>
## Step 3: Install & activate Olares OS
1. In the LarePass app, on the device you just found, tap **Install now**.
2. When installation finishes, tap **Activate now** to initialize the system.
3. Select a reverse proxy node that is closest to your location and tap **Confirm**. The reverse proxy node acts as a secure gateway for remote access. Choosing the nearest node ensures the fastest connection speed and best stability.
4. Set the login password for Olares.
5. Copy or note down your personal desktop URL. You need this URL to access your Olares services.
![Obtain URL](/images/one/obtain-url.png#bordered)
6. Tap **Got it** to close the prompt.
## Step 4: Login to Olares Desktop
1. Open a web browser on your computer and go to your desktop URL.
2. On the login page, enter your login password.
3. You will be prompted to complete two-factor verification. Open LarePass to approve the login request, or manually enter the 6-digit verification code displayed in the app.
::: info
The verification code is time-sensitive. Ensure you enter it before it expires.
:::
## Next steps
Congratulations! Your Olares One is set up and active. It is strongly recommended to complete the following steps to secure your account and optimize your experience.
### Back up mnemonic phrase
:::warning Security warning
You are responsible for your security. Never share this phrase. If you lose these 12 words, you will permanently lose access to your Olares ID and all data stored in your Vault.
:::
Your Olares ID is secured by a unique 12-word mnemonic phrase. This phrase is the sole method to recover your account if you lose your phone or need to log in on a new device.
1. Open the LarePass app and go to **Settings** > **Safety**.
2. Tap **Mnemonic phrase** and verify your identity.
3. Tap **Click to view**.
4. Enter the local password as prompted.
5. Write the 12 words onto the **Recovery Sheet**, and then store the sheet in a secure, offline location.
### Access Olares services securely
For secure remote access without complex network configuration, it is recommended to enable the LarePass VPN.
See [Access Olares services securely using LarePass VPN](access-olares-via-vpn.md).
### Reset SSH password
If you plan to connect to your Olares One via terminal (SSH), you must update the default SSH password.
1. Open Olares Settings, on the **My hardware** page, click **Reset SSH password**.
2. In the dialog, enter a new SSH password that meets all strength requirements, then click **OK**.
3. Open the LarePass app and scan the QR code shown on the screen.
4. Click **Confirm** on LarePass to finish.
For details, see [Connect to Olares One via SSH](access-terminal-ssh.md).
### Explore
Olares OS comes with pre-installed system apps. You can also browse the **Market** to download additional applications that best suit your needs.
You can continue browsing this documentation to discover more use cases and advanced configuration scenarios.
## FAQs
### Why is an Olares ID required?
The Olares ID is currently required to automate secure remote access for your device. It allows the system to configure a reverse proxy, register a subdomain, and manage HTTPS certificates on your behalf. Without this, you would need to manually handle complex network configurations such as port forwarding and DNS management to access your device from outside your home.
Unlike a centralized cloud account, the Olares ID is owned entirely by you. We never see your credentials, and we cannot recover your data if you lose your mnemonic phrase.
We understand the community's preference for flexibility. In the upcoming March update, we plan to introduce new activation options that will make the Olares ID optional if you prefer to configure your own network access.
### Can I use my own domain name?
Yes. You can use your own custom domain instead of the default `olares.com` domain. Note that setting this up currently requires the LarePass app.
For details, refer to [Set up a custom domain for your Olares](../manual/best-practices/set-custom-domain.md).
## Resources
- [Access Olares using local network](access-olares-via-vpn.md)
- [Olares ID](../developer/concepts/olares-id.md)
- [Back up mnemonic phrase](../manual/larepass/back-up-mnemonics.md)

103
docs/one/gpu.md Normal file
View File

@@ -0,0 +1,103 @@
---
outline: [2, 3]
description: Learn about the three GPU modes in Olares and how to switch between them to match different workloads.
head:
- - meta
- name: keywords
content: GPU, Time slicing, App exclusive, Memory slicing, GPU management
---
# Switch GPU mode <Badge text="10 min"/>
:::info
Only Olares admins can change GPU modes. This helps avoid conflicts and keeps GPU performance predictable for everyone.
:::
Olares lets you control how applications use GPU resources for workloads like AI, image and video generation, and gaming. You can choose different GPU modes depending on how your apps should share compute and memory.
## Learning objectives
By the end of this tutorial, you will learn how to:
- Choose between the three GPU modes.
- Switch GPU mode in Settings.
- Configure app binding for **App exclusive** mode and **Memory slicing** mode.
## Choose the right GPU mode
Olares provides three GPU modes, each designed for a different usage pattern.
| GPU mode | Definition | Use scenario |
|:---------------------------|:----------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------|
| **Time slicing** (Default) | Multiple apps share one GPU<br> by taking turns using compute<br> and VRAM. | General workloads that run several lightweight apps. |
| **App exclusive** | One app gets full, uninterrupted<br> access to the compute and VRAM<br> of a single GPU. | Heavy workloads that require maximum stability, such as LLMs and highend gaming. |
| **Memory slicing** | The GPU's VRAM is divided into<br> fixed quotas, and apps run concurrently<br> within their limits. | Running specific apps simultaneously while strictly limiting their memory usage. |
## View GPU details
Go to **Settings** > **GPU** to view your GPU status and current mode.
![GPU overview](/images/one/gpu-details.png#bordered){width=85%}
:::tip
If you have more than one GPU, Olares lists all your GPUs on this page. Just click a GPU to open its details page directly.
:::
## Switch GPU mode
Follow these steps to change how a GPU is used:
1. Go to **Settings** > **GPU**.
2. Choose a mode from the **GPU mode** dropdown.
:::warning Restart notice
Changing a GPU's mode restarts applications currently using that GPU.
:::
### Time slicing
**Time slicing** is the default mode in Olares. Use this mode to allow multiple applications to share resources.
When a GPU is in **Time slicing** mode, GPU-enabled applications are automatically assigned to it. These applications will appear in the app list on this page.
![Time slicing](/images/one/gpu-time-slicing.png#bordered){width=85%}
### App exclusive
Use **App exclusive** mode to dedicate a GPU entirely to one high-demand application.
![App exclusive](/images/one/gpu-app-exclusive.png#bordered){width=85%}
#### Bind app
To give an app exclusive access:
1. In **Select exclusive app** section, click **Bind app**.
2. Select your target application and click **Confirm**.
#### Switch app
To replace the current exclusive app with a new one:
1. In **Select exclusive app** section, click **Switch app**.
2. Choose the new application and click **Confirm**.
The previous app is unbound, and the new app takes over exclusive access.
#### Unbind app
To remove the exclusive binding:
1. In **Select exclusive app** section, click <i class="material-symbols-outlined">link_off</i>.
2. In the pop-up window, click **Confirm** to unbind the app from the GPU.
### Memory slicing
Use **Memory slicing** to run apps concurrently with strict VRAM limits.
![Memory slicing](/images/one/gpu-mem-slicing.png#bordered){width=85%}
#### Bind app and allocate VRAM
1. In **Allocate VRAM** section, click **Bind app**.
2. Select your target application, assign it a specific amount of VRAM in GB, and click **Confirm**.
:::warning
The total of all VRAM limits must not exceed the GPU total VRAM.
:::
3. Repeat for other apps as needed.
## Resources
- [Manage GPU usage](/manual/olares/settings/gpu-resource.md): For advanced operations when you have multiple GPUs.

35
docs/one/index.md Normal file
View File

@@ -0,0 +1,35 @@
---
description: A brief introduction to Olares One and its integration with Olares OS for local AI processing.
head:
- - meta
- name: keywords
content: Olares One, Olares, personal AI cloud, local AI, edge computing, data privacy
---
# Olares One documentation
Welcome to Olares One! This documentation helps you navigate the journey with Olares One, from your first boot to everyday use, and advanced system customization.
:::info
This documentation focuses on usage scenarios specific to Olares One. For general operating system features or broader use cases, select the **Olares OS** or **Use cases** tabs in the top navigation.
:::
## What is Olares One?
Olares One is a dedicated hardware device designed to run a personal AI cloud. It combines workstation-grade hardware with Olares OS to provide a platform for running AI tools and managing data locally.
Modern digital life often trades privacy for convenience by sending personal data and AI prompts to centralized servers. Olares One replaces this model with hardware you physically control, which allows for local data processing for AI agents and file storage.
Primary use cases include:
* **Edge AI**: Run open-source AI models for text or media generation directly on the hardware with complete data privacy.
* **Gaming**: Turn the device into a gaming server with the Steam Headless app to play titles on Olares One, or on any compatible devices.
* **Personal knowledge base**: Allow AI models to learn from private documents to function as a personal assistant.
* **Unified file storage**: Use the Files app to manage, sync, and share files.
* **Self-hosted workspace**: Run a private suite of productivity and collaboration tools on the local device.
* **App development**: Use Olares Studio to develop and deploy applications for the Olares environment.
* **Private media server**: Host and stream movie and music collections using apps like Jellyfin.
## What is Olares OS?
Olares is an open-source personal cloud operating system based on Kubernetes designed to empower users to own and manage their digital assets locally.
While Olares One includes the software by default, Olares OS is also available for installation on other hardware. For details, see [Install Olares](../manual/get-started/install-olares.md).

View File

@@ -0,0 +1,113 @@
---
outline: [2, 3]
description: Learn how to identify your NVIDIA GPU model and install the correct driver for optimal Windows performance.
head:
- - meta
- name: keywords
content: Olares, Olares One, NVIDIA drivers, GPU, graphics cardWindows
---
# Install NVIDIA drivers on Windows <Badge type="tip" text="10 min"/>
Installing the official drivers ensures the best graphics performance and stability when running Windows in your dual-boot setup.
This guide walks you through identifying your specific graphics card model and installing the correct driver.
## Learning objectives
- Identify the model of your NVIDIA graphics card.
- Download the correct driver from the official NVIDIA website.
- Install the graphics driver.
## Before you begin
- Connect to internet: The driver file is large (often 500 MB+), so a stable connection is required.
- Close applications: Save your work and close any graphic-intensive programs like games or photo editors before starting the installation. The screen might temporarily turn black or blink during the update, which can cause open applications to crash or lose unsaved data.
## Prerequisites
- Administrator access: You need admin rights to install system drivers.
- Windows OS: You must be currently booted into the Windows operating system.
## Step 1: Identify your graphics card model
Before downloading a driver, you need to know exactly which graphics card model you have. Olares One features an NVIDIA-based graphics card, so you can identify the model directly in the device settings.
1. Open Olares Settings.
2. Click **GPU** and you can find the specific model name "GeForce RTX 5090".
![Find GPU model](/images/one/find-gpu-model.png#bordered){width=70%}
## Step 2: Download the driver
1. Go to the official [NVIDIA Drivers Download](https://www.nvidia.com/en-us/drivers/) page.
![Nvidia drivers download page](/images/one/nvidia-drivers-download-page.png#bordered)
2. In the search field, enter `GeForce RTX 5090`. A list of matching products are displayed.
![Nvidia drivers search](/images/one/nvidia-driver-search.png#bordered)
3. Select the driver that matches your Windows version. For example, Windows 11.
![Nvidia driver select](/images/one/nvidia-win11.png#bordered)
4. Click **Find**.
![Nvidia find](/images/one/nvidia-find.png#bordered)
5. Review the results. You will typically see two types of drivers. Click **View** on the one that best fits your needs. For example, **NVIDIA Studio Driver**.
- **GeForce Game Ready Driver**: Select this if you are a gamer who wants day-one support for the latest games, patches, and DLCs.
- **NVIDIA Studio Driver**: Select this if you are a content creator (video editing, animation, design) who prioritizes stability and reliability for creative workflows.
![Nvidia view](/images/one/nvidia-view.png#bordered)
6. Click **Download**. The installer file (.`exe`) is automatically saved to your computer.
![Nvidia download](/images/one/nvidia-download.png#bordered)
## Step 3: Install the driver
1. Double-click the downloaded `.exe` file to start the installer.
![Launch installer](/images/one/launch-installer.png#bordered){width=65%}
2. **System Check**:
a. Select **NVIDIA Graphics Driver**. NVIDIA App is optional.
b. Click **AGREE AND CONTINUE**.
![Nvidia installer](/images/one/installer-step1.png#bordered){width=65%}
3. **Installation options**:
a. Select **Express (Recommended)**. This option automatically upgrades existing drivers and installs the new one with default settings.
b. Click **NEXT**. The installation begins.
![Installation options](/images/one/installer-step2.png#bordered){width=65%}
4. Wait for the installation to complete.
:::tip Screen flickering
Your screen might turn black or blink for a few seconds during installation. This is normal behavior as the system switches to the new driver.
:::
![Installing](/images/one/install-wait.png#bordered){width=65%}
5. When the installer window displays **NVIDIA Installer has finished**, click **CLOSE**.
![Installation finish](/images/one/nvidia-install-finish.png#bordered){width=65%}
6. Restart your computer to complete the setup.
## Next steps
Now your Windows environment is ready, you can proceed to configure your system for the Olares installation.
## Resources
- [Install Olares](../manual/get-started/install-olares.md)
- [Olares installation and activation FAQs](../manual/help/installation.md)

75
docs/one/market.md Normal file
View File

@@ -0,0 +1,75 @@
---
outline: [2, 3]
description: Perform common application management tasks in Olares Market. Learn how to install, update, and uninstall software.
head:
- - meta
- name: keywords
content: Olares, Olares One, install app, update app, uninstall app, Olares Market, Olares app market
---
# Install & update applications <Badge type="tip" text="10 min" />
Olares Market is an open and permissionless application platform. Use it to find official Olares apps, third-party tools, and AI services.
This guide walks you through the most common tasks for managing your applications, including finding and installing apps, applying updates, and removing unused apps.
## Learning objectives
- Find applications from the Olares Market.
- Install applications. This guide uses "Jellyfin" as the example.
- Update applications to their latest versions.
- Uninstall applications to free up system resources.
## Install applications
Browse the Market catalog and install new software on your device.
1. Open Market from Dock or Launchpad.
![Open Market](/images/one/open-market.png#bordered)
2. Find the target app "Jellyfin" by browsing by category or using **Search** from the left sidebar.
![Search in Market](/images/one/search-app.png#bordered)
3. Click **Get**, and then click **Install**.
![Open Market](/images/one/install-app.png#bordered)
:::tip Progress indicator
Installation time depends on the app size and your internet speed. The **Install** button changes to a progress bar, indicating the download and installation status. You can navigate away and continue using Olares when it downloads in the background.
4. When the installation finishes, the button changes to **Open**. Click it to launch the app immediately.
![Open app](/images/one/open-app.png#bordered)
## Update applications
Regular updates provide new features, bug fixes, and security patches. Keep your applications secure and feature-rich by installing the updates.
1. Open Market from the Dock or Launchpad.
2. In the left sidebar, click **Updates**. A badge indicates the number of available updates.
![Update app](/images/one/update-app.png#bordered)
3. Select your update method:
- Click **Update** under a specific app to update it individually.
- Click **Update all** to update every app in the list simultaneously.
## Uninstall applications
Remove applications that you no longer need to save storage space.
1. Open Market from Dock or Launchpad.
2. Click **My Olares** to view all your installed applications.
3. Find the target app "Jellyfin", click <i class="material-symbols-outlined">keyboard_arrow_down</i> next to the **Open** button, and then click **Uninstall**.
![Uninstall app](/images/one/uninstall-app.png#bordered)
4. In the **Uninstall** window, click **Confirm**.
## Resources
- [Clone applications](../manual/olares/market/clone-apps.md)
- [Manage paid applications](../manual/olares/market/purchase-paid-apps.md)
- [Installation FAQs](../manual/olares/market/market.md#faqs)

92
docs/one/open-webui.md Normal file
View File

@@ -0,0 +1,92 @@
---
outline: [2, 3]
description: Learn how to set up Open WebUI on your Olares One to chat with local LLMs using Ollama.
head:
- - meta
- name: keywords
content: Open WebUI, Ollama, local LLM, chatbot, AI
---
# Chat with local LLMs using Open WebUI <Badge type="tip" text="20 min" />
Open WebUI provides an intuitive interface for managing Large Language Models (LLMs) that supports both Ollama and OpenAI-compatible APIs.
You can easily install Ollama and chat with your local LLM using the Open WebUI.
## Learning objectives
- Download models directly from the interface of Open WebUI.
- Start your first local AI conversation.
## Prerequisites
**Hardware** <br>
- Olares One connected to a stable network.
- Sufficient disk space to download models.
**User permissions**
- Admin privileges to install Ollama from the Market.
## Step 1: Install Ollama and Open WebUI
1. Open Market, and search for "Ollama".
![Install Ollama](/images/manual/use-cases/ollama.png#bordered)
2. Click **Get**, then **Install**, and wait for installation to complete.
3. Repeat the same steps to install "Open WebUI".
![Install Open WebUI](/images/one/open-webui.png#bordered)
## Step 2: Create Open WebUI admin account
1. Open the Open WebUI app.
2. On the welcome page, click **Get started**.
3. Enter your name, email, and password to create the account.
![Create account](/images/one/open-webui-create-account.png#bordered)
:::info
All your data, including login details, is locally stored on your device.
:::
:::tip First account is Admin
The first account created on Open WebUI gains Administrator privileges, controlling user management and system settings.
:::
## Step 3: Download models
Because the Ollama API is pre-configured on Olares OS for Open WebUI, you can download models directly within the Open WebUI interface without using the command line.
:::tip Check Ollama library
If you are unsure which model to download, check the [Ollama Library](https://ollama.com/library) to explore available models.
:::
<tabs>
<template #Download-from-dropdown>
1. On the main chat page, click **Select a model** in the top-left corner.
2. In the search field, enter the model name. For example: `llama3.2`.
3. Click the option that says **Pull "llama3.2" from Ollama.com**. The download starts automatically.
![Download models from homepage](/images/one/open-webui-download-from-homepage.png#bordered)
</template>
<template #Download-from-Settings>
1. Click your **profile icon** in the bottom-left corner and select **Admin Panel**.
2. Click <span class="material-symbols-outlined">download_2</span> in the top right to open the **Manage Models** dialog.
3. Under **Pull a model from Ollama.com**, enter the model name. For example: `llama3.2`.
4. Click <span class="material-symbols-outlined">download</span> to initiate the download.
![Download models from Settings](/images/one/open-webui-download-from-settings.png#bordered)
</template>
</tabs>
## Step 4: Chat with your local LLM
1. On the main chat page, click the model selector in the top-left and choose the model you just downloaded.
2. Enter your prompt in the text box and press **Enter** to start chatting.
![Chat with your local LLM](/images/one/open-webui-chat.png#bordered)
## Troubleshooting
### Download progress disappears
When downloading a model via the dropdown menu, the progress bar might sometimes disappear before completion.
To resume the download:
1. Click the model selector again.
2. Enter the exact same model name.
3. Select **Pull from Ollama.com**. The download will resume from where it left off.
## Resources
- [Open WebUI Documentation Hub](https://docs.openwebui.com/getting-started/)
- [Switch GPU mode](gpu.md)
- [Download and run local AI models via Ollama](../use-cases/ollama.md)
- [Deep research with DeerFlow](deerflow.md)

View File

@@ -0,0 +1,96 @@
---
outline: [2,3]
description: Learn how to redeem your complimentary Olares Space Basic membership.
head:
- - meta
- name: keywords
content: Olares, Olares One, Olares Space, redeem membership card, kickstarter backers, Basic plan
---
# Redeem Olares Space membership <Badge type="tip" text="Kickstarter Backers Only" />
If you backed Olares One on Kickstarter, your package includes an "Olares Space Membership" card. This card grants you a complimentary 2-year Basic membership to use the enhanced connectivity services provided by Olares Space.
:::tip Olares One is a one-time purchase
Your Olares One hardware and system updates are free forever.
Olares Space is completely optional, so you are never locked in. If you choose not to renew your membership after the complimentary period ends, your use of Olares One will not be affected in any way.
:::
## Before you begin
Olares Space is a secure connectivity platform that extends the capabilities of your local device without compromising data sovereignty. The Basic plan includes:
* **Cloud backup**: Up to 50 GB of integrated cloud storage for critical data redundancy. The free alternative is to back up your data to a local external drive or your own S3-compatible storage provider.
* **Remote access (FRP)**: High-speed remote connection with 50 GB of monthly traffic at speeds up to 50 Mbps. This includes access to regional acceleration nodes for faster response times. If you exceed the monthly quota, speed is throttled to 5 Mbps. The free alternative is to use the LarePass VPN or host your own FRP server.
## Log in to Olares Space
1. Go to https://space.olares.com.
![Olares Space login page](/images/one/olares-space-login.png#bordered)
2. Open the LarePass app on your mobile and log in using your Olares ID.
3. Go to the **Settings** tab, and then tap the scan icon.
![Scan to log in](/images/one/scan-olares-space.png#bordered)
4. Scan the QR code on the computer screen and tap **Confirm**.
Now you have logged in to Olares Space using your Olares ID.
![Log in to Olares Space](/images/one/login-olares-space.png#bordered)
## Redeem Basic plan
:::info
The 2-year validity period begins the moment you successfully bind your email to an Olares ID.
:::
To redeem your benefits, you must verify the email address associated with your Kickstarter order using the Olares Space dashboard.
1. In Olares Space, from the left navigation pane, click **Usage & billing**.
2. On the **Account email** tab, click **Email address**.
![Olares Space account email](/images/one/account-email.png#bordered)
3. In the **Add email** window, enter the email address used for your Kickstarter order.
![Olares Space bind email](/images/one/bind-email.png#bordered)
4. Click **Send verification code**.
5. Follow the on-screen instructions to complete the verification.
:::tip
If you do not see the email in your inbox, try checking your Spam or Junk folders.
:::
A notification message will confirm that the email was added. Your account immediately upgrades to the Basic plan, and the 2-year validity period begins.
6. Click your avatar in the upper right corner. A **Basic** tag appearing next to your username confirms that your membership is active now.
![Olares Space Basic plan](/images/one/basic-plan.png#bordered)
## Switch membership to a different Olares ID
:::warning Validity period adjustment
Transferring your membership to a new Olares ID reduces your remaining validity period by one month. If you transfer multiple times within the same month, the deduction only occurs once.
:::
:::warning Changing your bound email
The Basic membership is tied strictly to the specific email address used on Kickstarter. If you change the email, you will lose the Basic membership immediately.
:::
If you want to move your Basic membership to a new Olares ID:
1. Log in to Olares Space with your old Olares ID.
2. Go to **Usage & billing** > **Account email**.
3. Click **Unbind** to remove the Kickstarter email from the account email settings.
![Unbind email](/images/one/unbind-button.png#bordered)
4. Click **Send verification code**.
5. Follow the on-screen instructions to complete the verification.
A notification message will confirm that the email was removed. Your account automatically changes to the Free plan.
6. Log in to Olares Space with the new Olares ID.
7. Bind and verify the Kickstarter email using the steps in the [Activate membership](#activate-membership) section. This will immediately upgrade the new Olares ID to the Basic plan.
## Resources
- [Monitor traffic in Olares Space](space.md)
- [Olares Space introduction](../space/index.md)

102
docs/one/space.md Normal file
View File

@@ -0,0 +1,102 @@
---
outline: [2,3]
description: Learn how to link your device to Olares Space and monitor your cloud traffic and backup storage usage.
head:
- - meta
- name: keywords
content: Olares, Olares One, Olares Space, monitor traffic usage, billing
---
# Monitor traffic in Olares Space <Badge type="tip" text="10 min" />
Olares Space is the cloud-based management platform for your device. While your Olares device runs locally, Olares Space allows you to monitor cloud traffic usage and manage billing from any web browser.
This guide explains how to link your Olares device to Olares Space and track your traffic usage.
:::info Usage and billing
If you use cloud services such as remote access (accessing your device from outside your home) or cloud backups, monitoring your usage is important. These services might incur charges if you exceed the limits of your subscription plan.
:::
## Learning objectives
- Link your Olares device to your Olares Space account.
- Log in to the Olares Space.
- Monitor cloud traffic consumption.
## Before you begin
Ensure you have the LarePass app installed on your mobile device and logged in with your Olares ID.
## Step 1. Link Olares Space
Before you can view statistics in Olares Space, you must authorize Olares Space to access your device's status. You do this through the LarePass mobile app.
1. Open the LarePass app on your mobile and go to **Settings** > **Integration**.
![LarePass Settings](/images/one/larepass-settings-integration.png#bordered)
2. Tap <i class="material-symbols-outlined">add</i> in the top right corner.
![Integration](/images/one/larepass-integration.png#bordered)
3. Tap **Space** from the list.
![Integration to add Space](/images/one/larepass-integration-add.png#bordered)
When completed, your Olares Space account is linked to your physical device, and the Olares Space account is displayed in the **Integration** list.
![Olares Space account integrated](/images/one/larepass-integration-add-space.png#bordered)
## Step 2. Log in to Olares Space
Access the Olares Space dashboard via a web browser.
1. Go to https://space.olares.com/.
![Olares Space login page](/images/one/olares-space-login.png#bordered)
2. Log in to Olares Space:
a. In the LarePass app, go to **Settings**, and then tap the scan icon.
![Scan to log in](/images/one/scan-olares-space.png#bordered)
b. Scan the QR code on the computer screen and tap **Confirm**. Now you have logged in to Olares Space.
<!--## Step 3. Monitor system usage
Olares Space separates your local hardware monitoring from your cloud traffic usage.
### Check device health
The landing page is the **Olares** tab. Use the **Resource Monitor** section to check the real-time status of your connected device:
- CPU and memory: Shows how much computing power your device is currently using.
- Disk: Shows the total storage used on the device's hard drive.
- Active hosts: Lists the connection status and uptime of your specific device.
![Olares Space Olares tab](/images/one/olares-space-olares-tab.png#bordered)-->
## Step 3. Check traffic usage
Monitor how much data you have used for remote access to avoid exceeding the monthly limit of your subscription.
1. From the left navigation pane, click **Usage & billing**.
![Olares Space traffic details](/images/one/olares-space-traffic-usage.png#bordered)
2. On the **Usage** tab, check the **Traffic details** section. By default, traffic details of the latest billing cycle is displayed.
- Progress bar: Shows exactly how much data you have consumed against your plan's limit. For example, 0.05 GB/2.0 GB.
- Daily chart: A bar chart displaying your data usage day by day, helping you spot sudden increases in activity.
3. If you need to check usage from a previous billing cycle:
a. Click the date range dropdown list.
![Olares Space traffic by month](/images/one/space-traffic-filter.png#bordered)
b. Select a specific billing period to view the traffic history for that month. For example, 2025-12-02 ~ 2026-01-02.
## Resources
- [Olares Space plans and pricing](https://space.olares.com/plans)
- [Manage Olares](../space/manage-olares.md)
- [Olares Space billing](../space/billing.md)

46
docs/one/spec.md Normal file
View File

@@ -0,0 +1,46 @@
---
outline: [2, 3]
description: View the hardware components and specifications of Olares One.
head:
- - meta
- name: keywords
content: Olares, Olares One, technical specifications, tech specs, hardware specs
---
# Technical specifications
Olares One features high-performance components designed to run advanced AI models locally and host private services efficiently.
This page provides information about the hardware components and specifications.
## Hardware overview
Refer to the following table to identify the buttons, ports, and interfaces on Olares One.
![Olares One rear panel](/images/one/olares-one-backview.png#bordered)
| No. | Component | Description |
|:----|:------------------------|:-------------------------------------------------------------------------------------|
| 1 | Power button/status LED | Turns the device on or off. The LED light indicates the current operational status. |
| 2 | Power port | Connects the power adapter to supply power to the device. |
| 3 | Thunderbolt 5 (USB-C) | Transfers data at ultra-fast speeds and charges compatible devices. |
| 4 | HDMI 2.1 port | Connects to an external monitor or display for high-fidelity video and audio output. |
| 5 | USB 3.2 port (Type-A) | Connects peripherals (such as a keyboard or mouse) or transfers data. |
| 6 | 2.5G Ethernet port | Connects to a wired LAN for high-speed internet access (up to 2.5 Gbps). |
## Component specifications
Refer to the following table for detailed hardware specifications of Olares One.
| Component | Specification |
|:-----------------------|:--------------------------------------------------------------------------------------------------------------------------------|
| Processor | Intel® Ultra 9 275HX |
| Graphics | NVIDIA® RTX™ 5090 Mobile, 24 GB VRAM |
| Memory | 96 GB (2 × 48 GB) DDR5 5600 MHz |
| Storage | 2 TB NVMe SSD PCIe 4.0 |
| Wireless | Wi-Fi 7 & Bluetooth® 5.4 |
| I/O ports | <ul><li>1 × 2.5 G Ethernet</li><li>1 × Thunderbolt™ 5</li><li>1 × HDMI 2.1</li><li>1 × USB 3.2</li><li>1 × Power Port</li></ul> |
| Chassis | Aluminum alloy shell with a plastic base |
| Power adapter | 330 W |
| Dimensions (L × W × H) | 320 × 197 × 55 mm |
| Weight | <ul><li>2.15 kg</li><li>3.1 kg (with PSU)</li></ul> |

View File

@@ -0,0 +1,271 @@
---
outline: [2, 3]
description: Learn how to turn your Olares device into a gaming console by connecting a monitor and peripherals directly.
head:
- - meta
- name: keywords
content: Steam, Local Gaming, Direct Play, Linux Gaming, Audio Configuration
---
# Play Steam games locally on Olares One <Badge type="tip" text="30 min" />
While Olares One is typically used as a headless system, you can connect a monitor, keyboard, and mouse to play games directly.
However, simply plugging in a monitor is not enough. Because Steam Headless is optimized for remote streaming by default, you must manually configure the audio settings to output audio locally.
## Learning objectives
- Set up Steam Headless on your Olares One.
- Grant the application permission to access the host sound card.
- Modify display and audio settings for local gameplay.
## Prerequisites
**Hardware** <br>
- Olares One connected to a stable network (Ethernet recommended).
- Monitor, keyboard, and mouse connected to the Olares One.
- Sufficient disk space to download games.
**Software** <br>
- [Moonlight](https://moonlight-stream.org/) installed on the client device.
- A valid Steam account.
**Experience**
- Basic familiarity with terminal commands and the command-line interface (CLI).
## Step 1: Install Steam Headless
1. Open the Market, and search for "Steam".
2. Click **Get**, then **Install**.
![Install Steam Headless](/images/manual/use-cases/steam-install-steam-headless1.png#bordered)
3. A prompt will appear asking you to set environment variables. This creates your login credentials for the Sunshine Web UI:
- `SUNSHINE_USER`: Set the username for Sunshine access.
- `SUNSHINE_PASS`: Set a secure password.
:::tip Remember your login credentials
These are the initial login credentials for Sunshine. You will need them if you access the Sunshine dashboard later.
:::
4. Wait for the installation to complete.
## Step 2: Install the Steam client
Once the headless app is running, you need to initialize the Steam client inside it.
1. Open Steam Headless and click **Connect**.
![Connect to Steam](/images/manual/use-cases/steam-connect-to-steam.png#bordered)
2. The Steam client will automatically begin downloading and installing.
![Install Steam](/images/manual/use-cases/steam-install-steam.png#bordered)
![Update Steam](/images/manual/use-cases/steam-update-steam.png#bordered)
3. When installation completes, the Steam login screen appears. Sign in with your Steam account.
![Sign in to Steam](/images/manual/use-cases/steam-sign-in-to-steam.png#bordered)
::: tip Retry installation upon failures
If Steam installation or update fails due to network issues, go to the top-left menu in the Steam Headless console and navigate to **Applications** > **Internet** > **Steam** to restart the installation.
:::
## Step 3: Grant sound card permissions
To output audio to your monitor, the Steam container needs direct access to your sound card. You must edit the deployment configuration to "pass through" these hardware components.
:::warning Edit with caution
Incorrect YAML syntax or indentation may prevent the application from starting.
- **Verify changes:** Double-check that your indentation matches the existing lines.
- **Revert when necessary:** If the app fails to start after applying changes, check **Revision records** and simply delete the lines you added to restore the previous configuration.
![Check revision records](/images/manual/use-cases/steam-yaml-revision-records.png#bordered)
:::
1. Open Control Hub, then select the Steam project from the sidebar.
2. Navigate to **Deployments** > **steamheadless**, and click <span class="material-symbols-outlined">edit_square</span> to open the editor.
![Open Yaml editor](/images/manual/use-cases/steam-open-yaml-editor.png#bordered)
3. Locate the `volumes` section and append the following entry to the list.
```yaml
spec:
volumes:
# Keep existing volumes like steam-headless-claim0
# ...
# Add the following entry at the end:
- name: snd
hostPath:
path: /dev/snd
type: ''
```
4. Locate the `volumeMounts` section and append the following mounting point:
```yaml
volumeMounts:
# Keep existing mounts like steam-headless-claim0
# ...
# Add the following entry at the end:
- name: snd
mountPath: /dev/snd
```
5. Click **Confirm** to apply the changes. The container will restart with the new permissions.
## Step 4: Configure display and input
By default, the system is configured for streaming. You need to modify the X11 configuration to use your physical monitor and peripherals.
1. In Control Hub, click on the running Pod to view its details.
![Click Pod](/images/manual/use-cases/steam-click-pod.png#bordered)
2. Click the Terminal icon next to **steam-headless** to access the container's shell.
![Access container's shell](/images/manual/use-cases/steam-access-container-shell.png#bordered)
3. Open the X configuration file:
```bash
nano /etc/X11/xorg.conf
```
4. Modify the file to match the configuration below.
a. Delete the `Section "InputDevice"` blocks to stop using virtual inputs.
b. Update the `Display` subsection to match your monitor's resolution. For example:
```bash
SubSection "Display"
Virtual 1920 1080
Depth 24
Modes "1920x1080R" "1920x1080" "1280x800" "1024x768" "1920x1080" "1600x900" "1440x900"
```
:::details Reference `xorg.conf` configuration
```bash
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Default Screen"
EndSection
Section "Monitor"
Modeline "1920x1080R" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync
Identifier "Configured Monitor"
HorizSync 5.0 - 1000.0
VertRefresh 5.0 - 200.0
ModeLine "1920x1080" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
EndSection
Section "Device"
Identifier "Configured Video Device"
Driver "nvidia"
Option "ModeValidation" "NoMaxPClkCheck, NoEdidMaxPClkCheck, NoMaxSizeCheck, NoHorizSyncCheck, NoVertRefreshCheck, NoVirtualSizeCheck, NoTotalSizeCheck, NoDualLinkDVICheck, NoDisplayPortBandwidthCheck, AllowNon3DVisionModes, AllowNonHDMI3DModes, AllowNonEdidModes, NoEdidHDMI2Check, AllowDpInterlaced"
Option "AllowEmptyInitialConfiguration"
Option "PrimaryGPU" "yes"
Option "AllowExternalGpus" "True"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Default Screen"
Device "Configured Video Device"
Monitor "Configured Monitor"
DefaultDepth 24
Option "ProbeAllGpus" "False"
Option "BaseMosaic" "False"
Option "AllowEmptyInitialConfiguration" "True"
Option "ConnectedMonitor" "DFP"
SubSection "Display"
Virtual 1920 1080
Depth 24
Modes "1920x1080R" "1920x1080" "1280x800" "1024x768" "1920x1080" "1600x900" "1440x900"
EndSubSection
EndSection
Section "ServerFlags"
Option "AutoAddGPU" "false"
EndSection
```
:::
5. Press `Ctrl+O` to save, then `Ctrl+X` to exit.
6. Restart the display server to apply changes:
```bash
supervisorctl stop xorg
supervisorctl start xorg
```
## Step 5: Enable audio output
Finally, you must manually select the correct audio output channel.
1. Identify your sound card. Run the following command inside the container terminal:
```bash
aplay -l
```
Look for your monitor name in the output. For example:
```bash
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 3: HDMI 0 [U2790B]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
```
Look for your monitor name in the output. In this example, the output corresponds to `card 0`, `device 3`.
2. Load the audio module. Replace `0,3` with your specific card and device numbers:
```bash
pactl load-module module-alsa-sink device=plughw:0,3 sink_name=nvhdmi
```
3. Check the audio channel status (use the same card number you selected above):
```bash
amixer -c 0 scontents
```
Example output:
```bash
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'IEC958',1
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'IEC958',2
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
```
4. If the output contains `Mono: Playback [off]`, it means the channel is muted. Unmute it by running:
```bash
amixer -c 0 sset 'IEC958' on
```
Audio now plays directly from your monitor or speakers. You are ready to play.
## Optional: Enable audio for remote streaming
:::info
For detailed streaming and pairing instructions, refer to [Stream Steam games to any device](steam-stream.md).
:::
Local play and remote streaming use exclusive audio modes.
- **Local play** requires the `module-alsa-sink` module loaded.
- **Remote streaming** requires this module unloaded so Sunshine can capture the audio.
If you decide to stream games to another device later, you must unload the local audio module to restore sound to the stream.
To enable audio for streaming:
1. Open the container terminal via Control Hub.
2. Unload the local audio module:
```bash
pactl unload-module module-alsa-sink
```
## FAQs
### Why does my monitor show the Steam interface even when I'm not playing?
Olares One usually displays a terminal prompt when connected to a monitor. However, running the Steam application activates a graphical interface that takes over the display.
To return the monitor to the standard terminal view, you must stop the Steam application via **Market** or **Settings**.
## Resources
- [Stream Steam games to any device](steam-stream.md)

195
docs/one/steam-stream.md Normal file
View File

@@ -0,0 +1,195 @@
---
outline: [2, 3]
description: Comprehensive tutorial on streaming Steam games with Olares. Learn to install Steam Headless, configure the streaming service, and stream games on Moonlight from both local and remote networks.
head:
- - meta
- name: keywords
content: Steam, Steam Headless, Moonlight, Sunshine, Game Streaming, Remote Play, Cloud Gaming
---
# Stream Steam games to any device <Badge type="tip" text="30 min" />
Equipped by an NVDIA 5090 mobile GPU, with the Steam Headless app, Olares One transforms into a powerful game streaming server. You can play your favorite games on any compatible device via Moonlight.
## Learning objectives
- Set up Steam Headless on your Olares One.
- Configure the Sunshine streaming service.
- Pair your device via Moonlight and stream games locally or remotely.
## Prerequisites
**Hardware** <br>
- Olares One connected to a stable network (Ethernet recommended).
- Sufficient disk space to download games.
**Software** <br>
- [Moonlight](https://moonlight-stream.org/) installed on the client device.
- A valid Steam account.
**LarePass** (Required for remote access)
- LarePass required on your client device (desktop or mobile) if you plan to stream outside your home network.
## Step 1: Install Steam Headless
1. Open the Market, and search for "Steam".
2. Click **Get**, then **Install**.
![Install Steam Headless](/images/manual/use-cases/steam-install-steam-headless1.png#bordered)
3. A prompt will appear asking you to set environment variables. This creates your login credentials for the Sunshine Web UI:
- `SUNSHINE_USER`: Set the username for Sunshine access.
- `SUNSHINE_PASS`: Set a secure password.
:::tip Remember your login credentials
These are your initial login credentials for Sunshine. You must use them to log in to Sunshine the first time.
:::
4. Wait for the installation to complete.
## Step 2: Install the Steam client
Once the headless app is running, you need to initialize the Steam client inside it.
1. Open Steam Headless and click **Connect**.
![Connect to Steam](/images/manual/use-cases/steam-connect-to-steam.png#bordered)
2. The Steam client will automatically begin downloading and installing.
![Install Steam](/images/manual/use-cases/steam-install-steam.png#bordered)
![Update Steam](/images/manual/use-cases/steam-update-steam.png#bordered)
3. When installation completes, the Steam login screen appears. Sign in with your Steam account.
![Sign in to Steam](/images/manual/use-cases/steam-sign-in-to-steam.png#bordered)
::: tip Retry installation upon failures
If Steam installation or update fails due to network issues, go to the top-left menu in the Steam Headless console and navigate to **Applications** > **Internet** > **Steam** to restart the installation.
:::
## Step 3: Pair Sunshine with Moonlight
Steam Headless uses Sunshine to stream video. You must pair it with the Moonlight app on your playing device.
### 1. Access the Sunshine console
You need to access the Sunshine Web UI running on your Olares One to enter a pairing PIN.
1. Copy the URL of your current Steam Headless browser tab.
2. Open a new browser tab and modify the URL to access port `47990`. The address varies depending on your network.
- **Same network**: Use `http` and your `.local` address. For example:
```plain
http://139ebc4f0.<your Olares ID>.olares.local:47990
```
- **Different network (via VPN)**: Enable LarePass VPN on your device, then append `:47990`. For example:
```plain
https://139ebc4f0.<your Olares ID>.olares.com:47990
```
3. Press **Enter** to open the Sunshine console page.
4. Sign in using the `SUNSHINE_USER` and `SUNSHINE_PASS` credentials you created earlier.
![Sign in to Sunshine](/images/manual/use-cases/steam-sign-in-to-sunshine.png#bordered)
5. Click the **PIN** tab. The page will now wait for a pairing PIN.
![PIN on Sunshine](/images/manual/use-cases/steam-pin-on-sunshine.png#bordered)
### Add the host in Moonlight
Moonlight usually detects your Olares host automatically when it is on the same local network as your Olares One.
If it doesn't appear, or if you are connecting over different networks, follow these steps to add the host manually. The process shown below uses the macOS Moonlight client.
1. Open Moonlight on your client device.
2. Click the **Add Host** button, which looks like a computer with a plus icon.
3. Enter your Olares domain without the `https://` prefix. For example:
```plain
139ebc4f0.<your Olares ID>.olares.com
```
4. Click **OK**. A new locked host icon appears.
5. Click the locked icon. Moonlight will display a 4-digit pairing PIN.
![Get pairing PIN](/images/manual/use-cases/steam-get-pairing-pin.png#bordered)
### Complete pairing
1. Return to the **Sunshine PIN** page in your browser.
2. Enter the PIN displayed in Moonlight and give your device a name.
![Enter pairing PIN](/images/manual/use-cases/steam-enter-pairing-pin.png#bordered)
3. Click **Send**.
4. Upon success, you will see a confirmation message, and the lock icon in Moonlight will disappear.
![Host in Moonlight](/images/manual/use-cases/steam-host-in-moonlight.png#bordered)
Once paired, you're ready to start streaming.
## Step 4: Stream your games
:::tip Optimizing remote play
For the best experience when streaming remotely:
1. Connect your client device to 5GHz Wi-Fi or Ethernet.
2. Ensure **LarePass VPN** is active.
:::
You can stream your games through Moonlight either locally or remotely, depending on your network setup.
The following steps demonstrate local streaming.
1. Open Moonlight on your client device.
2. Select your Olares host and click the **Steam** icon.
![Steam in Moonlight](/images/manual/use-cases/steam-in-moonlight.png#bordered)
3. Steam **Big Picture Mode** will launch. Select a game from your library and start playing.
## FAQs
### Why isn't the game displaying in full screen?
This may be caused by resolution settings. Try adjusting the resolution:
- **In Moonlight**: Go to **Settings** > **Basic Settings** > **Resolution and FPS**.
![Display in Moonlight](/images/manual/use-cases/steam-display-in-moonlight.png#bordered)
- **On the Steam console page**: Go to **Applications** > **Settings** > **Display**.
![Display in Steam Headless](/images/manual/use-cases/steam-display-in-steam-hd.png#bordered)
### How do I exit full-screen streaming?
Use the following shortcuts:
- **Windows**: `Ctrl + Alt + Shift + Q`
- **Mac**: `Control (^) + Option (⌥) + Shift + Q`
- **Mobile**: `Start + Select + L1 + R1`
After finishing, exit Steam Big Picture mode to release system resources on Olares.
![Exit Steam Big Picture Mode](/images/manual/use-cases/steam-exit-big-pic.png#bordered)
### Where are my downloaded games stored?
You can check the downloaded games in the Files app. By default, games are saved in:
```
/Cache/olares/steam-headless/c0/.steam/steam/steamapps/common
```
We recommend not changing this default directory.
### Why do I get an error when re-pairing the host in Moonlight?
If you delete your Olares host in Moonlight and try to pair again, you may encounter the following errors:
- **The PIN from the PC didn't match. Please try again.**
- **Request timed out (Error 4)**
- **Connection closed (Error 2)**
This usually happens when the Sunshine service is not responding.
To fix it, simply restart Steam Headless in Olares and try pairing again:
1. Open Control Hub from Launchpad.
2. Navigate to **Browser** > **steamheadless** > **Deployments** > **steamheadless** > **Restart**.
![Restart Steam Headless](/images/manual/use-cases/steam-restart.png#bordered)
3. In the confirmation prompt, enter `steamheadless` and click **Confirm**.
![Confirm restart](/images/manual/use-cases/steam-confirm-restart.png#bordered){width=80%}
4. Once restarted, pair with Sunshine again in Moonlight.
### How do I change my Sunshine username or password?
You can change your Sunshine credentials directly from the Sunshine web console.
1. Open Sunshine in your browser using your local address, for example: `http://139ebc4f0.<your Olares ID>.olares.local:47990`.
2. Log in with your current username and password.
3. Go to the **Change Password** tab.
![Change Sunshine password](/images/manual/use-cases/steam-change-sunshine-pw.png#bordered)
4. Enter a new password (and username if desired), then click **Save**.
## Resources
- [Play Steam games locally on Olares One](steam-direct-play.md)

54
docs/one/update.md Normal file
View File

@@ -0,0 +1,54 @@
---
outline: [2, 3]
description: Learn how to use the LarePass app to check for and install system updates on your Olares One.
head:
- - meta
- name: keywords
content: Olares One, Update Olares
---
# Update OS <Badge type="tip" text="15 min" />
Use the LarePass app to keep your Olares One up to date with the latest features and security patches.
:::warning Admin access required
Only an Olares administrator can perform system updates. Please note that updates apply to the entire Olares cluster and affect all members.
:::
## Learning objectives
By the end of this tutorial, you will learn how to:
- Check whether a new Olares OS version is available in LarePass.
- Choose between **Download only** and **Download and upgrade**.
- Install an update and confirm the system restarts successfully.
## Prerequisites
Make sure that:
- Your Olares One is powered on and connected to a network.
- Your phone can access Olares One through LarePass.
- You are signed in with an account that has administrator permissions.
## Check for updates
1. Open LarePass on your phone and go to **Settings**.
2. In the **My Olares** card, tap **System** to enter the **Olares management** page.
3. Tap **System update**.
4. If a new version appears in the **New version** field, tap **Upgrade**.
![Check for available version](/images/manual/larepass/check-version.png#bordered)
## Select upgrade method
A dialog will appear asking how you want to handle the update package. Choose the method that fits your schedule:
- **Download only**: Olares downloads the package in the background. You can continue using the system and install the update manually later.
- **Download and upgrade**: Olares downloads the package and prompts you to restart and install it when the download finishes.
![Choose upgrade method](/images/manual/larepass/olares-upgrade1.png#bordered)
## Install and restart
1. Start installation based on your selection:
- **Download only**: After the download completes, return to **System update** and tap **Upgrade now**. Confirm the restart prompt to begin installation.
- **Download and upgrade**: After the download completes, confirm the restart prompt to begin installation.
2. Wait for the update and restart to finish. When Olares starts up again, you'll see a success message and can continue using it.

173
docs/one/vault.md Normal file
View File

@@ -0,0 +1,173 @@
---
outline: [2, 3]
description: Understand Vault basics in Olares. Learn to set up vaults and manage vault items.
head:
- - meta
- name: keywords
content: Olares, Olares One, Vault, password manager, store credentials, secure sensitive data
---
# Secure passwords with Vault <Badge type="tip" text="15 min" />
Vault is the dedicated password and sensitive data manager in Olares. Use it to securely store passwords, keys, digital identities, and sensitive documents.
This guide covers the fundamentals of using Vault, including setting up your first vault, importing credentials, and managing your sensitive data efficiently.
## Learning objectives
- Initialize your personal Vault for the first time.
- Create and save a secure item. This guide uses Wi-Fi password as the example.
- Edit and organize your credentials.
- Locate items using search and filters.
## Before you begin
Familiarize yourself with related Vault concepts and how Vault organizes your data.
### Vault types
Olares Vault offers two main types of vaults:
* My vault: This is your private vault that is created automatically upon account activation. The vault is encrypted with your mnemonic and is visible only to you.
* Team vaults: These are collaborative vaults that are used to share credentials securely with team members or family.
### Vault items
A vault item is a secure container for a specific piece of information. While commonly used for login credentials, vault items can also store credit cards, secure notes, passports, and network details.
## Set up Vault
When you open Vault on your device for the first time, you must initialize it for security.
1. Open the Vault app from the Launchpad.
![Find Vault](/images/one/find-vault-app.png#bordered)
2. Set a local password for Vault, which is used to unlock Vault on the current device only. This local Vault password acts as a second layer of defense.
![Open Vault for the first time](/images/one/open-vault.png#bordered){width=35%}
:::tip Security best practice
Do not use the same password as your Olares login. If someone guesses your login password, this secondary password ensures your sensitive data remains locked.
:::
3. Click **Confirm**.
4. Import your Olares ID that is already linked to your server using your mnemonic phrase.
![Enter mnemonic phrase](/images/one/vault-enter-mnemonic-phrase.png#bordered){width=35%}
:::tip
For information about how to get your mnemonic phrase in case you do not have it handy, see [Reveal and back up your mnemonic phrase](../manual/larepass/back-up-mnemonics.md#reveal-and-back-up-your-mnemonic-phrase).
:::
5. Click **Next**.
## Add vault items
Create a new vault item to store "my company Wi-Fi password".
1. Open the Vault app from the Dock or Launchpad.
2. Click <i class="material-symbols-outlined">add</i> in the **All vaults** panel.
3. From the **Select Vault** list, choose **My Vault** for private use.
![Select My Vault](/images/one/select-my-vault.png#bordered){width=50%}
4. Select **WIFI Password** from the category, and then click **Confirm**.
![Add vault item Wi-Fi](/images/one/select-wifi-vault.png#bordered){width=50%}
The details panel opens on the right. It displays the default fields relevant to the category you selected.
![Configure vault item settings for Wi-Fi](/images/one/new-vault-item-wifi.png#bordered){width=50%}
5. Fill in details in the fields.
![Add vault item Wi-Fi](/images/one/fill-info-vault.png#bordered){width=50%}
6. Click **Save**. The vault item is encrypted and added to the **All vaults** list.
## Manage vault items
Keep your vault items organized and up to date.
### Edit vault items
Modify an existing vault item to update details.
1. Open the Vault app.
2. In the **All vaults** panel, click the target vault item.
3. In the details panel on the right, click <i class="material-symbols-outlined">edit_note</i>.
![Edit vault item Wi-Fi](/images/one/edit-vault-item.png#bordered){width=50%}
4. Make changes as needed. For example, remove the expiration date.
5. Click **Save**.
### Mark favorite vault items
Mark frequently used vault items for quick access.
1. Open the Vault app.
2. In the **All vaults** panel, click the target vault item.
3. Click <i class="material-symbols-outlined">star_border</i> in the top right corner.
![Mark favourite](/images/one/mark-favourite.png#bordered){width=50%}
The item is marked with a star in the **All vaults** panel.
![Favourite vault item](/images/one/favourite-vault-item.png#bordered){width=70%}
## Find vault items
Locate vault items quickly using keyword search or filters.
### Search
In the **All vaults** panel, click <i class="material-symbols-outlined">search</i> and enter keywords (such as `Wi-Fi` or `company`) to find specific vault items.
![Search vault item](/images/one/search-vault.png#bordered){width=70%}
### Filter
Use the left sidebar to narrow down the list:
- Vault category: Switch between My Vault and Team Vaults to change the scope.
- Tags: Click a tag name to view all related vault items.
- Favorites: Click **Favorites** to view all starred items.
- Recently used: Click **Recently used** to view your access history.
- Attachments: Click **Attachments** to view items containing files.
## Resources
- [Import vault items](../manual/olares/vault/vault-items.md#import)
- [Manage shared vaults](../manual/olares/vault/share-vault-items.md)
- [Autofill passwords with LarePass](../manual/larepass/autofill.md)
- [Generate two-factor authentication codes](../manual/larepass/two-factor-verification.md)
<!--<template #LarePass-desktop-or-mobile>
1. Open the LarePass desktop or mobile, and then go to the **Vault** tab.
2. Click <i class="material-symbols-outlined">add</i> in the top right corner.
3. From the **Select Vault** list, choose **My Vault** for private use or **Team Vault** for a shared one.
4. Select the category of the vault item, and then click **Confirm**.
5. Specify the detailed settings for the vault item, and then click **Save**.
</template>
<template #LarePass-browser-extension>
:::info Before you begin
- The LarePass browser extension is currently only available for Google Chrome.
- Install it from the Chrome Web Store or the [official page](https://www.olares.com/larepass).
- For quick access, pin the extension to your browser toolbar.
:::
1. Click the LarePass icon on your browser toolbar to open the sidebar.
2. Click **Vault**.
3. Click <i class="material-symbols-outlined">add</i> in the **All vaults** panel.
4. Select the category of the vault item, and then click **Confirm**.
5. Specify the detailed settings for the vault item, and then click **Save**.
</template>
</tabs>
![Add vault item](/images/one/new-vault-item.png#bordered){width=50%}
![Configure vault item settings](/images/one/configure-vault-item.png#bordered){width=50%}-->

193
docs/one/windows.md Normal file
View File

@@ -0,0 +1,193 @@
---
outline: [2, 4]
description: A comprehensive guide to installing and running a Windows virtual machine on Olares. Learn how to configure initial credentials, connect via browser-based VNC or Microsoft Remote Desktop (RDP), and transfer files between your computer and the VM.
head:
- - meta
- name: keywords
content: Olares One, Windows VM
---
# Run a Windows VM on Olares One <Badge type="tip" text="20 min" />
Olares lets you run a full Windows virtual machine directly on your device, giving you a personal, always-available Windows environment accessible from macOS, Windows, or Linux.
:::info System capabilities
- Olares supports running essential Windows applications.
- Workflows are limited to **CPU or integrated graphics performance**. GPU passthrough is not yet supported, meaning heavy GPU-accelerated applications may not perform optimally.
- Audio output is **only supported** when connected via Remote Desktop (RDP).
:::
This guide walks you through installing the Windows VM, enabling secure networking, and connecting using either a browser or Remote Desktop.
## Learning objectives
By the end of this tutorial, you will learn how to:
- Install and set up the Windows VM on Olares One.
- Access the Windows VM using the browser-based VNC viewer or Microsoft Remote Desktop (RDP).
- Change your Windows login password from inside the VM.
- Transfer files seamlessly between your computer and the Windows VM.
## Install and configure Windows VM
Windows is available as an app in the Olares Market.
### Install Windows
1. Open Market, and search for "Windows".
![Install Windows](/images/one/win-market.png#bordered)
2. Click **Get**, then **Install**.
3. When prompted, set environment variables:
- `USERNAME`: Create a username for accessing Windows.
- `PASSWORD`: Set the corresponding password.
- `VERSION`: Select your preferred Windows version from the dropdown list.
- `DISK_SIZE`: Allocate disk space for Windows using units of `G`, for example, `128G`.
![Set environment variables](/images/manual/use-cases/win-set-env-var1.png#bordered){width=70%}
4. Wait a few minutes for the installation and initialization to complete.
### Set up Windows
Once the installation is finished, open Windows from Launchpad to start the VM for the first time.
Olares will automatically download and install the system image of the corresponding Windows version. This may take several minutes depending on your network speed.
![Download Windows 11](/images/one/win-download.png#bordered){width=90%}
## Access the Windows VM
You can access your VM in two ways:
- [Browser](#method-1-access-from-the-browser-vnc): For initial setup or quick tasks.
- [Remote Desktop](#method-2-access-using-a-remote-desktop-client-rdp): Recommended for daily use with audio support, file transfer capabilities, and smoother interaction.
### Method 1: Access from the browser (VNC)
Open the Windows app from Launchpad to launch the VM directly in your browser using VNC.
:::info
VNC (Virtual Network Computing) provides immediate, clientless access without requiring any additional software. It is ideal for initial setup, troubleshooting, or emergency access when you cannot use RDP. However, it can feel less responsive and lacks advanced features like audio redirection and high-performance graphics.
:::
### Method 2: Access using a Remote Desktop Client (RDP)
RDP (Remote Desktop Protocol) provides a much smoother, native-like experience with better performance, audio support, and file transfer.
#### Prerequisites
Before connecting, ensure you have the following ready:
- Secure tunnel: [Enable VPN on LarePass](../manual/larepass/private-network.md#enable-vpn-on-larepass) on your device.
- RDP client: Download Microsoft's remote desktop client on the device you are connecting from.
- **Windows:** No installation needed.
- **macOS / iOS:** Download [Windows App from the App Store](https://apps.apple.com/us/app/windows-app/id1295203466).
- **Android:** Download [Windows App from Google Play](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx).
#### Locate port number for Windows
:::warning Multiple Windows instances
If you have more than one Windows instance, each instance uses a different port.
Make sure you check the **ACLs** for the specific instance you want to connect to.
:::
1. Open Settings, and navigate to **Application** > **Windows**.
2. Under **Permissions**, click **ACLs**.
3. Note the port number listed in the **Dst** column. You will need this for the connection step.
![Locate port number](/images/one/win-port-no.png#bordered)
#### Connect to Windows
:::info
The following steps show the macOS interface, but the workflow is similar on all platforms.
:::
1. Open Windows from the Launchpad. Copy the domain from the address bar (exclude `https://` and any text after the domain).
2. Open the Windows App (or Remote Desktop) on your device.
3. Add your Windows VM as an RDP connection.
a. Click <i class="material-symbols-outlined">add</i> in the top-right corner and select **Add PC**.
b. In **PC name**, enter the domain you get from the previous step, followed by a colon and the port number.
For example, if your URL is `https://0f4137ed.<username>.olares.com`, and the port is `47374`, enter:
```text
0f4137ed.<username>.olares.com:47374
```
![Add PC](/images/one/win-add-pc.png#bordered)
c. Click **Add**.
4. Connect to the Windows VM.
a. Double-click your saved PC entry, or click **⋯**, then choose **Connect**.
![Connect to PC](/images/one/win-connect.png#bordered){width=90%}
b. When prompted, enter the **Username** and **Password** you created earlier.
![Log in to PC](/images/one/win-login.png#bordered){width=90%}
c. If a security warning appears, click **Continue**.
![Continue to log in](/images/one/win-warning.png#bordered){width=90%}
You are now connected to your Windows VM via RDP.
![Windows VM](/images/one/win-desktop.png#bordered)
## Common tasks
### Change your Windows login password
You can update your Windows login password directly from inside the VM:
1. Click the search bar in the Windows taskbar and type "password".
2. Select **Change your password**.
3. Click **Change** to set your new password.
### Transfer files between your computer and Windows
RDP supports clipboard-based file transfers.
To transfer a file via RDP clipboard:
1. Copy a file on your Mac or PC.
2. Paste it into the Windows VM.
The file appears immediately in Windows and is ready to use.
### Disconnect from the Windows VM
To end your RDP session, simply close the RDP window.
The Windows VM continues running on your Olares device and is always ready for you to reconnect.
## FAQ
### The Windows VM shows a blank screen or no desktop
The browser may have suspended the VNC connection due to inactivity to conserve system resources.
![Reconnect VM](/images/manual/use-cases/win-vnc-reconnect.png#bordered){width=90%}
Click **Connect** to restore the session.
### Windows system image download fails
If the Windows system image fails to download during setup:
- Wait a short while, then restart the application:
1. Open Control Hub from the Launchpad.
2. Select the Windows project.
3. Under **Deployment**, click **windows**.
4. Click **Restart**.
![Restart VM](/images/one/win-restart.png#bordered)
After the restart, the system image download will automatically retry.
- If repeated failures occur, your IP may have been temporarily blocked by Microsoft due to multiple download attempts in a short period.
Wait **24 hours**, then restart or reinstall the application and try again.
- If the issue persists, please contact us for assistance.
### Can I install other Windows versions or languages?
Currently, the following Windows versions are supported:
- **Windows 11**: Pro, LTSC, Enterprise
- **Windows 10**: Pro, LTSC, Enterprise
- **Legacy Desktop**: Windows 8.1, 7 Ultimate, Vista Ultimate, 2000 Professional
- **Windows Server**: 2025, 2022, 2019, 2016, 2012, 2008, 2003
After Windows installation, you can change the display language using the standard Windows language settings.
## Resources
- [Clone applications](/manual/olares/market/clone-apps.md): Learn how to run multiple Windows instances on Olares.

77
docs/one/wise-download.md Normal file
View File

@@ -0,0 +1,77 @@
---
outline: [2, 3]
description: Learn how to save YouTube videos into your Wise library using YT-DLP for offline viewing.
head:
- - meta
- name: keywords
content: Wise, YouTube, LarePass browser extension
---
# Download YouTube videos in Wise <Badge text="15 min"/>
Wise lets you save YouTube videos directly into your library for offline viewing. Unlike a standard file download, saving to the library ensures the video appears within the Wise application, allowing you to manage, play, and organize it alongside your other content.
## Learning objectives
By the end of this tutorial, you will learn how to:
- Save a YouTube video to your Wise library by pasting a link in Wise (recommended).
- Save a video from your browser using the LarePass extension.
- Check download progress and watch the video offline.
## Install Wise and YT-DLP
Before downloading YouTube videos, make sure the following apps are installed from Olares Market:
- **Wise**: The interface.
- **YT-DLP**: The background downloader service.
1. Open Market from your Launchpad.
2. Search for "Wise", click **Get**, then **Install**.
3. Search for "YT-DLP", click **Get**, then **Install**.
## Save video to library
You can save videos by pasting the URL directly in Wise or by using the LarePass extension while browsing.
### Paste URL in Wise <Badge text="recommended"/>
1. Copy the URL of the YouTube video.
2. Open Wise, click <i class="material-symbols-outlined">add_circle</i> in the bottom-left menu bar, then select **Add link**.
3. Paste the URL into the input field. Wise analyzes the link immediately.
4. In the panel, locate the Save to library section:
- **Video is ready**: Click <i class="material-symbols-outlined">box_add</i> next to the video item to save it.
![Save video via link](/images/one/wise-save-to-lib-add-link.png#bordered){width=60%}
- **Login is required**: If you see a prompt to log in to the site and upload cookies, simply click **Upload**. Once the status updates, click <i class="material-symbols-outlined">box_add</i> to save.
### Use LarePass extension
If you frequently save videos while browsing, the [LarePass extension](https://www.olares.com/larepass) can be more convenient, but it requires installing the extension first.
1. Open the YouTube video in your browser.
2. Click the LarePass browser extension icon in your browser toolbar and select the "Collect" icon.
3. In the panel, locate the Save to library section:
- **Video is ready**: Click <i class="material-symbols-outlined">box_add</i> next to the video item to save it.
![Save video via larepass](/images/one/wise-save-to-lib-larepass.png#bordered){width=60%}
- **Login is required**: If you see a prompt to log in to the site and upload cookies, simply click **Upload**. Once the status updates, click <i class="material-symbols-outlined">box_add</i> to save.
## Monitor and manage video downloads
When you save a video to the library, Wise creates a record immediately, and the file download runs in the background.
1. In Wise, click <i class="material-symbols-outlined">settings</i> in the bottom-left menu bar, then select **Transmission**.
2. In the Download tab, check the list of downloads and their status.
3. You can:
- Click <i class="material-symbols-outlined">folder_open</i> to locate a downloaded file in Files.
- Click <i class="material-symbols-outlined">do_not_disturb_on</i> to remove it from the list.
Once the download is complete, you can play the video directly inside Wise even without an internet connection.
## Resources
If you want to explore more Wise features beyond offline video saving, see also:
- [Wise basics](/manual/olares/wise/basics.md): For general usage of the application.
- [Subscribe and manage feeds](/manual/olares/wise/subscribe.md): If you wish to follow YouTube channels via RSS.
- [Manage cookies for Wise](/manual/olares/wise/manage-cookies.md): For detailed cookie management configurations.

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Some files were not shown because too many files have changed in this diff Show More