Compare commits
31 Commits
feat/env_s
...
cli/fix/ig
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
986e75c75a | ||
|
|
5a5d00d910 | ||
|
|
7de7ff989c | ||
|
|
1a1fcfac89 | ||
|
|
452a6f2e78 | ||
|
|
2d1abe8965 | ||
|
|
744b4a3666 | ||
|
|
eb61923584 | ||
|
|
991d4e1dce | ||
|
|
5f513e2155 | ||
|
|
7c3246dd9b | ||
|
|
362c6f1cde | ||
|
|
d2e685abd8 | ||
|
|
ae2b6b1353 | ||
|
|
8cbdc32725 | ||
|
|
c696be90e6 | ||
|
|
9487ef8862 | ||
|
|
a982a1568a | ||
|
|
60d445f92a | ||
|
|
839133fc27 | ||
|
|
2e6405ae1b | ||
|
|
5109ad001c | ||
|
|
4d850312f0 | ||
|
|
1265ca929c | ||
|
|
6302bee05d | ||
|
|
2838d95f25 | ||
|
|
d3d7fc372d | ||
|
|
2bc061fcd8 | ||
|
|
f14cc982b5 | ||
|
|
dd727befe7 | ||
|
|
83561bf1b7 |
10
.github/workflows/release-daemon.yaml
vendored
10
.github/workflows/release-daemon.yaml
vendored
@@ -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
|
||||
|
||||
@@ -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.9.3
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /bin/sh
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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())
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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{})
|
||||
}
|
||||
@@ -11,6 +11,13 @@ func AssertPodReady(pod *corev1.Pod) error {
|
||||
return fmt.Errorf("pod is nil")
|
||||
}
|
||||
|
||||
// simply ignore finished pod
|
||||
// it can be seen as just an execution record, not a running pod
|
||||
// and the deployment will create a new replica
|
||||
if pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed {
|
||||
return nil
|
||||
}
|
||||
|
||||
podKey := fmt.Sprintf("%s/%s", pod.Namespace, pod.Name)
|
||||
if pod.DeletionTimestamp != nil {
|
||||
return fmt.Errorf("pod %s is terminating", podKey)
|
||||
|
||||
@@ -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
229
docs/.vitepress/one.en.ts
Normal 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
229
docs/.vitepress/one.zh.ts
Normal 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",
|
||||
},
|
||||
]
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
},
|
||||
});
|
||||
107
docs/developer/develop/distribute-index.md
Normal file
107
docs/developer/develop/distribute-index.md
Normal 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).
|
||||
@@ -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.
|
||||
72
docs/developer/develop/manage-apps.md
Normal file
72
docs/developer/develop/manage-apps.md
Normal 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.
|
||||
72
docs/developer/develop/mw-integrate-with-es.md
Normal file
72
docs/developer/develop/mw-integrate-with-es.md
Normal 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`. |
|
||||
72
docs/developer/develop/mw-integrate-with-mariadb.md
Normal file
72
docs/developer/develop/mw-integrate-with-mariadb.md
Normal 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`. |
|
||||
73
docs/developer/develop/mw-integrate-with-minio.md
Normal file
73
docs/developer/develop/mw-integrate-with-minio.md
Normal 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`. |
|
||||
76
docs/developer/develop/mw-integrate-with-mongodb.md
Normal file
76
docs/developer/develop/mw-integrate-with-mongodb.md
Normal 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`. |
|
||||
72
docs/developer/develop/mw-integrate-with-mysql.md
Normal file
72
docs/developer/develop/mw-integrate-with-mysql.md
Normal 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`. |
|
||||
81
docs/developer/develop/mw-integrate-with-pg.md
Normal file
81
docs/developer/develop/mw-integrate-with-pg.md
Normal 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`|
|
||||
91
docs/developer/develop/mw-integrate-with-rabbitmq.md
Normal file
91
docs/developer/develop/mw-integrate-with-rabbitmq.md
Normal 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`. |
|
||||
65
docs/developer/develop/mw-integrate-with-redis.md
Normal file
65
docs/developer/develop/mw-integrate-with-redis.md
Normal 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`. |
|
||||
64
docs/developer/develop/mw-overview.md
Normal file
64
docs/developer/develop/mw-overview.md
Normal 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) | — |
|
||||
69
docs/developer/develop/mw-view-es-data.md
Normal file
69
docs/developer/develop/mw-view-es-data.md
Normal 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.
|
||||
|
||||
{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.
|
||||
67
docs/developer/develop/mw-view-grafana-data.md
Normal file
67
docs/developer/develop/mw-view-grafana-data.md
Normal 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.
|
||||
:::
|
||||
{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.
|
||||
{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.
|
||||
{width=90%}
|
||||
91
docs/developer/develop/mw-view-mariadb-data.md
Normal file
91
docs/developer/develop/mw-view-mariadb-data.md
Normal 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.
|
||||
|
||||
{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.
|
||||
44
docs/developer/develop/mw-view-minio-data.md
Normal file
44
docs/developer/develop/mw-view-minio-data.md
Normal 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.
|
||||
|
||||
{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.
|
||||
83
docs/developer/develop/mw-view-mongodb-data.md
Normal file
83
docs/developer/develop/mw-view-mongodb-data.md
Normal 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.
|
||||
|
||||
{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.
|
||||
85
docs/developer/develop/mw-view-mysql-data.md
Normal file
85
docs/developer/develop/mw-view-mysql-data.md
Normal 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.
|
||||
|
||||
{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.
|
||||
76
docs/developer/develop/mw-view-nats-data.md
Normal file
76
docs/developer/develop/mw-view-nats-data.md
Normal 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.
|
||||
|
||||
{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> |
|
||||
188
docs/developer/develop/mw-view-otel-data.md
Normal file
188
docs/developer/develop/mw-view-otel-data.md
Normal 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 1–5 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.
|
||||

|
||||
77
docs/developer/develop/mw-view-pg-data.md
Normal file
77
docs/developer/develop/mw-view-pg-data.md
Normal 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.
|
||||
|
||||
{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.
|
||||
44
docs/developer/develop/mw-view-rabbitmq-data.md
Normal file
44
docs/developer/develop/mw-view-rabbitmq-data.md
Normal 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.
|
||||
|
||||
{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.
|
||||
75
docs/developer/develop/mw-view-redis-data.md
Normal file
75
docs/developer/develop/mw-view-redis-data.md
Normal 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.
|
||||
|
||||
{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.
|
||||
234
docs/developer/develop/paid-apps.md
Normal file
234
docs/developer/develop/paid-apps.md
Normal 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`.
|
||||
{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:
|
||||
{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.
|
||||
46
docs/developer/develop/promote-apps.md
Normal file
46
docs/developer/develop/promote-apps.md
Normal 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`.
|
||||
89
docs/developer/develop/submit-apps.md
Normal file
89
docs/developer/develop/submit-apps.md
Normal 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.
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -60,8 +60,8 @@ You can switch market sources to speed up browsing, searching, and downloading,
|
||||
|
||||
1. Open **Market**, and navigate to **My Olares** > **Settings** from the left sidebar.
|
||||
2. Under **Market sources**, click **Add source** to add a new app source. The current official sources include:
|
||||
* Global: `https://appstore-server-prod.bttcdn.com`
|
||||
* China: `https://appstore-china-server-prod.api.jointerminus.cn`
|
||||
* Global: `https://api.olares.com/market`
|
||||
* China: `https://api.olares.cn/market`
|
||||
3. Fill in the source name, URL, and description as required, then click **Confirm** to finish adding.
|
||||
4. In the source list, select the target source to activate it. Wait for about 10 minutes for the store page to switch.
|
||||
|
||||
@@ -76,11 +76,8 @@ To install an application from Market:
|
||||
1. Open Market from Dock or Launchpad.
|
||||
2. Navigate to the app you want, and click **Get**.
|
||||
3. When the operation button changes to **Install**, click it to start the installation.
|
||||
4. Once finished, the button will change to **Open**.
|
||||
|
||||
:::tip
|
||||
To cancel an installation, hover over the operation button and click **Cancel** when it appears.
|
||||
:::
|
||||
4. (Optional) To cancel the installation, click <i class="material-symbols-outlined">close_small</i> on the right of the button.
|
||||
5. Once finished, the button will change to **Open**.
|
||||
|
||||
### Install shared and reference applications
|
||||
|
||||
@@ -140,6 +137,12 @@ To uninstall an application from Market:
|
||||
1. Open Market from Dock or Launchpad.
|
||||
2. In the left sidebar, navigate to the **My Olares** section. Use the source tabs to filter and find your installed applications.
|
||||
3. Click <i class="material-symbols-outlined">keyboard_arrow_down</i> next to the application's operation button, and select **Uninstall**.
|
||||
4. In the **Uninstall** window, select **Also remove all local data** as needed:
|
||||
|
||||
- If you select this option, app data (in the Data directory) and cache data (in the Cache directory) will be permanently deleted and cannot be recovered.
|
||||
- If you do not select this option, app data (in the Data directory) will be retained and can be restored upon re-installation, while cache data (in the Cache directory) will be permanently deleted and cannot be recovered.
|
||||
|
||||
5. Click **Confirm**.
|
||||
|
||||
### Uninstall from Launchpad
|
||||
|
||||
@@ -147,7 +150,12 @@ You can also uninstall an application from LaunchPad:
|
||||
|
||||
1. In Olares, click the Launchpad icon in the Dock to display all installed apps.
|
||||
2. Click and hold the app icon until all the apps begin to jiggle.
|
||||
3. Click <i class="material-symbols-outlined">cancel</i> on the app icon to uninstall it.
|
||||
3. In the **Uninstall** window, select **Also remove all local data** as needed:
|
||||
|
||||
- If you select this option, app data (in the Data directory) and cache data (in the Cache directory) will be permanently deleted and cannot be recovered.
|
||||
- If you do not select this option, app data (in the Data directory) will be retained and can be restored upon re-installation, while cache data (in the Cache directory) will be permanently deleted and cannot be recovered.
|
||||
|
||||
4. Click **Confirm**.
|
||||
|
||||
## View app operation logs
|
||||
|
||||
@@ -172,13 +180,13 @@ If you can't install an application, it might be due to:
|
||||
|
||||
When you try to resume an application in Olares and receive an error message about insufficient CPU, memory, or disk, it means the system's current available resources cannot support running the application. You need to close other applications to free up resources.
|
||||
|
||||
#### Why was my application stopped?
|
||||
### Why was my application stopped?
|
||||
|
||||
An application is usually stopped due to one of the following reasons:
|
||||
* **System auto stop**: To ensure Olares's stability, the Olares system monitors resource usage. If an application consumes excessive resources (such as CPU or memory) causing a high system load, the system might automatically pause it to prevent the entire device from freezing or crashing.
|
||||
* **Manual stop**: You or an administrator might have manually stopped the application previously, and the application has not been resumed yet.
|
||||
|
||||
#### Why can't I resume my application now?
|
||||
### Why can't I resume my application now?
|
||||
|
||||
Starting an application requires reserving a specific amount of computing resources. If other running applications are already occupying most of the resources, the remaining free resources are not enough for the application you want to start.
|
||||
|
||||
@@ -190,11 +198,11 @@ Therefore, when you try to resume the application, you might encounter the follo
|
||||
| Insufficient disk space | The hard drive is full, and new data cannot be written. |
|
||||
| Available CPU/memory insufficient | There are some resources left, they are less than the minimum<br> amount required by this specific application. |
|
||||
|
||||
#### How to resume my application?
|
||||
### How to resume my application?
|
||||
|
||||
To resume your application, you need to free up some occupied resources:
|
||||
|
||||
1. Go to **Settings** > **Application** to view the applications that are currently **Running**.
|
||||
2. Find applications that you do not need to use right now.
|
||||
3. Stop each application by clicking the app and clicking <i class="material-symbols-outlined">toggle_on</i> to toggle off **Running**.
|
||||
3. Stop each application by clicking the app and clicking **Stop**.
|
||||
4. After resources are freed, go back to your target application and click **Resume** again.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
description: Connect Olares with different services and manage cookies for web access and subscriptions — all from Integrations in Settings.
|
||||
description: Centralize third-party service connections, SMB network storage credentials, and website cookies in Olares. Extend file storage capabilities and ensure smooth access to subscriptions and automated tasks.
|
||||
---
|
||||
|
||||
# Manage integrations in Settings
|
||||
@@ -9,6 +9,7 @@ The **Integrations** section in **Settings** centralizes all services and authen
|
||||
|
||||
- **Connect services** – Link cloud storage services such as **Olares Space**, **AWS S3**, and **Tencent Cloud COS** to extend Olares’ storage capabilities.
|
||||
- **Manage cookies** – Store, import, and delete website cookies to support Olares’ access to subscription-based or restricted content.
|
||||
- **Manage SMB accounts** – Store and manage usernames and passwords for SMB network shares, making it easier to reference them when mounting SMB shares in Files.
|
||||
|
||||
## View and manage connected services
|
||||
|
||||
@@ -65,14 +66,22 @@ When a cookie expires, the system will highlight it in red.
|
||||
Expired or missing cookies may cause some subscription or web automation tasks to fail. It’s recommended to check and update cookies periodically.
|
||||
:::
|
||||
|
||||
## Manage SMB accounts
|
||||
|
||||
SMB account management allows you to centrally store usernames and passwords for accessing SMB network shares. You can view, add, or delete accounts here for easy reference when mounting SMB shares in Files.
|
||||
|
||||
1. To view SMB accounts, go to **Settings** > **Integration** > **SMB account management**. All saved SMB accounts are listed.
|
||||
2. To add an SMB account:
|
||||
|
||||
a. In **SMB account management**, click **Add account**.
|
||||
|
||||
b. In the **Add account** window, enter the username and password required to access the SMB share.
|
||||
|
||||
c. Click **Confirm**. The information is saved and displayed as a new record in the SMB account list.
|
||||
|
||||
3. To delete an account, click <i class="material-symbols-outlined">delete</i> on the right of the account record, and then click **Confirm**. The account and its credentials are removed.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
:::tip Use SMB accounts to mount shares
|
||||
- SMB credentials are stored locally and are not uploaded to the cloud. It is recommended to periodically check and update saved credentials to keep them in sync with the server.
|
||||
- Saved SMB accounts do not automatically mount shared folders, and you cannot select them directly in Files. To mount an SMB share, manually enter the server address along with the username and password saved here in Files. For more information, see [Mount SMB shares](../files/mount-SMB.md).
|
||||
:::
|
||||
|
||||
@@ -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">
|
||||
|
||||
95
docs/one/access-olares-via-vpn.md
Normal file
95
docs/one/access-olares-via-vpn.md
Normal 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.
|
||||
|
||||

|
||||
</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**.
|
||||
|
||||

|
||||
</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.
|
||||
109
docs/one/access-terminal-ssh.md
Normal file
109
docs/one/access-terminal-ssh.md
Normal 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**.
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||
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**.
|
||||

|
||||
|
||||
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
182
docs/one/ace-step.md
Normal 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".
|
||||

|
||||
|
||||
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.
|
||||
{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.
|
||||
{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.
|
||||
|
||||
{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.
|
||||
|
||||
{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.
|
||||
|
||||
{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.
|
||||
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
136
docs/one/backup-resotre.md
Normal file
136
docs/one/backup-resotre.md
Normal 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. |
|
||||
|
||||

|
||||
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. |
|
||||
|
||||
{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. |
|
||||
|
||||
{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
124
docs/one/comfyui.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
:::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.
|
||||

|
||||
:::tip Initialization time
|
||||
The initial startup typically takes 10–20 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**.
|
||||

|
||||
|
||||
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.
|
||||
:::
|
||||

|
||||
|
||||
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**.
|
||||

|
||||
|
||||
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.
|
||||
:::
|
||||
{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
|
||||
```
|
||||

|
||||
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)
|
||||
141
docs/one/connect-two-olares-one.md
Normal file
141
docs/one/connect-two-olares-one.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||
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.
|
||||
65
docs/one/create-drive.md
Normal file
65
docs/one/create-drive.md
Normal file
@@ -0,0 +1,65 @@
|
||||
---
|
||||
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
|
||||
|
||||
Click to download the [ISO image for Olares One](https://cdn.olares.com/one/olares.iso). The file `olares.iso` will be saved 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.
|
||||
|
||||

|
||||
|
||||
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
110
docs/one/customize.md
Normal 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.
|
||||
|
||||
{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.
|
||||
|
||||

|
||||
|
||||
Open Profile from the Dock to start editing. The editor has four tabs: **Header**, **Social**, **Blocks**, and **Appearance**.
|
||||
|
||||
{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.
|
||||
|
||||
{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.
|
||||
|
||||
{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.
|
||||
|
||||
{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.
|
||||
|
||||
{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.
|
||||
|
||||
{width=95%}
|
||||
142
docs/one/dashboard.md
Normal file
142
docs/one/dashboard.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
You are on the **Overview** page by default.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
3. To view exactly which folders are taking up space, click **Occupancy analysis** in the top right corner.
|
||||
|
||||

|
||||
|
||||
This view lists every file system, helping you see exactly where your storage is being allocated.
|
||||
|
||||
{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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
:::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.
|
||||
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||

|
||||
|
||||
## 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
280
docs/one/deerflow.md
Normal 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".
|
||||

|
||||
|
||||
2. Click **Get**, then **Install**, and wait for installation to complete.
|
||||
|
||||
3. Repeat the same steps to install "DeerFlow".
|
||||

|
||||
|
||||
## 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.
|
||||

|
||||
|
||||
### Get the endpoint
|
||||
|
||||
1. On the same settings page, click **Set up endpoint**.
|
||||
2. Copy the address for later use.
|
||||
|
||||

|
||||
|
||||
### 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**.
|
||||
|
||||

|
||||
|
||||
|
||||
## 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.
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||

|
||||
|
||||
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**.
|
||||

|
||||
|
||||
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
|
||||
```
|
||||

|
||||
|
||||
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**.
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||
Once the process is complete, a detailed analysis report will be displayed.
|
||||

|
||||
|
||||
To audit the sources and steps taken, click the **Activities** tab.
|
||||

|
||||
|
||||
### 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.
|
||||

|
||||
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.
|
||||

|
||||
|
||||
### 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
260
docs/one/deploy.md
Normal 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**.
|
||||

|
||||
|
||||
### 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
|
||||

|
||||
|
||||
### 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 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**.
|
||||
{width=90%}
|
||||
|
||||
You can check Files later to verify the mounted paths.
|
||||
{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.
|
||||
{width=90%}
|
||||
|
||||
If your app needs Postgres or Redis, enable it under **Instance Specifications**.
|
||||
{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.
|
||||

|
||||
|
||||
## 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.
|
||||

|
||||
|
||||
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`.
|
||||

|
||||
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.
|
||||
:::
|
||||

|
||||
|
||||
### 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.
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
65
docs/one/dual-boot-dual-drive.md
Normal file
65
docs/one/dual-boot-dual-drive.md
Normal 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)
|
||||
154
docs/one/dual-boot-single-drive.md
Normal file
154
docs/one/dual-boot-single-drive.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||
## 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.
|
||||

|
||||
2. Enter the one-time password and click **Continue**.
|
||||
|
||||

|
||||
3. Select the system language.
|
||||
|
||||

|
||||
4. Select a reverse proxy node that is geographically closest to your location.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
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
51
docs/one/egpu.md
Normal 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**.
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||
## 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.
|
||||
161
docs/one/expand-storage-external-ssd.md
Normal file
161
docs/one/expand-storage-external-ssd.md
Normal 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`.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||

|
||||
|
||||
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)
|
||||
157
docs/one/expand-storage-internal-ssd.md
Normal file
157
docs/one/expand-storage-internal-ssd.md
Normal 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.
|
||||
|
||||

|
||||
</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).
|
||||
37
docs/one/expand-storage-usb-drive.md
Normal file
37
docs/one/expand-storage-usb-drive.md
Normal 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
44
docs/one/factory-reset.md
Normal 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.
|
||||

|
||||
|
||||
5. Enter your local LarePass lock screen password and tap **Confirm**.
|
||||

|
||||
|
||||
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
266
docs/one/faq.md
Normal 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 Kimi‑K2–level model could run on Olares One by mid‑2026.
|
||||
|
||||
### Can local AI models access the internet for research?
|
||||
Yes. We support several applications that enable this. For example:
|
||||
* **Perplexica**: An open‑source alternative to Perplexity. It retrieves the latest information using SearxNG and analyzes it with a local LLM.
|
||||
* **DeerFlow**: An open‑source 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 UI‑based 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 multi‑user 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 cluster‑level 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 open‑source solutions like Mail‑in‑a‑Box, Mailserver, and Mailcow. However, self‑hosted 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 built‑in 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
179
docs/one/files.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||

|
||||
|
||||
2. In the left sidebar, select the directory where you want to upload files. For example, **Documents**.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
:::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.
|
||||
|
||||

|
||||
|
||||
- To edit the text file:
|
||||
|
||||
1. Double-click it.
|
||||
|
||||

|
||||
|
||||
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>.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||
2. Select **Drive** as the search scope.
|
||||
|
||||

|
||||
|
||||
3. In the **Search files** field, enter the keywords related to the file you're looking for. For example, `txt`. The results are listed.
|
||||
|
||||

|
||||
|
||||
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
131
docs/one/first-boot.md
Normal 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.
|
||||
{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**.
|
||||
{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.
|
||||
|
||||

|
||||
|
||||
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
103
docs/one/gpu.md
Normal 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 high‑end 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.
|
||||
|
||||
{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.
|
||||
|
||||
{width=85%}
|
||||
|
||||
### App exclusive
|
||||
|
||||
Use **App exclusive** mode to dedicate a GPU entirely to one high-demand application.
|
||||
|
||||
{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.
|
||||
|
||||
{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
35
docs/one/index.md
Normal 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).
|
||||
113
docs/one/install-nvidia-driver.md
Normal file
113
docs/one/install-nvidia-driver.md
Normal 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 card,Windows
|
||||
---
|
||||
|
||||
# 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".
|
||||
|
||||
{width=70%}
|
||||
|
||||
## Step 2: Download the driver
|
||||
|
||||
1. Go to the official [NVIDIA Drivers Download](https://www.nvidia.com/en-us/drivers/) page.
|
||||
|
||||

|
||||
|
||||
2. In the search field, enter `GeForce RTX 5090`. A list of matching products are displayed.
|
||||
|
||||

|
||||
|
||||
3. Select the driver that matches your Windows version. For example, Windows 11.
|
||||
|
||||

|
||||
|
||||
4. Click **Find**.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
6. Click **Download**. The installer file (.`exe`) is automatically saved to your computer.
|
||||
|
||||

|
||||
|
||||
## Step 3: Install the driver
|
||||
|
||||
1. Double-click the downloaded `.exe` file to start the installer.
|
||||
|
||||
{width=65%}
|
||||
|
||||
2. **System Check**:
|
||||
|
||||
a. Select **NVIDIA Graphics Driver**. NVIDIA App is optional.
|
||||
|
||||
b. Click **AGREE AND CONTINUE**.
|
||||
|
||||
{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.
|
||||
|
||||
{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.
|
||||
:::
|
||||
|
||||
{width=65%}
|
||||
|
||||
5. When the installer window displays **NVIDIA Installer has finished**, click **CLOSE**.
|
||||
|
||||
{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
75
docs/one/market.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
2. Find the target app "Jellyfin" by browsing by category or using **Search** from the left sidebar.
|
||||
|
||||

|
||||
|
||||
3. Click **Get**, and then click **Install**.
|
||||
|
||||

|
||||
|
||||
:::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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||
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**.
|
||||
|
||||

|
||||
|
||||
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
92
docs/one/open-webui.md
Normal 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".
|
||||

|
||||
|
||||
2. Click **Get**, then **Install**, and wait for installation to complete.
|
||||
|
||||
3. Repeat the same steps to install "Open WebUI".
|
||||

|
||||
|
||||
## 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.
|
||||

|
||||
:::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.
|
||||

|
||||
|
||||
</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.
|
||||

|
||||
|
||||
</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.
|
||||

|
||||
|
||||
## 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)
|
||||
96
docs/one/redeem-membership.md
Normal file
96
docs/one/redeem-membership.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
4. Scan the QR code on the computer screen and tap **Confirm**.
|
||||
|
||||
Now you have logged in to Olares Space using your Olares ID.
|
||||
|
||||

|
||||
|
||||
## 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**.
|
||||
|
||||

|
||||
|
||||
3. In the **Add email** window, enter the email address used for your Kickstarter order.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||
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
102
docs/one/space.md
Normal 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**.
|
||||
|
||||

|
||||
|
||||
2. Tap <i class="material-symbols-outlined">add</i> in the top right corner.
|
||||
|
||||

|
||||
|
||||
3. Tap **Space** from the list.
|
||||
|
||||

|
||||
|
||||
When completed, your Olares Space account is linked to your physical device, and the Olares Space account is displayed in the **Integration** list.
|
||||
|
||||

|
||||
|
||||
## Step 2. Log in to Olares Space
|
||||
|
||||
Access the Olares Space dashboard via a web browser.
|
||||
|
||||
1. Go to https://space.olares.com/.
|
||||
|
||||

|
||||
|
||||
2. Log in to Olares Space:
|
||||
|
||||
a. In the LarePass app, go to **Settings**, and then tap the scan icon.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||
-->
|
||||
## 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**.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
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
46
docs/one/spec.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
| 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> |
|
||||
271
docs/one/steam-direct-play.md
Normal file
271
docs/one/steam-direct-play.md
Normal 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**.
|
||||

|
||||
|
||||
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**.
|
||||

|
||||
|
||||
2. The Steam client will automatically begin downloading and installing.
|
||||

|
||||

|
||||
|
||||
3. When installation completes, the Steam login screen appears. Sign in with your Steam account.
|
||||

|
||||
|
||||
::: 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.
|
||||

|
||||
:::
|
||||
|
||||
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.
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||
2. Click the Terminal icon next to **steam-headless** to access the container's shell.
|
||||

|
||||
|
||||
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)
|
||||
203
docs/one/steam-stream.md
Normal file
203
docs/one/steam-stream.md
Normal file
@@ -0,0 +1,203 @@
|
||||
---
|
||||
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 Olares One 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**.
|
||||

|
||||
|
||||
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**.
|
||||

|
||||
|
||||
2. The Steam client will automatically begin downloading and installing.
|
||||

|
||||

|
||||
|
||||
3. When installation completes, the Steam login screen appears. Sign in with your Steam account.
|
||||

|
||||
|
||||
::: 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.
|
||||
|
||||
### 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 HTTPS with your `.local` address. Either format works (dots or hyphens in the hostname):
|
||||
|
||||
```plain
|
||||
https://139ebc4f0.<your Olares ID>.olares.local:47990
|
||||
https://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.
|
||||

|
||||
5. Click the **PIN** tab. The page will now wait for a pairing PIN.
|
||||

|
||||
|
||||
### 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.
|
||||

|
||||
|
||||
### 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.
|
||||

|
||||
|
||||
3. Click **Send**.
|
||||
4. Upon success, you will see a confirmation message, and the lock icon in Moonlight will disappear.
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||
3. Steam **Big Picture Mode** will launch. Select a game from your library and start playing.
|
||||
|
||||
## FAQs
|
||||
|
||||
### Why can't I access the Sunshine Web UI using the `.local` address?
|
||||
|
||||
Olares supports `.local` addresses with the HTTP protocol for most services. The Sunshine Web UI is different because it requires HTTPS to secure local communication. If you use `http://` with your `.local` URL, the Sunshine page will not load.
|
||||
|
||||
To fix this, use `https://` instead of `http://` in your browser's address bar (for example, `https://139ebc4f0.<your Olares ID>.olares.local:47990`).
|
||||
|
||||
### 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**.
|
||||

|
||||
- **On the Steam console page**: Go to **Applications** > **Settings** > **Display**.
|
||||

|
||||
|
||||
### 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.
|
||||

|
||||
|
||||
### Where are my downloaded games stored?
|
||||
|
||||
You can check the downloaded games in the Files app. By default, games are saved in:
|
||||
|
||||
```plain
|
||||
/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**.
|
||||

|
||||
|
||||
3. In the confirmation prompt, enter `steamheadless` and click **Confirm**.
|
||||
{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: `https://139ebc4f0.<your Olares ID>.olares.local:47990`.
|
||||
2. Log in with your current username and password.
|
||||
3. Go to the **Change Password** tab.
|
||||

|
||||
|
||||
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
54
docs/one/update.md
Normal 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**.
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||
## 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
173
docs/one/vault.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||
{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.
|
||||
|
||||
{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.
|
||||
|
||||
{width=50%}
|
||||
|
||||
4. Select **WIFI Password** from the category, and then click **Confirm**.
|
||||
|
||||
{width=50%}
|
||||
|
||||
The details panel opens on the right. It displays the default fields relevant to the category you selected.
|
||||
|
||||
{width=50%}
|
||||
|
||||
5. Fill in details in the fields.
|
||||
|
||||
{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>.
|
||||
|
||||
{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.
|
||||
|
||||
{width=50%}
|
||||
|
||||
The item is marked with a star in the **All vaults** panel.
|
||||
|
||||
{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.
|
||||
|
||||
{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>
|
||||
{width=50%}
|
||||
{width=50%}-->
|
||||
193
docs/one/windows.md
Normal file
193
docs/one/windows.md
Normal 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".
|
||||

|
||||
|
||||
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`.
|
||||
|
||||
{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.
|
||||
|
||||
{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.
|
||||

|
||||
|
||||
#### 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
|
||||
```
|
||||
|
||||

|
||||
|
||||
c. Click **Add**.
|
||||
|
||||
4. Connect to the Windows VM.
|
||||
|
||||
a. Double-click your saved PC entry, or click **⋯**, then choose **Connect**.
|
||||
{width=90%}
|
||||
|
||||
b. When prompted, enter the **Username** and **Password** you created earlier.
|
||||
{width=90%}
|
||||
|
||||
c. If a security warning appears, click **Continue**.
|
||||
{width=90%}
|
||||
|
||||
You are now connected to your Windows VM via RDP.
|
||||

|
||||
|
||||
## 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.
|
||||
{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**.
|
||||

|
||||
|
||||
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
77
docs/one/wise-download.md
Normal 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.
|
||||
{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.
|
||||
{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 |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user