seo: bring meta descriptions into Bing's range, and add IndexNow

Bing Webmaster Tools flags meta descriptions under roughly 90-100
characters. It counts characters, so most Chinese, Japanese and Korean
pages failed even when the text read fine.

- Hand-written descriptions for the key site pages in 11 languages:
  home, pricing, support, team, the blog index and its categories. Plus
  16 docs pages whose text is too short to extend from.
- scripts/fit-meta-descriptions.mjs runs after both builds (v3/build.sh,
  deploy.sh and the docs workflow). It brings every other description to
  120-160 characters, using the page's opening sentences.
- Category descriptions now resolve for the transliterated zh/ja/ko
  slugs. Before, those pages only ever showed the generic text.
- IndexNow: the key file ships with the site from v3/public, and
  scripts/indexnow.mjs submits the live sitemaps. After deploying, each
  workflow submits its own half: the site or the docs.
- Translate the bodies of the Spanish team page and the German support
  page, which were still in English.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rustdesk
2026-10-14 17:07:55 +08:00
co-authored by Claude Opus 5.5
parent 70338dc058
commit 1ad15e22b7
75 changed files with 537 additions and 182 deletions
+6
View File
@@ -38,3 +38,9 @@ jobs:
./build.sh
scp x ${{ secrets.NAME }}@${{ secrets.HOST }}:/tmp/
ssh ${{ secrets.NAME }}@${{ secrets.HOST }} "sudo tar xzf /tmp/x -C /var/www/html/v3 && /bin/rm /tmp/x && sudo chown www-data:www-data /var/www/html/v3 -R"
# Ask Bing to recrawl the site's pages now. The site is already live, so
# a failure here is reported but does not fail the deploy.
- name: IndexNow
continue-on-error: true
run: node scripts/indexnow.mjs site
+15
View File
@@ -23,6 +23,12 @@ jobs:
with:
hugo-version: '0.147.8'
# For scripts/fit-meta-descriptions.mjs, run after the Hugo build.
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Add SSH key to agent
run: |
mkdir -p ~/.ssh
@@ -36,6 +42,15 @@ jobs:
- name: Build
run: |
hugo --minify
# Bing flags meta descriptions outside ~120-160 characters; see the script.
node scripts/fit-meta-descriptions.mjs public
cd public; tar czf x *
scp x ${{ secrets.NAME }}@${{ secrets.HOST }}:/tmp/
ssh ${{ secrets.NAME }}@${{ secrets.HOST }} "sudo rm -rf /var/www/html/rustdesk.com/docs/* && sudo tar xzf /tmp/x -C /var/www/html/rustdesk.com/docs/ && /bin/rm /tmp/x && sudo chown www-data:www-data /var/www/html/rustdesk.com/docs/ -R"
# Ask Bing to recrawl the docs now. The docs are already live, so a
# failure here is reported but does not fail the deploy. The key file
# ships with the site (Deploy-web), so that must have run once first.
- name: IndexNow
continue-on-error: true
run: node scripts/indexnow.mjs docs
+1 -1
View File
@@ -1,7 +1,7 @@
---
title: Windows
weight: 4
description: "RustDesk のWindowsに関するドキュメントです。インストール、設定、展開、トラブルシューティングのガイドを参照できます。"
description: "Windows 版 RustDesk のインストールと展開ガイドです。IT 管理者向けに、クライアントの初期設定、MSI パッケージによる一括配布、サイレントインストールのオプション、ポータブル版で管理者権限を得る方法まで、社内展開に必要な手順を解説します。"
keywords: ["rustdesk windows", "rustdesk windows install", "rustdesk msi", "rustdesk silent install", "rustdesk portable elevation", "rustdesk windows deployment"]
---
+1 -1
View File
@@ -1,7 +1,7 @@
---
title: Windows
weight: 4
description: "Documentação do RustDesk sobre Windows. Consulte guias de instalação, configuração, implantação e solução de problemas."
description: "Instale e implante o RustDesk no Windows: configuração do cliente, pacote MSI para distribuição em massa, instalação silenciosa e elevação na versão portátil."
keywords: ["rustdesk windows", "rustdesk windows install", "rustdesk msi", "rustdesk silent install", "rustdesk portable elevation", "rustdesk windows deployment"]
---
+1 -1
View File
@@ -1,7 +1,7 @@
---
title: Windows
weight: 4
description: "Documentație RustDesk pentru Windows. Găsiți ghiduri de instalare, configurare, implementare și depanare."
description: "Instalați RustDesk pe Windows: configurarea clientului, pachet MSI pentru distribuire în masă, instalare silențioasă și drepturi de admin în modul portabil."
keywords: ["rustdesk windows", "rustdesk windows install", "rustdesk msi", "rustdesk silent install", "rustdesk portable elevation", "rustdesk windows deployment"]
---
+1 -1
View File
@@ -1,7 +1,7 @@
---
title: Windows
weight: 4
description: "RustDesk 的Windows文档,提供安装、配置、部署和故障排查指南。"
description: "在 Windows 上安装和部署 RustDesk 的完整指南:客户端初始设置、使用 MSI 安装包向大量电脑批量分发、静默安装参数与常用选项,以及便携版如何获取管理员权限,帮助 IT 团队在企业内快速推广 RustDesk 远程桌面,省去逐台手动安装。"
keywords: ["rustdesk windows", "rustdesk windows install", "rustdesk msi", "rustdesk silent install", "rustdesk portable elevation", "rustdesk windows deployment"]
---
+1 -1
View File
@@ -1,7 +1,7 @@
---
title: Windows
weight: 4
description: "RustDesk 的Windows文檔,提供安裝、設定、部署與疑難排解指南。"
description: "在 Windows 上安裝與部署 RustDesk 的完整指南:用戶端初始設定、使用 MSI 安裝套件向大量電腦派送、靜默安裝參數與常用選項,以及可攜版如何取得管理員權限,協助 IT 團隊在企業內快速推廣 RustDesk 遠端桌面,省去逐台手動安裝。"
keywords: ["rustdesk windows", "rustdesk windows install", "rustdesk msi", "rustdesk silent install", "rustdesk portable elevation", "rustdesk windows deployment"]
---
+1 -1
View File
@@ -3,7 +3,7 @@ title: 開発
weight: 8
pre: "<b>3. </b>"
chapter: true
description: "RustDesk の開発に関するドキュメントです。インストール、設定、展開、トラブルシューティングのガイドを参照できます。"
description: "RustDesk のコントリビューター向け開発ドキュメントです。Linux、Windows、macOS でソースコードから RustDesk をビルドする手順、必要な依存関係、よくあるビルドエラーの対処法、プロジェクトへの貢献に役立つ情報をまとめています。"
keywords: ["rustdesk development", "build rustdesk", "rustdesk contributor docs", "rustdesk linux build", "rustdesk windows build", "rustdesk macos build"]
---
+1 -1
View File
@@ -3,7 +3,7 @@ title: Dezvoltare
weight: 8
pre: "<b>3. </b>"
chapter: true
description: "Documentație RustDesk pentru Dezvoltare. Găsiți ghiduri de instalare, configurare, implementare și depanare."
description: "Ghiduri pentru contributorii RustDesk: cum compilați RustDesk din sursă pe Linux, Windows și macOS, ce dependențe vă trebuie și cum rezolvați erorile de build."
keywords: ["rustdesk development", "build rustdesk", "rustdesk contributor docs", "rustdesk linux build", "rustdesk windows build", "rustdesk macos build"]
---
+1 -1
View File
@@ -3,7 +3,7 @@ title: 开发
weight: 8
pre: "<b>3. </b>"
chapter: true
description: "RustDesk 的开发文档,提供安装、配置、部署和故障排查指南。"
description: "面向 RustDesk 贡献者的完整开发文档:介绍如何在 Linux、Windows 和 macOS 上从源码编译 RustDesk,需要准备的依赖库与工具链,常见编译问题的排查方法,以及参与这个开源远程桌面项目、提交代码和反馈问题的入门信息。"
keywords: ["rustdesk development", "build rustdesk", "rustdesk contributor docs", "rustdesk linux build", "rustdesk windows build", "rustdesk macos build"]
---
+1 -1
View File
@@ -3,7 +3,7 @@ title: 開發
weight: 8
pre: "<b>3. </b>"
chapter: true
description: "RustDesk 的開發文檔,提供安裝、設定、部署與疑難排解指南。"
description: "面向 RustDesk 貢獻者的開發文件:介紹如何在 Linux、Windows 與 macOS 上從原始碼編譯 RustDesk、需要準備的相依套件與工具鏈、常見編譯問題的排解方式,以及參與這個開源遠端桌面專案、提交程式碼與回報問題的入門資訊。"
keywords: ["rustdesk development", "build rustdesk", "rustdesk contributor docs", "rustdesk linux build", "rustdesk windows build", "rustdesk macos build"]
---
@@ -2,7 +2,7 @@
title: 自建服务器开源版
weight: 100
pre: "<b>2.1. </b>"
description: "RustDesk 的自建服务器开源版文档,提供安装、配置、部署和故障排查指南。"
description: "RustDesk Server OSS 是免费开源的自建服务器版本。本文介绍它包含哪些组件、何时选择开源版而非专业版,以及如何用 Docker 或直接在 Linux 上安装运行 ID 服务器(hbbs)与中继服务器(hbbr),搭建属于自己的远程桌面服务。"
keywords: ["rustdesk server oss", "rustdesk open source server", "self-hosted rustdesk server", "rustdesk hbbs", "rustdesk hbbr", "rustdesk docker", "rustdesk server install", "rustdesk relay server", "rustdesk id server", "rustdesk community self-hosting"]
---
@@ -2,7 +2,7 @@
title: RustDesk Server OSS
weight: 100
pre: "<b>2.1. </b>"
description: "RustDesk 的RustDesk Server OSS文檔,提供安裝、設定、部署與疑難排解指南。"
description: "RustDesk Server OSS 是免費開源的自架伺服器版本。本文說明它包含哪些元件、何時選擇開源版而非專業版,以及如何用 Docker 或直接在 Linux 上安裝執行 ID 伺服器(hbbs)和中繼伺服器(hbbr),架設屬於自己的遠端桌面服務。"
keywords: ["rustdesk server oss", "rustdesk open source server", "self-hosted rustdesk server", "rustdesk hbbs", "rustdesk hbbr", "rustdesk docker", "rustdesk server install", "rustdesk relay server", "rustdesk id server", "rustdesk community self-hosting"]
---
@@ -1,7 +1,7 @@
---
title: 監査ログ
weight: 19
description: "RustDesk Server Pro の Web コンソールで監査ログを使用し、接続、ファイル転送、コンソール操作、アラームイベントを確認します。"
description: "RustDesk Server Pro の Web コンソールで監査ログを使う方法です。接続履歴、ファイル転送、コンソール操作、アラームイベントを確認し、いつ誰がどの端末にアクセスしたかを追跡して、セキュリティ監査やトラブル調査に役立てられます。"
keywords: ["rustdesk audit logs", "rustdesk server pro logs", "rustdesk connection logs", "rustdesk file transfer logs", "rustdesk alarm logs", "rustdesk console audit"]
---
@@ -1,7 +1,7 @@
---
title: 审计日志
weight: 19
description: "在 RustDesk Server Pro Web 控制台中使用审计日志,查看连接、文件传输、控制台操作和风险异常报警事件。"
description: "介绍如何在 RustDesk Server Pro 的 Web 控制台中使用审计日志:按时间和设备查看连接记录、文件传输、控制台操作和风险异常报警事件,追踪谁在何时访问了哪台设备、做了哪些操作,便于企业开展安全审计、事后追溯与日常问题排查。"
keywords: ["rustdesk audit logs", "rustdesk server pro logs", "rustdesk connection logs", "rustdesk file transfer logs", "rustdesk alarm logs", "rustdesk console audit"]
---
@@ -1,7 +1,7 @@
---
title: 稽核日誌
weight: 19
description: "在 RustDesk Server Pro Web 主控台中使用稽核日誌,檢視連線、檔案傳輸、主控台操作和風險異常警報事件。"
description: "介紹如何在 RustDesk Server Pro 的 Web 主控台中使用稽核日誌:依時間與裝置檢視連線紀錄、檔案傳輸、主控台操作與風險異常警報事件,追蹤誰在何時存取了哪台裝置、做了哪些操作,方便企業進行安全稽核、事後追溯與日常問題排查。"
keywords: ["rustdesk audit logs", "rustdesk server pro logs", "rustdesk connection logs", "rustdesk file transfer logs", "rustdesk alarm logs", "rustdesk console audit"]
---
@@ -1,7 +1,7 @@
---
title: OIDC
weight: 16
description: "RustDesk 的OIDC文档,提供安装、配置、部署和故障排查指南。"
description: "在 RustDesk Server Pro 中配置 OpenID Connect(OIDC)单点登录,让用户使用 Google、Okta、Azure、GitHub、GitLab 等身份提供商的账号登录,并说明回调地址、客户端 ID 与密钥等关键设置。"
keywords: ["rustdesk oidc", "rustdesk openid connect", "rustdesk sso", "rustdesk azure login", "rustdesk okta login", "rustdesk github login"]
---
@@ -1,7 +1,7 @@
---
title: OIDC
weight: 16
description: "RustDesk 的OIDC文檔,提供安裝、設定、部署與疑難排解指南。"
description: "在 RustDesk Server Pro 中設定 OpenID Connect(OIDC)單一登入,讓使用者以 Google、Okta、Azure、GitHub、GitLab 等身分提供者的帳號登入,並說明回呼網址、用戶端 ID 與密鑰等關鍵設定。"
keywords: ["rustdesk oidc", "rustdesk openid connect", "rustdesk sso", "rustdesk azure login", "rustdesk okta login", "rustdesk github login"]
---
+2
View File
@@ -1,6 +1,8 @@
#!/usr/bin/env bash
rm -rf public/*
hugo --minify
# Bing flags meta descriptions outside ~120-160 characters; see the script.
node scripts/fit-meta-descriptions.mjs public
cd public; tar czf x *
scp x ot:/tmp/
ssh ot "sudo rm -rf /var/www/html/rustdesk.com/docs/* && sudo tar xzf /tmp/x -C /var/www/html/rustdesk.com/docs/ && /bin/rm /tmp/x && sudo chown www-data:www-data /var/www/html/rustdesk.com/docs/ -R"
+225
View File
@@ -0,0 +1,225 @@
#!/usr/bin/env node
/**
* Brings every page's meta description into 120-160 characters, after the
* site is built. Used by both builds: the Hugo docs (public/) and the Astro
* site (v3/dist/).
*
* node scripts/fit-meta-descriptions.mjs <built-site-dir> [--check]
*
* Why after the build: Bing Webmaster Tools flags descriptions that are too
* short (in practice anything under roughly 90 characters; it asks for
* 150-160) and it counts characters, so most Chinese, Japanese and Korean
* pages fail even when they read fine. Hand-written descriptions stay the
* source: this only steps in when one is out of range, so fixing the front
* matter or page metadata is always the better fix.
*
* - Too short: append the page's own opening sentences, taken from its
* <article> (or <main>), until the text reaches the range.
* - Too long: cut at the last sentence end that fits, else at a clause or
* word boundary with an ellipsis.
*
* og:description and twitter:description follow when they carried the same
* text. --check reports without writing; --diff also prints each change.
*/
import { readdir, readFile, writeFile, lstat } from "node:fs/promises";
import path from "node:path";
const MIN = 120;
const MAX = 160;
const [root, flag] = process.argv.slice(2);
if (!root) {
console.error("usage: fit-meta-descriptions.mjs <built-site-dir> [--check]");
process.exit(2);
}
const DIFF = flag === "--diff";
const CHECK = flag === "--check" || DIFF;
/** Characters as Bing counts them: code points, not UTF-16 units. */
const len = (s) => [...s].length;
const cut = (s, n) => [...s].slice(0, n).join("");
const CJK = /[\u3000-\u303f\u3040-\u30ff\u3400-\u9fff\uac00-\ud7af\uf900-\ufaff\uff00-\uffef]/;
// Chinese and Japanese run sentences together; Korean spaces them like English.
const UNSPACED = /[\u3000-\u303f\u3040-\u30ff\u3400-\u9fff\uf900-\ufaff\uff00-\uffef]/;
const SENTENCE_END = /[.!?。!?]$/;
const decode = (s) =>
s
.replace(/&#(\d+);/g, (_, n) => String.fromCodePoint(+n))
.replace(/&#x([0-9a-f]+);/gi, (_, n) => String.fromCodePoint(parseInt(n, 16)))
.replace(/&quot;/g, '"')
.replace(/&#39;|&apos;/g, "'")
.replace(/&lt;/g, "<")
.replace(/&gt;/g, ">")
.replace(/&nbsp;/g, " ")
.replace(/&amp;/g, "&");
const encode = (s) =>
s.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
const clean = (s) =>
decode(s.replace(/<[^>]+>/g, " "))
.replace(/\s+/g, " ")
.replace(/\s+([.,;:!?。,、;:!?))])/g, "$1") // "see <a>SMTP</a>." leaves "SMTP ."
.trim();
/** The page's own prose: paragraphs of the first <article>, else <main>. */
function paragraphs(html) {
const body =
html.match(/<article[\s>][\s\S]*?<\/article>/)?.[0] ??
html.match(/<main[\s>][\s\S]*?<\/main>/)?.[0] ??
"";
const prose = body.replace(
/<(script|style|pre|table|nav|header|footer|aside|figure|svg)[\s>][\s\S]*?<\/\1>/g,
" ",
);
// The opening paragraphs summarise; deeper ones are steps and caveats.
return [...prose.matchAll(/<p[\s>][\s\S]*?<\/p>/g)]
.slice(0, 8)
.map((m) => clean(m[0]))
.filter((p) => !/['"]\s*\+|\{\{|\$\{/.test(p)) // template residue
.filter((p) => !/·/.test(p) || len(p) > 80) // "Jul 3 · RustDesk Team · 5 min read"
.filter((p) => (CJK.test(p) ? len(p) >= 15 : len(p) >= 40));
}
// A full stop ends a sentence only before whitespace, so "18.04" and "1.2.0"
// stay whole.
const sentences = (text) =>
text
.split(/(?<=[.!?]["'”’))]?)\s+|(?<=[。!?])/)
.map((s) => s.trim())
.filter(Boolean);
/** Worth quoting: prose, not a command, a link or a lead-in to a list. */
const quotable = (s) =>
SENTENCE_END.test(s) &&
(UNSPACED.test(s) ? len(s) >= 10 : len(s) >= 25) &&
!/https?:|www\.|[`$<>{}=|\\]|\.\/|--|\b\w+\.(sh|exe|msi|yml|toml|json)\b/i.test(s) &&
!/[::]$/.test(s) &&
!/^\d+[.)、]/.test(s) &&
!/following|below|as follows|以下|下面|下列|次の|다음|folgende|suivant|siguiente|seguinte|seguente|poniższ|următo/i.test(s);
/** Close enough to say the same thing twice. */
function overlaps(a, b) {
const grams = (s) => {
const t = s.toLowerCase().replace(/\s+/g, "");
const out = new Set();
for (let i = 0; i < t.length - 2; i++) out.add(t.slice(i, i + 3));
return out;
};
const A = grams(a);
const B = grams(b);
if (!A.size || !B.size) return false;
let shared = 0;
for (const g of B) if (A.has(g)) shared++;
return shared / B.size > 0.5;
}
function shorten(text) {
if (len(text) <= MAX) return text;
const head = cut(text, MAX);
// A whole sentence that still clears the minimum reads best.
const ends = [...head.matchAll(/[.!?。!?](?=\s|$)|[。!?]/g)].map((m) => m.index + 1);
const sentenceEnd = ends.filter((i) => len(head.slice(0, i)) >= MIN).at(-1);
if (sentenceEnd) return head.slice(0, sentenceEnd).trim();
// Otherwise a clause or a word, with an ellipsis.
const room = cut(text, MAX - 1);
const breaks = [...room.matchAll(/[,;:,、;:]|\s/g)].map((m) => m.index);
const at = breaks.filter((i) => len(room.slice(0, i)) >= MIN - 20).at(-1);
const body = (at ? room.slice(0, at) : room).replace(/[\s,;:,、;:—–-]+$/, "");
return `${body}…`;
}
function extend(text, paras) {
let out = text.trim();
let overflow = null;
const join = (a, b) => {
const ended = SENTENCE_END.test(a) ? a : `${a}${UNSPACED.test(a.at(-1)) ? "。" : "."}`;
// No space after a full-width stop, or between two Chinese/Japanese sentences.
return /[。!?]$/.test(ended) || (UNSPACED.test(ended.at(-1)) && UNSPACED.test(b[0]))
? `${ended}${b}`
: `${ended} ${b}`;
};
// Whole sentences first, in page order. One that would overflow is skipped
// for the next, so the result ends on a full stop wherever possible.
for (const s of paras.flatMap(sentences).filter(quotable)) {
if (len(out) >= MIN) break;
if (overlaps(out, s) || overlaps(s, out)) continue;
const joined = join(out, s);
if (len(joined) <= MAX) out = joined;
else overflow ??= joined;
}
if (len(out) < MIN && overflow) out = shorten(overflow);
return out;
}
export function fit(description, html) {
const d = description.replace(/\s+/g, " ").trim();
if (len(d) > MAX) return shorten(d);
if (len(d) < MIN) return extend(d, paragraphs(html));
return d;
}
// ------------------------------------------------------------------ the walk
const META = /<meta\s[^>]*>/gi;
const attr = (tag, name) =>
tag.match(new RegExp(`\\s${name}=(?:"([^"]*)"|'([^']*)'|([^\\s>]+))`, "i"))?.slice(1).find((v) => v !== undefined);
function setContent(tag, value) {
const encoded = `content="${encode(value)}"`;
return tag.replace(/\scontent=(?:"[^"]*"|'[^']*'|[^\s>]+)/i, ` ${encoded}`);
}
async function* htmlFiles(dir) {
for (const entry of await readdir(dir)) {
const p = path.join(dir, entry);
const st = await lstat(p);
if (st.isSymbolicLink()) continue; // web client, self-host docs: not ours to rewrite
if (st.isDirectory()) yield* htmlFiles(p);
else if (entry.endsWith(".html")) yield p;
}
}
const stats = { pages: 0, inRange: 0, extended: 0, shortened: 0, stillShort: [], missing: 0 };
for await (const file of htmlFiles(root)) {
const html = await readFile(file, "utf8");
if (/http-equiv=["']?refresh/i.test(html)) continue; // redirect stubs
const tags = html.match(META) ?? [];
const main = tags.find((t) => (attr(t, "name") ?? "").toLowerCase() === "description");
if (!main) {
stats.missing++;
continue;
}
stats.pages++;
const before = decode(attr(main, "content") ?? "");
const after = fit(before, html);
if (after === before.replace(/\s+/g, " ").trim()) {
if (len(after) >= MIN && len(after) <= MAX) stats.inRange++;
else stats.stillShort.push(`${len(after)} ${path.relative(root, file)}`);
continue;
}
if (len(after) > len(before)) stats.extended++;
else stats.shortened++;
if (len(after) < MIN) stats.stillShort.push(`${len(after)} ${path.relative(root, file)}`);
if (DIFF) console.log(`\n${path.relative(root, file)}\n - ${len(before)} ${before}\n + ${len(after)} ${after}`);
if (CHECK) continue;
const updated = html.replace(META, (tag) => {
const key = (attr(tag, "name") ?? attr(tag, "property") ?? "").toLowerCase();
if (!["description", "og:description", "twitter:description"].includes(key)) return tag;
if (key !== "description" && decode(attr(tag, "content") ?? "") !== before) return tag;
return setContent(tag, after);
});
await writeFile(file, updated);
}
console.log(
`[meta] ${stats.pages} pages: ${stats.inRange} already ${MIN}-${MAX}, ` +
`${stats.extended} extended, ${stats.shortened} shortened, ` +
`${stats.stillShort.length} still out of range, ${stats.missing} without a description` +
(CHECK ? " (check only, nothing written)" : ""),
);
for (const line of stats.stillShort) console.log(` ${line}`);
+77
View File
@@ -0,0 +1,77 @@
#!/usr/bin/env node
/**
* Tells Bing (and the other IndexNow engines) to recrawl rustdesk.com now,
* instead of waiting for its own schedule. ChatGPT search leans on Bing's
* index, so this is how a fix reaches AI answers quickly.
*
* node scripts/indexnow.mjs # the site and the docs
* node scripts/indexnow.mjs site # rustdesk.com only (v3)
* node scripts/indexnow.mjs docs # rustdesk.com/docs only (Hugo)
*
* Run it AFTER a deploy: the engines verify the request by fetching the key
* file from the live site, and judge the pages as they are served. The URL
* list is read from the live sitemaps for the same reason. The two deploy
* workflows run it as their last step, each for its own half.
*
* The key is the name of the one file v3/public/<32 hex>.txt, published at
* https://rustdesk.com/<key>.txt. One key covers the whole host, docs
* included. Google does not take part in IndexNow.
*/
import { readdir } from "node:fs/promises";
import path from "node:path";
const ROOT = path.resolve(import.meta.dirname, "..");
const ORIGIN = "https://rustdesk.com";
const SITEMAPS = {
site: `${ORIGIN}/sitemap-index.xml`,
docs: `${ORIGIN}/docs/sitemap.xml`,
};
const which = process.argv[2] ?? "all";
if (!["all", "site", "docs"].includes(which)) {
console.error("usage: indexnow.mjs [all|site|docs]");
process.exit(2);
}
const keyFile = (await readdir(path.join(ROOT, "v3/public"))).find((f) => /^[0-9a-f]{32}\.txt$/.test(f));
if (!keyFile) {
console.error("[indexnow] no v3/public/<key>.txt found");
process.exit(1);
}
const key = keyFile.replace(/\.txt$/, "");
const keyLocation = `${ORIGIN}/${keyFile}`;
const live = await fetch(keyLocation).then((r) => (r.ok ? r.text() : null)).catch(() => null);
if (live?.trim() !== key) {
console.error(`[indexnow] ${keyLocation} is not live yet. Deploy the site first.`);
process.exit(1);
}
/** Every <loc> under a sitemap, following sitemap indexes. */
async function urlsOf(sitemap) {
const xml = await fetch(sitemap).then((r) => r.text());
const locs = [...xml.matchAll(/<loc>\s*([^<\s]+)\s*<\/loc>/g)].map((m) => m[1]);
if (!/<sitemapindex/.test(xml)) return locs;
// One at a time: a burst of parallel fetches trips Cloudflare's timeouts.
const out = [];
for (const loc of locs) out.push(...(await urlsOf(loc)));
return out;
}
const sources = which === "all" ? Object.values(SITEMAPS) : [SITEMAPS[which]];
const found = [];
for (const s of sources) found.push(...(await urlsOf(s)));
const urlList = [...new Set(found)].filter((u) => u.startsWith(`${ORIGIN}/`));
// One request takes up to 10,000 URLs.
for (let i = 0; i < urlList.length; i += 10000) {
const batch = urlList.slice(i, i + 10000);
const res = await fetch("https://api.indexnow.org/indexnow", {
method: "POST",
headers: { "Content-Type": "application/json; charset=utf-8" },
body: JSON.stringify({ host: new URL(ORIGIN).host, key, keyLocation, urlList: batch }),
});
// 200 and 202 both mean accepted; 202 is "key validation pending".
console.log(`[indexnow] ${batch.length} URLs (${which}) submitted: HTTP ${res.status}`);
if (!res.ok) process.exit(1);
}
+2
View File
@@ -14,5 +14,7 @@
ln -s ../currencies.json
ln -s ../v2/web
cp -rf ../zh ./
# Bing flags meta descriptions outside ~120-160 characters; see the script.
node ../../scripts/fit-meta-descriptions.mjs .
tar czf x *
mv x ..
@@ -0,0 +1 @@
de7a94336aa4d69a4e65220729f78691
+23 -10
View File
@@ -3,6 +3,8 @@ import { DEFAULT_LOCALE, type Lang } from '@/i18n';
export interface BlogCopy {
title: string;
subtitle: string;
/** Meta description of the blog index: 120-160 characters (Bing). */
description: string;
page: string;
newerPosts: string;
olderPosts: string;
@@ -21,66 +23,77 @@ const copy: Record<Lang, BlogCopy> = {
en: {
title: 'The Blog',
subtitle: 'News, tutorials, resources, and product updates from RustDesk.',
description: 'The RustDesk blog: news and tutorials for the open-source remote desktop, plus comparisons, self-hosted deployment, security, pricing and troubleshooting.',
page: 'Page', newerPosts: 'Newer posts', olderPosts: 'Older posts', updated: 'Updated', minRead: 'min read',
backToBlog: 'Back to Blog', relatedPosts: 'Related Posts', viewAllPosts: 'View All Posts', category: 'Category',
tag: 'Tag', share: 'Share', newPost: 'New',
},
de: {
title: 'Der Blog', subtitle: 'Neuigkeiten, Anleitungen, Ressourcen und Produktupdates von RustDesk.', page: 'Seite',
title: 'Der Blog', subtitle: 'Neuigkeiten, Anleitungen, Ressourcen und Produktupdates von RustDesk.',
description: 'Der RustDesk-Blog: Neues und Anleitungen zum Open-Source-Remote-Desktop, Vergleiche, selbst gehostete Bereitstellung, Sicherheit, Preise und Fehlerbehebung.', page: 'Seite',
newerPosts: 'Neuere Beiträge', olderPosts: 'Ältere Beiträge', updated: 'Aktualisiert', minRead: 'Min. Lesezeit',
backToBlog: 'Zurück zum Blog', relatedPosts: 'Ähnliche Beiträge', viewAllPosts: 'Alle Beiträge anzeigen',
category: 'Kategorie', tag: 'Tag', share: 'Teilen', newPost: 'Neu',
},
es: {
title: 'El blog', subtitle: 'Noticias, tutoriales, recursos y actualizaciones de RustDesk.', page: 'Página',
title: 'El blog', subtitle: 'Noticias, tutoriales, recursos y actualizaciones de RustDesk.',
description: 'Blog de RustDesk: novedades y tutoriales del escritorio remoto de código abierto, comparativas, autoalojamiento, seguridad, precios y solución de problemas.', page: 'Página',
newerPosts: 'Publicaciones más recientes', olderPosts: 'Publicaciones anteriores', updated: 'Actualizado',
minRead: 'min de lectura', backToBlog: 'Volver al blog', relatedPosts: 'Publicaciones relacionadas',
viewAllPosts: 'Ver todas las publicaciones', category: 'Categoría', tag: 'Etiqueta', share: 'Compartir',
newPost: 'Nuevo',
},
fr: {
title: 'Le blog', subtitle: 'Actualités, tutoriels, ressources et mises à jour de RustDesk.', page: 'Page',
title: 'Le blog', subtitle: 'Actualités, tutoriels, ressources et mises à jour de RustDesk.',
description: 'Le blog RustDesk : actualités et tutoriels sur le bureau à distance open source, comparatifs, déploiement auto-hébergé, sécurité, tarifs et dépannage.', page: 'Page',
newerPosts: 'Articles plus récents', olderPosts: 'Articles plus anciens', updated: 'Mis à jour', minRead: 'min de lecture',
backToBlog: 'Retour au blog', relatedPosts: 'Articles associés', viewAllPosts: 'Voir tous les articles',
category: 'Catégorie', tag: 'Étiquette', share: 'Partager', newPost: 'Nouveau',
},
it: {
title: 'Il blog', subtitle: 'Notizie, tutorial, risorse e aggiornamenti di RustDesk.', page: 'Pagina',
title: 'Il blog', subtitle: 'Notizie, tutorial, risorse e aggiornamenti di RustDesk.',
description: 'Blog di RustDesk: novità, tutorial, confronti con TeamViewer e AnyDesk, guide self-hosted, sicurezza, licenze e soluzioni per il desktop remoto open source.', page: 'Pagina',
newerPosts: 'Articoli più recenti', olderPosts: 'Articoli meno recenti', updated: 'Aggiornato', minRead: 'min di lettura',
backToBlog: 'Torna al blog', relatedPosts: 'Articoli correlati', viewAllPosts: 'Vedi tutti gli articoli',
category: 'Categoria', tag: 'Etichetta', share: 'Condividi', newPost: 'Novità',
},
ja: {
title: 'ブログ', subtitle: 'RustDesk のニュース、チュートリアル、資料、製品アップデート。', page: 'ページ',
title: 'ブログ', subtitle: 'RustDesk のニュース、チュートリアル、資料、製品アップデート。',
description: 'RustDesk公式ブログでは、製品ニュースやリリース情報、チュートリアル、TeamViewerやAnyDeskとの比較、セルフホストサーバーの導入ガイド、リモートデスクトップのセキュリティ、ライセンスと料金、トラブルシューティングの記事を掲載。オープンソースのRustDeskの選定や運用に役立ちます。', page: 'ページ',
newerPosts: '新しい記事', olderPosts: '過去の記事', updated: '更新', minRead: '分で読めます', backToBlog: 'ブログに戻る',
relatedPosts: '関連記事', viewAllPosts: 'すべての記事を見る', category: 'カテゴリー', tag: 'タグ', share: '共有',
newPost: '新着',
},
ko: {
title: '블로그', subtitle: 'RustDesk의 뉴스, 튜토리얼, 자료 및 제품 업데이트입니다.', page: '페이지',
title: '블로그', subtitle: 'RustDesk의 뉴스, 튜토리얼, 자료 및 제품 업데이트입니다.',
description: 'RustDesk 공식 블로그입니다. 새 기능과 릴리스 소식, 튜토리얼, TeamViewer 및 AnyDesk 비교, 자체 호스팅 서버 배포 가이드, 보안과 사기 예방, 라이선스와 가격, 문제 해결까지 오픈소스 원격 데스크톱 운영에 필요한 정보를 한곳에 모았습니다.', page: '페이지',
newerPosts: '최신 글', olderPosts: '이전 글', updated: '업데이트', minRead: '분 소요', backToBlog: '블로그로 돌아가기',
relatedPosts: '관련 글', viewAllPosts: '모든 글 보기', category: '카테고리', tag: '태그', share: '공유',
newPost: '새 글',
},
pt: {
title: 'O blog', subtitle: 'Notícias, tutoriais, recursos e atualizações do RustDesk.', page: 'Página',
title: 'O blog', subtitle: 'Notícias, tutoriais, recursos e atualizações do RustDesk.',
description: 'Blog do RustDesk sobre acesso remoto de código aberto: notícias, tutoriais, TeamViewer e AnyDesk comparados, auto-hospedagem, segurança, licenças e soluções.', page: 'Página',
newerPosts: 'Publicações mais recentes', olderPosts: 'Publicações anteriores', updated: 'Atualizado',
minRead: 'min de leitura', backToBlog: 'Voltar ao blog', relatedPosts: 'Publicações relacionadas',
viewAllPosts: 'Ver todas as publicações', category: 'Categoria', tag: 'Etiqueta', share: 'Compartilhar',
newPost: 'Novo',
},
'zh-cn': {
title: '博客', subtitle: 'RustDesk 新闻、教程、资源和产品更新。', page: '第', newerPosts: '较新文章', olderPosts: '较早文章',
title: '博客', subtitle: 'RustDesk 新闻、教程、资源和产品更新。',
description: 'RustDesk 官方博客,汇集产品新闻与功能发布(如 Web 客户端和 Wayland 无人值守访问)、上手教程、与 TeamViewer 和 AnyDesk 等工具的对比、自建服务器部署指南,以及远程桌面安全、许可计费和故障排除文章,帮助你全面了解这款开源软件。', page: '第', newerPosts: '较新文章', olderPosts: '较早文章',
updated: '更新于', minRead: '分钟阅读', backToBlog: '返回博客', relatedPosts: '相关文章', viewAllPosts: '查看所有文章',
category: '分类', tag: '标签', share: '分享', newPost: '最新',
},
'zh-tw': {
title: '部落格', subtitle: 'RustDesk 新聞、教學、資源與產品更新。', page: '第', newerPosts: '較新文章', olderPosts: '較早文章',
title: '部落格', subtitle: 'RustDesk 新聞、教學、資源與產品更新。',
description: 'RustDesk 官方部落格,收錄產品新聞與新功能發布(例如網頁用戶端、Wayland 無人值守存取)、操作教學、與 TeamViewer、AnyDesk 等工具的比較、自架伺服器部署指南,以及遠端桌面資安、授權計費與疑難排解文章,帶你全面認識這套開源軟體。', page: '第', newerPosts: '較新文章', olderPosts: '較早文章',
updated: '更新於', minRead: '分鐘閱讀', backToBlog: '返回部落格', relatedPosts: '相關文章', viewAllPosts: '查看所有文章',
category: '分類', tag: '標籤', share: '分享', newPost: '最新',
},
ar: {
title: 'المدونة', subtitle: 'أخبار RustDesk وشروحاتها ومواردها وتحديثات منتجاتها.', page: 'الصفحة',
title: 'المدونة', subtitle: 'أخبار RustDesk وشروحاتها ومواردها وتحديثات منتجاتها.',
description: 'مدونة RustDesk: أخبار وشروحات ومقارنات مع TeamViewer وAnyDesk، وأدلة نشر الخادم ذاتي الاستضافة، والأمان والترخيص وحل مشكلات سطح المكتب البعيد مفتوح المصدر.', page: 'الصفحة',
newerPosts: 'منشورات أحدث', olderPosts: 'منشورات أقدم', updated: 'حُدّث في', minRead: 'دقائق للقراءة',
backToBlog: 'العودة إلى المدونة', relatedPosts: 'منشورات ذات صلة', viewAllPosts: 'عرض جميع المنشورات',
category: 'الفئة', tag: 'الوسم', share: 'مشاركة', newPost: 'جديد',
+1 -1
View File
@@ -28,7 +28,7 @@ const copy = getBlogCopy(lang);
const metadata = {
title: `${copy.title}${currentPage > 1 ? ` — ${copy.page} ${currentPage}` : ''}`,
description: copy.subtitle,
description: copy.description,
robots: {
index: blogListRobots?.index && currentPage === 1,
follow: blogListRobots?.follow,
@@ -1,6 +1,6 @@
---
import type { InferGetStaticPropsType, GetStaticPaths } from 'astro';
import { blogCategoryRobots, getStaticPathsBlogCategory } from '~/utils/blog';
import { blogCategoryRobots, fetchPosts, getStaticPathsBlogCategory } from '~/utils/blog';
import Layout from '~/layouts/PageLayout.astro';
import BlogList from '~/components/blog/List.astro';
@@ -26,160 +26,174 @@ const categorySlug = String(category.slug ?? '').toLowerCase();
const localizedCategoryDescriptions: Record<Lang, Record<string, string>> = {
en: {
alternatives:
'Evaluate self-hosted and open-source alternatives by deployment model, licensing, security, workflow fit, and migration effort.',
'Articles on replacing TeamViewer, AnyDesk or Chrome Remote Desktop with a self-hosted, open-source remote desktop: licensing, security and migration.',
comparisons:
'Compare RustDesk with remote-access products and protocols using current requirements, explicit trade-offs, and proof-of-concept criteria.',
'Head-to-head remote desktop comparisons of RustDesk, TeamViewer, AnyDesk, ScreenConnect, Splashtop, RDP and VNC: features, security, licensing, self-hosting.',
deployment:
'Plan and operate RustDesk deployments, from server sizing and networking to identity, access control, client rollout, and recovery.',
'Self-hosted RustDesk in practice: large device fleets, unattended access, unknown devices in the console, and whether Server Pro can run offline or air-gapped.',
guides:
'Practical guides for evaluating, configuring, and operating RustDesk across platforms, teams, and deployment models.',
'Practical RustDesk guides for Linux, Android and iOS, MSPs and enterprise IT, plus why teams self-host remote desktop and which free tools suit business use.',
pricing:
'Understand RustDesk licensing, users, managed devices, concurrency, purchase terms, upgrades, and evaluation options.',
'Answers to licensing questions on self-hosted RustDesk Server Pro, such as what counts as a login user or managed device and how mid-term upgrades work.',
security:
'Assess remote-access security, data flows, scams, vulnerabilities, access controls, and deployment hardening without absolute compliance claims.',
'Remote desktop security without the hype: how scams work, how safe AnyDesk and Chrome Remote Desktop are, and what self-hosting can and cannot do for GDPR.',
troubleshooting:
'Diagnose connection, display, configuration, and licensing symptoms with targeted checks and safe escalation paths.',
'Fixes for common remote desktop errors, from RustDesk stuck on waiting for image to TeamViewer and AnyDesk commercial-use flags, with checks to run first.',
},
de: {
alternatives:
'Bewerte selbst gehostete und Open-Source-Alternativen nach Bereitstellungsmodell, Lizenzierung, Sicherheit, Workflow-Fit und Migrationsaufwand.',
'Alternativen zu TeamViewer, AnyDesk und Chrome Remote Desktop: was ein selbst gehosteter Open-Source-Remote-Desktop bei Lizenz, Sicherheit und Umstieg ändert.',
comparisons:
'Vergleiche RustDesk mit Remote-Access-Produkten und -Protokollen anhand aktueller Anforderungen, klarer Abwägungen und Proof-of-Concept-Kriterien.',
'Remote-Desktop-Tools im Vergleich: RustDesk, TeamViewer, AnyDesk, ScreenConnect, Splashtop, RDP und VNC nach Funktionen, Sicherheit, Lizenz und Self-Hosting.',
deployment:
'Plane und betreibe RustDesk-Bereitstellungen, von Server-Größe und Netzwerk bis zu Identität, Zugriffskontrolle, Client-Rollout und Wiederherstellung.',
'Selbst gehostetes RustDesk in der Praxis: große Geräteflotten, unbeaufsichtigter Zugriff, unbekannte Geräte und ob Server Pro offline oder air-gapped läuft.',
guides:
'Praktische Anleitungen zum Bewerten, Konfigurieren und Betreiben von RustDesk auf verschiedenen Plattformen, in Teams und in unterschiedlichen Bereitstellungsmodellen.',
'Praxisanleitungen zu RustDesk unter Linux, Android und iOS, für MSPs und Unternehmens-IT, dazu Gründe fürs Self-Hosting und kostenlose Remote-Desktop-Tools.',
pricing:
'Verstehe RustDesk-Lizenzierung, Nutzer, verwaltete Geräte, Gleichzeitigkeit, Kaufbedingungen, Upgrades und Testoptionen.',
'Lizenzfragen zu RustDesk Server Pro geklärt, etwa was als Benutzer oder verwaltetes Gerät zählt und wie Upgrades und gleichzeitige Verbindungen funktionieren.',
security:
'Beurteile Sicherheit, Datenflüsse, Betrugsversuche, Schwachstellen, Zugriffskontrollen und Härtung für Remote-Zugriffe ohne pauschale Compliance-Behauptungen.',
'Sicherheit beim Fernzugriff ohne Schönfärberei: Betrugsmaschen erkennen, AnyDesk und Chrome Remote Desktop im Check, Self-Hosting und DSGVO nüchtern bewertet.',
troubleshooting:
'Diagnostiziere Verbindungs-, Anzeige-, Konfigurations- und Lizenzsymptome mit gezielten Prüfungen und sicheren Eskalationspfaden.',
'Remote-Desktop-Fehler gezielt beheben, etwa wenn RustDesk bei Waiting for image hängt oder TeamViewer und AnyDesk eine kommerzielle Nutzung melden.',
},
es: {
alternatives:
'Evalúa alternativas autoalojadas y de código abierto por modelo de despliegue, licencias, seguridad, ajuste al flujo de trabajo y esfuerzo de migración.',
'Cómo sustituir TeamViewer, AnyDesk o Chrome Remote Desktop por un escritorio remoto autoalojado y de código abierto: licencias, seguridad y migración.',
comparisons:
'Compara RustDesk con productos y protocolos de acceso remoto usando requisitos actuales, compensaciones explícitas y criterios de prueba de concepto.',
'Comparativas de escritorio remoto entre RustDesk, TeamViewer, AnyDesk, ScreenConnect, Splashtop, RDP y VNC: funciones, seguridad, licencias y autoalojamiento.',
deployment:
'Planifica y opera implementaciones de RustDesk, desde el tamaño del servidor y la red hasta la identidad, el control de acceso, el despliegue de clientes y la recuperación.',
'Despliegue autoalojado de RustDesk: grandes flotas, acceso desatendido, equipos desconocidos y si RustDesk Server Pro puede funcionar sin conexión o aislado.',
guides:
'Guías prácticas para evaluar, configurar y operar RustDesk en distintas plataformas, equipos y modelos de despliegue.',
'Guías de RustDesk para Linux, Android e iOS, MSP y TI corporativa, por qué autoalojar tu escritorio remoto y qué herramientas gratuitas sirven a una empresa.',
pricing:
'Entiende la licencia de RustDesk, usuarios, dispositivos gestionados, concurrencia, condiciones de compra, actualizaciones y opciones de evaluación.',
'Licencias de RustDesk Server Pro: qué cuenta como usuario o dispositivo administrado, conexiones simultáneas y actualizaciones a mitad de suscripción.',
security:
'Evalúa la seguridad del acceso remoto, los flujos de datos, las estafas, las vulnerabilidades, los controles de acceso y el endurecimiento del despliegue sin afirmaciones absolutas de cumplimiento.',
'Seguridad del escritorio remoto sin promesas absolutas: estafas, si AnyDesk y Chrome Remote Desktop son seguros y qué aporta autoalojar frente al RGPD.',
troubleshooting:
'Diagnostica síntomas de conexión, pantalla, configuración y licencias con comprobaciones dirigidas y rutas seguras de escalado.',
'Errores de escritorio remoto resueltos paso a paso, como RustDesk atascado en esperando imagen o el aviso de uso comercial de TeamViewer y AnyDesk.',
},
fr: {
alternatives:
'Évaluez les alternatives auto-hébergées et open source selon le modèle de déploiement, la licence, la sécurité, l’adéquation au flux de travail et l’effort de migration.',
'Alternatives à TeamViewer, AnyDesk et Chrome Remote Desktop : ce que change un bureau à distance open source auto-hébergé en licence, sécurité et migration.',
comparisons:
'Comparez RustDesk avec des produits et protocoles d’accès à distance à l’aide d’exigences actuelles, de compromis explicites et de critères de preuve de concept.',
'Comparatifs de bureau à distance entre RustDesk, TeamViewer, AnyDesk, ScreenConnect, Splashtop, RDP et VNC : fonctions, sécurité, licences, auto-hébergement.',
deployment:
'Planifiez et exploitez des déploiements RustDesk, du dimensionnement des serveurs et du réseau à l’identité, au contrôle d’accès, au déploiement client et à la reprise.',
'Déploiement auto-hébergé de RustDesk : grands parcs, accès sans surveillance, appareils inconnus et Server Pro peut-il fonctionner hors ligne ou isolé ?',
guides:
'Guides pratiques pour évaluer, configurer et exploiter RustDesk sur différentes plateformes, pour diverses équipes et selon plusieurs modèles de déploiement.',
'Guides RustDesk pour Linux, Android et iOS, les MSP et l’IT d’entreprise, plus pourquoi auto-héberger son bureau à distance et quels outils gratuits choisir.',
pricing:
'Comprenez la licence RustDesk, les utilisateurs, les appareils gérés, la concurrence, les conditions d’achat, les mises à niveau et les options d’évaluation.',
'Licences RustDesk Server Pro expliquées, de la notion d’utilisateur et d’appareil géré aux connexions simultanées et à la mise à niveau en cours d’abonnement.',
security:
'Évaluez la sécurité de l’accès à distance, les flux de données, les arnaques, les vulnérabilités, les contrôles d’accès et le durcissement du déploiement sans affirmation de conformité absolue.',
'Sécurité du bureau à distance, sans langue de bois : arnaques, AnyDesk et Chrome Remote Desktop au crible, ce que l’auto-hébergement règle ou non pour le RGPD.',
troubleshooting:
'Diagnostiquez les symptômes de connexion, d’affichage, de configuration et de licence avec des vérifications ciblées et des voies d’escalade sûres.',
'Dépannage pas à pas quand RustDesk reste bloqué sur waiting for image ou que TeamViewer et AnyDesk signalent un usage commercial, avec les bons contrôles.',
},
it: {
alternatives:
'Valuta alternative self-hosted e open source per modello di distribuzione, licenze, sicurezza, aderenza al flusso di lavoro e sforzo di migrazione.',
'Alternative self-hosted e open source a TeamViewer, AnyDesk e Chrome Remote Desktop: come scegliere un desktop remoto per licenze, sicurezza e migrazione.',
comparisons:
'Confronta RustDesk con prodotti e protocolli di accesso remoto usando requisiti attuali, compromessi espliciti e criteri di prova di concetto.',
'RustDesk a confronto con AnyDesk, TeamViewer, ScreenConnect, Splashtop, VNC e RDP: pro e contro reali del desktop remoto open source e self-hosted.',
deployment:
'Pianifica e gestisci distribuzioni RustDesk, dal dimensionamento del server e della rete fino a identità, controllo accessi, rollout dei client e ripristino.',
'Mettere in produzione RustDesk self-hosted: accesso non presidiato, grandi flotte, dispositivi sconosciuti e se Server Pro funziona offline o air-gapped.',
guides:
'Guide pratiche per valutare, configurare e gestire RustDesk su piattaforme, team e modelli di distribuzione diversi.',
'Guide pratiche a RustDesk su Linux, Android e iOS, per aziende con Active Directory e per MSP, e perché scegliere un desktop remoto self-hosted e open source.',
pricing:
'Comprendi la licenza RustDesk, gli utenti, i dispositivi gestiti, la concorrenza, i termini di acquisto, gli upgrade e le opzioni di valutazione.',
'Licenze del desktop remoto self-hosted RustDesk Server Pro spiegate: dispositivi gestiti, utenti, connessioni simultanee e upgrade a metà abbonamento.',
security:
'Valuta sicurezza, flussi di dati, truffe, vulnerabilità, controlli di accesso e hardening del deployment senza affermazioni assolute di conformità.',
'Sicurezza del desktop remoto senza promesse assolute: truffe, AnyDesk e Chrome Remote Desktop sotto esame, GDPR e sovranità dei dati con il self-hosting.',
troubleshooting:
'Diagnostica sintomi di connessione, schermo, configurazione e licenza con controlli mirati e percorsi di escalation sicuri.',
'Soluzioni ai problemi di desktop remoto: RustDesk fermo in attesa dell\'immagine, avvisi di uso commerciale di AnyDesk e TeamViewer e quando chiedere aiuto.',
},
ja: {
alternatives:
'デプロイ形態、ライセンス、セキュリティ、業務フローとの適合性、移行コストでセルフホスト型とオープンソースの代替案を評価します。',
'TeamViewer、AnyDesk、Chrome Remote Desktopの代替を探すための記事集です。導入形態、ライセンス、セキュリティ、業務フローとの相性、移行の手間という観点で、セルフホスト型のオープンソース・リモートデスクトップを評価し、RustDeskで満たせる要件を整理します。',
comparisons:
'最新の要件、明確なトレードオフ、PoC の基準を使って、RustDesk をリモートアクセス製品やプロトコルと比較します。',
'他のリモートアクセス製品やプロトコルとRustDeskを比べる記事です。TeamViewer、AnyDesk、ScreenConnect、RDP、VNCと機能、セキュリティ、ライセンスのトレードオフを整理し、セルフホスト型のオープンソース・リモートデスクトップが合うかをPoCで見極める基準も示します。',
deployment:
'サーバーの規模設計やネットワークから、ID 管理、アクセス制御、クライアント展開、復旧まで RustDesk の導入と運用を計画します。',
guides: 'RustDesk をさまざまなプラットフォーム、チーム、導入形態で評価・設定・運用するための実践ガイドです。',
'オープンソースのリモートデスクトップRustDeskを導入・運用するための記事集です。無人アクセスの設定とクライアント展開、コンソールに見覚えのないデバイスが現れたときの調査、大規模展開の計画、セルフホストのRustDesk Server Proをオフラインやエアギャップ環境で使えるかを解説します。',
guides: '実践ガイドのカテゴリーです。LinuxでのインストールとX11、Waylandの違い、AndroidとiOSのリモート操作でできること、AD/LDAP連携、MSP向けのツール統合、無料のリモートデスクトップ選び、オープンソースのセルフホストへ移る際のコストまで、RustDeskの活用法を紹介します。',
pricing:
'RustDesk のライセンス、ユーザー数、管理デバイス、同時接続、購入条件、アップグレード、評価方法を理解します。',
'料金カテゴリーでは、オープンソースのリモートデスクトップRustDeskのセルフホスト用ライセンスと課金を解説します。管理対象デバイスの数え方、Customized V2でアドホックなデバイスが対象外になる理由、契約途中にユーザーやデバイスを追加したときの日割り計算と反映のタイミングを確認できます。',
security:
'リモートアクセスのセキュリティ、データフロー、詐欺、脆弱性、アクセス制御、導入時の強化策を、断定的な適合性主張なしで評価します。',
troubleshooting: '接続、表示、設定、ライセンスの症状を、的を絞った確認と安全なエスカレーション手順で切り分けます。',
'リモートアクセスの安全性を検証する記事のカテゴリーです。リモートデスクトップ詐欺の見分け方と被害時の対処、AnyDeskとChrome Remote Desktopの暗号化とリスク、セルフホストでデータ主権やGDPRについて解決できることとできないこと、オープンソースのRustDeskの詐欺対策を扱います。',
troubleshooting: 'トラブル解決のための記事をまとめています。RustDeskで接続後に画面が表示されない原因をヘッドレス構成、スリープ、コーデック、ドライバーから切り分けるほか、TeamViewerやAnyDeskで商用利用と判定された際の公式手順と、オープンソースのセルフホスト型リモートデスクトップでの回避策も解説します。',
},
ko: {
alternatives:
'배포 방식, 라이선스, 보안, 업무 흐름 적합성, 마이그레이션 노력 기준으로 자체 호스팅 및 오픈소스 대안을 평가합니다.',
'TeamViewer, AnyDesk, Chrome Remote Desktop을 대체할 자체 호스팅 오픈소스 원격 데스크톱을 찾고 있나요? 라이선스, 보안, 배포 방식, 업무 흐름 적합성, 마이그레이션 부담을 기준으로 RustDesk 같은 대안을 평가하는 방법을 정리했습니다.',
comparisons:
'최신 요구사항, 명확한 트레이드오프, PoC 기준을 사용해 RustDesk를 원격 액세스 제품과 프로토콜과 비교합니다.',
deployment: '서버 규모와 네트워크부터 ID, 접근 제어, 클라이언트 배포, 복구까지 RustDesk 배포와 운영을 계획합니다.',
guides: '다양한 플랫폼, 팀, 배포 모델에서 RustDesk를 평가·구성·운영하는 실용 가이드입니다.',
pricing: 'RustDesk 라이선스, 사용자, 관리 장치, 동시성, 구매 조건, 업그레이드, 평가 옵션을 이해합니다.',
'RustDesk를 AnyDesk, TeamViewer, ScreenConnect, Splashtop, VNC, RDP와 나란히 비교합니다. 자체 호스팅 오픈소스 원격 데스크톱의 장단점, NAT 통과와 코덱, 암호화 차이, PoC로 직접 검증할 기준까지 정리했습니다.',
deployment: '자체 호스팅 RustDesk를 실제 운영 환경에 배포하고 관리하는 방법을 다룹니다. 무인 원격 접속 설정, 대규모 기기 확장 계획, 콘솔의 낯선 기기 점검, RustDesk Server Pro를 오프라인이나 에어갭 환경에서 쓸 수 있는지까지 정리했습니다.',
guides: '리눅스, Android와 iOS, Active Directory를 쓰는 기업, 여러 고객사를 관리하는 MSP 환경에서 RustDesk를 활용하는 실전 가이드 모음입니다. 무료 원격 데스크톱 선택법과 오픈소스 솔루션을 자체 호스팅으로 운영해야 하는 이유도 설명합니다.',
pricing: 'RustDesk 라이선스 가이드입니다. 자체 호스팅 원격 데스크톱 RustDesk Server Pro에서 어떤 기기가 관리 기기로 계산되는지, 로그인 사용자 수와 동시 연결은 어떻게 적용되는지, 구독 도중 업그레이드할 때 요금은 어떻게 정산되는지 정리했습니다.',
security:
'원격 액세스 보안, 데이터 흐름, 사기, 취약점, 접근 제어, 배포 강화 방안을 절대적인 준수 주장 없이 평가합니다.',
troubleshooting: '연결, 화면, 설정, 라이선스 증상을 집중 점검과 안전한 에스컬레이션 경로로 진단합니다.',
'과장 없는 원격 데스크톱 보안 가이드입니다. 원격 접속 사기를 알아채고 피하는 방법, RustDesk의 사기 대응, AnyDesk와 Chrome Remote Desktop의 암호화와 안전성 검토, GDPR과 데이터 주권을 위한 오픈소스 자체 호스팅까지 다룹니다.',
troubleshooting: '원격 데스크톱 연결이 막힐 때 참고할 문제 해결 가이드입니다. RustDesk가 연결 후 이미지 대기 중에 멈출 때 헤드리스, 절전, 코덱, 드라이버 등 원인별 해결법과 AnyDesk, TeamViewer 상업적 사용 감지 경고 대처법, 지원 요청 시점을 안내합니다.',
},
pt: {
alternatives:
'Avalie alternativas auto-hospedadas e de código aberto por modelo de implantação, licenciamento, segurança, aderência ao fluxo de trabalho e esforço de migração.',
'Alternativas auto-hospedadas e de código aberto ao TeamViewer, AnyDesk e Chrome Remote Desktop: licença, segurança, implantação e migração de acesso remoto.',
comparisons:
'Compare o RustDesk com produtos e protocolos de acesso remoto usando requisitos atuais, trocas explícitas e critérios de prova de conceito.',
'RustDesk versus AnyDesk, TeamViewer, ScreenConnect, Splashtop, VNC e RDP: prós e contras da área de trabalho remota auto-hospedada e de código aberto.',
deployment:
'Planeje e opere implantações do RustDesk, do dimensionamento do servidor e da rede até identidade, controle de acesso, implantação de clientes e recuperação.',
'Implantação do RustDesk auto-hospedado: acesso não assistido, grandes frotas, dispositivos desconhecidos no console e se o Server Pro roda offline ou isolado.',
guides:
'Guias práticos para avaliar, configurar e operar o RustDesk em diferentes plataformas, equipes e modelos de implantação.',
'Guias de RustDesk para Linux, Android, iOS, empresas com Active Directory e MSPs, e por que usar uma área de trabalho remota auto-hospedada de código aberto.',
pricing:
'Entenda o licenciamento do RustDesk, usuários, dispositivos gerenciados, concorrência, termos de compra, upgrades e opções de avaliação.',
'Licenciamento do RustDesk Server Pro auto-hospedado: o que conta como dispositivo gerenciado, usuários, conexões simultâneas e upgrade no meio da assinatura.',
security:
'Avalie a segurança de acesso remoto, fluxos de dados, golpes, vulnerabilidades, controles de acesso e endurecimento da implantação sem alegações absolutas de conformidade.',
'Segurança em área de trabalho remota sem promessas absolutas: golpes de acesso remoto, análises do AnyDesk e Chrome Remote Desktop e GDPR com auto-hospedagem.',
troubleshooting:
'Diagnostique sintomas de conexão, tela, configuração e licenciamento com verificações direcionadas e caminhos seguros de escalonamento.',
'Soluções para falhas de área de trabalho remota: RustDesk aguardando imagem, alertas de uso comercial do AnyDesk e TeamViewer e quando escalar o problema.',
},
'zh-cn': {
alternatives: '按部署模式、许可、安全性、工作流匹配度和迁移成本评估自托管与开源替代方案。',
comparisons: '使用当前需求、明确取舍和概念验证标准,将 RustDesk 与远程访问产品和协议进行比较。',
deployment: '规划和运行 RustDesk 部署,从服务器规格和网络,到身份、访问控制、客户端推广和恢复。',
guides: '用于在不同平台、团队和部署模式下评估、配置和运行 RustDesk 的实用指南。',
pricing: '了解 RustDesk 的许可、用户、受管设备、并发、购买条款、升级和评估选项。',
security: '在不做绝对合规断言的前提下,评估远程访问安全、数据流、诈骗、漏洞、访问控制和部署加固。',
troubleshooting: '通过有针对性的检查和安全的升级路径,诊断连接、显示、配置和许可问题。',
alternatives: '寻找 TeamViewer、AnyDesk 或 Chrome Remote Desktop 替代品的文章合集,帮助团队从部署方式、许可条款、安全性、日常工作流契合度和迁移成本出发,评估真正由自己掌控的开源、自建远程桌面方案,并说明 RustDesk 能满足哪些需求、又有哪些需要权衡。',
comparisons: '对比评测栏目:将 RustDesk 与 TeamViewer、AnyDesk、ScreenConnect、Splashtop 等产品,以及 RDP、VNC 等协议逐一比较,从功能、系统支持、安全性到授权模式讲清取舍,并给出概念验证阶段的评估要点,帮你判断开源、自建的远程桌面是否适合自己。',
deployment: '本分类聚焦开源远程桌面 RustDesk 的部署与运维:如何配置无人值守访问并分发预配置客户端,控制台出现陌生设备时应先排查什么,大规模设备群如何规划,以及自建的 RustDesk Server Pro 能否离线或在完全气隙隔离的环境中运行。',
guides: '实用指南栏目,帮你在不同平台和团队规模下用好 RustDesk:Linux 安装包选择与 X11、Wayland 的差异,Android 和 iOS 远程控制的真实能力,企业 AD/LDAP 集成与 MSP 工具整合,以及挑选免费商用远程桌面、转向开源自建方案前需要算清的账。',
pricing: '这里收录开源远程桌面 RustDesk 的许可与计费文章:解释受管设备如何计数、临时连接的设备在 Customized V2 套餐中为何不计入,订阅期内增加用户或设备时如何按比例计费、新额度如何生效(可在 Web 控制台刷新后立即启用),帮你在购买自建服务器许可证之前把成本算清楚。',
release: 'RustDesk 版本发布与开发动态:介绍 Wayland 下无人值守远程访问等新功能,以及我们如何让 Flutter 3.24 继续在 Windows 7 上运行,帮助你及时了解这款开源远程桌面软件及自建服务器部署的最新进展、兼容性变化与升级要点。',
security: '远程访问安全专题:教你识别远程桌面诈骗的危险信号以及中招后的应对步骤,客观评估 AnyDesk 与 Chrome Remote Desktop 的加密机制和风险,说明自建服务器在数据主权与 GDPR 方面能解决什么、不能解决什么,并介绍 RustDesk 这一开源项目的防诈措施。',
troubleshooting: '故障排除文章汇总:分析 RustDesk 连接成功却一直等待图像的常见原因,包括无头主机、休眠、编解码器和驱动程序,并给出相应的修复方法;也讲解 TeamViewer、AnyDesk 被判定为商业用途时的官方申诉流程,以及改用开源、自建远程桌面后如何从根本上避开这类问题。',
},
'zh-tw': {
alternatives: '依部署模式、授權、安全性、工作流程契合度與遷移成本,評估自架與開源替代方案。',
comparisons: '使用當前需求、明確取捨與概念驗證標準,將 RustDesk 與遠端存取產品和協定進行比較。',
deployment: '規劃並營運 RustDesk 部署,從伺服器規模與網路,到身分、存取控制、用戶端推廣與復原。',
guides: '協助在不同平台、團隊與部署模式下評估、設定與營運 RustDesk 的實用指南。',
pricing: '了解 RustDesk 的授權、使用者、受管裝置、同時連線、購買條款、升級與評估選項。',
security: '在不做絕對合規宣稱的前提下,評估遠端存取安全、資料流、詐騙、漏洞、存取控制與部署強化。',
troubleshooting: '透過有針對性的檢查與安全的升級路徑,診斷連線、顯示、設定與授權症狀。',
alternatives: '替代方案分類,專為想離開 TeamViewer、AnyDesk 或 Chrome Remote Desktop 的團隊整理:依部署方式、授權條款、安全性、工作流程契合度與遷移成本,協助你評估可自架、由自己掌控的開源遠端桌面工具,並說明 RustDesk 能滿足哪些需求、又有哪些取捨。',
comparisons: '比較評測分類:將 RustDesk 與 TeamViewer、AnyDesk、ScreenConnect、Splashtop 等產品,以及 RDP、VNC 等協定逐一對照,從功能、作業系統支援、安全性到授權模式說清取捨,並列出概念驗證的評估重點,幫你判斷自架的開源遠端桌面是否合用。',
deployment: '此分類收錄開源遠端桌面 RustDesk 的部署與維運實務:如何設定無人值守存取並派送預先設定的用戶端、主控台出現不明裝置時該先查什麼、大量裝置該怎麼規劃,以及自架的 RustDesk Server Pro 能否離線或在氣隙隔離環境中運作。',
guides: '實用指南合集,幫你在不同平台與團隊規模下用好 RustDesk:Linux 安裝套件怎麼選、X11 與 Wayland 有何差異,Android 與 iOS 遠端控制實際能做到什麼,企業 AD/LDAP 整合與 MSP 工具整併,以及挑選免費商用遠端桌面、改用開源自架方案前該算清的成本。',
pricing: '開源遠端桌面 RustDesk 的授權與計費文章:說明受管理裝置如何計算、臨時連線的裝置在 Customized V2 方案中為何不計入,訂閱期間加購使用者或裝置時如何按比例計費、新額度何時生效(在網頁主控台重新整理即可立即套用),幫你在購買自架伺服器授權前先把帳算清楚。',
release: 'RustDesk 版本發布與開發動態:介紹 Wayland 下無人值守遠端存取等新功能,以及我們如何讓 Flutter 3.24 繼續在 Windows 7 上執行,協助你即時了解這款開源遠端桌面軟體與自架伺服器部署的最新進展、相容性變化與升級重點。',
security: '遠端存取資安專區:教你辨識遠端桌面詐騙的警訊與受騙後的處理步驟,客觀檢視 AnyDesk 與 Chrome Remote Desktop 的加密機制與風險,說明自架伺服器在資料主權與 GDPR 上做得到與做不到的事,並介紹 RustDesk 這個開源專案採取的防詐措施。',
troubleshooting: '疑難排解文章彙整:分析 RustDesk 連線成功卻一直等待影像的常見原因,例如無外接螢幕的主機、休眠、編碼器與驅動程式,並提供對應的修復方法;也說明 TeamViewer、AnyDesk 被判定為商業用途時的官方申訴流程,以及改用開源自架遠端桌面後如何避開這類問題。',
},
ar: {
alternatives:
'قيّم البدائل ذاتية الاستضافة ومفتوحة المصدر حسب نموذج النشر والترخيص والأمان وملاءمة سير العمل وجهد الانتقال.',
'بدائل ذاتية الاستضافة ومفتوحة المصدر لـ TeamViewer وAnyDesk وChrome Remote Desktop، ومعايير اختيار سطح المكتب البعيد حسب الترخيص والأمان والنشر والانتقال.',
comparisons:
'قارن RustDesk بمنتجات وبروتوكولات الوصول عن بُعد باستخدام المتطلبات الحالية والمفاضلات الواضحة ومعايير إثبات المفهوم.',
'مقارنات بين RustDesk وAnyDesk وTeamViewer وScreenConnect وSplashtop وVNC وRDP، توضح مزايا وحدود سطح المكتب البعيد مفتوح المصدر وذاتي الاستضافة ومعايير التجربة.',
deployment:
'خطّط وشغّل عمليات نشر RustDesk، من تحديد حجم الخادم والشبكة إلى الهوية والتحكم في الوصول وتوزيع العملاء والاستعادة.',
guides: 'أدلة عملية لتقييم RustDesk وتهيئته وتشغيله عبر منصات وفرق ونماذج نشر مختلفة.',
pricing: 'افهم ترخيص RustDesk والمستخدمين والأجهزة المُدارة والتزامن وشروط الشراء والترقيات وخيارات التقييم.',
'نشر RustDesk ذاتي الاستضافة: الوصول غير المراقب، والتوسع لأعداد كبيرة من الأجهزة، وفحص الأجهزة المجهولة، وهل يمكن تشغيل RustDesk Server Pro دون اتصال بالإنترنت.',
guides: 'أدلة عملية لـ RustDesk على Linux وAndroid وiOS، وللمؤسسات مع Active Directory ومزودي الخدمات المُدارة، ولماذا تختار سطح مكتب بعيد مفتوح المصدر وذاتي الاستضافة.',
pricing: 'شرح ترخيص RustDesk Server Pro ذاتي الاستضافة: ما الذي يُحتسب جهازًا مُدارًا، وكيف يُعدّ المستخدمون والاتصالات المتزامنة، وكيف تتم الترقية في منتصف الاشتراك.',
security:
'قيّم أمان الوصول عن بُعد وتدفقات البيانات وعمليات الاحتيال والثغرات وضوابط الوصول وتقوية النشر دون ادعاءات امتثال مطلقة.',
troubleshooting: 'شخّص أعراض الاتصال والعرض والتهيئة والترخيص عبر فحوصات محددة ومسارات تصعيد آمنة.',
'أمان سطح المكتب البعيد بلا ادعاءات مطلقة: كيف تكشف عمليات الاحتيال، ومراجعات لأمان AnyDesk وChrome Remote Desktop، وسيادة البيانات وGDPR عبر الاستضافة الذاتية.',
troubleshooting: 'حلول لمشكلات سطح المكتب البعيد: توقف RustDesk عند انتظار الصورة بعد الاتصال، وتنبيهات الاستخدام التجاري في AnyDesk وTeamViewer، ومتى تصعّد المشكلة.',
},
};
// Category slugs are transliterated per language (/zh-cn/category/an1-quan2,
// /ja/category/gaido), but the descriptions above are keyed by the English
// slug, so a direct lookup only ever matched the Latin-script languages.
// Resolve the English key through this category's posts and their English
// translations.
const englishPosts = await fetchPosts('en');
const categoryKey =
categorySlug in localizedCategoryDescriptions.en
? categorySlug
: (page.data
.map((post) => englishPosts.find((en) => en.translationKey === post.translationKey)?.category?.slug)
.find(Boolean) ?? categorySlug);
const categoryDescription =
localizedCategoryDescriptions[lang]?.[categorySlug] ?? localizedCategoryDescriptions.en[categorySlug];
localizedCategoryDescriptions[lang]?.[categoryKey] ?? localizedCategoryDescriptions.en[categoryKey];
const localePaths = (Object.keys(LOCALES) as Lang[]).map((targetLang) => ({
lang: targetLang,
path: getBlogPermalink(targetLang),
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'رست ديسك: سطح المكتب البعيد مفتوح المصدر مع حلول الخادم المستضاف ذاتيًا',
description: 'رست ديسك هو أفضل برنامج سطح المكتب البعيد مفتوح المصدر. بديل آمن لـ TeamViewer و AnyDesk مع خوادم مستضافة ذاتيًا. دعم متعدد المنصات لـ Windows و macOS و Linux و Android.',
description: 'RustDesk برنامج سطح مكتب بعيد مفتوح المصدر مع خادم ذاتي الاستضافة، وبديل لـ TeamViewer وAnyDesk على Windows وmacOS وLinux وAndroid، مع عميل يحمل اسمك وشعارك.',
keywords: 'برنامج سطح المكتب البعيد, الوصول البعيد مفتوح المصدر, سطح المكتب البعيد المستضاف ذاتيًا, بديل TeamViewer, بديل AnyDesk, التحكم عن بعد الآمن, الوصول عن بعد متعدد المنصات, سطح المكتب البعيد المحلي, خادم rustdesk',
ignoreTitleTemplate: true,
};
+1 -1
View File
@@ -9,7 +9,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'تسعير رست ديسك - خطط الخادم المستضاف ذاتيًا',
description:
'اختر خطة رست ديسك المناسبة لمؤسستك. خطة مفتوحة المصدر مجانية متوفرة. خطط احترافية مع ميزات متقدمة للاستخدام التجاري.',
'أسعار RustDesk Server Pro لسطح المكتب البعيد ذاتي الاستضافة: ترخيص سنوي على خادمك وليس اشتراك SaaS. قارن الخطة المجانية مفتوحة المصدر بخطط Pro مع 2FA وSSO.',
keywords:
'تسعير رست ديسك, تسعير سطح المكتب البعيد المستضاف ذاتيًا, تكلفة خادم الوصول عن بعد, خطط سطح المكتب البعيد المتقدمة',
author: 'RustDesk Team',
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'دعم رست ديسك - المساعدة والتوثيق لبرنامج سطح المكتب البعيد',
description: 'احصل على المساعدة في برنامج رست ديسك لسطح المكتب البعيد. اعثر على التوثيق وأدلة استكشاف الأخطاء وموارد الدعم لحلول الوصول عن بعد المستضافة ذاتيًا.',
description: 'دعم RustDesk لسطح المكتب البعيد مفتوح المصدر: أبلغ عن الأخطاء على GitHub، واسأل المجتمع على Discord، ولمستخدمي RustDesk Server Pro ذاتي الاستضافة دعم بالبريد.',
keywords: 'دعم رست ديسك, مساعدة سطح المكتب البعيد, دعم مستضاف ذاتيًا, توثيق الوصول عن بعد, استكشاف أخطاء رست ديسك',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'حول رست ديسك - فريق برنامج سطح المكتب البعيد ومعلومات الشركة',
description: 'تعرّف على فريق رست ديسك ومهمتنا في توفير أفضل برنامج سطح مكتب بعيد مفتوح المصدر. تعرّف على مطورينا ومساهمينا في حل الوصول عن بعد المستضاف ذاتيًا.',
description: 'من نحن: بدأ RustDesk عام 2020 كبديل مفتوح المصدر لـ TeamViewer. تعرّف على قصة برنامج سطح المكتب البعيد ذاتي الاستضافة وفريقه الأساسي ومكتبه في سنغافورة.',
keywords: 'فريق رست ديسك, حول رست ديسك, شركة سطح مكتب بعيد, مطورو مفتوح المصدر, فريق وصول عن بعد مستضاف ذاتيًا',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -4,7 +4,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'RustDesk Careers - Join Our Remote Desktop Software Development Team',
description: 'Join the RustDesk team and help build the future of open-source remote desktop software. Explore career opportunities in remote access technology and self-hosted solutions.',
description: 'Careers at RustDesk: no open positions right now. Check back later, or contribute to the open-source remote desktop project on GitHub in the meantime.',
keywords: 'rustdesk careers, remote desktop jobs, open source software jobs, self-hosted technology careers, remote access development jobs, software engineering positions',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: Open-Source-Fernzugriff mit selbst gehosteten Serverlösungen',
description: 'RustDesk ist die beste Open-Source-Fernzugriffssoftware. Sichere Alternative zu TeamViewer und AnyDesk mit selbst gehosteten Servern. Plattformübergreifende Unterstützung für Windows, macOS, Linux und Android.',
description: 'RustDesk ist Open-Source-Remote-Desktop-Software mit selbst gehostetem Server: Alternative zu TeamViewer und AnyDesk für Windows, macOS, Linux und Android.',
keywords: 'fernzugriff software, open source fernzugriff, selbst gehosteter fernzugriff, TeamViewer alternative, AnyDesk alternative, sichere fernsteuerung, plattformübergreifender fernzugriff, on-premise fernzugriff, rustdesk server',
ignoreTitleTemplate: true,
};
+1 -1
View File
@@ -9,7 +9,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'RustDesk Preise - Selbst gehostete Remote-Desktop-Server-Pläne',
description:
'Wählen Sie den richtigen RustDesk Self-Hosting-Plan für Ihr Unternehmen. Kostenloser Open-Source-Plan verfügbar. Pro-Pläne mit erweiterten Funktionen für Unternehmen.',
'RustDesk-Preise für selbst gehosteten Remote Desktop statt SaaS: kostenloser Open-Source-Plan oder Jahreslizenz für RustDesk Server Pro mit 2FA, SSO und LDAP.',
keywords:
'rustdesk preise, selbst gehostete fernzugriff preise, remote desktop server kosten, open source fernzugriff preise, unternehmen fernzugriff pläne',
author: 'RustDesk Team',
+11 -11
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'RustDesk Support - Hilfe & Dokumentation für Remote-Desktop-Software',
description: 'Erhalten Sie Hilfe mit RustDesk Remote-Desktop-Software. Finden Sie Dokumentation, Fehlerbehebungsanleitungen und Support-Ressourcen für selbst gehostete Remote-Access-Lösungen.',
description: 'Support für RustDesk, den Open-Source-Remote-Desktop: Bugs auf GitHub melden, Community auf Discord, E-Mail-Tickets für selbst gehosteten RustDesk Server Pro.',
keywords: 'rustdesk support, remote desktop hilfe, selbst gehostete unterstützung, remote access dokumentation, rustdesk fehlerbehebung, remote desktop setup hilfe',
author: 'RustDesk Team',
};
@@ -12,32 +12,32 @@ const metadata = {
<Layout metadata={metadata} i18n>
<Features2
title="We are here to help!"
title="Wir sind für Sie da!"
items={[
{
title: 'Issues',
description: `Found a bug? We'd love to hear about it in our GitHub issues.`,
title: 'Fehler melden',
description: `Einen Fehler gefunden? Melden Sie ihn gern in unseren GitHub-Issues.`,
},
{
title: 'Community Support',
description: 'Join our Discord server to browse for help and best practices.',
title: 'Community-Support',
description: 'Treten Sie unserem Discord-Server bei, um Hilfe und bewährte Vorgehensweisen zu finden.',
},
{
title: 'Ticket for Pro User',
description: 'Email us if you encounter any issues while using RustDesk Server Pro.',
title: 'Ticket für Pro-Nutzer',
description: 'Schreiben Sie uns eine E-Mail, wenn bei der Nutzung von RustDesk Server Pro Probleme auftreten.',
},
{
title: 'GitHub',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">Open an issue</a>',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">Issue eröffnen</a>',
icon: 'tabler:brand-github',
},
{
title: 'Discord',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">Join our server</a>',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">Unserem Server beitreten</a>',
icon: 'tabler:brand-discord',
},
{
title: 'Email',
title: 'E-Mail',
description: '<a href="mailto:support@rustdesk.com">support@rustdesk.com</a>',
icon: 'tabler:mail',
},
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Über RustDesk - Remote-Desktop-Software-Team und Unternehmensinformationen',
description: 'Lernen Sie das RustDesk-Team und unsere Mission kennen, die beste Open-Source-Remote-Desktop-Software bereitzustellen. Treffen Sie unsere Entwickler und Mitwirkenden hinter der selbst gehosteten Remote-Access-Lösung.',
description: 'Über RustDesk: wie eine teure TeamViewer-Lizenz 2020 zu einem Open-Source-Remote-Desktop zum Selbsthosten führte, dazu unser Kernteam und Standort Singapur.',
keywords: 'rustdesk team, über rustdesk, remote desktop unternehmen, open source entwickler, selbst gehostetes remote access team, rustdesk mitwirkende',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: Escritorio remoto de código abierto con soluciones de servidor autoalojado',
description: 'RustDesk es el mejor software de escritorio remoto de código abierto. Alternativa segura a TeamViewer y AnyDesk con servidores autoalojados. Soporte multiplataforma para Windows, macOS, Linux y Android.',
description: 'RustDesk es un escritorio remoto de código abierto con servidor autoalojado, una alternativa a TeamViewer y AnyDesk para Windows, macOS, Linux y Android.',
keywords: 'software escritorio remoto, acceso remoto código abierto, escritorio remoto autoalojado, alternativa TeamViewer, alternativa AnyDesk, control remoto seguro, acceso remoto multiplataforma, escritorio remoto local, servidor rustdesk',
ignoreTitleTemplate: true,
};
+1 -1
View File
@@ -9,7 +9,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Precios de RustDesk - Planes de Servidor de Escritorio Remoto Autoalojado',
description:
'Elija el plan de autoalojamiento de RustDesk adecuado para su organización. Plan de código abierto gratuito disponible. Planes Pro con características avanzadas para uso empresarial.',
'Precios de RustDesk para escritorio remoto autoalojado, no SaaS: plan gratuito de código abierto o licencia anual de RustDesk Server Pro con 2FA, SSO y LDAP.',
keywords:
'precios rustdesk, precios escritorio remoto autoalojado, costo servidor remoto, precios acceso remoto código abierto, planes escritorio remoto empresarial',
author: 'RustDesk Team',
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'Soporte RustDesk - Ayuda y Documentación para Software de Escritorio Remoto',
description: 'Obtenga ayuda con el software de escritorio remoto RustDesk. Encuentre documentación, guías de solución de problemas y recursos de soporte para soluciones de acceso remoto autoalojadas.',
description: 'Ayuda para RustDesk, el escritorio remoto de código abierto: bugs en GitHub, comunidad en Discord y tickets por correo para RustDesk Server Pro autoalojado.',
keywords: 'soporte rustdesk, ayuda escritorio remoto, soporte autoalojado, documentación acceso remoto, solución problemas rustdesk, ayuda configuración escritorio remoto',
author: 'RustDesk Team',
};
+16 -16
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Sobre RustDesk - Equipo de Software de Escritorio Remoto e Información de la Empresa',
description: 'Conoce al equipo de RustDesk y nuestra misión de proporcionar el mejor software de escritorio remoto de código abierto. Conoce a nuestros desarrolladores y contribuyentes detrás de la solución de acceso remoto autoalojada.',
description: 'Sobre RustDesk: cómo una licencia de TeamViewer muy cara en 2020 dio origen a este escritorio remoto de código abierto, el equipo y la sede en Singapur.',
keywords: 'equipo rustdesk, sobre rustdesk, empresa escritorio remoto, desarrolladores código abierto, equipo acceso remoto autoalojado, colaboradores rustdesk',
author: 'RustDesk Team',
};
@@ -15,17 +15,17 @@ const metadata = {
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="About us">
<Fragment slot="title"> Why Are We Building This? </Fragment>
<Hero tagline="Sobre nosotros">
<Fragment slot="title">¿Por qué construimos esto?</Fragment>
<Fragment slot="subtitle">
<p class="text-left">
In the midst of the Covid-19 pandemic in mid-2020, the now lead dev / founder found themselves compelled to
procure a commercial license for TeamViewer to facilitate remote work in Singapore. However, they were taken
aback by the exorbitant cost. Following a restless night, they embarked on a mission to create an alternative
solution. Thus, RustDesk was conceived — an open-source, freely accessible remote desktop software that was
diligently crafted through numerous sleepless nights. This labor of dedication and determination culminated in
the release of RustDesk on GitHub in 2021, allowing it to be utilized by individuals worldwide.
A mediados de 2020, en plena pandemia de Covid-19, la persona que fundó RustDesk y hoy dirige su desarrollo
necesitó comprar una licencia comercial de TeamViewer para poder teletrabajar desde Singapur. El precio,
desorbitado, le dejó sin palabras. Tras una noche sin dormir, se propuso crear una alternativa. Así nació
RustDesk: un software de escritorio remoto de código abierto y gratuito, construido con esmero a lo largo de
muchas noches en vela. Ese esfuerzo culminó en 2021 con la publicación de RustDesk en GitHub, al alcance de
cualquier persona en el mundo.
</p>
</Fragment>
</Hero>
@@ -33,18 +33,18 @@ const metadata = {
<!-- Steps2 Widget ****************** -->
<Steps2
title="Core Team"
title="Equipo principal"
items={[
{
title: 'Joseph Jacks<br><small>CEO</small>',
description:
"Joseph Jacks founded OSS Capital in 2018. It is the world's first and only early stage VC dedicated exclusively to COSS (commercial open source) startups on a global basis. Previously, he helped start and run the very first Kubernetes startup (Kismatic) and also found and run KubeCon (the Kubernetes community conference) before donating it to the Linux Foundation in 2016 as the CNCF (Cloud Native Computing Foundation) was materializing.",
'Joseph Jacks fundó OSS Capital en 2018, el primer y único fondo de capital riesgo en fase inicial del mundo dedicado exclusivamente a startups de COSS (código abierto comercial) a escala global. Antes ayudó a poner en marcha y dirigir la primera startup de Kubernetes (Kismatic), y fundó y dirigió KubeCon (la conferencia de la comunidad de Kubernetes) hasta donarla a la Linux Foundation en 2016, cuando se estaba formando la CNCF (Cloud Native Computing Foundation).',
icon: 'tabler:user',
},
{
title: 'Daniel Lamb<br><small>Community Assistant</small>',
title: 'Daniel Lamb<br><small>Asistente de la comunidad</small>',
description:
"With a remarkable quarter century career in the IT industry, Daniel Lamb has actively participated in numerous open-source projects, assuming various roles and responsibilities. Additionally, he has accomplished the establishment of an IT services company based in Scotland, catering to customers worldwide. Daniel's extensive expertise encompasses support, sales, and community engagement, bringing a large amount of knowledge and experience to the project.",
'Con una destacada trayectoria de un cuarto de siglo en el sector de TI, Daniel Lamb ha participado activamente en numerosos proyectos de código abierto, asumiendo distintos roles y responsabilidades. Además, fundó una empresa de servicios de TI con sede en Escocia que atiende a clientes de todo el mundo. Su amplia experiencia abarca el soporte, las ventas y la relación con la comunidad, y aporta al proyecto un gran caudal de conocimientos.',
icon: 'tabler:user',
},
]}
@@ -53,12 +53,12 @@ const metadata = {
<!-- Features2 Widget ************** -->
<Features2
title="Our locations"
tagline="Find us"
title="Nuestras oficinas"
tagline="Encuéntranos"
columns={1}
items={[
{
title: 'Singapore',
title: 'Singapur',
description: '68 CIRCULAR ROAD, #02-01, SINGAPORE 049422',
},
]}
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk : Bureau à distance open-source avec solutions de serveur auto-hébergé',
description: 'RustDesk est le meilleur logiciel de bureau à distance open-source. Alternative sécurisée à TeamViewer et AnyDesk avec serveurs auto-hébergés. Support multiplateforme pour Windows, macOS, Linux et Android.',
description: 'RustDesk est un logiciel de bureau à distance open source et auto-hébergé, une alternative à TeamViewer et AnyDesk sous Windows, macOS, Linux et Android.',
keywords: 'logiciel bureau à distance, accès distant open source, bureau à distance auto-hébergé, alternative TeamViewer, alternative AnyDesk, contrôle à distance sécurisé, accès distant multiplateforme, bureau à distance sur site, serveur rustdesk',
ignoreTitleTemplate: true,
};
+1 -1
View File
@@ -9,7 +9,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Tarification RustDesk - Plans de Serveur de Bureau à Distance Auto-hébergé',
description:
"Choisissez le bon plan d'auto-hébergement RustDesk pour votre organisation. Plan open source gratuit disponible. Plans Pro avec fonctionnalités avancées pour usage d'entreprise.",
"Tarifs RustDesk pour un bureau à distance auto-hébergé, pas un SaaS : plan open source gratuit ou licence annuelle RustDesk Server Pro avec 2FA, SSO et LDAP.",
keywords:
'tarification rustdesk, prix bureau à distance auto-hébergé, coût serveur bureau à distance, prix accès distant open source, plans bureau à distance entreprise',
author: 'RustDesk Team',
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'Support RustDesk - Aide et Documentation pour Logiciel de Bureau à Distance',
description: 'Obtenez de l\'aide avec le logiciel de bureau à distance RustDesk. Trouvez de la documentation, des guides de dépannage et des ressources de support pour les solutions d\'accès distant auto-hébergées.',
description: 'Support de RustDesk, le bureau à distance open source : bugs sur GitHub, entraide sur Discord et tickets par e-mail pour RustDesk Server Pro auto-hébergé.',
keywords: 'support rustdesk, aide bureau à distance, support auto-hébergé, documentation accès distant, dépannage rustdesk, aide configuration bureau à distance',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'À propos de RustDesk - Équipe Logiciel Bureau à Distance et Informations Entreprise',
description: 'Découvrez l\'equipe RustDesk et notre mission de fournir le meilleur logiciel de bureau à distance open source. Rencontrez nos développeurs et contributeurs derrière la solution d\'accès distant auto-hébergée.',
description: 'À propos de RustDesk : comment une licence TeamViewer trop chère en 2020 a fait naître un bureau à distance open source, l’équipe et nos locaux à Singapour.',
keywords: 'équipe rustdesk, à propos rustdesk, entreprise bureau à distance, développeurs open source, équipe accès distant auto-hébergé, contributeurs rustdesk',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: Open-Source Remote Desktop with Self-Hosted Server Solutions',
description: 'RustDesk is the best open-source remote desktop software. Secure alternative to TeamViewer and AnyDesk with self-hosted servers. Cross-platform support for Windows, macOS, Linux, and Android.',
description: 'RustDesk is open-source remote desktop software for your own self-hosted server, a TeamViewer and AnyDesk alternative for Windows, macOS, Linux and Android.',
keywords: 'remote desktop software, open source remote access, self-hosted remote desktop, TeamViewer alternative, AnyDesk alternative, secure remote control, cross platform remote access, on-premise remote desktop, rustdesk server',
author: 'RustDesk Team',
ignoreTitleTemplate: true,
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: Desktop Remoto Open-Source con Soluzioni Server Self-Hosted',
description: 'RustDesk è il miglior software desktop remoto open-source. Alternativa sicura a TeamViewer e AnyDesk con server self-hosted. Supporto multipiattaforma per Windows, macOS, Linux e Android.',
description: 'RustDesk è un software di desktop remoto open source con server self-hosted: alternativa a TeamViewer e AnyDesk per Windows, macOS, Linux e Android.',
keywords: 'software desktop remoto, accesso remoto open source, desktop remoto self-hosted, alternativa TeamViewer, alternativa AnyDesk, controllo remoto sicuro, accesso remoto multipiattaforma, desktop remoto on-premise, server rustdesk',
ignoreTitleTemplate: true,
};
+1 -1
View File
@@ -9,7 +9,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Prezzi RustDesk - Piani Server Desktop Remoto Self-Hosted',
description:
'Scegli il piano di self-hosting RustDesk giusto per la tua organizzazione. Piano open source gratuito disponibile. Piani Pro con funzionalità avanzate per uso aziendale.',
'Prezzi di RustDesk Server Pro, desktop remoto self-hosted: licenza annuale per il tuo server, non SaaS. Piano open source gratuito e piani Pro con 2FA e SSO.',
keywords:
'prezzi rustdesk, prezzi desktop remoto self-hosted, costo server desktop remoto, prezzi accesso remoto open source, piani desktop remoto aziendali',
author: 'RustDesk Team',
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'Supporto RustDesk - Aiuto e Documentazione per Software Desktop Remoto',
description: 'Ottieni aiuto con il software desktop remoto RustDesk. Trova documentazione, guide per la risoluzione dei problemi e risorse di supporto per soluzioni di accesso remoto self-hosted.',
description: 'Assistenza RustDesk, desktop remoto open source: bug su GitHub, aiuto dalla community su Discord ed email per chi usa RustDesk Server Pro self-hosted.',
keywords: 'supporto rustdesk, aiuto desktop remoto, supporto self-hosted, documentazione accesso remoto, risoluzione problemi rustdesk, aiuto configurazione desktop remoto',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Chi siamo - Team Software Desktop Remoto RustDesk e Informazioni Azienda',
description: 'Scopri il team RustDesk e la nostra missione di fornire il miglior software desktop remoto open-source. Incontra i nostri sviluppatori e contributori dietro la soluzione di accesso remoto self-hosted.',
description: 'Chi siamo: RustDesk, il desktop remoto open source nato nel 2020 come alternativa a TeamViewer. Storia, core team e sede a Singapore del progetto self-hosted.',
keywords: 'team rustdesk, chi siamo rustdesk, azienda desktop remoto, sviluppatori open source, team accesso remoto self-hosted, contributori rustdesk',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: オープンソースのリモートデスクトップ - セルフホスティングサーバーソリューション',
description: 'RustDeskは最高のオープンソースリモートデスクトップソフトウェアです。TeamViewerとAnyDeskの安全な代替案で、セルフホスティングサーバーをサポート。Windows、macOS、Linux、Androidでのクロスプラットフォームサポート。',
description: 'RustDeskはオープンソースのリモートデスクトップソフトで、TeamViewerやAnyDeskの代わりにセルフホストサーバーでデータを自社管理できます。Dockerの数コマンドでサーバーを構築でき、名前やロゴ入りの独自クライアントや、自社ドメインでのWebクライアント公開にも対応します。',
keywords: 'リモートデスクトップソフトウェア, オープンソースリモートアクセス, セルフホスティングリモートデスクトップ, TeamViewer代替, AnyDesk代替, 安全なリモートコントロール, クロスプラットフォームリモートアクセス, オンプレミスリモートデスクトップ, rustdeskサーバー',
ignoreTitleTemplate: true,
};
+1 -1
View File
@@ -9,7 +9,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'RustDesk 料金 - セルフホスティングリモートデスクトップサーバープラン',
description:
'組織に適した RustDesk セルフホスティングプランを選択してください。無料のオープンソースプランを利用できます。企業用の高度な機能を持つ Pro プラン。',
'セルフホスト型RustDeskの料金ページです。購入するのはSaaSではなく自社サーバーで運用するライセンスで、オープンソースの無料プランと、ユーザー数、デバイス数、同時接続数で選べるRustDesk Server Proを用意。2FAやLDAP連携などリモートデスクトップの管理機能を備えます。',
keywords:
'rustdesk料金, セルフホスティングリモートデスクトップ料金, リモートデスクトップサーバーコスト, オープンソースリモートアクセス料金, 企業リモートデスクトッププラン',
author: 'RustDesk Team',
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'RustDesk サポート - リモートデスクトップソフトウェアのヘルプとドキュメント',
description: 'RustDesk リモートデスクトップソフトウェアのサポートを受けてください。セルフホスティングリモートアクセスソリューションのドキュメント、トラブルシューティングガイド、サポートリソースをご利用ください。',
description: 'RustDeskのサポート窓口をまとめたページです。バグはGitHubのIssueへ、使い方の相談はDiscordコミュニティへ、RustDesk Server Pro利用中の問題はメールのチケットサポートへ。オープンソースのリモートデスクトップもセルフホストサーバーも、用件に合った窓口を選べます。',
keywords: 'rustdeskサポート, リモートデスクトップヘルプ, セルフホスティングサポート, リモートアクセスドキュメント, rustdeskトラブルシューティング, リモートデスクトップ設定ヘルプ',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'RustDeskについて - リモートデスクトップソフトウェアチームと企業情報',
description: 'RustDeskチームと最高のオープンソースリモートデスクトップソフトウェアを提供する私たちの使命をご紹介します。セルフホスティングリモートアクセスソリューションの背後にいる開発者と貢献者をご紹介します。',
description: '誕生の経緯からコアメンバー、所在地までを紹介するRustDeskの会社概要ページです。2020年のコロナ禍、TeamViewerの商用ライセンス費用に驚いたチームが無料のオープンソース・リモートデスクトップを作り始め、2021年にGitHubで公開。現在はセルフホストにも対応し、拠点はシンガポールにあります。',
keywords: 'rustdeskチーム, rustdeskについて, リモートデスクトップ企業, オープンソース開発者, セルフホスティングリモートアクセスチーム, rustdesk貢献者',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: 오픈 소스 원격 데스크톱 및 자체 호스팅 서버 솔루션',
description: 'RustDesk는 최고의 오픈 소스 원격 데스크톱 소프트웨어입니다. TeamViewer와 AnyDesk의 안전한 대안으로 자체 호스팅 서버를 지원합니다. Windows, macOS, Linux, Android를 위한 크로스 플랫폼 지원.',
description: 'RustDesk는 자체 호스팅 서버를 지원하는 오픈소스 원격 데스크톱 소프트웨어입니다. TeamViewer와 AnyDesk의 대안으로 Windows, macOS, Linux, Android를 지원하며, Docker로 서버를 간단히 설치하고 클라이언트에 내 브랜드를 넣을 수 있습니다.',
keywords: '원격 데스크톱 소프트웨어, 오픈 소스 원격 액세스, 자체 호스팅 원격 데스크톱, TeamViewer 대안, AnyDesk 대안, 안전한 원격 제어, 크로스 플랫폼 원격 액세스, 온프레미스 원격 데스크톱, rustdesk 서버',
ignoreTitleTemplate: true,
};
+1 -1
View File
@@ -9,7 +9,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'RustDesk 가격 - 자체 호스팅 원격 데스크톱 서버 계획',
description:
'조직에 적합한 RustDesk 자체 호스팅 계획을 선택하세요. 무료 오픈 소스 계획 이용 가능. 기업용 고급 기능을 갖춘 Pro 계획.',
'RustDesk Server Pro 요금제 안내. SaaS 구독이 아니라 내 서버에 직접 설치하는 자체 호스팅 원격 데스크톱 연간 라이선스입니다. 무료 오픈소스 플랜과 웹 콘솔, 2FA, SSO, LDAP 연동을 갖춘 Pro 플랜을 비교하고 요금 FAQ도 확인하세요.',
keywords:
'rustdesk 가격, 자체 호스팅 원격 데스크톱 가격, 원격 데스크톱 서버 비용, 오픈 소스 원격 액세스 가격, 기업 원격 데스크톱 계획',
author: 'RustDesk Team',
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'RustDesk 지원 - 원격 데스크톱 소프트웨어 도움말 및 문서',
description: 'RustDesk 원격 데스크톱 소프트웨어에 대한 도움을 받으세요. 자체 호스팅 원격 액세스 솔루션에 대한 문서, 문제 해결 가이드 및 지원 리소스를 찾아보세요.',
description: '오픈소스 원격 데스크톱 RustDesk 고객 지원 페이지입니다. 버그는 GitHub 이슈로 제보하고, 설정이나 사용법은 Discord 커뮤니티에서 다른 사용자에게 물어보세요. 자체 호스팅 RustDesk Server Pro 사용자는 이메일로 기술 문의를 보낼 수 있습니다.',
keywords: 'rustdesk 지원, 원격 데스크톱 도움말, 자체 호스팅 지원, 원격 액세스 문서, rustdesk 문제 해결, 원격 데스크톱 설정 도움말',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'RustDesk 소개 - 원격 데스크톱 소프트웨어 팀과 회사 정보',
description: 'RustDesk 팀과 최고의 오픈 소스 원격 데스크톱 소프트웨어를 제공하는 우리의 사명에 대해 알아보세요. 자체 호스팅 원격 액세스 솔루션 뒤에 있는 개발자들과 기여자들을 만나보세요.',
description: 'RustDesk 팀 소개. 2020년 TeamViewer 상업용 라이선스의 높은 비용에 놀란 창립자가 시작한 오픈소스 원격 데스크톱 프로젝트의 탄생 이야기와 2021년 GitHub 공개, 핵심 팀, 싱가포르 사무소, 자체 호스팅 솔루션을 만드는 사람들을 소개합니다.',
keywords: 'rustdesk 팀, rustdesk 소개, 원격 데스크톱 회사, 오픈 소스 개발자, 자체 호스팅 원격 액세스 팀, rustdesk 기여자',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -4,7 +4,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'RustDesk Open Source - Free Remote Desktop Software & Community',
description: 'RustDesk is a completely open-source remote desktop software. Join our community, contribute to development, and enjoy free remote access solutions with full source code access.',
description: 'How to contribute to RustDesk: browse open GitHub issues, follow the project and join the community of maintainers building this open-source remote desktop.',
keywords: 'rustdesk open source, free remote desktop software, open source remote access, github rustdesk, remote desktop community, free self-hosted remote desktop',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -9,7 +9,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'RustDesk Pricing - Self-Hosted Remote Desktop Server Plans',
description:
'Choose the right RustDesk self-hosting plan for your organization. Free open-source plan available. Pro plans starting at $11.88/month with advanced features for enterprise use.',
'RustDesk pricing for self-hosted remote desktop, not SaaS: a free open-source plan or annual RustDesk Server Pro licenses with 2FA, SSO, LDAP and audit logs.',
keywords:
'rustdesk pricing, self-hosted remote desktop pricing, remote desktop server cost, open source remote access pricing, enterprise remote desktop plans',
author: 'RustDesk Team',
+1 -1
View File
@@ -1,6 +1,6 @@
---
title: 'Privacy Policy'
description: 'Read the RustDesk privacy policy covering website usage, cookies, support, and the processing of personal data related to RustDesk services.'
description: 'Privacy policy for rustdesk.com and RustDesk remote desktop software: what personal data Purslane Tech processes and why, cookies, providers and GDPR rights.'
layout: '~/layouts/MarkdownLayout.astro'
---
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: Software de Área de Trabalho Remota de Código Aberto com Soluções de Servidor Auto-Hospedado',
description: 'RustDesk é o melhor software de área de trabalho remota de código aberto. Alternativa segura ao TeamViewer e AnyDesk com servidores auto-hospedados. Suporte multiplataforma para Windows, macOS, Linux e Android.',
description: 'RustDesk é a área de trabalho remota de código aberto com servidor auto-hospedado: alternativa ao TeamViewer e AnyDesk para Windows, macOS, Linux e Android.',
keywords: 'software área de trabalho remota, acesso remoto código aberto, área de trabalho remota auto-hospedada, alternativa TeamViewer, alternativa AnyDesk, controle remoto seguro, acesso remoto multiplataforma, área de trabalho remota local, servidor rustdesk',
ignoreTitleTemplate: true,
};
+1 -1
View File
@@ -9,7 +9,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Preços RustDesk - Planos de Servidor de Área de Trabalho Remota Auto-Hospedada',
description:
'Escolha o plano de auto-hospedagem RustDesk adequado para sua organização. Plano de código aberto gratuito disponível. Planos Pro com recursos avançados para uso empresarial.',
'Preços do RustDesk Server Pro: licença anual de área de trabalho remota auto-hospedada, não SaaS. Plano gratuito de código aberto e planos Pro com 2FA e SSO.',
keywords:
'preços rustdesk, preços área de trabalho remota auto-hospedada, custo servidor área de trabalho remota, preços acesso remoto código aberto, planos área de trabalho remota empresariais',
author: 'RustDesk Team',
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'Suporte RustDesk - Ajuda e Documentação para Software de Área de Trabalho Remota',
description: 'Obtenha ajuda com o software de área de trabalho remota RustDesk. Encontre documentação, guias de solução de problemas e recursos de suporte para soluções de acesso remoto auto-hospedadas.',
description: 'Suporte RustDesk, área de trabalho remota de código aberto: bugs no GitHub, dúvidas no Discord e e-mail para usuários do RustDesk Server Pro auto-hospedado.',
keywords: 'suporte rustdesk, ajuda área de trabalho remota, suporte auto-hospedado, documentação acesso remoto, solução problemas rustdesk, ajuda configuração área de trabalho remota',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Sobre RustDesk - Equipe de Software de Área de Trabalho Remota e Informações da Empresa',
description: 'Conheça a equipe RustDesk e nossa missão de fornecer o melhor software de área de trabalho remota open-source. Conheça nossos desenvolvedores e contribuidores por trás da solução de acesso remoto auto-hospedada.',
description: 'Sobre o RustDesk: a área de trabalho remota de código aberto e auto-hospedada criada em 2020 como alternativa ao TeamViewer, sua equipe e a sede em Singapura.',
keywords: 'equipe rustdesk, sobre rustdesk, empresa área de trabalho remota, desenvolvedores open source, equipe acesso remoto auto-hospedado, contribuidores rustdesk',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'RustDesk Support - Help & Documentation for Remote Desktop Software',
description: 'Get help with RustDesk remote desktop software. Find documentation, troubleshooting guides, and support resources for self-hosted remote access solutions.',
description: 'Help for RustDesk, the open-source remote desktop: report bugs on GitHub, ask the community on Discord, or email a ticket for self-hosted RustDesk Server Pro.',
keywords: 'rustdesk support, remote desktop help, self-hosted support, remote access documentation, rustdesk troubleshooting, remote desktop setup help',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'About RustDesk - Remote Desktop Software Team & Company Information',
description: 'Learn about the RustDesk team and our mission to provide the best open-source remote desktop software. Meet our developers and contributors behind the self-hosted remote access solution.',
description: 'About RustDesk: how a costly TeamViewer license in 2020 led to an open-source remote desktop you can self-host, plus our core team and Singapore office.',
keywords: 'rustdesk team, about rustdesk, remote desktop company, open source developers, self-hosted remote access team, rustdesk contributors',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -1,6 +1,6 @@
---
title: 'Terms and Conditions'
description: 'Review the RustDesk software terms and conditions, including license rights, restrictions, warranties, liability, and acceptable use.'
description: 'Terms and conditions for RustDesk Server Pro, our public ID and relay servers and rustdesk.com: license scope, prohibited uses, liability and Singapore law.'
layout: '~/layouts/MarkdownLayout.astro'
---
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk:开源远程桌面与自建服务器解决方案',
description: 'RustDesk是最好的开源远程桌面软件。TeamViewer和向日葵的安全替代方案,支持自建服务器。跨平台支持Windows、macOS、Linux和Android。',
description: 'RustDesk 是一款开源远程桌面软件,可替代 TeamViewer 和向日葵,搭配自建服务器让数据完全由自己掌控。几条 Docker 命令即可装好服务器,还能用自家名称、图标和标志定制客户端,在自有域名上托管 Web 客户端,支持 Windows、macOS、Linux 和 Android。',
keywords: '远程桌面软件, 开源远程访问, 自建远程桌面, TeamViewer替代品, 向日葵替代品, 安全远程控制, 跨平台远程访问, 本地部署远程桌面, rustdesk服务器',
author: 'RustDesk Team',
ignoreTitleTemplate: true,
+1 -1
View File
@@ -10,7 +10,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'RustDesk 定价 - 自建远程桌面服务器计划',
description: '为您的组织选择合适的 RustDesk 自建计划。提供免费开源计划。企业版 Pro 计划具有高级功能。',
description: '自建 RustDesk 服务器的定价方案一览:您购买的是部署在自有服务器上的许可证,而非 SaaS 订阅。开源免费版可直接使用;RustDesk Server Pro 按登录用户、受管设备和并发连接选配,提供 Web 控制台、双因素认证、OIDC 与 LDAP 集成等远程桌面管理功能,按年付费且不自动续订。',
keywords: 'rustdesk价格, 自建远程桌面价格, 远程桌面服务器成本, 开源远程访问价格, 企业远程桌面计划',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'RustDesk 支持 - 远程桌面软件帮助与文档',
description: '获取 RustDesk 远程桌面软件的帮助。查找文档、故障排除指南和自建远程访问解决方案的支持资源。',
description: '获取 RustDesk 帮助的支持页面,列出各类求助渠道:在 GitHub Issues 报告 bug,加入 Discord 社区交流问题与最佳实践,RustDesk Server Pro 用户可发送电子邮件获得工单支持。无论您使用开源远程桌面客户端还是自建服务器,都能在这里找到对应的联系方式。',
keywords: 'rustdesk支持, 远程桌面帮助, 自建支持, 远程访问文档, rustdesk故障排除, 远程桌面设置帮助',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: '关于 RustDesk - 远程桌面软件团队及公司信息',
description: '了解 RustDesk 团队和我们提供最优秀开源远程桌面软件的使命。认识我们的开发者和自建远程访问解决方案背后的贡献者。',
description: '关于 RustDesk 的团队与公司介绍:2020 年疫情期间,团队不满 TeamViewer 商业许可的高昂费用,着手打造免费的开源远程桌面软件,并于 2021 年在 GitHub 发布,如今也支持自建服务器部署。本页还介绍了核心团队成员的背景和位于新加坡的办公地址。',
keywords: 'rustdesk团队, 关于rustdesk, 远程桌面公司, 开源开发者, 自建远程访问团队, rustdesk贡献者',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -12,7 +12,7 @@ import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk:開源遠端桌面與自託管伺服器解決方案',
description: 'RustDesk是最好的開源遠端桌面軟件。TeamViewer和AnyDesk的安全替代方案,支持自託管伺服器。跨平台支持Windows、macOS、Linux和Android。',
description: 'RustDesk 是開源的遠端桌面軟體,可取代 TeamViewer 與 AnyDesk,搭配自架伺服器讓資料由你掌控。只要幾行 Docker 指令就能裝好伺服器,還能用自家名稱、圖示和標誌打造專屬用戶端,在自己的網域上提供網頁版用戶端,支援 Windows、macOS、Linux 與 Android。',
keywords: '遠端桌面軟件, 開源遠端存取, 自託管遠端桌面, TeamViewer替代品, AnyDesk替代品, 安全遠端控制, 跨平台遠端存取, 本地部署遠端桌面, rustdesk伺服器',
ignoreTitleTemplate: true,
};
+1 -1
View File
@@ -8,7 +8,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'RustDesk 定價 - 自託管遠端桌面伺服器方案',
description: '為您的組織選擇合適的 RustDesk 自託管方案。提供免費開源方案。企業版 Pro 方案具有進階功能。',
description: '自架 RustDesk 的方案與價格說明:這裡購買的是安裝在你自有伺服器上的授權,並非 SaaS 訂閱。開源免費方案可直接使用;RustDesk Server Pro 依登入使用者、受管理裝置與同時連線數選購,提供網頁主控台、雙重驗證、OIDC 與 LDAP 整合等遠端桌面管理功能,採年繳且不自動續約。',
keywords: 'rustdesk價格, 自託管遠端桌面價格, 遠端桌面伺服器成本, 開源遠端存取價格, 企業遠端桌面方案',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -4,7 +4,7 @@ import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'RustDesk 支援 - 遠端桌面軟體幫助與文件',
description: '獲得 RustDesk 遠端桌面軟體的幫助。查找文件、故障排除指南和自託管遠端存取解決方案的支援資源。',
description: '取得 RustDesk 協助的管道都整理在這個支援頁面:在 GitHub Issues 回報錯誤,加入 Discord 社群請教問題、交流最佳實務,RustDesk Server Pro 使用者則可寄送電子郵件提出支援工單。不論你用的是開源遠端桌面用戶端還是自架伺服器,都能找到合適的聯絡窗口。',
keywords: 'rustdesk支援, 遠端桌面幫助, 自託管支援, 遠端存取文件, rustdesk故障排除, 遠端桌面設置幫助',
author: 'RustDesk Team',
};
+1 -1
View File
@@ -6,7 +6,7 @@ import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: '關於 RustDesk - 遠端桌面軟體團隊及公司資訊',
description: '了解 RustDesk 團隊和我們提供最優秀開源遠端桌面軟體的使命。認識我們的開發者和自託管遠端存取解決方案背後的貢獻者。',
description: '認識 RustDesk 團隊與公司:2020 年疫情期間,團隊驚覺 TeamViewer 商業授權費用高昂,於是動手打造免費的開源遠端桌面軟體,並在 2021 年於 GitHub 公開發布,如今也支援自架伺服器。本頁同時介紹核心成員的經歷,以及位於新加坡的公司地址。',
keywords: 'rustdesk團隊, 關斯rustdesk, 遠端桌面公司, 開源開發者, 自託管遠端存取團隊, rustdesk貢獻者',
author: 'RustDesk Team',
};
+3 -3
View File
@@ -4,12 +4,12 @@
<head>
<meta charset="utf-8">
<title>RustDesk – 开源远程桌面访问软件</title>
<meta content="RustDesk 开源远程桌面访问解决方案:可以连接到远程计算机,提供远程支持和在线协作" name="description">
<meta content="RustDesk 是开源的远程桌面软件,可连接远程电脑,提供远程支持与在线协作。支持 Windows、macOS、Linux 和 Android,可自建服务器,让连接数据完全掌握在自己手中,是 TeamViewer 等商业远程软件的开源替代方案。" name="description">
<meta content="RustDesk – 开源远程桌面访问软件" property="og:title">
<meta content="RustDesk 开源远程桌面访问解决方案:可以连接到远程计算机,提供远程支持和在线协作" property="og:description">
<meta content="RustDesk 是开源的远程桌面软件,可连接远程电脑,提供远程支持与在线协作。支持 Windows、macOS、Linux 和 Android,可自建服务器,让连接数据完全掌握在自己手中,是 TeamViewer 等商业远程软件的开源替代方案。" property="og:description">
<meta content="https://repository-images.githubusercontent.com/299354207/a577aeea-619e-4f64-8dec-19f2550e7500" property="og:image">
<meta content="RustDesk – 开源远程桌面访问软件" property="twitter:title">
<meta content="RustDesk 开源远程桌面访问解决方案:可以连接到远程计算机,提供远程支持和在线协作" property="twitter:description">
<meta content="RustDesk 是开源的远程桌面软件,可连接远程电脑,提供远程支持与在线协作。支持 Windows、macOS、Linux 和 Android,可自建服务器,让连接数据完全掌握在自己手中,是 TeamViewer 等商业远程软件的开源替代方案。" property="twitter:description">
<meta content="https://repository-images.githubusercontent.com/299354207/a577aeea-619e-4f64-8dec-19f2550e7500" property="twitter:image">
<meta property="og:type" content="website">
<meta content="summary_large_image" name="twitter:card">