This commit is contained in:
rustdesk 2024-10-22 14:53:53 +08:00
parent 2eae36d76c
commit 20951eb04f
49 changed files with 6935 additions and 131 deletions

View File

@ -25,7 +25,14 @@ const whenExternalScripts = (items: (() => AstroIntegration) | (() => AstroInteg
export default defineConfig({
output: 'static',
i18n: {
defaultLocale: 'en',
locales: ['en', 'de', 'es', 'fr', 'it', 'ja', 'pt', 'zh-cn', 'zh-tw'],
routing: {
prefixDefaultLocale: true,
redirectToDefaultLocale: false,
},
},
integrations: [
react(),
tailwind({

View File

@ -11,7 +11,6 @@
ln -s open-source/index.html open-source.html
ln -s ../v2/self-host
ln -s ../v2/web
cp -rf ../zh ./
tar czf x *
scp x ot:/tmp/
ssh ot "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"

View File

@ -51,7 +51,7 @@
@apply py-3;
} */
#header.expanded nav {
#header.expanded nav, #languages.expanded {
position: fixed;
top: 70px;
left: 0;

View File

@ -44,6 +44,24 @@ import { UI } from 'astrowind:config';
let lastKnownScrollPosition = window.scrollY;
let ticking = true;
attachEvent('#languageSelect', 'click', function () {
document.getElementById('languages')?.classList.remove('hidden');
});
/*
attachEvent('#languages', 'mouseleave', function () {
document.getElementById('languages')?.classList.add('hidden');
});
*/
document.addEventListener('click', function (event) {
const languagesDropdown = document.getElementById('languages');
const languageSelect = document.getElementById('languageSelect');
if (languagesDropdown && !languagesDropdown.contains(event.target) && !languageSelect.contains(event.target)) {
languagesDropdown.classList.add('hidden');
}
});
attachEvent('#header nav', 'click', function () {
document.querySelector('[data-aw-toggle-menu]')?.classList.remove('expanded');
document.body.classList.remove('overflow-hidden');
@ -56,6 +74,7 @@ import { UI } from 'astrowind:config';
attachEvent('[data-aw-toggle-menu]', 'click', function (_, elem) {
elem.classList.toggle('expanded');
document.getElementById('languages')?.classList.toggle('expanded');
document.body.classList.toggle('overflow-hidden');
document.getElementById('header')?.classList.toggle('h-screen');
document.getElementById('header')?.classList.toggle('expanded');

View File

@ -2,6 +2,7 @@
import { Icon } from 'astro-icon/components';
import { SITE } from 'astrowind:config';
import { getHomePermalink } from '~/utils/permalinks';
import { getLocalPath } from '@/i18n';
interface Link {
text?: string;
@ -32,7 +33,7 @@ const { socialLinks = [], secondaryLinks = [], links = [], footNote = '', theme
<div class="grid grid-cols-12 gap-4 gap-y-8 sm:gap-8 py-8 md:py-12">
<div class="col-span-12 lg:col-span-4">
<div class="mb-2">
<a class="inline-block font-bold text-xl" href={getHomePermalink()}>{SITE?.name}</a>
<a class="inline-block font-bold text-xl" href={getHomePermalink(getLocalPath(Astro.currentLocale || '', '/'))}>{SITE?.name}</a>
</div>
<div class="text-sm text-muted flex gap-1">
{

View File

@ -4,10 +4,12 @@ import Logo from '~/components/Logo.astro';
import ToggleTheme from '~/components/common/ToggleTheme.astro';
import ToggleMenu from '~/components/common/ToggleMenu.astro';
import Button from '~/components/ui/Button.astro';
import { getLocalPath } from '@/i18n';
import { getHomePermalink } from '~/utils/permalinks';
import { trimSlash, getAsset } from '~/utils/permalinks';
import type { CallToAction } from '~/types';
import { getLocalePaths, LOCALES, DEFAULT_LOCALE } from '@/i18n';
interface Link {
text?: string;
@ -31,6 +33,7 @@ export interface Props {
showRssFeed?: boolean;
position?: string;
showGithubStar?: boolean;
i18n?: boolean;
}
const {
@ -44,6 +47,7 @@ const {
showRssFeed = false,
showGithubStar = false,
position = 'center',
i18n = false,
} = Astro.props;
const currentPath = `/${trimSlash(new URL(Astro.url).pathname)}`;
@ -73,7 +77,7 @@ const currentPath = `/${trimSlash(new URL(Astro.url).pathname)}`;
]}
>
<div class:list={[{ 'mr-auto rtl:mr-0 rtl:ml-auto': position === 'right' }, 'flex justify-between']}>
<a class="flex items-center" href={getHomePermalink()}>
<a class="flex items-center" href={getHomePermalink(getLocalPath(Astro.currentLocale || '', '/'))}>
<Logo />
</a>
<div class="flex items-center md:hidden">
@ -137,6 +141,49 @@ const currentPath = `/${trimSlash(new URL(Astro.url).pathname)}`;
<div class="items-center flex justify-between w-full md:w-auto">
<div class="flex">
{showToggleTheme && <ToggleTheme iconClass="w-6 h-6 md:w-5 md:h-5 md:inline-block" />}
{
i18n && (
<>
<button
id="languageSelect"
type="button"
class="text-muted dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center"
>
<Icon name="tabler:language" class="w-6 h-6 md:w-5 md:h-5 md:inline-block" />
</button>
<ul
id="languages"
class="md:mt-12 hidden bg-white dark:bg-dark dropdown-menu md:backdrop-blur-md dark:md:bg-dark rounded absolute pl-4 md:pl-0 font-medium md:bg-white/90 md:min-w-[200px] drop-shadow-xl"
>
{getLocalePaths(Astro.url).map(({ path, lang }) => {
let path2 = path.replace(/\/$/, '');
if (path2.indexOf('/' + DEFAULT_LOCALE) === 0) {
path2 = path2 + '?lang=en';
}
path2 = path2.replace('/' + DEFAULT_LOCALE, '');
if (!path2) {
path2 = '/';
} else if (path2[0] != '/') {
path2 = '/' + path2;
}
return (
<li>
<a
class:list={[
'first:rounded-t last:rounded-b md:hover:bg-gray-100 hover:text-link dark:hover:text-white dark:hover:bg-gray-700 py-2 px-5 block whitespace-no-wrap',
{ 'text-primary': lang === Astro.currentLocale },
]}
href={path2}
>
{LOCALES[lang].label}
</a>
</li>
);
})}
</ul>
</>
)
}
{
showRssFeed && (
<a

View File

@ -11,7 +11,6 @@ metadata:
title:
default: RustDesk
template: '%s — RustDesk'
description: "RustDesk offers an open-source remote desktop solution with self-hosted server options. Perfect TeamViewer alternative for secure, private, and customizable remote access. Explore our professional on-premise licenses."
robots:
index: true
follow: true

92
v3/src/i18n.ts Normal file
View File

@ -0,0 +1,92 @@
import { DEFAULT_LOCALE_SETTING, LOCALES_SETTING } from "./locales";
import { getRelativeLocaleUrl } from "astro:i18n";
/**
* User-defined locales list
* @constant @readonly
*/
export const LOCALES = LOCALES_SETTING as Record<string, LocaleConfig>;
type LocaleConfig = {
readonly label: string;
readonly lang?: string;
readonly dir?: "ltr" | "rtl";
};
/**
* Type for the language code
* @example
* "en" | "ja" | ...
*/
export type Lang = keyof typeof LOCALES;
/**
* Default locale code
* @constant @readonly
*/
export const DEFAULT_LOCALE = DEFAULT_LOCALE_SETTING as Lang;
/**
* Type for the multilingual object
* @example
* { en: "Hello", ja: "こんにちは", ... }
*/
export type Multilingual = { [key in Lang]?: string };
/**
* Helper to get the translation function
* @param - The current language
* @returns - The translation function
*/
export function useTranslations(lang: Lang) {
return function t(multilingual: Multilingual | string): string {
if (typeof multilingual === "string") {
return multilingual;
} else {
return multilingual[lang] || multilingual[DEFAULT_LOCALE] || "";
}
};
}
/**
* Helper to get corresponding path list for all locales
* @param url - The current URL object
* @returns - The list of locale paths
*/
export function getLocalePaths(url: URL): LocalePath[] {
const path = url.pathname.replace(/^\/([a-zA-Z-]+)(?=\/|$)/, (match, p1) => {
return LOCALES[p1] ? '' : match;
});
return Object.keys(LOCALES).map((lang) => {
return {
lang: lang as Lang,
path: getRelativeLocaleUrl(lang, path)
};
});
}
type LocalePath = {
lang: Lang;
path: string;
};
/**
* Helper to get locale parms for Astro's `getStaticPaths` function
* @returns - The list of locale params
* @see https://docs.astro.build/en/guides/routing/#dynamic-routes
*/
export const localeParams = Object.keys(LOCALES).map((lang) => ({
params: { lang },
}));
export const getLocalPath = (lang: Lang, path: string) => {
if (!lang || lang === DEFAULT_LOCALE) {
return path + '?lang=en';
}
return lang + path;
}

View File

@ -17,18 +17,38 @@ import Scamming from '../components/common/Scamming.jsx';
// Comment the line below to disable View Transitions
import { ViewTransitions } from 'astro:transitions';
import { useTranslations, getLocalePaths, LOCALES, DEFAULT_LOCALE, type Lang } from '@/i18n';
import type { MetaData as MetaDataType } from '~/types';
export interface Props {
metadata?: MetaDataType;
i18n?: boolean;
}
const { metadata = {} } = Astro.props;
const { metadata = {}, i18n } = Astro.props;
const { language, textDirection } = I18N;
const t = useTranslations(Astro.currentLocale as Lang);
const langs = Object.keys(LOCALES);
const baseUrl = import.meta.env.PROD ? Astro.site : '/';
const defaultLocale = DEFAULT_LOCALE;
const locale = Astro.currentLocale as Lang;
metadata.description = t({
en: "RustDesk offers an open-source remote desktop solution with self-hosted server options. Perfect TeamViewer alternative for secure, private, and customizable remote access. Explore our professional on-premise licenses.",
es: "RustDesk ofrece una solución de escritorio remoto de código abierto con opciones de servidor autohospedado. La alternativa perfecta a TeamViewer para un acceso remoto seguro, privado y personalizable. Explore nuestras licencias profesionales locales.",
pt: "RustDesk oferece uma solução de desktop remoto de código aberto com opções de servidor auto-hospedado. Alternativa perfeita ao TeamViewer para acesso remoto seguro, privado e personalizável. Explore nossas licenças profissionais locais.",
fr: "RustDesk propose une solution de bureau à distance open source avec des options de serveur auto-hébergé. Alternative parfaite à TeamViewer pour un accès à distance sécurisé, privé et personnalisable. Explorez nos licences professionnel.",
de: "RustDesk bietet eine Open-Source-Lösung für Remote-Desktops mit selbstgehosteten Serveroptionen. Perfekte TeamViewer-Alternative für sicheren, privaten",
it: "RustDesk offre una soluzione open source per desktop remoto con opzioni di server self-hosted. Alternativa perfetta a TeamViewer per un accesso remoto sicuro, privato e personalizzabile. Esplora le nostre licenze professionali on-premise.",
ja: "RustDeskは、セルフホスト型サーバーオプションを備えたオープンソースのリモートデスクトップソリューションを提供しています。安全でプライベート、カスタマイズ可能なリモートアクセスのための完璧なTeamViewerの代替です。プロフェッショナルなオンプレミスライセンスをご覧ください。",
"zh-cn": "RustDesk提供了一个开源的远程桌面解决方案具有自托管服务器选项。是安全、私密和可定制的远程访问的完美TeamViewer替代品。探索我们的专业本地许可证。",
"zh-tw": "RustDesk 提供了一個開源的遠程桌面解決方案,具有自托管伺服器選項。是安全、私密和可定制的遠程訪問的完美 TeamViewer 替代品。探索我們的專業本地許可證。",
});
---
<!doctype html>
<html lang={language} dir={textDirection} class="2xl:text-[20px]">
<html lang={LOCALES[locale].lang || locale || language} dir={LOCALES[locale].dir || textDirection} class="2xl:text-[20px]">
<head>
<CommonMeta />
<Favicons />
@ -40,6 +60,41 @@ const { language, textDirection } = I18N;
<!-- Comment the line below to disable View Transitions -->
<ViewTransitions fallback="swap" />
{
i18n &&
getLocalePaths(Astro.url).map(({ path, lang }) => (
<link
rel="alternate"
hreflang={LOCALES[lang].lang || lang}
href={Astro.site?.origin + path.replace('/' + defaultLocale, '').replace(/\/$/, '')}
/>
))
}
{ i18n && Astro.currentLocale == defaultLocale && <script is:inline define:vars={{ langs, baseUrl, defaultLocale }}>
let lang;
try {
const urlParams = new URLSearchParams(window.location.search);
lang = urlParams.get('lang');
} catch (e) {
console.error(e);
}
if (lang) {
//
} else if (localStorage.selectedLang && langs.includes(localStorage.selectedLang)) {
lang = localStorage.selectedLang;
} else {
const browserLang = navigator.language.toLowerCase();
if (langs.includes(browserLang)) {
lang = browserLang;
} else if (langs.includes(browserLang.split('-')[0])) {
lang = browserLang.split('-')[0];
}
}
if (lang && lang !== defaultLocale) {
location.href = `${baseUrl + lang + location.pathname + (location.hash || location.search || '')}`.replace(/\/$/, '');
}
</script> }
</head>
<body class="antialiased text-default bg-page tracking-tight">

View File

@ -1,7 +1,7 @@
---
import Layout from '~/layouts/Layout.astro';
import Header from '~/components/widgets/Header.astro';
import Footer, {type Props as FD} from '~/components/widgets/Footer.astro';
import Footer, { type Props as FD } from '~/components/widgets/Footer.astro';
import Announcement from '~/components/widgets/Announcement.astro';
import { headerData, footerData } from '~/navigation';
@ -10,22 +10,23 @@ import type { MetaData } from '~/types';
export interface Props {
metadata?: MetaData;
i18n?: boolean;
}
const { metadata } = Astro.props;
const { metadata, i18n } = Astro.props;
---
<Layout metadata={metadata}>
<Layout metadata={metadata} i18n={i18n}>
<slot name="announcement">
<Announcement />
</slot>
<slot name="header">
<Header {...headerData} isSticky showGithubStar showToggleTheme />
<Header {...headerData(Astro.currentLocale)} isSticky showGithubStar showToggleTheme i18n={i18n} />
</slot>
<main>
<slot />
</main>
<slot name="footer">
<Footer {...footerData as FD} />
<Footer {...footerData(Astro.currentLocale) as FD} />
</slot>
</Layout>

51
v3/src/locales.ts Normal file
View File

@ -0,0 +1,51 @@
// locale settings for this theme
// https://astro-i18n-starter.pages.dev/setup/
export const DEFAULT_LOCALE_SETTING: string = "en";
export const LOCALES_SETTING: LocaleSetting = {
"en": {
"label": "English"
},
"de": {
"label": "Deutsch"
},
"es": {
"label": "Español"
},
"fr": {
"label": "Français"
},
"it": {
"label": "Italiano"
},
"ja": {
"label": "日本語"
},
"pt": {
"label": "Português"
},
"zh-cn": {
"label": "简体中文",
"lang": "zh-CN"
},
"zh-tw": {
"label": "繁體中文",
"lang": "zh-TW"
},
/*
"ar": {
"label": "العربية",
"dir": "rtl"
},
*/
};
interface LocaleSetting {
[key: Lowercase<string>]: {
label: string;
lang?: string;
dir?: 'rtl' | 'ltr';
};
} // refer: https://starlight.astro.build/reference/configuration/#locales

View File

@ -1,81 +1,234 @@
import { getPermalink, getAsset } from './utils/permalinks';
import { useTranslations, getLocalPath, type Lang } from '@/i18n';
export const headerData = {
links: [
{
text: 'Resources',
links: [
{
text: 'About us',
href: getPermalink('/team'),
},
{
text: 'Support',
href: getPermalink('/support'),
},
{
text: 'Web Client',
href: getPermalink('/web'),
},
{
text: 'Pro License Portal',
href: getPermalink('/self-host/account'),
},
{
text: 'FAQ',
href: 'https://github.com/rustdesk/rustdesk/wiki/FAQ',
},
],
},
{
text: 'Pricing',
href: getPermalink('/pricing'),
},
{
text: 'Docs',
href: getPermalink('/docs'),
},
{
text: 'Blog',
href: getPermalink('/blog'),
},
],
actions: [{ text: 'Download', href: 'https://github.com/rustdesk/rustdesk/releases/latest', target: '_blank' }],
};
export const headerData = (locale?: Lang) => {
const t = useTranslations(locale || '');
return {
links: [
{
text: t({
en: 'Resources',
de: 'Ressourcen',
es: 'Recursos',
fr: 'Ressources',
it: 'Risorse',
ja: 'リソース',
pt: 'Recursos',
'zh-cn': '资源',
'zh-tw': '資源',
}),
links: [
{
text: t({
en: 'About us',
de: 'Über uns',
es: 'Sobre nosotros',
fr: 'À propos de nous',
it: 'Chi siamo',
ja: '私たちについて',
pt: 'Sobre nós',
'zh-cn': '关于我们',
'zh-tw': '關於我們',
}),
href: getPermalink(getLocalPath(locale || '', '/team')),
},
{
text: t({
en: 'Support',
de: 'Support',
es: 'Soporte',
fr: 'Support',
it: 'Supporto',
ja: 'サポート',
pt: 'Suporte',
'zh-cn': '支持',
'zh-tw': '支持',
}),
href: getPermalink(getLocalPath(locale || '', '/support')),
},
{
text: t({
en: 'Web Client',
de: 'Web-Client',
es: 'Cliente web',
fr: 'Client Web',
it: 'Client Web',
ja: 'Webクライアント',
pt: 'Cliente Web',
'zh-cn': 'Web客户端',
'zh-tw': 'Web客戶端',
}),
href: getPermalink('/web'),
},
{
text: t({
en: 'Pro License Portal',
de: 'Pro-Lizenzportal',
es: 'Portal de licencias Pro',
fr: 'Portail de licence Pro',
it: 'Portale delle licenze Pro',
ja: 'Proライセンスポータル',
pt: 'Portal de licença Pro',
'zh-cn': '专业许可证门户',
'zh-tw': '專業許可證門戶',
}),
href: getPermalink('/self-host/account'),
},
{
text: 'FAQ',
href: 'https://github.com/rustdesk/rustdesk/wiki/FAQ',
},
],
},
{
text: t({
en: 'Pricing',
de: 'Preise',
es: 'Precios',
fr: 'Tarification',
it: 'Prezzi',
ja: '料金',
pt: 'Preços',
'zh-cn': '定价',
'zh-tw': '定價',
}),
href: getPermalink(getLocalPath(locale || '', '/pricing')),
},
{
text: t({
en: 'Docs',
de: 'Dokumentation',
es: 'Documentación',
fr: 'Documentation',
it: 'Documentazione',
ja: 'ドキュメント',
pt: 'Documentação',
'zh-cn': '文档',
'zh-tw': '文件',
}),
href: getPermalink('/docs'),
},
{
text: t({
en: 'Blog',
ja: 'ブログ',
'zh-cn': '博客',
'zh-tw': '博客',
}),
href: getPermalink('/blog'),
},
],
actions: [{
text: t({
en: 'Download',
de: 'Herunterladen',
es: 'Descargar',
fr: 'Télécharger',
it: 'Scaricare',
ja: 'ダウンロード',
pt: 'Baixar',
'zh-cn': '下载',
'zh-tw': '下載',
})
, href: 'https://github.com/rustdesk/rustdesk/releases/latest', target: '_blank'
}],
}
;
}
export const footerData = {
links: [
{ title: 'Resources', links: headerData.links[0].links },
{
title: 'Community',
links: [
{ text: 'X', href: 'https://twitter.com/rustdesk' },
{ text: 'Discord', href: 'https://discord.com/invite/nDceKgxnkV' },
{ text: 'Reddit', href: 'https://www.reddit.com/r/rustdesk/' },
{ text: 'GitHub', href: 'https://github.com/rustdesk/rustdesk' },
],
},
{
title: 'Download',
links: [
{ text: 'RustDesk Client', href: 'https://github.com/rustdesk/rustdesk/releases/latest' },
{ text: 'RustDesk Server OSS', href: 'https://github.com/rustdesk/rustdesk-server/releases/latest' },
{ text: 'RustDesk Server Pro', href: 'https://github.com/rustdesk/rustdesk-server-pro/releases/latest' },
],
},
],
secondaryLinks: [
{ text: 'Terms', href: getPermalink('/terms') },
{ text: 'Privacy Policy', href: getPermalink('/privacy') },
],
socialLinks: [
{ ariaLabel: 'X', icon: 'tabler:brand-x', href: 'https://twitter.com/rustdesk' },
{ ariaLabel: 'Discord', icon: 'tabler:brand-discord', href: 'https://discord.com/invite/nDceKgxnkV' },
{ ariaLabel: 'Reddit', icon: 'tabler:brand-reddit', href: 'https://www.reddit.com/r/rustdesk/' },
{ ariaLabel: 'RSS', icon: 'tabler:rss', href: getAsset('/rss.xml') },
{ ariaLabel: 'Github', icon: 'tabler:brand-github', href: 'https://github.com/rustdesk/rustdesk' },
],
footNote: `
© 2024 Purslane Ltd. All rights reserved.
`,
};
export const footerData = (locale?: Lang) => {
const t = useTranslations(locale || '');
return {
links: [
{ title: headerData(locale).links[0].text, links: headerData(locale).links[0].links },
{
title: t({
en: 'Community',
de: 'Gemeinschaft',
es: 'Comunidad',
fr: 'Communauté',
it: 'Comunità',
ja: 'コミュニティ',
pt: 'Comunidade',
'zh-cn': '社区',
'zh-tw': '社區',
}),
links: [
{ text: 'X', href: 'https://twitter.com/rustdesk' },
{ text: 'Discord', href: 'https://discord.com/invite/nDceKgxnkV' },
{ text: 'Reddit', href: 'https://www.reddit.com/r/rustdesk/' },
{ text: 'GitHub', href: 'https://github.com/rustdesk/rustdesk' },
],
},
{
title: t({
en: 'Download',
de: 'Herunterladen',
es: 'Descargar',
fr: 'Télécharger',
it: 'Scaricare',
ja: 'ダウンロード',
pt: 'Baixar',
'zh-cn': '下载',
'zh-tw': '下載',
}),
links: [
{
text: t({
en: 'RustDesk Client',
de: 'RustDesk-Client',
es: 'Cliente de RustDesk',
fr: 'Client RustDesk',
it: 'Client RustDesk',
ja: 'RustDeskクライアント',
pt: 'Cliente RustDesk',
'zh-cn': 'RustDesk客户端',
'zh-tw': 'RustDesk客戶端',
})
, href: 'https://github.com/rustdesk/rustdesk/releases/latest'
},
{ text: 'RustDesk Server OSS', href: 'https://github.com/rustdesk/rustdesk-server/releases/latest' },
{ text: 'RustDesk Server Pro', href: 'https://github.com/rustdesk/rustdesk-server-pro/releases/latest' },
],
},
],
secondaryLinks: [
{
text: t({
en: 'Terms',
de: 'Bedingungen',
es: 'Términos',
fr: 'Termes',
it: 'Termini',
ja: '利用規約',
pt: 'Termos',
'zh-cn': '条款',
'zh-tw': '條款',
})
, href: getPermalink('/terms')
},
{
text: t({
en: 'Privacy Policy',
de: 'Datenschutz-Bestimmungen',
es: 'Política de privacidad',
fr: 'Politique de confidentialité',
it: 'Informativa sulla privacy',
ja: 'プライバシーポリシー',
pt: 'Política de Privacidade',
'zh-cn': '隐私政策',
'zh-tw': '隱私政策',
})
, href: getPermalink('/privacy')
},
],
socialLinks: [
{ ariaLabel: 'X', icon: 'tabler:brand-x', href: 'https://twitter.com/rustdesk' },
{ ariaLabel: 'Discord', icon: 'tabler:brand-discord', href: 'https://discord.com/invite/nDceKgxnkV' },
{ ariaLabel: 'Reddit', icon: 'tabler:brand-reddit', href: 'https://www.reddit.com/r/rustdesk/' },
{ ariaLabel: 'RSS', icon: 'tabler:rss', href: getAsset('/rss.xml') },
{ ariaLabel: 'Github', icon: 'tabler:brand-github', href: 'https://github.com/rustdesk/rustdesk' },
],
footNote: '© 2024 Purslane',
};
}

255
v3/src/pages/de/index.astro Normal file
View File

@ -0,0 +1,255 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps from '~/components/widgets/Steps.astro';
import Content from '~/components/widgets/Content.astro';
import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro';
import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import Carousel from '~/components/widgets/Carousel.jsx';
import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: Open-Source-Fernzugriff mit selbst gehosteten Serverlösungen',
ignoreTitleTemplate: true,
};
---
<Layout metadata={metadata} i18n>
<Note
title="Hinweis"
subtitle='<span class="text-2xl text-font-bold">rustdesk.com</span> ist unsere einzige offizielle Domain. Bitte laden Sie RustDesk nicht von anderen Domains herunter.'
/>
<Hero
actions={[
{
variant: 'primary',
text: 'Herunterladen',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{
text: 'Selbst-Hosting',
href: 'https://rustdesk.com/docs/en/self-host/',
target: '_blank',
icon: 'tabler:book',
},
]}
>
<Fragment slot="title">Die schnelle Open-Source-Software für Fernzugriff und Support</Fragment>
<Fragment slot="subtitle">
Wechseln Sie von TeamViewer, AnyDesk und Splashtop zu RustDesk für eine sichere und zuverlässige
Fernzugriffserfahrung mit Ihren eigenen selbst gehosteten Servern.
</Fragment>
<Fragment slot="content">
<br /><br />
<Carousel
client:load
list={[
{ src: '/remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: '/main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/custom.png', className: 'rounded-[15px] border border-gray-700' },
]}
/>
</Fragment>
</Hero>
<Content
isReversed
tagline="Einblick in das Selbst-Hosting"
title="Stärken Sie Ihren Fernzugriff mit selbst gehosteten Servern"
items={[
{
title: 'Datensouveränität',
description:
'Einfache Einhaltung von Vorschriften: Selbst gehostetes RustDesk gewährleistet Datensouveränität.',
},
{
title: 'Verbesserte Sicherheit',
description: 'Stärken Sie Ihre Sicherheit: On-Premise-Bereitstellung hält Ihre Daten unter Ihrer Kontrolle.',
},
{
title: 'Leistung und Zuverlässigkeit',
description:
'Garantierte Verfügbarkeit: On-Premise-Bereitstellung gewährleistet optimale Leistung und minimale Ausfallzeiten.',
},
{
title: 'Flexibilität und Anpassung',
description: 'Passen Sie RustDesk On-Premise an Ihre einzigartigen Anforderungen an.',
},
]}
image={{
src: '~/assets/images/hosting.jpg',
alt: 'Hosting-Bild',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Warum Selbst-Hosting?</h3>
Sind Sie frustriert von SaaS-Plattformen aufgrund ihrer instabilen Leistung, mangelnden Transparenz und unsicheren
Datensicherheitsrisiken?
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Content
isAfterContent
items={[
{
title: 'Ihre Marke, Ihr Weg',
description: `Personalisieren Sie den RustDesk-Client mit Ihrem Namen, Icon und Logo.`,
},
{
title: 'Einfache Bereitstellung',
description: `Integrierte Netzwerkkonfiguration und Server-Setup machen die Bereitstellung von RustDesk On-Premise zum Kinderspiel.`,
},
{
title: 'Erweiterte Konfigurationsoptionen',
description:
'Mehr als 90 Optionen können konfiguriert werden, um Ihren spezifischen Bedürfnissen gerecht zu werden.',
},
{
title: 'Multi-Plattform-Unterstützung',
description: 'Windows, macOS, Linux, Android.',
},
{
title: 'Web-Client',
description:
'Hosten Sie den Web-Client auf Ihrem Server mit Ihrem Domainnamen, um den Fernzugriff noch einfacher zu gestalten.',
},
]}
image={{
src: '~/assets/images/qs.png',
alt: 'QuickSupport-Bild',
class: 'bg-transparent',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Angepasster Client</h3>
Passen Sie Ihren Client mit Ihrer Marke an und machen Sie ihn wirklich zu Ihrem Eigenen.
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Steps
isReversed
title="Einfache Selbst-Hosting-Installation"
items={[
{
title: 'Schritt 1: Docker installieren',
description: '<code class="text-gray-600 dark:text-gray-500">bash <(wget -qO- https://get.docker.com)</code>',
icon: 'tabler:package',
},
{
title: 'Schritt 2: compose.yml herunterladen',
description: `<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/oss.yml -O compose.yml</code>
<p class="text-center text-sm">oder</p>
<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/pro.yml -O compose.yml</code>`,
icon: 'tabler:download',
},
{
title: `Schritt 3: Compose ausführen`,
description: '<code class="text-gray-600 dark:text-gray-500">docker compose up -d</code>',
icon: 'tabler:hammer',
},
{
title: 'Fertig!',
icon: 'tabler:check',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Schritte-Bild',
}}
>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Steps>
<Stats
tagline="Szenarien"
title="Wer nutzt Selbst-Hosting?"
subtitle="Die folgenden Daten stammen aus unserer Online-Umfrage mit über 1.000 Selbst-Hosting-Nutzern."
stats={[
{ title: 'IT-Support', amount: '37%' },
{ title: 'IT-Administration', amount: '25%' },
{ title: 'Remote-Arbeit', amount: '29%' },
{ title: 'Industrie und andere', amount: '9%' },
]}
/>
<BlogLatestPosts title="Finden Sie weitere Inhalte in unserem Blog" />
<Stats
tagline="Open Source"
title="Öffentlich entwickelt mit einer lebendigen Community"
subtitle="Schließen Sie sich einer Community-getriebenen Lösung an, die Millionen von Downloads hat und von Tausenden von Organisationen genutzt wird."
stats={[
{ title: 'Client-Downloads', amount: '10M+' },
{ title: 'Docker-Downloads', amount: '1M+' },
{ title: 'Aktive Geräte', amount: '3M+' },
{ title: 'Sterne', amount: '74K+' },
{ title: 'Forks', amount: '9K+' },
{ title: 'Community-Mitglieder', amount: '22K+' },
{ title: 'Sprachen', amount: '45' },
]}
/>
<Hero
actions={[
{
text: 'GitHub',
href: 'https://github.com/rustdesk/rustdesk/discussions',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Discord',
href: 'https://discord.gg/nDceKgxnkV',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Reddit',
href: 'https://www.reddit.com/r/rustdesk/',
target: '_blank',
icon: 'tabler:message-circle',
},
]}
>
<Fragment slot="title">Treten Sie der Community bei</Fragment>
<Fragment slot="subtitle">Entdecken Sie, was unsere Community über ihre RustDesk-Erfahrung zu sagen hat.</Fragment>
</Hero>
<CallToAction
actions={[
{
variant: 'primary',
text: 'Herunterladen',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{
text: 'Selbst-Hosting',
href: 'https://rustdesk.com/docs/en/self-host/',
target: '_blank',
icon: 'tabler:book',
},
]}
>
<Fragment slot="title">Erleben Sie RustDesk selbst</Fragment>
</CallToAction>
</Layout>

View File

@ -0,0 +1,449 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Note from '~/components/widgets/Note.astro';
import Prices from '~/components/widgets/Pricing.astro';
import FAQs from '~/components/widgets/FAQs.astro';
import Steps from '~/components/widgets/Steps.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Preise',
};
---
<script>
import Swal from 'sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';
window['gotoBuy'] = function (redirectUrl) {
Swal.fire({
title: 'Bitte bestätigen',
html: '<p style="text-align:left">Möchten Sie zur Kaufseite weitergeleitet werden? <br><br>Bitte beachten Sie, dass Sie <b style="font-size: 2em">KEIN</b> <span style="text-decoration:line-through">SaaS (Software as a Service) Abonnement</span> erwerben. <br><br>Stattdessen handelt es sich um eine Lizenz für eine <b style="font-size: 2em">Self-Hosting</b> Lösung, die Sie auf Ihrem eigenen Server bereitstellen müssen (Cloud-Server, z.B. AWS EC2, Azure VM, Vultr VPS etc. oder Ihr eigener On-Premise-Server). <br><br>Bitte <b style="font-size: 2em">kaufen Sie nicht</b>, wenn Sie nicht wissen, was Self-Hosting bedeutet.',
icon: 'question',
showCancelButton: true,
confirmButtonText: 'Ja',
cancelButtonText: 'Nein',
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Bitte bestätigen',
html: 'Bitte beachten Sie, dass wir <span class="text-3xl font-bold">keine</span> <span class="text-3xl font-bold">Rückerstattungen</span> anbieten. Wir empfehlen dringend, <span class="underline font-bold">unseren kostenlosen Self-Hosting-Plan zu testen</span>, bevor Sie den Kauf unseres Pro-Plans in Erwägung ziehen. Möchten Sie trotzdem fortfahren?',
showCancelButton: true,
confirmButtonText: 'Ja',
cancelButtonText: 'Nein',
}).then((result) => {
if (result.isConfirmed) {
window.open(redirectUrl, '_blank');
}
});
}
});
};
</script>
<Layout metadata={metadata} i18n>
<Note
title="Hinweis"
subtitle='Diese Preise gelten für eine <span class="text-xl text-blue-500">Self-Hosting</span> Lösung, es ist <span class="text-3xl font-extrabold">KEIN</span> <span class="line-through text-xl text-blue-500">SaaS</span> Abonnement.'
/>
<Prices
title='Preise für unsere <span class="text-5xl text-blue-500">Self-Hosting</span> Lösungen'
subtitle="Zahlen Sie nur für das, was Sie benötigen"
prices={[
{
title: 'Kostenlos',
subtitle: 'Kostenloser Self-Hosting-Plan',
price: '0 <span class="text-sm">/Monat</span>',
period: 'Open Source und kostenlos',
items: [
{
description: 'Online-Status',
},
{
description: 'Community-Support',
},
],
callToAction: {
target: '_blank',
text: 'Loslegen',
href: 'https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/',
},
},
{
title: 'Individuell',
subtitle: 'Individueller Self-Hosting <span class="font-bold">Pro</span> Plan',
price: '9,90 <span class="text-sm">/Monat</span>',
period: 'jährlich abgerechnet',
items: [
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">1 lizenzierter Benutzer</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">20 verwaltete Geräte</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">Unbegrenzte gleichzeitige Verbindungen</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/2fa/">2FA</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/console/">Web-Konsole</a>',
},
{
description: 'Adressbuch',
},
{
description: 'Audit-Log',
},
{
description: 'ID ändern',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/">Zugriffskontrolle</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/strategy/">Zentralisierte Einstellungen</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/relay/">Verteilte Relay-Server</a>',
},
],
callToAction: {
text: 'Jetzt kaufen',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Individual")',
variant: 'primary',
},
},
{
title: 'Basic',
subtitle: 'Basic Self-Hosting <span class="font-bold">Pro</span> Plan',
price: '19,90 <span class="text-sm">/Monat</span>',
period: 'jährlich abgerechnet',
items: [
{
description: '<span class="font-bold">Alles im individuellen Plan</span>',
icon: 'tabler:checks',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">10 lizenzierte Benutzer</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">100 verwaltete Geräte</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/oidc/">OIDC (SSO)</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/ldap/">LDAP-Integration</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/#cross-group-settings">Gruppenübergreifender Zugriff</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://rustdesk.com/docs/en/self-host/client-configuration/#1-custom-client-generator-pro-only">Benutzerdefinierter Client-Generator</a>',
},
],
callToAction: {
text: 'Jetzt kaufen',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Basic")',
},
hasRibbon: true,
ribbonTitle: 'beliebt',
},
{
title: 'Angepasst',
subtitle: 'Angepasster <span class="font-bold">Pro</span> Plan',
price: '<span id="cprice">19,90</span> <span class="text-sm">/Monat</span>',
period: 'jährlich abgerechnet',
items: [
{
description: '<span class="font-bold">Alles im Basic-Plan</span>',
icon: 'tabler:checks',
},
{
description: '1 € für jeden zusätzlichen Benutzer',
},
{
description: '0,1 € für jedes zusätzliche Gerät',
},
],
content: `
<form class="flex flex-col space-y-3 mx-3 min-w-[200px]">
<label for="users" class="text-left font-bold">Anzahl lizenzierter Benutzer:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users" name="users" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider" class="slider" name="usersRange" value="10" min="10" max="500" step="10">
<label for="devices" class="text-left font-bold">Anzahl verwalteter Geräte:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices" name="devices" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider" class="slider" name="devicesRange" value="100" min="100" max="5000" step="100">
</form>
<br>
<script>
var users = 10;
var devices = 100;
function submit() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users + "&devices=" + devices;
gotoBuy(redirectUrl);
}
function calculatePrice() {
users = parseInt(document.getElementById("users").value);
devices = parseInt(document.getElementById("devices").value);
if (!users || users < 10) users = 10;
if (devices < 100) devices = 100;
var price = 19.9 + (users - 10) + (devices - 100) * 0.1;
document.getElementById("cprice").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
document.getElementById("users").oninput = function() {
document.getElementById("usersSlider").value = this.value;
calculatePrice();
}
document.getElementById("devices").oninput = function() {
document.getElementById("devicesSlider").value = this.value;
calculatePrice();
}
document.getElementById("usersSlider").oninput = function() {
document.getElementById("users").value = this.value;
calculatePrice();
}
document.getElementById("devicesSlider").oninput = function() {
document.getElementById("devices").value = this.value;
calculatePrice();
}
</script>
`,
callToAction: {
text: 'Jetzt kaufen',
onclick: 'submit()',
variant: 'primary',
},
},
]}
/>
<Prices
prices={[
{
title: 'Angepasst V2',
subtitle: 'Angepasster <span class="font-bold">Pro</span> Plan mit begrenzten gleichzeitigen Verbindungen',
price: '<span id="cprice2">19,90</span> <span class="text-sm">/Monat</span>',
period: 'jährlich abgerechnet',
items: [
{
description:
'<span class="font-bold">Alles im Basic Self-Hosting-Plan <span class="underline font-normal">aber mit begrenzten gleichzeitigen Verbindungen, überschüssige verwaltete Geräte werden nicht deaktiviert</span></span>',
icon: 'tabler:checks',
},
{
description: 'Unbegrenzte gleichzeitige Sitzungen (in Tabs oder separaten Fenstern) pro gleichzeitiger Verbindung',
},
{
description: '1 € für jeden zusätzlichen Benutzer',
},
{
description: '0,1 € für jedes zusätzliche Gerät',
},
{
description: '20 € für jede zusätzliche gleichzeitige Verbindung',
},
],
id: 'custom2',
content: `
<form class="flex flex-col space-y-3 mx-3">
<label for="users2" class="text-left font-bold">Anzahl lizenzierter Benutzer:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users2" name="users2" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider2" class="slider" name="usersRange2" value="10" min="10" max="500" step="10">
<label for="devices2" class="text-left font-bold">Anzahl verwalteter Geräte:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices2" name="devices2" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider2" class="slider" name="devicesRange2" value="100" min="100" max="5000" step="100">
<label for="conns" class="text-left font-bold">Anzahl gleichzeitiger Verbindungen:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="conns" name="conns" value="1" min="1" max="50" step="1">
<input type="range" id="connsSlider" class="slider" name="connsRange" value="1" min="1" max="50" step="1">
</form>
<br>
<script>
var users2 = 10;
var devices2 = 100;
var conns = 1;
function submit2() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users2 + "&devices=" + devices2 + "&conns=" + conns;
gotoBuy(redirectUrl);
}
function calculatePrice2() {
users2 = parseInt(document.getElementById("users2").value);
devices2 = parseInt(document.getElementById("devices2").value);
conns = parseInt(document.getElementById("conns").value);
if (!users2 || users2 < 10) users2 = 10;
if (devices2 < 100) devices2 = 100;
if (conns < 1) conns = 1;
var price = 19.9 + (users2 - 10) + (devices2 - 100) * 0.1 + (conns - 1) * 20;
document.getElementById("cprice2").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
if (window.location.href.indexOf("custom2") > 0) {
setTimeout(function() { window.location = "#custom2"; }, 150);
} else {
setTimeout(function() { document.getElementById("custom2").parentElement.parentElement.parentElement.style.display = 'none'; }, 0);
}
document.getElementById("users2").oninput = function() {
document.getElementById("usersSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("devices2").oninput = function() {
document.getElementById("devicesSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("conns").oninput = function() {
document.getElementById("connsSlider").value = this.value;
calculatePrice2();
}
document.getElementById("usersSlider2").oninput = function() {
document.getElementById("users2").value = this.value;
calculatePrice2();
}
document.getElementById("devicesSlider2").oninput = function() {
document.getElementById("devices2").value = this.value;
calculatePrice2();
}
document.getElementById("connsSlider").oninput = function() {
document.getElementById("conns").value = this.value;
calculatePrice2();
}
</script>
`,
callToAction: {
text: 'Jetzt kaufen',
onclick: 'submit2()',
variant: 'primary',
},
},
]}
/>
<CallToAction
actions={[
{
text: 'sales@rustdesk.com',
href: 'mailto:sales@rustdesk.com',
target: '_blank',
icon: 'tabler:mail',
},
]}
>
<Fragment slot="title">Kontaktieren Sie uns für größere Pläne & Anfragen</Fragment>
</CallToAction>
<Steps
title="Eine geführte Reise von der Planung bis zur Produktion"
tagline="vereinfachter Prozess"
isReversed={true}
items={[
{
title: 'RustDesk Server Pro installieren',
icon: 'tabler:number-1',
description:
'<code>bash <(wget -qO- https://get.docker.com)<br>wget rustdesk.com/pro.yml -O compose.yml<br>docker compose up -d</code>',
},
{
title: 'Pläne erkunden und einen Plan auswählen',
icon: 'tabler:number-2',
},
{
title: 'E-Mail und Zahlungsdetails eingeben',
icon: 'tabler:number-3',
},
{
title: 'Erhalten Sie den Lizenzschlüssel über die von Ihnen angegebene E-Mail',
icon: 'tabler:number-4',
},
{
title: 'Geben Sie den Lizenzschlüssel in der Web-Konsole von RustDesk Server Pro ein',
icon: 'tabler:number-5',
},
{
title: 'Fertig!',
icon: 'tabler:check',
description:
'Für detaillierte Anweisungen lesen Sie bitte unsere <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/">Dokumentation</a>.',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Schritte Bild',
}}
/>
<FAQs
title="Preis-FAQs"
subtitle="Die Wahl des richtigen Plans ist wichtig, und wir sind hier, um Ihre Fragen zu beantworten. Wenn Sie Fragen zu unseren Preisoptionen haben, sind Sie hier richtig."
columns={1}
items={[
{
title: 'Beinhalten die Pläne Kundensupport?',
description:
'Absolut, alle kostenpflichtigen Pläne beinhalten Zugang zu unserem engagierten Kundensupport, der Ihnen bei allen Fragen oder Anliegen zur Seite steht.',
},
{
title: 'Gibt es eine Testlizenz?',
description: 'Bitte <a class="underline" href="mailto:sales@rustdesk.com">kontaktieren Sie uns</a>',
},
{
title: 'Wie kann ich meinen Plan upgraden?',
description:
'Selbstverständlich! Sie können Ihren Plan jederzeit einfach <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#renewupgrade-license">upgraden</a>, um den Plan zu finden, der Ihren sich entwickelnden Anforderungen am besten entspricht.',
},
{
title: 'Welche Zahlungsmethoden akzeptieren Sie?',
description:
'Wir akzeptieren alle gängigen Kreditkarten und Online-Zahlungsmethoden, um einen bequemen und sicheren Transaktionsprozess zu gewährleisten. Wenn Sie per Banküberweisung bezahlen möchten, <a class="underline" href="mailto:sales@rustdesk.com">kontaktieren Sie uns bitte</a>; es fallen zusätzliche Bankbearbeitungsgebühren an, und wir senden Ihnen den Lizenzschlüssel, sobald wir die Offline-Zahlung auf dem Bankkonto erhalten haben; dies dauert 3-5 Werktage.',
},
{
title: 'Gibt es versteckte Gebühren über die angezeigten Kosten hinaus?',
description:
'Nein, die Kosten decken alle Funktionen ab, die unter jedem Plan aufgeführt sind. Es gibt keine versteckten Gebühren oder zusätzlichen Kosten.',
},
{
title: 'Bieten Sie monatliche Zahlungen an?',
description:
'Nein, wir bieten nur jährliche Zahlungspläne an. Wir erneuern nicht automatisch; Sie erhalten 14 Tage vor Ablauf Ihrer Lizenz eine E-Mail, die Sie an die Erneuerung erinnert.',
},
{
title: 'Gibt es Rabatte für gemeinnützige oder Bildungsorganisationen?',
description: 'Nein, wir haben das noch nicht. Wir empfehlen Ihnen, den kostenlosen Plan zu nutzen.',
},
{
title: "Was sind Ihre Geschäftsbedingungen?",
description:
'Bitte überprüfen Sie diese <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/blob/main/terms">Bedingungen</a>',
},
{
title: 'Wie sieht es mit gelegentlichen Support-Fällen aus? Wir haben einige Geräte, die gelegentlich unterstützt werden müssen, ohne unbeaufsichtigten Zugriff.',
description:
'Wir bieten diese <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10083053">Lösung</a> an',
}
]}
/>
</Layout>

View File

@ -0,0 +1,43 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'Support',
};
---
<Layout metadata={metadata} i18n>
<Features2
title="We are here to help!"
items={[
{
title: 'Issues',
description: `Found a bug? We'd love to hear about it in our GitHub issues.`,
},
{
title: 'Community Support',
description: 'Join our Discord server to browse for help and best practices.',
},
{
title: 'Ticket for Pro User',
description: 'Email us if you encounter any issues while using RustDesk Server Pro.',
},
{
title: 'GitHub',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">Open an issue</a>',
icon: 'tabler:brand-github',
},
{
title: 'Discord',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">Join our server</a>',
icon: 'tabler:brand-discord',
},
{
title: 'Email',
description: '<a href="mailto:support@rustdesk.com">support@rustdesk.com</a>',
icon: 'tabler:mail',
},
]}
/>
</Layout>

View File

@ -0,0 +1,64 @@
---
import Features2 from '~/components/widgets/Features2.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps2 from '~/components/widgets/Steps2.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Über uns',
};
---
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="Über uns">
<Fragment slot="title">Warum bauen wir das?</Fragment>
<Fragment slot="subtitle">
<p class="text-left">
Inmitten der Covid-19-Pandemie Mitte 2020 sah sich der jetzige Hauptentwickler / Gründer gezwungen, eine kommerzielle Lizenz für TeamViewer zu erwerben, um Fernarbeit in Singapur zu ermöglichen. Die hohen Kosten überraschten ihn jedoch. Nach einer schlaflosen Nacht machte er sich daran, eine alternative Lösung zu entwickeln. So entstand RustDesk - eine Open-Source-Software für Fernzugriff, die in zahlreichen schlaflosen Nächten sorgfältig entwickelt wurde. Diese Arbeit voller Hingabe und Entschlossenheit gipfelte in der Veröffentlichung von RustDesk auf GitHub im Jahr 2021, wodurch es von Menschen weltweit genutzt werden konnte.
</p>
</Fragment>
</Hero>
<!-- Steps2 Widget ****************** -->
<Steps2
title="Kernteam"
items={[
{
title: 'Joseph Jacks<br><small>CEO</small>',
description:
"Joseph Jacks gründete OSS Capital im Jahr 2018. Es ist der weltweit erste und einzige Frühphasen-VC, der sich ausschließlich auf COSS-Startups (Commercial Open Source) auf globaler Basis konzentriert. Zuvor half er beim Start und der Leitung des allerersten Kubernetes-Startups (Kismatic) und gründete und leitete auch KubeCon (die Kubernetes-Community-Konferenz), bevor er sie 2016 an die Linux Foundation spendete, als die CNCF (Cloud Native Computing Foundation) Gestalt annahm.",
icon: 'tabler:user',
},
{
title: 'Huabing Zhou<br><small>CTO</small>',
description:
'Vor der Gründung und Entwicklung von RustDesk sammelte Huabing Zhou über 12 Jahre Erfahrung im Bereich der Finanz-IT während seiner Arbeit in Singapur. Er bringt eine Fülle von Praxiserfahrung sowohl in das Projekt als auch in die Geschäftsführung ein.',
icon: 'tabler:user',
},
{
title: 'Daniel Lamb<br><small>Community-Assistent</small>',
description:
"Mit einer bemerkenswerten Karriere von einem Vierteljahrhundert in der IT-Branche hat Daniel Lamb aktiv an zahlreichen Open-Source-Projekten teilgenommen und verschiedene Rollen und Verantwortlichkeiten übernommen. Darüber hinaus hat er erfolgreich ein IT-Dienstleistungsunternehmen mit Sitz in Schottland gegründet, das Kunden weltweit betreut. Daniels umfangreiche Expertise umfasst Support, Vertrieb und Community-Engagement und bringt eine große Menge an Wissen und Erfahrung in das Projekt ein.",
icon: 'tabler:user',
},
]}
/>
<!-- Features2 Widget ************** -->
<Features2
title="Unsere Standorte"
tagline="Finden Sie uns"
columns={1}
items={[
{
title: 'Singapur',
description: '18A, Canberra Drive, Yishun',
},
]}
/>
</Layout>

240
v3/src/pages/es/index.astro Normal file
View File

@ -0,0 +1,240 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps from '~/components/widgets/Steps.astro';
import Content from '~/components/widgets/Content.astro';
import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro';
import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import Carousel from '~/components/widgets/Carousel.jsx';
import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: Escritorio remoto de código abierto con soluciones de servidor autoalojado',
ignoreTitleTemplate: true,
};
---
<Layout metadata={metadata} i18n>
<Note
title="Nota"
subtitle='<span class="text-2xl text-font-bold">rustdesk.com</span> es nuestro único dominio oficial. Por favor, no descargue RustDesk de otros dominios.'
/>
<Hero
actions={[
{
variant: 'primary',
text: 'Descargar',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'Autoalojamiento', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> El Software de Acceso Remoto y Soporte de Código Abierto Más Rápido </Fragment>
<Fragment slot="subtitle">
Cambie de TeamViewer, AnyDesk y Splashtop a RustDesk para una experiencia de escritorio remoto segura y confiable
con sus propios servidores autoalojados.
</Fragment>
<Fragment slot="content">
<br /><br />
<Carousel
client:load
list={[
{ src: '/remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: '/main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/custom.png', className: 'rounded-[15px] border border-gray-700' },
]}
/>
</Fragment>
</Hero>
<Content
isReversed
tagline="Información sobre el autohospedaje"
title="Potencie su acceso remoto con servidores autohospedaje"
items={[
{
title: 'Soberanía de datos',
description: 'Cumplimiento normativo facilitado: RustDesk autoalojado garantiza la soberanía de los datos.',
},
{
title: 'Seguridad mejorada',
description: 'Fortalezca su seguridad: la implementación en sus instalaciones mantiene sus datos bajo su control.',
},
{
title: 'Rendimiento y fiabilidad',
description: 'Tiempo de actividad garantizado: la implementación en sus instalaciones asegura un rendimiento óptimo y un tiempo de inactividad mínimo.',
},
{
title: 'Flexibilidad y personalización',
description: 'Adapte RustDesk en sus instalaciones para satisfacer sus requisitos únicos.',
},
]}
image={{
src: '~/assets/images/hosting.jpg',
alt: 'Imagen de Alojamiento',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">¿Por qué el autoalojamiento?</h3>
¿Está frustrado con las plataformas SaaS debido a su rendimiento inestable, falta de transparencia y riesgos inciertos de seguridad de datos?
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Content
isAfterContent
items={[
{
title: 'Su marca, a su manera',
description: `Personalice el cliente RustDesk con su nombre, icono y logotipo.`,
},
{
title: 'Implementación fácil',
description: `La configuración de red y servidor integrada facilita la implementación de RustDesk en sus instalaciones.`,
},
{
title: 'Opciones de configuración avanzadas',
description: 'Más de 90 opciones pueden configurarse para satisfacer sus necesidades específicas.',
},
{
title: 'Soporte multiplataforma',
description: 'Windows, macOS, Linux, Android.',
},
{
title: 'Cliente web',
description: 'Aloje el cliente web en su servidor con su nombre de dominio para facilitar aún más el acceso remoto.',
},
]}
image={{
src: '~/assets/images/qs.png',
alt: 'Imagen de QuickSupport',
class: 'bg-transparent',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Cliente Personalizado</h3>
Personalice su cliente con su marca y hágalo verdaderamente suyo.
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Steps
isReversed
title="Instalación simple de autoalojamiento"
items={[
{
title: 'Paso 1: Instalar Docker',
description: '<code class="text-gray-600 dark:text-gray-500">bash <(wget -qO- https://get.docker.com)</code>',
icon: 'tabler:package',
},
{
title: 'Paso 2: Descargar compose.yml',
description: `<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/oss.yml -O compose.yml</code>
<p class="text-center text-sm">o</p>
<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/pro.yml -O compose.yml</code>`,
icon: 'tabler:download',
},
{
title: `Paso 3: Componer`,
description: '<code class="text-gray-600 dark:text-gray-500">docker compose up -d</code>',
icon: 'tabler:hammer',
},
{
title: '¡Listo!',
icon: 'tabler:check',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Imagen de pasos',
}}
>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Steps>
<Stats
tagline="Escenarios"
title="¿Quiénes están utilizando el autoalojamiento?"
subtitle="Los datos a continuación provienen de nuestra encuesta en línea que abarca más de 1,000 usuarios de autoalojamiento."
stats={[
{ title: 'Soporte de TI', amount: '37%' },
{ title: 'Administración de TI', amount: '25%' },
{ title: 'Trabajo remoto', amount: '29%' },
{ title: 'Industrial y otros', amount: '9%' },
]}
/>
<BlogLatestPosts title="Descubra más contenido en nuestro Blog" />
<Stats
tagline="Código Abierto"
title="Construido públicamente con una comunidad vibrante"
subtitle="Únase a una solución impulsada por la comunidad que tiene millones de descargas y es utilizada por miles de organizaciones."
stats={[
{ title: 'Descargas de clientes', amount: '10M+' },
{ title: 'Descargas de Docker', amount: '1M+' },
{ title: 'Dispositivos activos', amount: '3M+' },
{ title: 'Estrellas', amount: '74K+' },
{ title: 'Bifurcaciones', amount: '9K+' },
{ title: 'Miembros de la comunidad', amount: '22K+' },
{ title: 'Idiomas', amount: '45' },
]}
/>
<Hero
actions={[
{
text: 'GitHub',
href: 'https://github.com/rustdesk/rustdesk/discussions',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Discord',
href: 'https://discord.gg/nDceKgxnkV',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Reddit',
href: 'https://www.reddit.com/r/rustdesk/',
target: '_blank',
icon: 'tabler:message-circle',
},
]}
>
<Fragment slot="title"> Únase a la comunidad </Fragment>
<Fragment slot="subtitle"> Descubra lo que nuestra comunidad tiene que decir sobre su experiencia con RustDesk. </Fragment>
</Hero>
<CallToAction
actions={[
{
variant: 'primary',
text: 'Descargar',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'Autoalojamiento', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> Experimente RustDesk por sí mismo </Fragment>
</CallToAction>
</Layout>

View File

@ -0,0 +1,449 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Note from '~/components/widgets/Note.astro';
import Prices from '~/components/widgets/Pricing.astro';
import FAQs from '~/components/widgets/FAQs.astro';
import Steps from '~/components/widgets/Steps.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Precios',
};
---
<script>
import Swal from 'sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';
window['gotoBuy'] = function (redirectUrl) {
Swal.fire({
title: 'Por favor, confirme',
html: '<p style="text-align:left">¿Desea proceder a la página de compra? <br><br>Tenga en cuenta que lo que está comprando <b style="font-size: 2em">NO</b> es una suscripción <span style="text-decoration:line-through">SaaS (Software como Servicio)</span>. <br><br>En su lugar, es una licencia para una solución de <b style="font-size: 2em">alojamiento propio</b>, que requiere que la implemente en su propio servidor (servidor en la nube, por ejemplo, AWS EC2, Azure VM, Vultr VPS, etc., o su servidor local). <br><br>Por favor, <b style="font-size: 2em">no</b> compre si no sabe qué es el alojamiento propio',
icon: 'question',
showCancelButton: true,
confirmButtonText: 'Sí',
cancelButtonText: 'No',
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Por favor, confirme',
html: 'Tenga en cuenta que <span class="text-3xl font-bold">no</span> ofrecemos <span class="text-3xl font-bold">reembolsos</span>. Recomendamos encarecidamente <span class="underline font-bold">probar nuestro plan gratuito de alojamiento propio</span> antes de considerar la compra de nuestro plan Pro. ¿Aún está interesado en continuar?',
showCancelButton: true,
confirmButtonText: 'Sí',
cancelButtonText: 'No',
}).then((result) => {
if (result.isConfirmed) {
window.open(redirectUrl, '_blank');
}
});
}
});
};
</script>
<Layout metadata={metadata} i18n>
<Note
title="Nota"
subtitle='Este precio es para una solución de <span class="text-xl text-blue-500">alojamiento propio</span>, <span class="text-3xl font-extrabold">NO</span> es una suscripción <span class="line-through text-xl text-blue-500">SaaS</span>.'
/>
<Prices
title='Precios de nuestras soluciones de <span class="text-5xl text-blue-500">alojamiento propio</span>'
subtitle="Solo pague por lo que necesita"
prices={[
{
title: 'Gratis',
subtitle: 'Plan de alojamiento propio gratuito',
price: '0 <span class="text-sm">/mes</span>',
period: 'Código abierto y gratuito',
items: [
{
description: 'Estado en línea',
},
{
description: 'Soporte de la comunidad',
},
],
callToAction: {
target: '_blank',
text: 'Comenzar',
href: 'https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/',
},
},
{
title: 'Individual',
subtitle: 'Plan <span class="font-bold">Pro</span> de alojamiento propio individual',
price: '9.90 <span class="text-sm">/mes</span>',
period: 'facturado anualmente',
items: [
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">1 usuario con licencia</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">20 dispositivos gestionados</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">Conexiones concurrentes ilimitadas</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/2fa/">2FA</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/console/">Consola web</a>',
},
{
description: 'Libreta de direcciones',
},
{
description: 'Registro de auditoría',
},
{
description: 'Cambiar ID',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/">Control de acceso</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/strategy/">Configuraciones centralizadas</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/relay/">Servidores de retransmisión distribuidos</a>',
},
],
callToAction: {
text: 'Comprar ahora',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Individual")',
variant: 'primary',
},
},
{
title: 'Básico',
subtitle: 'Plan <span class="font-bold">Pro</span> de alojamiento propio básico',
price: '19.90 <span class="text-sm">/mes</span>',
period: 'facturado anualmente',
items: [
{
description: '<span class="font-bold">Todo lo incluido en el plan individual</span>',
icon: 'tabler:checks',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">10 usuarios con licencia</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">100 dispositivos gestionados</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/oidc/">OIDC (SSO)</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/ldap/">Integración LDAP</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/#cross-group-settings">Acceso entre grupos</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://rustdesk.com/docs/en/self-host/client-configuration/#1-custom-client-generator-pro-only">Generador de cliente personalizado</a>',
},
],
callToAction: {
text: 'Comprar ahora',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Basic")',
},
hasRibbon: true,
ribbonTitle: 'popular',
},
{
title: 'Personalizado',
subtitle: 'Plan <span class="font-bold">Pro</span> personalizado',
price: '<span id="cprice">19.90</span> <span class="text-sm">/mes</span>',
period: 'facturado anualmente',
items: [
{
description: '<span class="font-bold">Todo lo incluido en el plan básico</span>',
icon: 'tabler:checks',
},
{
description: '$1 por cada usuario adicional',
},
{
description: '$0.1 por cada dispositivo adicional',
},
],
content: `
<form class="flex flex-col space-y-3 mx-3 min-w-[200px]">
<label for="users" class="text-left font-bold">Número de usuarios con licencia:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users" name="users" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider" class="slider" name="usersRange" value="10" min="10" max="500" step="10">
<label for="devices" class="text-left font-bold">Número de dispositivos gestionados:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices" name="devices" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider" class="slider" name="devicesRange" value="100" min="100" max="5000" step="100">
</form>
<br>
<script>
var users = 10;
var devices = 100;
function submit() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users + "&devices=" + devices;
gotoBuy(redirectUrl);
}
function calculatePrice() {
users = parseInt(document.getElementById("users").value);
devices = parseInt(document.getElementById("devices").value);
if (!users || users < 10) users = 10;
if (devices < 100) devices = 100;
var price = 19.9 + (users - 10) + (devices - 100) * 0.1;
document.getElementById("cprice").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
document.getElementById("users").oninput = function() {
document.getElementById("usersSlider").value = this.value;
calculatePrice();
}
document.getElementById("devices").oninput = function() {
document.getElementById("devicesSlider").value = this.value;
calculatePrice();
}
document.getElementById("usersSlider").oninput = function() {
document.getElementById("users").value = this.value;
calculatePrice();
}
document.getElementById("devicesSlider").oninput = function() {
document.getElementById("devices").value = this.value;
calculatePrice();
}
</script>
`,
callToAction: {
text: 'Comprar ahora',
onclick: 'submit()',
variant: 'primary',
},
},
]}
/>
<Prices
prices={[
{
title: 'Personalizado V2',
subtitle: 'Plan <span class="font-bold">Pro</span> personalizado con conexiones concurrentes limitadas',
price: '<span id="cprice2">19.90</span> <span class="text-sm">/mes</span>',
period: 'facturado anualmente',
items: [
{
description:
'<span class="font-bold">Todo lo incluido en el plan básico de alojamiento propio <span class="underline font-normal">pero con conexiones concurrentes limitadas, los dispositivos gestionados excesivos no se deshabilitarán</span></span>',
icon: 'tabler:checks',
},
{
description: 'Sesiones concurrentes ilimitadas (en pestañas o ventanas separadas) por conexión concurrente',
},
{
description: '$1 por cada usuario adicional',
},
{
description: '$0.1 por cada dispositivo adicional',
},
{
description: '$20 por cada conexión concurrente adicional',
},
],
id: 'custom2',
content: `
<form class="flex flex-col space-y-3 mx-3">
<label for="users2" class="text-left font-bold">Número de usuarios con licencia:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users2" name="users2" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider2" class="slider" name="usersRange2" value="10" min="10" max="500" step="10">
<label for="devices2" class="text-left font-bold">Número de dispositivos gestionados:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices2" name="devices2" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider2" class="slider" name="devicesRange2" value="100" min="100" max="5000" step="100">
<label for="conns" class="text-left font-bold">Número de conexiones concurrentes:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="conns" name="conns" value="1" min="1" max="50" step="1">
<input type="range" id="connsSlider" class="slider" name="connsRange" value="1" min="1" max="50" step="1">
</form>
<br>
<script>
var users2 = 10;
var devices2 = 100;
var conns = 1;
function submit2() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users2 + "&devices=" + devices2 + "&conns=" + conns;
gotoBuy(redirectUrl);
}
function calculatePrice2() {
users2 = parseInt(document.getElementById("users2").value);
devices2 = parseInt(document.getElementById("devices2").value);
conns = parseInt(document.getElementById("conns").value);
if (!users2 || users2 < 10) users2 = 10;
if (devices2 < 100) devices2 = 100;
if (conns < 1) conns = 1;
var price = 19.9 + (users2 - 10) + (devices2 - 100) * 0.1 + (conns - 1) * 20;
document.getElementById("cprice2").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
if (window.location.href.indexOf("custom2") > 0) {
setTimeout(function() { window.location = "#custom2"; }, 150);
} else {
setTimeout(function() { document.getElementById("custom2").parentElement.parentElement.parentElement.style.display = 'none'; }, 0);
}
document.getElementById("users2").oninput = function() {
document.getElementById("usersSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("devices2").oninput = function() {
document.getElementById("devicesSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("conns").oninput = function() {
document.getElementById("connsSlider").value = this.value;
calculatePrice2();
}
document.getElementById("usersSlider2").oninput = function() {
document.getElementById("users2").value = this.value;
calculatePrice2();
}
document.getElementById("devicesSlider2").oninput = function() {
document.getElementById("devices2").value = this.value;
calculatePrice2();
}
document.getElementById("connsSlider").oninput = function() {
document.getElementById("conns").value = this.value;
calculatePrice2();
}
</script>
`,
callToAction: {
text: 'Comprar ahora',
onclick: 'submit2()',
variant: 'primary',
},
},
]}
/>
<CallToAction
actions={[
{
text: 'sales@rustdesk.com',
href: 'mailto:sales@rustdesk.com',
target: '_blank',
icon: 'tabler:mail',
},
]}
>
<Fragment slot="title">Contáctenos para planes más grandes y consultas</Fragment>
</CallToAction>
<Steps
title="Un viaje guiado desde los planes hasta la producción"
tagline="proceso simplificado"
isReversed={true}
items={[
{
title: 'Instalar RustDesk Server Pro',
icon: 'tabler:number-1',
description:
'<code>bash <(wget -qO- https://get.docker.com)<br>wget rustdesk.com/pro.yml -O compose.yml<br>docker compose up -d</code>',
},
{
title: 'Explorar planes y seleccionar uno',
icon: 'tabler:number-2',
},
{
title: 'Ingresar correo electrónico y detalles de pago',
icon: 'tabler:number-3',
},
{
title: 'Obtener la clave de licencia a través del correo electrónico ingresado',
icon: 'tabler:number-4',
},
{
title: 'Ingresar la clave de licencia en la consola web de RustDesk Server Pro',
icon: 'tabler:number-5',
},
{
title: '¡Listo!',
icon: 'tabler:check',
description:
'Para instrucciones detalladas, consulte nuestra <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/">documentación</a>.',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Imagen de pasos',
}}
/>
<FAQs
title="Preguntas frecuentes sobre precios"
subtitle="Elegir el plan correcto es importante, y estamos aquí para responder sus preguntas. Si tiene dudas sobre nuestras opciones de precios, está en el lugar correcto."
columns={1}
items={[
{
title: '¿Los planes incluyen soporte al cliente?',
description:
'Absolutamente, todos los planes de pago incluyen acceso a nuestro soporte al cliente dedicado para ayudarlo con cualquier consulta o inquietud.',
},
{
title: '¿Hay una licencia de prueba?',
description: 'Por favor, <a class="underline" href="mailto:sales@rustdesk.com">contáctenos</a>',
},
{
title: '¿Cómo puedo actualizar mi plan?',
description:
'¡Ciertamente! Puede <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#renewupgrade-license">actualizar su plan</a> fácilmente, en cualquier momento, para encontrar el que mejor se adapte a sus requisitos en evolución.',
},
{
title: '¿Qué métodos de pago aceptan?',
description:
'Aceptamos las principales tarjetas de crédito y métodos de pago en línea para garantizar un proceso de transacción conveniente y seguro. Si desea pagar mediante transferencia bancaria, por favor <a class="underline" href="mailto:sales@rustdesk.com">contáctenos</a>; se le cobrará una tarifa adicional por el proceso bancario, y le enviaremos la clave de licencia una vez que recibamos el pago offline en el banco; toma de 3 a 5 días hábiles.',
},
{
title: '¿Hay alguna tarifa oculta más allá del costo mostrado?',
description:
'No, el costo cubre todas las características y elementos listados bajo cada plan. No hay tarifas ocultas ni cargos extra.',
},
{
title: '¿Tienen pago mensual?',
description:
'No, solo ofrecemos planes de pago anual. No renovamos automáticamente; recibirá un correo electrónico para recordarle que renueve su licencia 14 días antes de la fecha de vencimiento.',
},
{
title: '¿Tienen descuento para organizaciones sin fines de lucro o educativas?',
description: 'No, aún no lo tenemos. Se le anima a usar el plan gratuito.',
},
{
title: "¿Cuáles son sus términos?",
description:
'Por favor, revise estos <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/blob/main/terms">términos</a>',
},
{
title: '¿Qué hay de los casos de soporte ocasional? Tenemos algunos dispositivos que necesitan ser soportados ocasionalmente sin acceso desatendido.',
description:
'Proporcionamos esta <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10083053">solución</a>',
}
]}
/>
</Layout>

View File

@ -0,0 +1,43 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'Soporte',
};
---
<Layout metadata={metadata} i18n>
<Features2
title="¡Estamos aquí para ayudar!"
items={[
{
title: 'Problemas',
description: `¿Encontraste un error? Nos encantaría saber al respecto en nuestros problemas de GitHub.`,
},
{
title: 'Soporte de la Comunidad',
description: 'Únete a nuestro servidor de Discord para buscar ayuda y mejores prácticas.',
},
{
title: 'Ticket para Usuario Pro',
description: 'Envíanos un correo electrónico si encuentras algún problema mientras usas RustDesk Server Pro.',
},
{
title: 'GitHub',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">Abrir un problema</a>',
icon: 'tabler:brand-github',
},
{
title: 'Discord',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">Únete a nuestro servidor</a>',
icon: 'tabler:brand-discord',
},
{
title: 'Correo electrónico',
description: '<a href="mailto:support@rustdesk.com">support@rustdesk.com</a>',
icon: 'tabler:mail',
},
]}
/>
</Layout>

View File

@ -0,0 +1,69 @@
---
import Features2 from '~/components/widgets/Features2.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps2 from '~/components/widgets/Steps2.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Sobre nosotros',
};
---
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="About us">
<Fragment slot="title"> Why Are We Building This? </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.
</p>
</Fragment>
</Hero>
<!-- Steps2 Widget ****************** -->
<Steps2
title="Core Team"
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.",
icon: 'tabler:user',
},
{
title: 'Huabing Zhou<br><small>CTO</small>',
description:
'Prior to founding and developing RustDesk, Huabing Zhou accumulated over 12 years of experience in the field of financial IT while working in Singapore. Bringing a wealth of real life experience to both the project and managing the business.',
icon: 'tabler:user',
},
{
title: 'Daniel Lamb<br><small>Community Assistant</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.",
icon: 'tabler:user',
},
]}
/>
<!-- Features2 Widget ************** -->
<Features2
title="Our locations"
tagline="Find us"
columns={1}
items={[
{
title: 'Singapore',
description: '18A, Canberra Drive, Yishun',
},
]}
/>
</Layout>

240
v3/src/pages/fr/index.astro Normal file
View File

@ -0,0 +1,240 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps from '~/components/widgets/Steps.astro';
import Content from '~/components/widgets/Content.astro';
import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro';
import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import Carousel from '~/components/widgets/Carousel.jsx';
import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk : Bureau à distance open-source avec solutions de serveur auto-hébergé',
ignoreTitleTemplate: true,
};
---
<Layout metadata={metadata} i18n>
<Note
title="Note"
subtitle=`<span class="text-2xl text-font-bold">rustdesk.com</span> est notre seul domaine officiel. Veuillez ne pas télécharger RustDesk depuis d'autres domaines.`
/>
<Hero
actions={[
{
variant: 'primary',
text: 'Télécharger',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'Auto-hébergement', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> Le logiciel d'accès et de support à distance open-source rapide </Fragment>
<Fragment slot="subtitle">
Passez de TeamViewer, AnyDesk et Splashtop à RustDesk pour une expérience de bureau à distance sécurisée et fiable
avec vos propres serveurs auto-hébergés.
</Fragment>
<Fragment slot="content">
<br /><br />
<Carousel
client:load
list={[
{ src: '/remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: '/main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/custom.png', className: 'rounded-[15px] border border-gray-700' },
]}
/>
</Fragment>
</Hero>
<Content
isReversed
tagline="Aperçu de l'auto-hébergement"
title="Renforcez votre accès à distance avec des serveurs auto-hébergés"
items={[
{
title: 'Souveraineté des données',
description: 'Conformité réglementaire facilitée : RustDesk auto-hébergé assure la souveraineté des données.',
},
{
title: 'Sécurité renforcée',
description: 'Renforcez votre sécurité : le déploiement sur site garde vos données sous votre contrôle.',
},
{
title: 'Performance et fiabilité',
description: 'Temps de fonctionnement garanti : le déploiement sur site assure des performances optimales et un temps d\'arrêt minimal.',
},
{
title: 'Flexibilité et personnalisation',
description: 'Adaptez RustDesk sur site pour répondre à vos besoins uniques.',
},
]}
image={{
src: '~/assets/images/hosting.jpg',
alt: 'Image d\'hébergement',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Pourquoi l'auto-hébergement ?</h3>
Êtes-vous frustré par les plateformes SaaS en raison de leurs performances instables, leur manque de transparence et leurs risques incertains en matière de sécurité des données ?
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Content
isAfterContent
items={[
{
title: 'Votre marque, à votre façon',
description: `Personnalisez le client RustDesk avec votre nom, icône, logo.`,
},
{
title: 'Déploiement facile',
description: `La configuration réseau intégrée et la configuration du serveur facilitent le déploiement de RustDesk sur site.`,
},
{
title: 'Options de configuration avancées',
description: 'Plus de 90 options peuvent être configurées pour répondre à vos besoins spécifiques.',
},
{
title: 'Support multi-plateforme',
description: 'Windows, macOS, Linux, Android.',
},
{
title: 'Client web',
description: 'Hébergez le client web sur votre serveur avec votre nom de domaine pour faciliter encore plus l\'accès à distance.',
},
]}
image={{
src: '~/assets/images/qs.png',
alt: 'Image QuickSupport',
class: 'bg-transparent',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Client personnalisé</h3>
Personnalisez votre client avec votre marque et faites-en vraiment le vôtre.
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Steps
isReversed
title="Installation simple pour l'auto-hébergement"
items={[
{
title: 'Étape 1 : Installer Docker',
description: '<code class="text-gray-600 dark:text-gray-500">bash <(wget -qO- https://get.docker.com)</code>',
icon: 'tabler:package',
},
{
title: 'Étape 2 : Télécharger compose.yml',
description: `<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/oss.yml -O compose.yml</code>
<p class="text-center text-sm">ou</p>
<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/pro.yml -O compose.yml</code>`,
icon: 'tabler:download',
},
{
title: `Étape 3 : Composer`,
description: '<code class="text-gray-600 dark:text-gray-500">docker compose up -d</code>',
icon: 'tabler:hammer',
},
{
title: 'Prêt !',
icon: 'tabler:check',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Image des étapes',
}}
>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Steps>
<Stats
tagline="Scénarios"
title="Qui utilise l'auto-hébergement ?"
subtitle="Les données ci-dessous proviennent de notre enquête en ligne couvrant plus de 1 000 utilisateurs auto-hébergés."
stats={[
{ title: 'Support IT', amount: '37%' },
{ title: 'Administration IT', amount: '25%' },
{ title: 'Travail à distance', amount: '29%' },
{ title: 'Industrie et autres', amount: '9%' },
]}
/>
<BlogLatestPosts title="Découvrez plus de contenu sur notre Blog" />
<Stats
tagline="Open Source"
title="Construit publiquement avec une communauté dynamique"
subtitle="Rejoignez une solution portée par la communauté qui compte des millions de téléchargements et est utilisée par des milliers d'organisations."
stats={[
{ title: 'Téléchargements clients', amount: '10M+' },
{ title: 'Téléchargements Docker', amount: '1M+' },
{ title: 'Appareils actifs', amount: '3M+' },
{ title: 'Étoiles', amount: '74K+' },
{ title: 'Forks', amount: '9K+' },
{ title: 'Membres de la communauté', amount: '22K+' },
{ title: 'Langues', amount: '45' },
]}
/>
<Hero
actions={[
{
text: 'GitHub',
href: 'https://github.com/rustdesk/rustdesk/discussions',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Discord',
href: 'https://discord.gg/nDceKgxnkV',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Reddit',
href: 'https://www.reddit.com/r/rustdesk/',
target: '_blank',
icon: 'tabler:message-circle',
},
]}
>
<Fragment slot="title"> Rejoignez la communauté </Fragment>
<Fragment slot="subtitle"> Découvrez ce que notre communauté a à dire sur son expérience avec RustDesk. </Fragment>
</Hero>
<CallToAction
actions={[
{
variant: 'primary',
text: 'Télécharger',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'Auto-hébergement', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> Découvrez RustDesk par vous-même </Fragment>
</CallToAction>
</Layout>

View File

@ -0,0 +1,449 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Note from '~/components/widgets/Note.astro';
import Prices from '~/components/widgets/Pricing.astro';
import FAQs from '~/components/widgets/FAQs.astro';
import Steps from '~/components/widgets/Steps.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Tarification',
};
---
<script>
import Swal from 'sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';
window['gotoBuy'] = function (redirectUrl) {
Swal.fire({
title: 'Veuillez confirmer',
html: '<p style="text-align:left">Voulez-vous procéder à la page d\'achat ? <br><br>Veuillez noter que ce que vous achetez <b style="font-size: 2em">N\'EST PAS</b> un abonnement <span style="text-decoration:line-through">SaaS (Logiciel en tant que Service)</span>. <br><br>Il s\'agit plutôt d\'une licence pour une solution <b style="font-size: 2em">auto-hébergée</b>, qui nécessite que vous la déployiez sur votre propre serveur (serveur cloud, par exemple AWS EC2, Azure VM, Vultr VPS, etc., ou votre serveur sur site). <br><br>Veuillez <b style="font-size: 2em">ne pas</b> acheter si vous ne savez pas ce qu\'est l\'auto-hébergement',
icon: 'question',
showCancelButton: true,
confirmButtonText: 'Oui',
cancelButtonText: 'Non',
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Veuillez confirmer',
html: 'Veuillez noter que nous <span class="text-3xl font-bold">n\'offrons pas</span> de <span class="text-3xl font-bold">remboursements</span>. Nous vous recommandons fortement de <span class="underline font-bold">tester notre plan auto-hébergé gratuit</span> avant d\'envisager l\'achat de notre plan Pro. Êtes-vous toujours intéressé pour continuer ?',
showCancelButton: true,
confirmButtonText: 'Oui',
cancelButtonText: 'Non',
}).then((result) => {
if (result.isConfirmed) {
window.open(redirectUrl, '_blank');
}
});
}
});
};
</script>
<Layout metadata={metadata} i18n>
<Note
title="Note"
subtitle=`Cette tarification concerne une solution <span class="text-xl text-blue-500">auto-hébergée</span>, ce <span class="text-3xl font-extrabold">N'EST PAS</span> un abonnement <span class="line-through text-xl text-blue-500">SaaS</span>.`
/>
<Prices
title='Tarification de nos solutions <span class="text-5xl text-blue-500">auto-hébergées</span>'
subtitle="Ne payez que pour ce dont vous avez besoin"
prices={[
{
title: 'Gratuit',
subtitle: 'Plan auto-hébergé gratuit',
price: '0 <span class="text-sm">/mois</span>',
period: 'Open source et gratuit',
items: [
{
description: 'Statut en ligne',
},
{
description: 'Support communautaire',
},
],
callToAction: {
target: '_blank',
text: 'Commencer',
href: 'https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/',
},
},
{
title: 'Individuel',
subtitle: 'Plan <span class="font-bold">Pro</span> auto-hébergé individuel',
price: '9,90 <span class="text-sm">/mois</span>',
period: 'facturé annuellement',
items: [
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">1 utilisateur sous licence</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">20 appareils gérés</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">Connexions simultanées illimitées</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/2fa/">2FA</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/console/">Console Web</a>',
},
{
description: 'Carnet d\'adresses',
},
{
description: 'Journal d\'audit',
},
{
description: 'Changer l\'ID',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/">Contrôle d\'accès</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/strategy/">Paramètres centralisés</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/relay/">Serveurs relais distribués</a>',
},
],
callToAction: {
text: 'Acheter maintenant',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Individual")',
variant: 'primary',
},
},
{
title: 'Basique',
subtitle: 'Plan <span class="font-bold">Pro</span> auto-hébergé basique',
price: '19,90 <span class="text-sm">/mois</span>',
period: 'facturé annuellement',
items: [
{
description: '<span class="font-bold">Tout ce qui est inclus dans le plan individuel</span>',
icon: 'tabler:checks',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">10 utilisateurs sous licence</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">100 appareils gérés</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/oidc/">OIDC (SSO)</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/ldap/">Intégration LDAP</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/#cross-group-settings">Accès inter-groupes</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://rustdesk.com/docs/en/self-host/client-configuration/#1-custom-client-generator-pro-only">Générateur de client personnalisé</a>',
},
],
callToAction: {
text: 'Acheter maintenant',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Basic")',
},
hasRibbon: true,
ribbonTitle: 'populaire',
},
{
title: 'Personnalisé',
subtitle: 'Plan <span class="font-bold">Pro</span> personnalisé',
price: '<span id="cprice">19,90</span> <span class="text-sm">/mois</span>',
period: 'facturé annuellement',
items: [
{
description: '<span class="font-bold">Tout ce qui est inclus dans le plan basique</span>',
icon: 'tabler:checks',
},
{
description: '1 € pour chaque utilisateur supplémentaire',
},
{
description: '0,1 € pour chaque appareil supplémentaire',
},
],
content: `
<form class="flex flex-col space-y-3 mx-3 min-w-[200px]">
<label for="users" class="text-left font-bold">Nombre d'utilisateurs sous licence :</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users" name="users" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider" class="slider" name="usersRange" value="10" min="10" max="500" step="10">
<label for="devices" class="text-left font-bold">Nombre d'appareils gérés :</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices" name="devices" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider" class="slider" name="devicesRange" value="100" min="100" max="5000" step="100">
</form>
<br>
<script>
var users = 10;
var devices = 100;
function submit() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users + "&devices=" + devices;
gotoBuy(redirectUrl);
}
function calculatePrice() {
users = parseInt(document.getElementById("users").value);
devices = parseInt(document.getElementById("devices").value);
if (!users || users < 10) users = 10;
if (devices < 100) devices = 100;
var price = 19.9 + (users - 10) + (devices - 100) * 0.1;
document.getElementById("cprice").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
document.getElementById("users").oninput = function() {
document.getElementById("usersSlider").value = this.value;
calculatePrice();
}
document.getElementById("devices").oninput = function() {
document.getElementById("devicesSlider").value = this.value;
calculatePrice();
}
document.getElementById("usersSlider").oninput = function() {
document.getElementById("users").value = this.value;
calculatePrice();
}
document.getElementById("devicesSlider").oninput = function() {
document.getElementById("devices").value = this.value;
calculatePrice();
}
</script>
`,
callToAction: {
text: 'Acheter maintenant',
onclick: 'submit()',
variant: 'primary',
},
},
]}
/>
<Prices
prices={[
{
title: 'Personnalisé V2',
subtitle: 'Plan <span class="font-bold">Pro</span> personnalisé avec connexions simultanées limitées',
price: '<span id="cprice2">19,90</span> <span class="text-sm">/mois</span>',
period: 'facturé annuellement',
items: [
{
description:
'<span class="font-bold">Tout ce qui est inclus dans le plan auto-hébergé basique <span class="underline font-normal">mais avec des connexions simultanées limitées, les appareils gérés excessifs ne seront pas désactivés</span></span>',
icon: 'tabler:checks',
},
{
description: 'Sessions simultanées illimitées (dans des onglets ou des fenêtres séparées) par connexion simultanée',
},
{
description: '1 € pour chaque utilisateur supplémentaire',
},
{
description: '0,1 € pour chaque appareil supplémentaire',
},
{
description: '20 € pour chaque connexion simultanée supplémentaire',
},
],
id: 'custom2',
content: `
<form class="flex flex-col space-y-3 mx-3">
<label for="users2" class="text-left font-bold">Nombre d'utilisateurs sous licence :</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users2" name="users2" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider2" class="slider" name="usersRange2" value="10" min="10" max="500" step="10">
<label for="devices2" class="text-left font-bold">Nombre d'appareils gérés :</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices2" name="devices2" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider2" class="slider" name="devicesRange2" value="100" min="100" max="5000" step="100">
<label for="conns" class="text-left font-bold">Nombre de connexions simultanées :</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="conns" name="conns" value="1" min="1" max="50" step="1">
<input type="range" id="connsSlider" class="slider" name="connsRange" value="1" min="1" max="50" step="1">
</form>
<br>
<script>
var users2 = 10;
var devices2 = 100;
var conns = 1;
function submit2() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users2 + "&devices=" + devices2 + "&conns=" + conns;
gotoBuy(redirectUrl);
}
function calculatePrice2() {
users2 = parseInt(document.getElementById("users2").value);
devices2 = parseInt(document.getElementById("devices2").value);
conns = parseInt(document.getElementById("conns").value);
if (!users2 || users2 < 10) users2 = 10;
if (devices2 < 100) devices2 = 100;
if (conns < 1) conns = 1;
var price = 19.9 + (users2 - 10) + (devices2 - 100) * 0.1 + (conns - 1) * 20;
document.getElementById("cprice2").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
if (window.location.href.indexOf("custom2") > 0) {
setTimeout(function() { window.location = "#custom2"; }, 150);
} else {
setTimeout(function() { document.getElementById("custom2").parentElement.parentElement.parentElement.style.display = 'none'; }, 0);
}
document.getElementById("users2").oninput = function() {
document.getElementById("usersSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("devices2").oninput = function() {
document.getElementById("devicesSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("conns").oninput = function() {
document.getElementById("connsSlider").value = this.value;
calculatePrice2();
}
document.getElementById("usersSlider2").oninput = function() {
document.getElementById("users2").value = this.value;
calculatePrice2();
}
document.getElementById("devicesSlider2").oninput = function() {
document.getElementById("devices2").value = this.value;
calculatePrice2();
}
document.getElementById("connsSlider").oninput = function() {
document.getElementById("conns").value = this.value;
calculatePrice2();
}
</script>
`,
callToAction: {
text: 'Acheter maintenant',
onclick: 'submit2()',
variant: 'primary',
},
},
]}
/>
<CallToAction
actions={[
{
text: 'sales@rustdesk.com',
href: 'mailto:sales@rustdesk.com',
target: '_blank',
icon: 'tabler:mail',
},
]}
>
<Fragment slot="title">Contactez-nous pour des plans plus importants et des renseignements</Fragment>
</CallToAction>
<Steps
title="Un parcours guidé des plans à la production"
tagline="processus simplifié"
isReversed={true}
items={[
{
title: 'Installer RustDesk Server Pro',
icon: 'tabler:number-1',
description:
'<code>bash <(wget -qO- https://get.docker.com)<br>wget rustdesk.com/pro.yml -O compose.yml<br>docker compose up -d</code>',
},
{
title: 'Explorer les plans et sélectionner un plan',
icon: 'tabler:number-2',
},
{
title: 'Entrer l\'email et les détails de paiement',
icon: 'tabler:number-3',
},
{
title: 'Obtenir la clé de licence via l\'email que vous avez entré',
icon: 'tabler:number-4',
},
{
title: 'Entrer la clé de licence dans la console web de RustDesk Server Pro',
icon: 'tabler:number-5',
},
{
title: 'Prêt !',
icon: 'tabler:check',
description:
'Pour des instructions détaillées, veuillez consulter notre <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/">documentation</a>.',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Image des étapes',
}}
/>
<FAQs
title="FAQ sur la tarification"
subtitle="Choisir le bon plan est important, et nous sommes là pour répondre à vos questions. Si vous avez des interrogations sur nos options de tarification, vous êtes au bon endroit."
columns={1}
items={[
{
title: 'Les plans incluent-ils un support client ?',
description:
'Absolument, tous les plans payants incluent l\'accès à notre support client dédié pour vous aider avec toutes vos questions ou préoccupations.',
},
{
title: 'Y a-t-il une licence d\'essai ?',
description: 'Veuillez <a class="underline" href="mailto:sales@rustdesk.com">nous contacter</a>',
},
{
title: 'Comment mettre à niveau mon plan ?',
description:
'Certainement ! Vous pouvez facilement <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#renewupgrade-license">mettre à niveau votre plan</a>, à tout moment, pour trouver celui qui convient le mieux à vos besoins évolutifs.',
},
{
title: 'Quels modes de paiement acceptez-vous ?',
description:
'Nous acceptons les principales cartes de crédit et les méthodes de paiement en ligne pour assurer un processus de transaction pratique et sécurisé. Si vous souhaitez payer par virement bancaire, veuillez <a class="underline" href="mailto:sales@rustdesk.com">nous contacter</a> ; des frais bancaires supplémentaires vous seront facturés, et nous vous enverrons la clé de licence une fois que nous aurons reçu le paiement hors ligne à la banque ; cela prend 3 à 5 jours ouvrables.',
},
{
title: 'Y a-t-il des frais cachés au-delà du coût affiché ?',
description:
'Non, le coût couvre toutes les fonctionnalités et éléments listés sous chaque plan. Il n\'y a pas de frais cachés ou de charges supplémentaires.',
},
{
title: 'Proposez-vous un paiement mensuel ?',
description:
'Non, nous proposons uniquement des plans de paiement annuels. Nous ne renouvelons pas automatiquement ; vous recevrez un e-mail pour vous rappeler de renouveler votre licence 14 jours avant la date d\'expiration.',
},
{
title: 'Offrez-vous une réduction pour les organisations à but non lucratif ou éducatives ?',
description: 'Non, nous ne l\'avons pas encore. Vous êtes encouragé à utiliser le plan gratuit.',
},
{
title: "Quelles sont vos conditions ?",
description:
'Veuillez consulter ces <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/blob/main/terms">conditions</a>',
},
{
title: 'Qu\'en est-il des cas de support occasionnel ? Nous avons des appareils qui doivent être supportés occasionnellement sans accès sans surveillance.',
description:
'Nous fournissons cette <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10083053">solution</a>',
}
]}
/>
</Layout>

View File

@ -0,0 +1,43 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'Support',
};
---
<Layout metadata={metadata} i18n>
<Features2
title="Nous sommes là pour vous aider !"
items={[
{
title: 'Problèmes',
description: `Vous avez trouvé un bug ? Nous serions ravis d'en entendre parler dans nos issues GitHub.`,
},
{
title: 'Support Communautaire',
description: 'Rejoignez notre serveur Discord pour obtenir de l\'aide et découvrir les meilleures pratiques.',
},
{
title: 'Ticket pour Utilisateur Pro',
description: 'Envoyez-nous un e-mail si vous rencontrez des problèmes en utilisant RustDesk Server Pro.',
},
{
title: 'GitHub',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">Ouvrir une issue</a>',
icon: 'tabler:brand-github',
},
{
title: 'Discord',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">Rejoindre notre serveur</a>',
icon: 'tabler:brand-discord',
},
{
title: 'E-mail',
description: '<a href="mailto:support@rustdesk.com">support@rustdesk.com</a>',
icon: 'tabler:mail',
},
]}
/>
</Layout>

View File

@ -0,0 +1,70 @@
---
import Features2 from '~/components/widgets/Features2.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps2 from '~/components/widgets/Steps2.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'À propos de nous',
};
---
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="À propos de nous">
<Fragment slot="title">Pourquoi Construisons-Nous Cela ?</Fragment>
<Fragment slot="subtitle">
<p class="text-left">
Au milieu de la pandémie de Covid-19 mi-2020, le développeur principal / fondateur actuel s'est trouvé contraint
d'acquérir une licence commerciale pour TeamViewer afin de faciliter le travail à distance à Singapour. Cependant,
ils ont été surpris par le coût exorbitant. Après une nuit agitée, ils se sont lancés dans une mission pour créer
une solution alternative. Ainsi, RustDesk a été conçu — un logiciel de bureau à distance open-source, librement
accessible, qui a été méticuleusement élaboré au cours de nombreuses nuits blanches. Ce travail de dévouement et
de détermination a abouti à la sortie de RustDesk sur GitHub en 2021, permettant son utilisation par des personnes
du monde entier.
</p>
</Fragment>
</Hero>
<!-- Steps2 Widget ****************** -->
<Steps2
title="Équipe Principale"
items={[
{
title: 'Joseph Jacks<br><small>PDG</small>',
description:
"Joseph Jacks a fondé OSS Capital en 2018. C'est le premier et unique VC de stade précoce au monde dédié exclusivement aux startups COSS (open source commercial) à l'échelle mondiale. Auparavant, il a aidé à démarrer et à gérer la toute première startup Kubernetes (Kismatic) et a également fondé et géré KubeCon (la conférence de la communauté Kubernetes) avant de la donner à la Linux Foundation en 2016 alors que la CNCF (Cloud Native Computing Foundation) se matérialisait.",
icon: 'tabler:user',
},
{
title: 'Huabing Zhou<br><small>Directeur Technique</small>',
description:
"Avant de fonder et de développer RustDesk, Huabing Zhou a accumulé plus de 12 ans d'expérience dans le domaine de l'IT financier tout en travaillant à Singapour. Apportant une richesse d'expérience de la vie réelle au projet et à la gestion de l'entreprise.",
icon: 'tabler:user',
},
{
title: 'Daniel Lamb<br><small>Assistant Communautaire</small>',
description:
"Avec une carrière remarquable d'un quart de siècle dans l'industrie IT, Daniel Lamb a activement participé à de nombreux projets open-source, assumant divers rôles et responsabilités. De plus, il a réussi à établir une entreprise de services IT basée en Écosse, servant des clients du monde entier. L'expertise étendue de Daniel englobe le support, les ventes et l'engagement communautaire, apportant une grande quantité de connaissances et d'expérience au projet.",
icon: 'tabler:user',
},
]}
/>
<!-- Features2 Widget ************** -->
<Features2
title="Nos emplacements"
tagline="Trouvez-nous"
columns={1}
items={[
{
title: 'Singapour',
description: '18A, Canberra Drive, Yishun',
},
]}
/>
</Layout>

View File

@ -16,13 +16,12 @@ const metadata = {
};
---
<Layout metadata={metadata}>
<Layout metadata={metadata} i18n>
<Note
title="Note"
subtitle='<span class="text-2xl text-font-bold">rustdesk.com</span> is our only official domain. Please do not download RustDesk from the other domains.'
/>
<!-- Hero Widget ******************* -->
<Hero
actions={[
{
@ -46,21 +45,15 @@ const metadata = {
<Carousel
client:load
list={[
{ src: 'remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: 'main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: 'console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: 'custom.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: '/main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/custom.png', className: 'rounded-[15px] border border-gray-700' },
]}
/>
</Fragment>
</Hero>
<!-- Note Widget ******************* -->
<!-- <Note /> -->
<!-- Content Widget **************** -->
<Content
isReversed
tagline="Inside Self-Hosting"
@ -99,8 +92,6 @@ const metadata = {
</Fragment>
</Content>
<!-- Content Widget **************** -->
<Content
isAfterContent
items={[
@ -141,8 +132,6 @@ const metadata = {
</Fragment>
</Content>
<!-- Steps Widget ****************** -->
<Steps
isReversed
title="Simple self-hosting installation"
@ -179,7 +168,6 @@ const metadata = {
</Fragment>
</Steps>
<!-- Stats Widget ****************** -->
<Stats
tagline="Scenarios"
title="Who are using self-hosting?"
@ -192,8 +180,6 @@ const metadata = {
]}
/>
<!-- HighlightedPosts Widget ******* -->
<BlogLatestPosts title="Find out more content in our Blog" />
<Stats

240
v3/src/pages/it/index.astro Normal file
View File

@ -0,0 +1,240 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps from '~/components/widgets/Steps.astro';
import Content from '~/components/widgets/Content.astro';
import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro';
import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import Carousel from '~/components/widgets/Carousel.jsx';
import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: Desktop Remoto Open-Source con Soluzioni Server Self-Hosted',
ignoreTitleTemplate: true,
};
---
<Layout metadata={metadata} i18n>
<Note
title="Nota"
subtitle='<span class="text-2xl text-font-bold">rustdesk.com</span> è il nostro unico dominio ufficiale. Si prega di non scaricare RustDesk da altri domini.'
/>
<Hero
actions={[
{
variant: 'primary',
text: 'Scaricare',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'Self-Hosting', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> Il Software Open-Source Veloce per Accesso Remoto e Supporto </Fragment>
<Fragment slot="subtitle">
Passa da TeamViewer, AnyDesk e Splashtop a RustDesk per un'esperienza di desktop remoto sicura e affidabile
con i tuoi server self-hosted.
</Fragment>
<Fragment slot="content">
<br /><br />
<Carousel
client:load
list={[
{ src: '/remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: '/main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/custom.png', className: 'rounded-[15px] border border-gray-700' },
]}
/>
</Fragment>
</Hero>
<Content
isReversed
tagline="Approfondimento sul self-hosting"
title="Potenzia il tuo accesso remoto con server self-hosted"
items={[
{
title: 'Sovranità dei dati',
description: 'Conformità normativa semplificata: RustDesk self-hosted garantisce la sovranità dei dati.',
},
{
title: 'Sicurezza migliorata',
description: 'Rafforza la tua sicurezza: il deployment on-premise mantiene i tuoi dati sotto il tuo controllo.',
},
{
title: 'Prestazioni e affidabilità',
description: 'Uptime garantito: il deployment on-premise assicura prestazioni ottimali e tempi di inattività minimi.',
},
{
title: 'Flessibilità e personalizzazione',
description: 'Adatta RustDesk on-premise per soddisfare le tue esigenze uniche.',
},
]}
image={{
src: '~/assets/images/hosting.jpg',
alt: 'Immagine Hosting',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Perché il self-hosting?</h3>
Sei frustrato dalle piattaforme SaaS a causa delle loro prestazioni instabili, mancanza di trasparenza e rischi incerti per la sicurezza dei dati?
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Content
isAfterContent
items={[
{
title: 'Il tuo marchio, a modo tuo',
description: `Personalizza il client RustDesk con il tuo nome, icona, logo.`,
},
{
title: 'Facile implementazione',
description: `La configurazione di rete integrata e la configurazione del server rendono l'implementazione di RustDesk on-premise un gioco da ragazzi.`,
},
{
title: 'Opzioni di configurazione avanzate',
description: 'Più di 90 opzioni possono essere configurate per soddisfare le tue esigenze specifiche.',
},
{
title: 'Supporto multi-piattaforma',
description: 'Windows, macOS, Linux, Android.',
},
{
title: 'Client web',
description: 'Ospita il client web sul tuo server con il tuo nome di dominio per rendere l\'accesso remoto ancora più facile.',
},
]}
image={{
src: '~/assets/images/qs.png',
alt: 'Immagine QuickSupport',
class: 'bg-transparent',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Client Personalizzato</h3>
Personalizza il tuo client con il tuo marchio e rendilo veramente tuo.
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Steps
isReversed
title="Installazione self-hosting semplice"
items={[
{
title: 'Passo 1: Installa Docker',
description: '<code class="text-gray-600 dark:text-gray-500">bash <(wget -qO- https://get.docker.com)</code>',
icon: 'tabler:package',
},
{
title: 'Passo 2: Scarica compose.yml',
description: `<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/oss.yml -O compose.yml</code>
<p class="text-center text-sm">oppure</p>
<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/pro.yml -O compose.yml</code>`,
icon: 'tabler:download',
},
{
title: `Passo 3: Componi`,
description: '<code class="text-gray-600 dark:text-gray-500">docker compose up -d</code>',
icon: 'tabler:hammer',
},
{
title: 'Pronto!',
icon: 'tabler:check',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Immagine passi',
}}
>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Steps>
<Stats
tagline="Scenari"
title="Chi sta utilizzando il self-hosting?"
subtitle="I dati seguenti provengono dal nostro sondaggio online che copre oltre 1.000 utenti self-hosting."
stats={[
{ title: 'Supporto IT', amount: '37%' },
{ title: 'Amministrazione IT', amount: '25%' },
{ title: 'Lavoro Remoto', amount: '29%' },
{ title: 'Industria e altri', amount: '9%' },
]}
/>
<BlogLatestPosts title="Scopri altri contenuti nel nostro Blog" />
<Stats
tagline="Open Source"
title="Costruito pubblicamente con una comunità vivace"
subtitle="Unisciti a una soluzione guidata dalla comunità che ha milioni di download ed è utilizzata da migliaia di organizzazioni."
stats={[
{ title: 'Download client', amount: '10M+' },
{ title: 'Download Docker', amount: '1M+' },
{ title: 'Dispositivi attivi', amount: '3M+' },
{ title: 'Stelle', amount: '74K+' },
{ title: 'Fork', amount: '9K+' },
{ title: 'Membri della comunità', amount: '22K+' },
{ title: 'Lingue', amount: '45' },
]}
/>
<Hero
actions={[
{
text: 'GitHub',
href: 'https://github.com/rustdesk/rustdesk/discussions',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Discord',
href: 'https://discord.gg/nDceKgxnkV',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Reddit',
href: 'https://www.reddit.com/r/rustdesk/',
target: '_blank',
icon: 'tabler:message-circle',
},
]}
>
<Fragment slot="title"> Unisciti alla comunità </Fragment>
<Fragment slot="subtitle"> Scopri cosa ha da dire la nostra comunità sulla loro esperienza con RustDesk. </Fragment>
</Hero>
<CallToAction
actions={[
{
variant: 'primary',
text: 'Scaricare',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'Self-Hosting', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> Prova RustDesk tu stesso </Fragment>
</CallToAction>
</Layout>

View File

@ -0,0 +1,449 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Note from '~/components/widgets/Note.astro';
import Prices from '~/components/widgets/Pricing.astro';
import FAQs from '~/components/widgets/FAQs.astro';
import Steps from '~/components/widgets/Steps.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Prezzi',
};
---
<script>
import Swal from 'sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';
window['gotoBuy'] = function (redirectUrl) {
Swal.fire({
title: 'Conferma per favore',
html: `<p style="text-align:left">Vuoi procedere alla pagina di acquisto? <br><br>Si prega di notare che ciò che stai acquistando <b style="font-size: 2em">NON</b> è un abbonamento <span style="text-decoration:line-through">SaaS (Software as a Service)</span>. <br><br>Invece, è una licenza per una soluzione <b style="font-size: 2em">self-hosting</b>, che richiede di essere distribuita sul tuo server (server cloud, ad esempio AWS EC2, Azure VM, Vultr VPS ecc., o il tuo server on-premise). <br><br>Per favore <b style="font-size: 2em">non</b> acquistare se non sai cosa sia il self-hosting`,
icon: 'question',
showCancelButton: true,
confirmButtonText: 'Sì',
cancelButtonText: 'No',
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Conferma per favore',
html: `Si prega di notare che <span class="text-3xl font-bold">non</span> offriamo <span class="text-3xl font-bold">rimborsi</span>. Ti consigliamo vivamente di <span class="underline font-bold">testare il nostro piano gratuito di self-hosting</span> prima di considerare l'acquisto del nostro piano Pro. Sei ancora interessato a procedere?`,
showCancelButton: true,
confirmButtonText: 'Sì',
cancelButtonText: 'No',
}).then((result) => {
if (result.isConfirmed) {
window.open(redirectUrl, '_blank');
}
});
}
});
};
</script>
<Layout metadata={metadata} i18n>
<Note
title="Nota"
subtitle='Questo prezzo è per una soluzione <span class="text-xl text-blue-500">self-hosting</span>, <span class="text-3xl font-extrabold">NON</span> è un abbonamento <span class="line-through text-xl text-blue-500">SaaS</span>.'
/>
<Prices
title='Prezzi delle nostre soluzioni <span class="text-5xl text-blue-500">self-hosting</span>'
subtitle="Paga solo per ciò di cui hai bisogno"
prices={[
{
title: 'Gratuito',
subtitle: 'Piano self-hosting gratuito',
price: '0 <span class="text-sm">/mese</span>',
period: 'Open source e gratuito',
items: [
{
description: 'Stato online',
},
{
description: 'Supporto della community',
},
],
callToAction: {
target: '_blank',
text: 'Inizia',
href: 'https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/',
},
},
{
title: 'Individuale',
subtitle: 'Piano self-hosting <span class="font-bold">Pro</span> individuale',
price: '9.90 <span class="text-sm">/mese</span>',
period: 'fatturato annualmente',
items: [
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">1 utente con licenza</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">20 dispositivi gestiti</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">Connessioni simultanee illimitate</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/2fa/">2FA</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/console/">Console web</a>',
},
{
description: 'Rubrica',
},
{
description: 'Log di audit',
},
{
description: 'Cambio ID',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/">Controllo degli accessi</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/strategy/">Impostazioni centralizzate</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/relay/">Server relay distribuiti</a>',
},
],
callToAction: {
text: 'Acquista ora',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Individual")',
variant: 'primary',
},
},
{
title: 'Base',
subtitle: 'Piano self-hosting <span class="font-bold">Pro</span> base',
price: '19.90 <span class="text-sm">/mese</span>',
period: 'fatturato annualmente',
items: [
{
description: '<span class="font-bold">Tutto nel piano individuale</span>',
icon: 'tabler:checks',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">10 utenti con licenza</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">100 dispositivi gestiti</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/oidc/">OIDC (SSO)</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/ldap/">Integrazione LDAP</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/#cross-group-settings">Accesso tra gruppi</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://rustdesk.com/docs/en/self-host/client-configuration/#1-custom-client-generator-pro-only">Generatore di client personalizzato</a>',
},
],
callToAction: {
text: 'Acquista ora',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Basic")',
},
hasRibbon: true,
ribbonTitle: 'popolare',
},
{
title: 'Personalizzato',
subtitle: 'Piano <span class="font-bold">Pro</span> personalizzato',
price: '<span id="cprice">19.90</span> <span class="text-sm">/mese</span>',
period: 'fatturato annualmente',
items: [
{
description: '<span class="font-bold">Tutto nel piano base</span>',
icon: 'tabler:checks',
},
{
description: '1€ per ogni utente aggiuntivo',
},
{
description: '0,1€ per ogni dispositivo aggiuntivo',
},
],
content: `
<form class="flex flex-col space-y-3 mx-3 min-w-[200px]">
<label for="users" class="text-left font-bold">Numero di utenti con licenza:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users" name="users" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider" class="slider" name="usersRange" value="10" min="10" max="500" step="10">
<label for="devices" class="text-left font-bold">Numero di dispositivi gestiti:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices" name="devices" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider" class="slider" name="devicesRange" value="100" min="100" max="5000" step="100">
</form>
<br>
<script>
var users = 10;
var devices = 100;
function submit() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users + "&devices=" + devices;
gotoBuy(redirectUrl);
}
function calculatePrice() {
users = parseInt(document.getElementById("users").value);
devices = parseInt(document.getElementById("devices").value);
if (!users || users < 10) users = 10;
if (devices < 100) devices = 100;
var price = 19.9 + (users - 10) + (devices - 100) * 0.1;
document.getElementById("cprice").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
document.getElementById("users").oninput = function() {
document.getElementById("usersSlider").value = this.value;
calculatePrice();
}
document.getElementById("devices").oninput = function() {
document.getElementById("devicesSlider").value = this.value;
calculatePrice();
}
document.getElementById("usersSlider").oninput = function() {
document.getElementById("users").value = this.value;
calculatePrice();
}
document.getElementById("devicesSlider").oninput = function() {
document.getElementById("devices").value = this.value;
calculatePrice();
}
</script>
`,
callToAction: {
text: 'Acquista ora',
onclick: 'submit()',
variant: 'primary',
},
},
]}
/>
<Prices
prices={[
{
title: 'Personalizzato V2',
subtitle: 'Piano <span class="font-bold">Pro</span> personalizzato con connessioni simultanee limitate',
price: '<span id="cprice2">19.90</span> <span class="text-sm">/mese</span>',
period: 'fatturato annualmente',
items: [
{
description: `<span class="font-bold">Tutto nel piano base self-hosting <span class="underline font-normal">ma con connessioni simultanee limitate, i dispositivi gestiti in eccesso non verranno disabilitati</span></span>`,
icon: 'tabler:checks',
},
{
description: 'Sessioni simultanee illimitate (in schede o finestre separate) per connessione simultanea',
},
{
description: '1€ per ogni utente aggiuntivo',
},
{
description: '0,1€ per ogni dispositivo aggiuntivo',
},
{
description: '20€ per ogni connessione simultanea aggiuntiva',
},
],
id: 'custom2',
content: `
<form class="flex flex-col space-y-3 mx-3">
<label for="users2" class="text-left font-bold">Numero di utenti con licenza:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users2" name="users2" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider2" class="slider" name="usersRange2" value="10" min="10" max="500" step="10">
<label for="devices2" class="text-left font-bold">Numero di dispositivi gestiti:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices2" name="devices2" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider2" class="slider" name="devicesRange2" value="100" min="100" max="5000" step="100">
<label for="conns" class="text-left font-bold">Numero di connessioni simultanee:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="conns" name="conns" value="1" min="1" max="50" step="1">
<input type="range" id="connsSlider" class="slider" name="connsRange" value="1" min="1" max="50" step="1">
</form>
<br>
<script>
var users2 = 10;
var devices2 = 100;
var conns = 1;
function submit2() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users2 + "&devices=" + devices2 + "&conns=" + conns;
gotoBuy(redirectUrl);
}
function calculatePrice2() {
users2 = parseInt(document.getElementById("users2").value);
devices2 = parseInt(document.getElementById("devices2").value);
conns = parseInt(document.getElementById("conns").value);
if (!users2 || users2 < 10) users2 = 10;
if (devices2 < 100) devices2 = 100;
if (conns < 1) conns = 1;
var price = 19.9 + (users2 - 10) + (devices2 - 100) * 0.1 + (conns - 1) * 20;
document.getElementById("cprice2").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
if (window.location.href.indexOf("custom2") > 0) {
setTimeout(function() { window.location = "#custom2"; }, 150);
} else {
setTimeout(function() { document.getElementById("custom2").parentElement.parentElement.parentElement.style.display = 'none'; }, 0);
}
document.getElementById("users2").oninput = function() {
document.getElementById("usersSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("devices2").oninput = function() {
document.getElementById("devicesSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("conns").oninput = function() {
document.getElementById("connsSlider").value = this.value;
calculatePrice2();
}
document.getElementById("usersSlider2").oninput = function() {
document.getElementById("users2").value = this.value;
calculatePrice2();
}
document.getElementById("devicesSlider2").oninput = function() {
document.getElementById("devices2").value = this.value;
calculatePrice2();
}
document.getElementById("connsSlider").oninput = function() {
document.getElementById("conns").value = this.value;
calculatePrice2();
}
</script>
`,
callToAction: {
text: 'Acquista ora',
onclick: 'submit2()',
variant: 'primary',
},
},
]}
/>
<CallToAction
actions={[
{
text: 'sales@rustdesk.com',
href: 'mailto:sales@rustdesk.com',
target: '_blank',
icon: 'tabler:mail',
},
]}
>
<Fragment slot="title">Contattaci per piani più grandi e richieste</Fragment>
</CallToAction>
<Steps
title="Un percorso guidato dai piani alla produzione"
tagline="processo semplificato"
isReversed={true}
items={[
{
title: 'Installa RustDesk Server Pro',
icon: 'tabler:number-1',
description:
'<code>bash <(wget -qO- https://get.docker.com)<br>wget rustdesk.com/pro.yml -O compose.yml<br>docker compose up -d</code>',
},
{
title: 'Esplora i piani e seleziona un piano',
icon: 'tabler:number-2',
},
{
title: 'Inserisci email e dettagli di pagamento',
icon: 'tabler:number-3',
},
{
title: 'Ricevi la chiave di licenza tramite l\'email inserita',
icon: 'tabler:number-4',
},
{
title: 'Inserisci la chiave di licenza nella console web di RustDesk Server Pro',
icon: 'tabler:number-5',
},
{
title: 'Pronto!',
icon: 'tabler:check',
description:
'Per istruzioni dettagliate, consulta la nostra <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/">documentazione</a>.',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Immagine dei passaggi',
}}
/>
<FAQs
title="FAQ sui prezzi"
subtitle="Scegliere il piano giusto è importante, e siamo qui per rispondere alle tue domande. Se hai domande sulle nostre opzioni di prezzo, sei nel posto giusto."
columns={1}
items={[
{
title: 'I piani includono il supporto clienti?',
description:
'Assolutamente, tutti i piani a pagamento includono l\'accesso al nostro supporto clienti dedicato per assisterti con qualsiasi domanda o preoccupazione.',
},
{
title: 'C\'è una licenza di prova?',
description: 'Per favore <a class="underline" href="mailto:sales@rustdesk.com">contattaci</a>',
},
{
title: 'Come posso aggiornare il mio piano?',
description:
'Certamente! Puoi facilmente <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#renewupgrade-license">aggiornare il tuo piano</a>, in qualsiasi momento, per trovare quello che meglio si adatta alle tue esigenze in evoluzione.',
},
{
title: 'Quali metodi di pagamento accettate?',
description:
'Accettiamo le principali carte di credito e metodi di pagamento online per garantire un processo di transazione conveniente e sicuro. Se desideri pagare tramite bonifico bancario, per favore <a class="underline" href="mailto:sales@rustdesk.com">contattaci</a>; ti verrà addebitata una commissione extra per il processo bancario, e ti invieremo la chiave di licenza una volta ricevuto il pagamento offline in banca; ci vogliono 3-5 giorni lavorativi.',
},
{
title: 'Ci sono costi nascosti oltre al prezzo visualizzato?',
description:
'No, il costo copre tutte le funzionalità elencate sotto ciascun piano. Non ci sono costi nascosti o addebiti extra.',
},
{
title: 'Avete pagamenti mensili?',
description:
'No, offriamo solo piani di pagamento annuali. Non rinnoviamo automaticamente; riceverai un\'email per ricordarti di rinnovare la tua licenza 14 giorni prima della data di scadenza.',
},
{
title: 'Avete sconti per organizzazioni no-profit o educative?',
description: 'No, non li abbiamo ancora. Ti incoraggiamo a utilizzare il piano gratuito.',
},
{
title: 'Quali sono i vostri termini?',
description:
'Per favore controlla questi <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/blob/main/terms">termini</a>',
},
{
title:
'Cosa succede con i casi di supporto occasionale? Abbiamo alcuni dispositivi che necessitano di supporto occasionale senza accesso non presidiato.',
description:
'Forniamo questa <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10083053">soluzione</a>',
},
]}
/>
</Layout>

View File

@ -0,0 +1,43 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'Supporto',
};
---
<Layout metadata={metadata} i18n>
<Features2
title="Siamo qui per aiutarti!"
items={[
{
title: 'Problemi',
description: `Hai trovato un bug? Ci piacerebbe sentirne parlare nei nostri problemi su GitHub.`,
},
{
title: 'Supporto della Comunità',
description: 'Unisciti al nostro server Discord per cercare aiuto e le migliori pratiche.',
},
{
title: 'Ticket per Utenti Pro',
description: `Mandaci un'email se incontri problemi mentre usi RustDesk Server Pro.`,
},
{
title: 'GitHub',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">Apri un problema</a>',
icon: 'tabler:brand-github',
},
{
title: 'Discord',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">Unisciti al nostro server</a>',
icon: 'tabler:brand-discord',
},
{
title: 'Email',
description: '<a href="mailto:support@rustdesk.com">support@rustdesk.com</a>',
icon: 'tabler:mail',
},
]}
/>
</Layout>

View File

@ -0,0 +1,64 @@
---
import Features2 from '~/components/widgets/Features2.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps2 from '~/components/widgets/Steps2.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Chi siamo',
};
---
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="Chi siamo">
<Fragment slot="title">Perché Stiamo Costruendo Questo?</Fragment>
<Fragment slot="subtitle">
<p class="text-left">
Nel mezzo della pandemia di Covid-19 a metà del 2020, l'attuale lead developer / fondatore si è trovato costretto ad acquistare una licenza commerciale per TeamViewer per facilitare il lavoro a distanza a Singapore. Tuttavia, è rimasto sbalordito dal costo esorbitante. Dopo una notte insonne, si è imbarcato in una missione per creare una soluzione alternativa. Così è nato RustDesk - un software di desktop remoto open-source, liberamente accessibile, che è stato diligentemente creato attraverso numerose notti insonni. Questo lavoro di dedizione e determinazione è culminato nel rilascio di RustDesk su GitHub nel 2021, permettendo di essere utilizzato da persone in tutto il mondo.
</p>
</Fragment>
</Hero>
<!-- Steps2 Widget ****************** -->
<Steps2
title="Team Principale"
items={[
{
title: 'Joseph Jacks<br><small>CEO</small>',
description:
"Joseph Jacks ha fondato OSS Capital nel 2018. È il primo e unico VC al mondo dedicato esclusivamente alle startup COSS (commercial open source) su base globale. In precedenza, ha contribuito ad avviare e gestire la prima startup di Kubernetes (Kismatic) e ha anche fondato e gestito KubeCon (la conferenza della comunità Kubernetes) prima di donarla alla Linux Foundation nel 2016 mentre si stava materializzando il CNCF (Cloud Native Computing Foundation).",
icon: 'tabler:user',
},
{
title: 'Huabing Zhou<br><small>CTO</small>',
description:
'Prima di fondare e sviluppare RustDesk, Huabing Zhou ha accumulato oltre 12 anni di esperienza nel campo dell\'IT finanziario lavorando a Singapore. Porta una ricchezza di esperienza di vita reale sia al progetto che alla gestione dell\'azienda.',
icon: 'tabler:user',
},
{
title: 'Daniel Lamb<br><small>Assistente della Comunità</small>',
description:
"Con una notevole carriera di un quarto di secolo nell'industria IT, Daniel Lamb ha partecipato attivamente a numerosi progetti open-source, assumendo vari ruoli e responsabilità. Inoltre, ha realizzato la creazione di un'azienda di servizi IT con sede in Scozia, che serve clienti in tutto il mondo. L'ampia esperienza di Daniel comprende supporto, vendite e coinvolgimento della comunità, portando una grande quantità di conoscenze ed esperienza al progetto.",
icon: 'tabler:user',
},
]}
/>
<!-- Features2 Widget ************** -->
<Features2
title="Le nostre sedi"
tagline="Trovaci"
columns={1}
items={[
{
title: 'Singapore',
description: '18A, Canberra Drive, Yishun',
},
]}
/>
</Layout>

239
v3/src/pages/ja/index.astro Normal file
View File

@ -0,0 +1,239 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps from '~/components/widgets/Steps.astro';
import Content from '~/components/widgets/Content.astro';
import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro';
import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import Carousel from '~/components/widgets/Carousel.jsx';
import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk: オープンソースのリモートデスクトップ - セルフホスティングサーバーソリューション',
ignoreTitleTemplate: true,
};
---
<Layout metadata={metadata} i18n>
<Note
title="注意"
subtitle='<span class="text-2xl text-font-bold">rustdesk.com</span>が唯一の公式ドメインです。他のドメインからRustDeskをダウンロードしないでください。'
/>
<Hero
actions={[
{
variant: 'primary',
text: 'ダウンロード',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'セルフホスティング', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title">高速オープンソースのリモートアクセスおよびサポートソフトウェア</Fragment>
<Fragment slot="subtitle">
TeamViewer、AnyDesk、Splashtopから、自身のセルフホストサーバーを使用した安全で信頼性の高いリモートデスクトップ体験のRustDeskに切り替えましょう。
</Fragment>
<Fragment slot="content">
<br /><br />
<Carousel
client:load
list={[
{ src: '/remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: '/main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/custom.png', className: 'rounded-[15px] border border-gray-700' },
]}
/>
</Fragment>
</Hero>
<Content
isReversed
tagline="セルフホスティングについての洞察"
title="セルフホストサーバーでリモートアクセスを強化"
items={[
{
title: 'データ主権',
description: '規制遵守が容易にセルフホストのRustDeskがデータ主権を確保します。',
},
{
title: '強化されたセキュリティ',
description: 'セキュリティを強化:オンプレミス展開によりデータを自身の管理下に置きます。',
},
{
title: 'パフォーマンスと信頼性',
description: '稼働時間保証:オンプレミス展開により最適なパフォーマンスと最小限のダウンタイムを確保します。',
},
{
title: '柔軟性とカスタマイズ',
description: 'RustDeskのオンプレミスを独自の要件に合わせてカスタマイズします。',
},
]}
image={{
src: '~/assets/images/hosting.jpg',
alt: 'ホスティングイメージ',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">なぜセルフホスティングなのか?</h3>
不安定なパフォーマンス、透明性の欠如、不確実なデータセキュリティリスクのためにSaaSプラットフォームに不満を感じていませんか
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Content
isAfterContent
items={[
{
title: 'あなたのブランド、あなたのやり方',
description: `RustDeskクライアントを自分の名前、アイコン、ロゴでパーソナライズします。`,
},
{
title: '簡単な展開',
description: `内蔵のネットワーク設定とサーバーセットアップにより、RustDeskのオンプレミス展開が容易になります。`,
},
{
title: '高度な設定オプション',
description: '90以上のオプションを特定のニーズに合わせて設定できます。',
},
{
title: 'マルチプラットフォームサポート',
description: 'Windows、macOS、Linux、Android。',
},
{
title: 'Webクライアント',
description: '自身のサーバーに自身のドメイン名でWebクライアントをホストし、リモートアクセスをさらに容易にします。',
},
]}
image={{
src: '~/assets/images/qs.png',
alt: 'クイックサポートイメージ',
class: 'bg-transparent',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">カスタムクライアント</h3>
クライアントを自身のブランドでカスタマイズし、真に自分のものにします。
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Steps
isReversed
title="簡単なセルフホスティングインストール"
items={[
{
title: 'ステップ1: Dockerのインストール',
description: '<code class="text-gray-600 dark:text-gray-500">bash <(wget -qO- https://get.docker.com)</code>',
icon: 'tabler:package',
},
{
title: 'ステップ2: compose.ymlのダウンロード',
description: `<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/oss.yml -O compose.yml</code>
<p class="text-center text-sm">または</p>
<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/pro.yml -O compose.yml</code>`,
icon: 'tabler:download',
},
{
title: `ステップ3: コンポーズ`,
description: '<code class="text-gray-600 dark:text-gray-500">docker compose up -d</code>',
icon: 'tabler:hammer',
},
{
title: '準備完了!',
icon: 'tabler:check',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'ステップイメージ',
}}
>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Steps>
<Stats
tagline="シナリオ"
title="誰がセルフホスティングを使用していますか?"
subtitle="以下のデータは、1,000人以上のセルフホスティングユーザーを対象としたオンライン調査からのものです。"
stats={[
{ title: 'ITサポート', amount: '37%' },
{ title: 'IT管理', amount: '25%' },
{ title: 'リモートワーク', amount: '29%' },
{ title: '産業およびその他', amount: '9%' },
]}
/>
<BlogLatestPosts title="ブログでさらに多くのコンテンツを見つける" />
<Stats
tagline="オープンソース"
title="活気あるコミュニティと共に公開で構築"
subtitle="何百万ものダウンロード数と何千もの組織で使用されている、コミュニティ主導のソリューションに参加しましょう。"
stats={[
{ title: 'クライアントダウンロード数', amount: '1000万+' },
{ title: 'Dockerダウンロード数', amount: '100万+' },
{ title: 'アクティブデバイス', amount: '300万+' },
{ title: 'スター数', amount: '7.4万+' },
{ title: 'フォーク数', amount: '9000+' },
{ title: 'コミュニティメンバー', amount: '2.2万+' },
{ title: '言語', amount: '45' },
]}
/>
<Hero
actions={[
{
text: 'GitHub',
href: 'https://github.com/rustdesk/rustdesk/discussions',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Discord',
href: 'https://discord.gg/nDceKgxnkV',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Reddit',
href: 'https://www.reddit.com/r/rustdesk/',
target: '_blank',
icon: 'tabler:message-circle',
},
]}
>
<Fragment slot="title">コミュニティに参加する</Fragment>
<Fragment slot="subtitle">コミュニティがRustDeskの体験についてどのように語っているかを発見してください。</Fragment>
</Hero>
<CallToAction
actions={[
{
variant: 'primary',
text: 'ダウンロード',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'セルフホスティング', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title">自分でRustDeskを体験してみましょう</Fragment>
</CallToAction>
</Layout>

View File

@ -0,0 +1,449 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Note from '~/components/widgets/Note.astro';
import Prices from '~/components/widgets/Pricing.astro';
import FAQs from '~/components/widgets/FAQs.astro';
import Steps from '~/components/widgets/Steps.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: '料金',
};
---
<script>
import Swal from 'sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';
window['gotoBuy'] = function (redirectUrl) {
Swal.fire({
title: '確認してください',
html: `<p style="text-align:left">購入ページに進みますか? <br><br>購入するものは<b style="font-size: 2em">決して</b> <span style="text-decoration:line-through">SaaSサービスとしてのソフトウェア</span>サブスクリプションではないことにご注意ください。 <br><br>代わりに、これは<b style="font-size: 2em">セルフホスティング</b>ソリューションのライセンスであり、自身のサーバークラウドサーバー、例えばAWS EC2、Azure VM、Vultr VPSなど、または自社のオンプレミスサーバーにデプロイする必要があります。 <br><br>セルフホスティングが何かわからない場合は、<b style="font-size: 2em">購入しないでください</b>`,
icon: 'question',
showCancelButton: true,
confirmButtonText: 'はい',
cancelButtonText: 'いいえ',
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: '確認してください',
html: `当社は<span class="text-3xl font-bold">返金を行っていません</span>のでご注意ください。Proプランの購入を検討される前に、<span class="underline font-bold">無料のセルフホスティングプランをテスト</span>することを強くお勧めします。それでも進めますか?`,
showCancelButton: true,
confirmButtonText: 'はい',
cancelButtonText: 'いいえ',
}).then((result) => {
if (result.isConfirmed) {
window.open(redirectUrl, '_blank');
}
});
}
});
};
</script>
<Layout metadata={metadata} i18n>
<Note
title="注意"
subtitle='この料金は<span class="text-xl text-blue-500">セルフホスティング</span>ソリューション用です。<span class="text-3xl font-extrabold">決して</span> <span class="line-through text-xl text-blue-500">SaaS</span>サブスクリプションではありません。'
/>
<Prices
title='当社の<span class="text-5xl text-blue-500">セルフホスティング</span>ソリューションの料金'
subtitle="必要なものにのみ支払う"
prices={[
{
title: '無料',
subtitle: '無料セルフホスティングプラン',
price: '0 <span class="text-sm">/月</span>',
period: 'オープンソースで無料',
items: [
{
description: 'オンラインステータス',
},
{
description: 'コミュニティサポート',
},
],
callToAction: {
target: '_blank',
text: '始める',
href: 'https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/',
},
},
{
title: '個人',
subtitle: '個人用セルフホスティング<span class="font-bold">Pro</span>プラン',
price: '9.90 <span class="text-sm">/月</span>',
period: '年間請求',
items: [
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">1ライセンスユーザー</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">20管理デバイス</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">無制限の同時接続</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/2fa/">2要素認証</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/console/">Webコンソール</a>',
},
{
description: 'アドレス帳',
},
{
description: '監査ログ',
},
{
description: 'ID変更',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/">アクセス制御</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/strategy/">一元化された設定</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/relay/">分散リレーサーバー</a>',
},
],
callToAction: {
text: '今すぐ購入',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Individual")',
variant: 'primary',
},
},
{
title: 'ベーシック',
subtitle: 'ベーシックセルフホスティング<span class="font-bold">Pro</span>プラン',
price: '19.90 <span class="text-sm">/月</span>',
period: '年間請求',
items: [
{
description: '<span class="font-bold">個人プランのすべての機能</span>',
icon: 'tabler:checks',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">10ライセンスユーザー</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">100管理デバイス</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/oidc/">OIDC (SSO)</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/ldap/">LDAP統合</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/#cross-group-settings">グループ間アクセス</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://rustdesk.com/docs/en/self-host/client-configuration/#1-custom-client-generator-pro-only">カスタムクライアントジェネレーター</a>',
},
],
callToAction: {
text: '今すぐ購入',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Basic")',
},
hasRibbon: true,
ribbonTitle: '人気',
},
{
title: 'カスタマイズ',
subtitle: 'カスタマイズ<span class="font-bold">Pro</span>プラン',
price: '<span id="cprice">19.90</span> <span class="text-sm">/月</span>',
period: '年間請求',
items: [
{
description: '<span class="font-bold">ベーシックプランのすべての機能</span>',
icon: 'tabler:checks',
},
{
description: '追加ユーザー1人につき$1',
},
{
description: '追加デバイス1台につき$0.1',
},
],
content: `
<form class="flex flex-col space-y-3 mx-3 min-w-[200px]">
<label for="users" class="text-left font-bold">ライセンスユーザー数:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users" name="users" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider" class="slider" name="usersRange" value="10" min="10" max="500" step="10">
<label for="devices" class="text-left font-bold">管理デバイス数:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices" name="devices" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider" class="slider" name="devicesRange" value="100" min="100" max="5000" step="100">
</form>
<br>
<script>
var users = 10;
var devices = 100;
function submit() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users + "&devices=" + devices;
gotoBuy(redirectUrl);
}
function calculatePrice() {
users = parseInt(document.getElementById("users").value);
devices = parseInt(document.getElementById("devices").value);
if (!users || users < 10) users = 10;
if (devices < 100) devices = 100;
var price = 19.9 + (users - 10) + (devices - 100) * 0.1;
document.getElementById("cprice").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
document.getElementById("users").oninput = function() {
document.getElementById("usersSlider").value = this.value;
calculatePrice();
}
document.getElementById("devices").oninput = function() {
document.getElementById("devicesSlider").value = this.value;
calculatePrice();
}
document.getElementById("usersSlider").oninput = function() {
document.getElementById("users").value = this.value;
calculatePrice();
}
document.getElementById("devicesSlider").oninput = function() {
document.getElementById("devices").value = this.value;
calculatePrice();
}
</script>
`,
callToAction: {
text: '今すぐ購入',
onclick: 'submit()',
variant: 'primary',
},
},
]}
/>
<Prices
prices={[
{
title: 'カスタマイズV2',
subtitle: '同時接続数制限付きカスタマイズ<span class="font-bold">Pro</span>プラン',
price: '<span id="cprice2">19.90</span> <span class="text-sm">/月</span>',
period: '年間請求',
items: [
{
description: `<span class="font-bold">ベーシックセルフホスティングプランのすべての機能<span class="underline font-normal">ただし、同時接続数に制限があり、過剰な管理デバイスは無効化されません</span></span>`,
icon: 'tabler:checks',
},
{
description: '同時接続ごとに無制限の同時セッション(タブまたは別ウィンドウ)',
},
{
description: '追加ユーザー1人につき$1',
},
{
description: '追加デバイス1台につき$0.1',
},
{
description: '追加同時接続1つにつき$20',
},
],
id: 'custom2',
content: `
<form class="flex flex-col space-y-3 mx-3">
<label for="users2" class="text-left font-bold">ライセンスユーザー数:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users2" name="users2" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider2" class="slider" name="usersRange2" value="10" min="10" max="500" step="10">
<label for="devices2" class="text-left font-bold">管理デバイス数:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices2" name="devices2" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider2" class="slider" name="devicesRange2" value="100" min="100" max="5000" step="100">
<label for="conns" class="text-left font-bold">同時接続数:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="conns" name="conns" value="1" min="1" max="50" step="1">
<input type="range" id="connsSlider" class="slider" name="connsRange" value="1" min="1" max="50" step="1">
</form>
<br>
<script>
var users2 = 10;
var devices2 = 100;
var conns = 1;
function submit2() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users2 + "&devices=" + devices2 + "&conns=" + conns;
gotoBuy(redirectUrl);
}
function calculatePrice2() {
users2 = parseInt(document.getElementById("users2").value);
devices2 = parseInt(document.getElementById("devices2").value);
conns = parseInt(document.getElementById("conns").value);
if (!users2 || users2 < 10) users2 = 10;
if (devices2 < 100) devices2 = 100;
if (conns < 1) conns = 1;
var price = 19.9 + (users2 - 10) + (devices2 - 100) * 0.1 + (conns - 1) * 20;
document.getElementById("cprice2").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
if (window.location.href.indexOf("custom2") > 0) {
setTimeout(function() { window.location = "#custom2"; }, 150);
} else {
setTimeout(function() { document.getElementById("custom2").parentElement.parentElement.parentElement.style.display = 'none'; }, 0);
}
document.getElementById("users2").oninput = function() {
document.getElementById("usersSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("devices2").oninput = function() {
document.getElementById("devicesSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("conns").oninput = function() {
document.getElementById("connsSlider").value = this.value;
calculatePrice2();
}
document.getElementById("usersSlider2").oninput = function() {
document.getElementById("users2").value = this.value;
calculatePrice2();
}
document.getElementById("devicesSlider2").oninput = function() {
document.getElementById("devices2").value = this.value;
calculatePrice2();
}
document.getElementById("connsSlider").oninput = function() {
document.getElementById("conns").value = this.value;
calculatePrice2();
}
</script>
`,
callToAction: {
text: '今すぐ購入',
onclick: 'submit2()',
variant: 'primary',
},
},
]}
/>
<CallToAction
actions={[
{
text: 'sales@rustdesk.com',
href: 'mailto:sales@rustdesk.com',
target: '_blank',
icon: 'tabler:mail',
},
]}
>
<Fragment slot="title">より大規模なプランやお問い合わせについてはお問い合わせください</Fragment>
</CallToAction>
<Steps
title="プランから本番環境までのガイド付き旅"
tagline="簡略化されたプロセス"
isReversed={true}
items={[
{
title: 'RustDesk Server Proをインストール',
icon: 'tabler:number-1',
description:
'<code>bash <(wget -qO- https://get.docker.com)<br>wget rustdesk.com/pro.yml -O compose.yml<br>docker compose up -d</code>',
},
{
title: 'プランを探索し、選択',
icon: 'tabler:number-2',
},
{
title: 'メールアドレスと支払い詳細を入力',
icon: 'tabler:number-3',
},
{
title: '入力したメールアドレスでライセンスキーを受け取る',
icon: 'tabler:number-4',
},
{
title: 'RustDesk Server ProのWebコンソールでライセンスキーを入力',
icon: 'tabler:number-5',
},
{
title: '準備完了!',
icon: 'tabler:check',
description:
'詳細な手順については、<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/">ドキュメント</a>をご参照ください。',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'ステップ画像',
}}
/>
<FAQs
title="料金に関するよくある質問"
subtitle="適切なプランを選ぶことは重要です。私たちはあなたの質問に答える準備ができています。料金オプションについて質問がある場合は、ここが適切な場所です。"
columns={1}
items={[
{
title: 'プランにはカスタマーサポートが含まれていますか?',
description:
'はい、すべての有料プランには、質問や懸念事項に対応する専任のカスタマーサポートへのアクセスが含まれています。',
},
{
title: '試用ライセンスはありますか?',
description: '<a class="underline" href="mailto:sales@rustdesk.com">お問い合わせください</a>',
},
{
title: 'プランをアップグレードするにはどうすればいいですか?',
description:
'もちろんです!進化するニーズに最適なプランを見つけるために、いつでも簡単に<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#renewupgrade-license">プランをアップグレード</a>できます。',
},
{
title: 'どの支払い方法を受け付けていますか?',
description:
'主要なクレジットカードやオンライン決済方法を受け付けており、便利で安全な取引プロセスを確保しています。銀行振込で支払いたい場合は、<a class="underline" href="mailto:sales@rustdesk.com">お問い合わせください</a>。追加の銀行手数料がかかり、オフライン支払いが銀行に到着次第ライセンスキーをお送りします。これには3〜5営業日かかります。',
},
{
title: '表示されている費用以外に隠れた料金はありますか?',
description:
'いいえ、費用には各プランに記載されているすべての機能が含まれています。隠れた料金や追加料金はありません。',
},
{
title: '月払いはありますか?',
description:
'いいえ、年間支払いプランのみを提供しています。自動更新はしません。有効期限の14日前にライセンスを更新するためのリマインダーメールが送信されます。',
},
{
title: '非営利団体や教育機関向けの割引はありますか?',
description: 'いいえ、まだありません。無料プランをご利用いただくことをお勧めします。',
},
{
title: '利用規約はどのようなものですか?',
description:
'この<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/blob/main/terms">利用規約</a>をご確認ください',
},
{
title:
'臨時のサポートケースについてはどうですか?無人アクセスなしで時々サポートが必要なデバイスがあります。',
description:
'この<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10083053">解決策</a>を提供しています',
},
]}
/>
</Layout>

View File

@ -0,0 +1,43 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'サポート',
};
---
<Layout metadata={metadata} i18n>
<Features2
title="お手伝いさせていただきます!"
items={[
{
title: '問題報告',
description: 'バグを見つけましたかGitHubのイシューでお知らせください。',
},
{
title: 'コミュニティサポート',
description: '私たちのDiscordサーバーに参加して、ヘルプやベストプラクティスを探してください。',
},
{
title: 'Proユーザー向けチケット',
description: 'RustDesk Server Proの使用中に問題が発生した場合は、メールでお問い合わせください。',
},
{
title: 'GitHub',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">イシューを開く</a>',
icon: 'tabler:brand-github',
},
{
title: 'Discord',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">サーバーに参加する</a>',
icon: 'tabler:brand-discord',
},
{
title: 'メール',
description: '<a href="mailto:support@rustdesk.com">support@rustdesk.com</a>',
icon: 'tabler:mail',
},
]}
/>
</Layout>

View File

@ -0,0 +1,64 @@
---
import Features2 from '~/components/widgets/Features2.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps2 from '~/components/widgets/Steps2.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: '私たちについて',
};
---
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="私たちについて">
<Fragment slot="title">なぜ私たちはこれを構築しているのか?</Fragment>
<Fragment slot="subtitle">
<p class="text-left">
2020年半ばのCovid-19パンデミックの最中、現在のリードデベロッパー/創設者はシンガポールでのリモートワークを促進するためにTeamViewerの商用ライセンスを取得する必要に迫られました。しかし、その法外な費用に驚愕しました。一晩の不眠の後、彼らは代替ソリューションを作成するミッションに乗り出しました。こうしてRustDeskが誕生しました - オープンソースで自由にアクセスできるリモートデスクトップソフトウェアで、<E381A7><E38081>多くの不眠の夜を通じて丹念に作り上げられました。この献身と決意の労働の結果、RustDeskは2021年にGitHubでリリースされ、世界中の人々が利用できるようになりました。
</p>
</Fragment>
</Hero>
<!-- Steps2 Widget ****************** -->
<Steps2
title="コアチーム"
items={[
{
title: 'ジョセフ・ジャックス<br><small>CEO</small>',
description:
"ジョセフ・ジャックスは2018年にOSS Capitalを設立しました。これは、世界初かつ唯一のCOSS商用オープンソーススタートアップに専念する初期段階のVCです。以前は、最初のKubernetesスタートアップKismaticの立ち上げと運営を支援し、また2016年にLinux Foundationに寄贈される前に、KubeConKubernetesコミュニティカンファレンスを設立・運営しました。CNCFCloud Native Computing Foundationが形成されつつある時期でした。",
icon: 'tabler:user',
},
{
title: '周華兵<br><small>CTO</small>',
description:
'RustDeskを創設し開発する前、周華兵はシンガポールで金融ITの分野で12年以上の経験を積みました。プロジェクトとビジネスの管理の両方に豊富な実生活の経験をもたらしています。',
icon: 'tabler:user',
},
{
title: 'ダニエル・ラム<br><small>コミュニティアシスタント</small>',
description:
"IT業界で25年の注目すべきキャリアを持つダニエル・ラムは、多数のオープンソースプロジェクトに積極的に参加し、さまざまな役割と責任を担ってきました。さらに、スコットランドを拠点とし、世界中の顧客にサービスを提供するITサービス会社の設立も成功させました。ダニエルの幅広い専門知識はサポート、販売、コミュニティエンゲージメントを網羅しており、プロジェクトに大量の知識と経験をもたらしています。",
icon: 'tabler:user',
},
]}
/>
<!-- Features2 Widget ************** -->
<Features2
title="私たちの所在地"
tagline="私たちを見つける"
columns={1}
items={[
{
title: 'シンガポール',
description: '18A, Canberra Drive, Yishun',
},
]}
/>
</Layout>

View File

@ -17,7 +17,7 @@ const metadata = {
window['gotoBuy'] = function (redirectUrl) {
Swal.fire({
title: 'Please Confirm',
html: '<p style="text-align:left">Do you want to proceed to the purchase page? <br><br>Please note that what you are purchasing is <b style="font-size: 2em">NOT</b> a <span style="text-decoration:line-through">SaaS(Software as a Service)</span> subscription. <br><br>Instead, it is a license for a <b style="font-size: 2em">self-hosting</b> solution, which requires you to deploy it on your own server (cloud server, e.g. AWS EC2, Azure VM, Vultr VPS etc, or your on-premise server). <br><br>Please <b style="font-size: 2em">don\'t</b> buy if you don\'t know what is self-hosting',
html: `<p style="text-align:left">Do you want to proceed to the purchase page? <br><br>Please note that what you are purchasing is <b style="font-size: 2em">NOT</b> a <span style="text-decoration:line-through">SaaS(Software as a Service)</span> subscription. <br><br>Instead, it is a license for a <b style="font-size: 2em">self-hosting</b> solution, which requires you to deploy it on your own server (cloud server, e.g. AWS EC2, Azure VM, Vultr VPS etc, or your on-premise server). <br><br>Please <b style="font-size: 2em">don't</b> buy if you don't know what is self-hosting`,
icon: 'question',
showCancelButton: true,
confirmButtonText: 'Yes',
@ -26,7 +26,7 @@ const metadata = {
if (result.isConfirmed) {
Swal.fire({
title: 'Please Confirm',
html: 'Please note that we <span class="text-3xl font-bold">don\'t</span> offer <span class="text-3xl font-bold">refunds</span>. We strongly recommend <span class="underline font-bold">testing our free self-hosting plan</span> before considering the purchase of our Pro plan. Are you still interested in proceeding?',
html: `Please note that we <span class="text-3xl font-bold">don't</span> offer <span class="text-3xl font-bold">refunds</span>. We strongly recommend <span class="underline font-bold">testing our free self-hosting plan</span> before considering the purchase of our Pro plan. Are you still interested in proceeding?`,
showCancelButton: true,
confirmButtonText: 'Yes',
cancelButtonText: 'No',
@ -40,14 +40,12 @@ const metadata = {
};
</script>
<Layout metadata={metadata}>
<Layout metadata={metadata} i18n>
<Note
title="Note"
subtitle='This pricing is for <span class="text-xl text-blue-500">self-hosting</span> solution, it is <span class="text-3xl font-extrabold">NOT</span> a <span class="line-through text-xl text-blue-500">SaaS</span> subscription.'
/>
<!-- Pricing Widget ******************* -->
<Prices
title='Pricing of our <span class="text-5xl text-blue-500">self-hosting</span> solutions'
subtitle="Only pay for what you need"
@ -185,7 +183,7 @@ const metadata = {
},
],
content: `
<form class="flex flex-col space-y-3 mx-3">
<form class="flex flex-col space-y-3 mx-3 min-w-[200px]">
<label for="users" class="text-left font-bold">Number of Licensed Users:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users" name="users" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider" class="slider" name="usersRange" value="10" min="10" max="500" step="10">
@ -249,8 +247,7 @@ const metadata = {
period: 'billed annually',
items: [
{
description:
'<span class="font-bold">Everything in the basic self-hosting plan <span class="underline font-normal">but with limited concurrent connections, excessive managed devices won\'t be disabled</span></span>',
description: `<span class="font-bold">Everything in the basic self-hosting plan <span class="underline font-normal">but with limited concurrent connections, excessive managed devices won't be disabled</span></span>`,
icon: 'tabler:checks',
},
{
@ -358,8 +355,6 @@ const metadata = {
<Fragment slot="title">Contact us for larger plans & inquiries</Fragment>
</CallToAction>
<!-- Steps Widget ****************** -->
<Steps
title="A guided journey from plans to production"
tagline="simplified process"
@ -400,8 +395,6 @@ const metadata = {
}}
/>
<!-- FAQs Widget ******************* -->
<FAQs
title="Pricing FAQs"
subtitle="Choosing the right plan is important, and we're here to answer your questions. If you have queries about our pricing options, you're in the right place."
@ -445,6 +438,12 @@ const metadata = {
description:
'Please check this <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/blob/main/terms">terms</a>',
},
{
title:
'What about casual support cases? We have some devices that need to be supported occasionally without unattended access.',
description:
'We provide this <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10083053">solution</a>',
},
]}
/>
</Layout>

240
v3/src/pages/pt/index.astro Normal file
View File

@ -0,0 +1,240 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps from '~/components/widgets/Steps.astro';
import Content from '~/components/widgets/Content.astro';
import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro';
import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import Carousel from '~/components/widgets/Carousel.jsx';
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',
ignoreTitleTemplate: true,
};
---
<Layout metadata={metadata} i18n>
<Note
title="Nota"
subtitle='<span class="text-2xl text-font-bold">rustdesk.com</span> é nosso único domínio oficial. Por favor, não baixe o RustDesk de outros domínios.'
/>
<Hero
actions={[
{
variant: 'primary',
text: 'Baixar',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'Auto-Hospedagem', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> O Software de Acesso Remoto e Suporte de Código Aberto Rápido </Fragment>
<Fragment slot="subtitle">
Mude do TeamViewer, AnyDesk e Splashtop para o RustDesk para uma experiência de área de trabalho remota segura e confiável
com seus próprios servidores auto-hospedados.
</Fragment>
<Fragment slot="content">
<br /><br />
<Carousel
client:load
list={[
{ src: '/remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: '/main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/custom.png', className: 'rounded-[15px] border border-gray-700' },
]}
/>
</Fragment>
</Hero>
<Content
isReversed
tagline="Insights sobre auto-hospedagem"
title="Potencialize seu acesso remoto com servidores auto-hospedados"
items={[
{
title: 'Soberania de dados',
description: 'Conformidade regulatória facilitada: o RustDesk auto-hospedado garante a soberania dos dados.',
},
{
title: 'Segurança aprimorada',
description: 'Fortifique sua segurança: a implantação local mantém seus dados sob seu controle.',
},
{
title: 'Desempenho e confiabilidade',
description: 'Tempo de atividade garantido: a implantação local garante desempenho ideal e tempo de inatividade mínimo.',
},
{
title: 'Flexibilidade e personalização',
description: 'Adapte o RustDesk local para atender às suas necessidades únicas.',
},
]}
image={{
src: '~/assets/images/hosting.jpg',
alt: 'Imagem de Hospedagem',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Por que auto-hospedar?</h3>
Você está frustrado com plataformas SaaS devido ao seu desempenho instável, falta de transparência e riscos incertos de segurança de dados?
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Content
isAfterContent
items={[
{
title: 'Sua marca, do seu jeito',
description: `Personalize o cliente RustDesk com seu nome, ícone e logotipo.`,
},
{
title: 'Implantação fácil',
description: `A configuração de rede e servidor integrada torna a implantação do RustDesk local uma tarefa simples.`,
},
{
title: 'Opções de configuração avançadas',
description: 'Mais de 90 opções podem ser configuradas para atender às suas necessidades específicas.',
},
{
title: 'Suporte multiplataforma',
description: 'Windows, macOS, Linux, Android.',
},
{
title: 'Cliente web',
description: 'Hospede o cliente web em seu servidor com seu nome de domínio para tornar o acesso remoto ainda mais fácil.',
},
]}
image={{
src: '~/assets/images/qs.png',
alt: 'Imagem de Suporte Rápido',
class: 'bg-transparent',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Cliente Personalizado</h3>
Personalize seu cliente com sua marca e torne-o verdadeiramente seu.
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Steps
isReversed
title="Instalação simples de auto-hospedagem"
items={[
{
title: 'Passo 1: Instale o Docker',
description: '<code class="text-gray-600 dark:text-gray-500">bash <(wget -qO- https://get.docker.com)</code>',
icon: 'tabler:package',
},
{
title: 'Passo 2: Baixe o compose.yml',
description: `<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/oss.yml -O compose.yml</code>
<p class="text-center text-sm">ou</p>
<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/pro.yml -O compose.yml</code>`,
icon: 'tabler:download',
},
{
title: `Passo 3: Compose`,
description: '<code class="text-gray-600 dark:text-gray-500">docker compose up -d</code>',
icon: 'tabler:hammer',
},
{
title: 'Pronto!',
icon: 'tabler:check',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Imagem de passos',
}}
>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Steps>
<Stats
tagline="Cenários"
title="Quem está usando auto-hospedagem?"
subtitle="Os dados abaixo são de nossa pesquisa online cobrindo mais de 1.000 usuários de auto-hospedagem."
stats={[
{ title: 'Suporte de TI', amount: '37%' },
{ title: 'Administração de TI', amount: '25%' },
{ title: 'Trabalho Remoto', amount: '29%' },
{ title: 'Industrial e outros', amount: '9%' },
]}
/>
<BlogLatestPosts title="Descubra mais conteúdo em nosso Blog" />
<Stats
tagline="Código Aberto"
title="Construído publicamente com uma comunidade vibrante"
subtitle="Junte-se a uma solução impulsionada pela comunidade que tem milhões de downloads e é usada por milhares de organizações."
stats={[
{ title: 'Downloads do cliente', amount: '10M+' },
{ title: 'Downloads do Docker', amount: '1M+' },
{ title: 'Dispositivos ativos', amount: '3M+' },
{ title: 'Estrelas', amount: '74K+' },
{ title: 'Forks', amount: '9K+' },
{ title: 'Membros da comunidade', amount: '22K+' },
{ title: 'Idiomas', amount: '45' },
]}
/>
<Hero
actions={[
{
text: 'GitHub',
href: 'https://github.com/rustdesk/rustdesk/discussions',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Discord',
href: 'https://discord.gg/nDceKgxnkV',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Reddit',
href: 'https://www.reddit.com/r/rustdesk/',
target: '_blank',
icon: 'tabler:message-circle',
},
]}
>
<Fragment slot="title"> Junte-se à comunidade </Fragment>
<Fragment slot="subtitle"> Descubra o que nossa comunidade tem a dizer sobre sua experiência com o RustDesk. </Fragment>
</Hero>
<CallToAction
actions={[
{
variant: 'primary',
text: 'Baixar',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: 'Auto-Hospedagem', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> Experimente o RustDesk por si mesmo </Fragment>
</CallToAction>
</Layout>

View File

@ -0,0 +1,449 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Note from '~/components/widgets/Note.astro';
import Prices from '~/components/widgets/Pricing.astro';
import FAQs from '~/components/widgets/FAQs.astro';
import Steps from '~/components/widgets/Steps.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Preços',
};
---
<script>
import Swal from 'sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';
window['gotoBuy'] = function (redirectUrl) {
Swal.fire({
title: 'Por favor, confirme',
html: `<p style="text-align:left">Deseja prosseguir para a página de compra? <br><br>Por favor, note que o que você está comprando <b style="font-size: 2em">NÃO</b> é uma assinatura de <span style="text-decoration:line-through">SaaS (Software como Serviço)</span>. <br><br>Em vez disso, é uma licença para uma solução de <b style="font-size: 2em">auto-hospedagem</b>, que requer que você a implante em seu próprio servidor (servidor na nuvem, por exemplo, AWS EC2, Azure VM, Vultr VPS etc., ou seu servidor local). <br><br>Por favor, <b style="font-size: 2em">não</b> compre se você não sabe o que é auto-hospedagem`,
icon: 'question',
showCancelButton: true,
confirmButtonText: 'Sim',
cancelButtonText: 'Não',
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Por favor, confirme',
html: `Por favor, note que <span class="text-3xl font-bold">não</span> oferecemos <span class="text-3xl font-bold">reembolsos</span>. Recomendamos fortemente <span class="underline font-bold">testar nosso plano gratuito de auto-hospedagem</span> antes de considerar a compra do nosso plano Pro. Você ainda está interessado em prosseguir?`,
showCancelButton: true,
confirmButtonText: 'Sim',
cancelButtonText: 'Não',
}).then((result) => {
if (result.isConfirmed) {
window.open(redirectUrl, '_blank');
}
});
}
});
};
</script>
<Layout metadata={metadata} i18n>
<Note
title="Nota"
subtitle='Este preço é para uma solução de <span class="text-xl text-blue-500">auto-hospedagem</span>, <span class="text-3xl font-extrabold">NÃO</span> é uma assinatura de <span class="line-through text-xl text-blue-500">SaaS</span>.'
/>
<Prices
title='Preços de nossas soluções de <span class="text-5xl text-blue-500">auto-hospedagem</span>'
subtitle="Pague apenas pelo que você precisa"
prices={[
{
title: 'Grátis',
subtitle: 'Plano de auto-hospedagem gratuito',
price: '0 <span class="text-sm">/mês</span>',
period: 'Código aberto e gratuito',
items: [
{
description: 'Status online',
},
{
description: 'Suporte da comunidade',
},
],
callToAction: {
target: '_blank',
text: 'Começar',
href: 'https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/',
},
},
{
title: 'Individual',
subtitle: 'Plano <span class="font-bold">Pro</span> de auto-hospedagem individual',
price: '9,90 <span class="text-sm">/mês</span>',
period: 'cobrado anualmente',
items: [
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">1 usuário licenciado</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">20 dispositivos gerenciados</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">Conexões simultâneas ilimitadas</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/2fa/">2FA</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/console/">Console web</a>',
},
{
description: 'Catálogo de endereços',
},
{
description: 'Log de auditoria',
},
{
description: 'Alterar ID',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/">Controle de acesso</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/strategy/">Configurações centralizadas</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/relay/">Servidores de retransmissão distribuídos</a>',
},
],
callToAction: {
text: 'Comprar agora',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Individual")',
variant: 'primary',
},
},
{
title: 'Básico',
subtitle: 'Plano <span class="font-bold">Pro</span> de auto-hospedagem básico',
price: '19,90 <span class="text-sm">/mês</span>',
period: 'cobrado anualmente',
items: [
{
description: '<span class="font-bold">Tudo no plano individual</span>',
icon: 'tabler:checks',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">10 usuários licenciados</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">100 dispositivos gerenciados</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/oidc/">OIDC (SSO)</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/ldap/">Integração LDAP</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/#cross-group-settings">Acesso entre grupos</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://rustdesk.com/docs/en/self-host/client-configuration/#1-custom-client-generator-pro-only">Gerador de cliente personalizado</a>',
},
],
callToAction: {
text: 'Comprar agora',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Basic")',
},
hasRibbon: true,
ribbonTitle: 'popular',
},
{
title: 'Personalizado',
subtitle: 'Plano <span class="font-bold">Pro</span> personalizado',
price: '<span id="cprice">19,90</span> <span class="text-sm">/mês</span>',
period: 'cobrado anualmente',
items: [
{
description: '<span class="font-bold">Tudo no plano básico</span>',
icon: 'tabler:checks',
},
{
description: '$1 para cada usuário adicional',
},
{
description: '$0,1 para cada dispositivo adicional',
},
],
content: `
<form class="flex flex-col space-y-3 mx-3 min-w-[200px]">
<label for="users" class="text-left font-bold">Número de Usuários Licenciados:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users" name="users" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider" class="slider" name="usersRange" value="10" min="10" max="500" step="10">
<label for="devices" class="text-left font-bold">Número de Dispositivos Gerenciados:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices" name="devices" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider" class="slider" name="devicesRange" value="100" min="100" max="5000" step="100">
</form>
<br>
<script>
var users = 10;
var devices = 100;
function submit() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users + "&devices=" + devices;
gotoBuy(redirectUrl);
}
function calculatePrice() {
users = parseInt(document.getElementById("users").value);
devices = parseInt(document.getElementById("devices").value);
if (!users || users < 10) users = 10;
if (devices < 100) devices = 100;
var price = 19.9 + (users - 10) + (devices - 100) * 0.1;
document.getElementById("cprice").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
document.getElementById("users").oninput = function() {
document.getElementById("usersSlider").value = this.value;
calculatePrice();
}
document.getElementById("devices").oninput = function() {
document.getElementById("devicesSlider").value = this.value;
calculatePrice();
}
document.getElementById("usersSlider").oninput = function() {
document.getElementById("users").value = this.value;
calculatePrice();
}
document.getElementById("devicesSlider").oninput = function() {
document.getElementById("devices").value = this.value;
calculatePrice();
}
</script>
`,
callToAction: {
text: 'Comprar agora',
onclick: 'submit()',
variant: 'primary',
},
},
]}
/>
<Prices
prices={[
{
title: 'Personalizado V2',
subtitle: 'Plano <span class="font-bold">Pro</span> personalizado com conexões simultâneas limitadas',
price: '<span id="cprice2">19,90</span> <span class="text-sm">/mês</span>',
period: 'cobrado anualmente',
items: [
{
description: `<span class="font-bold">Tudo no plano básico de auto-hospedagem <span class="underline font-normal">mas com conexões simultâneas limitadas, dispositivos gerenciados excessivos não serão desativados</span></span>`,
icon: 'tabler:checks',
},
{
description: 'Sessões simultâneas ilimitadas (em abas ou janelas separadas) por conexão simultânea',
},
{
description: '$1 para cada usuário adicional',
},
{
description: '$0,1 para cada dispositivo adicional',
},
{
description: '$20 para cada conexão simultânea adicional',
},
],
id: 'custom2',
content: `
<form class="flex flex-col space-y-3 mx-3">
<label for="users2" class="text-left font-bold">Número de Usuários Licenciados:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users2" name="users2" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider2" class="slider" name="usersRange2" value="10" min="10" max="500" step="10">
<label for="devices2" class="text-left font-bold">Número de Dispositivos Gerenciados:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices2" name="devices2" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider2" class="slider" name="devicesRange2" value="100" min="100" max="5000" step="100">
<label for="conns" class="text-left font-bold">Número de Conexões Simultâneas:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="conns" name="conns" value="1" min="1" max="50" step="1">
<input type="range" id="connsSlider" class="slider" name="connsRange" value="1" min="1" max="50" step="1">
</form>
<br>
<script>
var users2 = 10;
var devices2 = 100;
var conns = 1;
function submit2() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users2 + "&devices=" + devices2 + "&conns=" + conns;
gotoBuy(redirectUrl);
}
function calculatePrice2() {
users2 = parseInt(document.getElementById("users2").value);
devices2 = parseInt(document.getElementById("devices2").value);
conns = parseInt(document.getElementById("conns").value);
if (!users2 || users2 < 10) users2 = 10;
if (devices2 < 100) devices2 = 100;
if (conns < 1) conns = 1;
var price = 19.9 + (users2 - 10) + (devices2 - 100) * 0.1 + (conns - 1) * 20;
document.getElementById("cprice2").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
if (window.location.href.indexOf("custom2") > 0) {
setTimeout(function() { window.location = "#custom2"; }, 150);
} else {
setTimeout(function() { document.getElementById("custom2").parentElement.parentElement.parentElement.style.display = 'none'; }, 0);
}
document.getElementById("users2").oninput = function() {
document.getElementById("usersSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("devices2").oninput = function() {
document.getElementById("devicesSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("conns").oninput = function() {
document.getElementById("connsSlider").value = this.value;
calculatePrice2();
}
document.getElementById("usersSlider2").oninput = function() {
document.getElementById("users2").value = this.value;
calculatePrice2();
}
document.getElementById("devicesSlider2").oninput = function() {
document.getElementById("devices2").value = this.value;
calculatePrice2();
}
document.getElementById("connsSlider").oninput = function() {
document.getElementById("conns").value = this.value;
calculatePrice2();
}
</script>
`,
callToAction: {
text: 'Comprar agora',
onclick: 'submit2()',
variant: 'primary',
},
},
]}
/>
<CallToAction
actions={[
{
text: 'sales@rustdesk.com',
href: 'mailto:sales@rustdesk.com',
target: '_blank',
icon: 'tabler:mail',
},
]}
>
<Fragment slot="title">Entre em contato conosco para planos maiores e consultas</Fragment>
</CallToAction>
<Steps
title="Uma jornada guiada dos planos à produção"
tagline="processo simplificado"
isReversed={true}
items={[
{
title: 'Instale o RustDesk Server Pro',
icon: 'tabler:number-1',
description:
'<code>bash <(wget -qO- https://get.docker.com)<br>wget rustdesk.com/pro.yml -O compose.yml<br>docker compose up -d</code>',
},
{
title: 'Explore os planos e selecione um plano',
icon: 'tabler:number-2',
},
{
title: 'Insira o e-mail e os detalhes de pagamento',
icon: 'tabler:number-3',
},
{
title: 'Obtenha a chave de licença através do e-mail que você inseriu',
icon: 'tabler:number-4',
},
{
title: 'Insira a chave de licença no console web do RustDesk Server Pro',
icon: 'tabler:number-5',
},
{
title: 'Pronto!',
icon: 'tabler:check',
description:
'Para instruções detalhadas, consulte nossa <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/">documentação</a>.',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Imagem dos passos',
}}
/>
<FAQs
title="Perguntas Frequentes sobre Preços"
subtitle="Escolher o plano certo é importante, e estamos aqui para responder suas perguntas. Se você tem dúvidas sobre nossas opções de preços, você está no lugar certo."
columns={1}
items={[
{
title: 'Os planos incluem suporte ao cliente?',
description:
'Absolutamente, todos os planos pagos incluem acesso ao nosso suporte ao cliente dedicado para ajudá-lo com quaisquer dúvidas ou preocupações.',
},
{
title: 'Existe uma licença de teste?',
description: 'Por favor, <a class="underline" href="mailto:sales@rustdesk.com">entre em contato conosco</a>',
},
{
title: 'Como faço para atualizar meu plano?',
description:
'Certamente! Você pode facilmente <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#renewupgrade-license">atualizar seu plano</a>, a qualquer momento, para encontrar o que melhor atende às suas necessidades em evolução.',
},
{
title: 'Quais métodos de pagamento vocês aceitam?',
description:
'Aceitamos os principais cartões de crédito e métodos de pagamento online para garantir um processo de transação conveniente e seguro. Se você deseja pagar via transferência bancária, por favor <a class="underline" href="mailto:sales@rustdesk.com">entre em contato conosco</a>; você será cobrado uma taxa extra de processamento bancário, e enviaremos a chave de licença assim que recebermos o pagamento offline no banco; isso leva de 3 a 5 dias úteis.',
},
{
title: 'Existem taxas ocultas além do custo exibido?',
description:
'Não, o custo cobre todas as características e recursos listados em cada plano. Não há taxas ocultas ou cobranças extras.',
},
{
title: 'Vocês têm pagamento mensal?',
description:
'Não, oferecemos apenas planos de pagamento anual. Não renovamos automaticamente; você receberá um e-mail lembrando-o de renovar sua licença 14 dias antes da data de expiração.',
},
{
title: 'Vocês têm desconto para organizações sem fins lucrativos ou educacionais?',
description: 'Não, ainda não temos. Você é encorajado a usar o plano gratuito.',
},
{
title: 'Quais são os seus termos?',
description:
'Por favor, verifique estes <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/blob/main/terms">termos</a>',
},
{
title:
'E quanto a casos de suporte casual? Temos alguns dispositivos que precisam de suporte ocasionalmente sem acesso não assistido.',
description:
'Fornecemos esta <a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10083053">solução</a>',
},
]}
/>
</Layout>

View File

@ -0,0 +1,43 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'Suporte',
};
---
<Layout metadata={metadata} i18n>
<Features2
title="Estamos aqui para ajudar!"
items={[
{
title: 'Problemas',
description: `Encontrou um bug? Adoraríamos saber sobre isso em nossos problemas no GitHub.`,
},
{
title: 'Suporte da Comunidade',
description: 'Junte-se ao nosso servidor Discord para buscar ajuda e melhores práticas.',
},
{
title: 'Ticket para Usuário Pro',
description: 'Envie-nos um e-mail se encontrar algum problema ao usar o RustDesk Server Pro.',
},
{
title: 'GitHub',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">Abrir um problema</a>',
icon: 'tabler:brand-github',
},
{
title: 'Discord',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">Junte-se ao nosso servidor</a>',
icon: 'tabler:brand-discord',
},
{
title: 'E-mail',
description: '<a href="mailto:support@rustdesk.com">support@rustdesk.com</a>',
icon: 'tabler:mail',
},
]}
/>
</Layout>

View File

@ -0,0 +1,70 @@
---
import Features2 from '~/components/widgets/Features2.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps2 from '~/components/widgets/Steps2.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Sobre nós',
};
---
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="Sobre nós">
<Fragment slot="title">Por que Estamos Construindo Isso?</Fragment>
<Fragment slot="subtitle">
<p class="text-left">
Em meio à pandemia de Covid-19 em meados de 2020, o atual desenvolvedor líder / fundador se viu obrigado a
adquirir uma licença comercial do TeamViewer para facilitar o trabalho remoto em Singapura. No entanto, eles
ficaram surpresos com o custo exorbitante. Após uma noite inquieta, embarcaram em uma missão para criar uma
solução alternativa. Assim, o RustDesk foi concebido — um software de área de trabalho remota de código aberto,
livremente acessível, que foi meticulosamente elaborado ao longo de inúmeras noites sem dormir. Este trabalho de
dedicação e determinação culminou no lançamento do RustDesk no GitHub em 2021, permitindo que fosse utilizado
por indivíduos em todo o mundo.
</p>
</Fragment>
</Hero>
<!-- Steps2 Widget ****************** -->
<Steps2
title="Equipe Principal"
items={[
{
title: 'Joseph Jacks<br><small>CEO</small>',
description:
"Joseph Jacks fundou a OSS Capital em 2018. É a primeira e única VC de estágio inicial do mundo dedicada exclusivamente a startups COSS (código aberto comercial) em uma base global. Anteriormente, ele ajudou a iniciar e administrar a primeira startup de Kubernetes (Kismatic) e também fundou e administrou a KubeCon (a conferência da comunidade Kubernetes) antes de doá-la à Linux Foundation em 2016, quando a CNCF (Cloud Native Computing Foundation) estava se materializando.",
icon: 'tabler:user',
},
{
title: 'Huabing Zhou<br><small>CTO</small>',
description:
'Antes de fundar e desenvolver o RustDesk, Huabing Zhou acumulou mais de 12 anos de experiência na área de TI financeira enquanto trabalhava em Singapura. Trazendo uma riqueza de experiência da vida real tanto para o projeto quanto para a gestão do negócio.',
icon: 'tabler:user',
},
{
title: 'Daniel Lamb<br><small>Assistente de Comunidade</small>',
description:
"Com uma notável carreira de um quarto de século na indústria de TI, Daniel Lamb participou ativamente de numerosos projetos de código aberto, assumindo vários papéis e responsabilidades. Além disso, ele realizou o estabelecimento de uma empresa de serviços de TI baseada na Escócia, atendendo clientes em todo o mundo. A extensa experiência de Daniel abrange suporte, vendas e engajamento comunitário, trazendo uma grande quantidade de conhecimento e experiência para o projeto.",
icon: 'tabler:user',
},
]}
/>
<!-- Features2 Widget ************** -->
<Features2
title="Nossas localizações"
tagline="Encontre-nos"
columns={1}
items={[
{
title: 'Singapura',
description: '18A, Canberra Drive, Yishun',
},
]}
/>
</Layout>

View File

@ -7,13 +7,7 @@ const metadata = {
};
---
<Layout metadata={metadata}>
<!-- HeroText Widget ******************* -->
<!--<HeroText tagline="Support" title="Hello, how can we help?" />-->
<!-- Features2 Widget ************** -->
<Layout metadata={metadata} i18n>
<Features2
title="We are here to help!"
items={[

View File

@ -9,7 +9,7 @@ const metadata = {
};
---
<Layout metadata={metadata}>
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="About us">

View File

@ -0,0 +1,239 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps from '~/components/widgets/Steps.astro';
import Content from '~/components/widgets/Content.astro';
import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro';
import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import Carousel from '~/components/widgets/Carousel.jsx';
import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk开源远程桌面与自建服务器解决方案',
ignoreTitleTemplate: true,
};
---
<Layout metadata={metadata} i18n>
<Note
title="注意"
subtitle='<span class="text-2xl font-bold">rustdesk.com</span> 是我们唯一的官方域名。请不要从其他域名下载 RustDesk。'
/>
<Hero
actions={[
{
variant: 'primary',
text: '下载',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: '自托管', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> 快速开源远程访问和支持软件 </Fragment>
<Fragment slot="subtitle">
从 TeamViewer、向日葵切换到 RustDesk享受安全可靠的远程桌面体验使用您自己的自建服务器。
</Fragment>
<Fragment slot="content">
<br /><br />
<Carousel
client:load
list={[
{ src: '/remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: '/main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/custom.png', className: 'rounded-[15px] border border-gray-700' },
]}
/>
</Fragment>
</Hero>
<Content
isReversed
tagline="深入自托管"
title="通过自托管增强您的远程访问"
items={[
{
title: '数据主权',
description: '轻松实现合规性:自托管 RustDesk 确保数据主权。',
},
{
title: '增强的安全性',
description: '加强您的安全性:本地部署使您的数据保持在您的控制之下。',
},
{
title: '性能和可靠性',
description: '保证正常运行时间:本地部署确保最佳性能和最小的停机时间。',
},
{
title: '灵活性和定制化',
description: '根据您的独特需求定制本地部署的 RustDesk。',
},
]}
image={{
src: '~/assets/images/hosting.jpg',
alt: '托管图片',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">为什么选择自托管?</h3>
您是否因为 SaaS 平台的不稳定性能、缺乏透明度和不确定的数据安全风险而感到沮丧?
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Content
isAfterContent
items={[
{
title: '您的品牌,您的方式',
description: `个性化 RustDesk 客户端,使用您的名称、图标和标志。`,
},
{
title: '轻松部署',
description: `内置网络配置和服务器设置使在本地部署 RustDesk 变得轻而易举。`,
},
{
title: '高级配置选项',
description: '超过 90 个选项可以配置以满足您的特定需求。',
},
{
title: '多平台支持',
description: 'Windows、macOS、Linux、Android。',
},
{
title: 'Web 客户端',
description: '在您的服务器上托管 Web 客户端,使用您的域名,使远程访问更加便捷。',
},
]}
image={{
src: '~/assets/images/qs.png',
alt: 'QuickSupport 图片',
class: 'bg-transparent',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">自定义客户端</h3>
使用您的品牌定制客户端,使其真正属于您。
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Steps
isReversed
title="简单的自托管安装"
items={[
{
title: '步骤 1安装 Docker',
description: '<code class="text-gray-600 dark:text-gray-500">bash <(wget -qO- https://get.docker.com)</code>',
icon: 'tabler:package',
},
{
title: '步骤 2下载 compose.yml',
description: `<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/oss.yml -O compose.yml</code>
<p class="text-center text-sm">或</p>
<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/pro.yml -O compose.yml</code>`,
icon: 'tabler:download',
},
{
title: `步骤 3启动 Compose`,
description: '<code class="text-gray-600 dark:text-gray-500">docker compose up -d</code>',
icon: 'tabler:hammer',
},
{
title: '准备就绪!',
icon: 'tabler:check',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Steps image',
}}
>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Steps>
<Stats
tagline="使用场景"
title="谁在使用自托管?"
subtitle="以下数据来自我们对超过 1,000 名自托管用户的在线调查结果。"
stats={[
{ title: 'IT 支持', amount: '37%' },
{ title: 'IT 管理', amount: '25%' },
{ title: '远程工作', amount: '29%' },
{ title: '工业及其他', amount: '9%' },
]}
/>
<BlogLatestPosts title="阅读我们的博客了解更多内容" />
<Stats
tagline="开源"
title="在充满活力的社区中公开构建"
subtitle="加入一个由社区驱动的解决方案,拥有数百万次下载,并被数千个组织使用。"
stats={[
{ title: '客户端下载量', amount: '1000万+' },
{ title: 'Docker 下载量', amount: '100万+' },
{ title: '在线设备', amount: '300万+' },
{ title: 'Stars', amount: '7.4万+' },
{ title: 'Forks', amount: '9000+' },
{ title: '社区成员', amount: '2.2万+' },
{ title: '语言', amount: '45' },
]}
/>
<Hero
actions={[
{
text: 'GitHub',
href: 'https://github.com/rustdesk/rustdesk/discussions',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Discord',
href: 'https://discord.gg/nDceKgxnkV',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Reddit',
href: 'https://www.reddit.com/r/rustdesk/',
target: '_blank',
icon: 'tabler:message-circle',
},
]}
>
<Fragment slot="title"> 加入社区 </Fragment>
<Fragment slot="subtitle"> 看看 RustDesk 社区如何评价 RustDesk。 </Fragment>
</Hero>
<CallToAction
actions={[
{
variant: 'primary',
text: '下载',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: '自托管', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title"> 亲自体验 RustDesk </Fragment>
</CallToAction>
</Layout>

View File

@ -0,0 +1,453 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Note from '~/components/widgets/Note.astro';
import Prices from '~/components/widgets/Pricing.astro';
import FAQs from '~/components/widgets/FAQs.astro';
import Steps from '~/components/widgets/Steps.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: '定价',
};
---
<script>
import Swal from 'sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';
window['gotoBuy'] = function (redirectUrl) {
Swal.fire({
title: '请确认',
html: '<p style="text-align:left">您是否要继续前往购买页面?<br><br>请注意,您购买的<b style="font-size: 2em">不是</b> <span style="text-decoration:line-through">SaaS软件即服务</span> 订阅。<br><br>相反,这是一个 <b style="font-size: 2em">自托管</b> 解决方案的许可证,您需要将其部署在您自己的服务器上(云服务器,例如 AWS EC2、Azure VM、Vultr VPS 等,或您的本地服务器)。<br><br>如果您不知道什么是自托管,请<b style="font-size: 2em">不要</b>购买。',
icon: 'question',
showCancelButton: true,
confirmButtonText: '是',
cancelButtonText: '否',
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: '请确认',
html: '请注意,我们 <span class="text-3xl font-bold">不</span> 提供 <span class="text-3xl font-bold">退款</span>。我们强烈建议在考虑购买我们的专业版计划之前,<span class="underline font-bold">测试我们的免费自托管计划</span>。您是否仍然有兴趣继续?',
showCancelButton: true,
confirmButtonText: '是',
cancelButtonText: '否',
}).then((result) => {
if (result.isConfirmed) {
window.open(redirectUrl + '&currency=cny', '_blank');
}
});
}
});
};
</script>
<Layout metadata={metadata} i18n>
<Note
title="注意"
subtitle='此定价适用于 <span class="text-xl text-blue-500">自托管</span> 解决方案,它 <span class="text-3xl font-extrabold">不是</span> <span class="line-through text-xl text-blue-500">SaaS</span> 订阅。'
/>
<!-- Pricing Widget ******************* -->
<Prices
title='我们的 <span class="text-5xl text-blue-500">自托管</span> 解决方案的定价'
subtitle="按需付费"
prices={[
{
title: '免费',
subtitle: '免费自托管计划',
price: '0 <span class="text-sm">/月</span>',
period: '开源且免费',
items: [
{
description: '在线状态',
},
{
description: '社区支持',
},
],
callToAction: {
target: '_blank',
text: '开始使用',
href: 'https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/',
},
},
{
title: '个人',
subtitle: '个人自托管 <span class="font-bold">专业版</span> 计划',
price: '9.90 <span class="text-sm">/月</span>',
period: '按年计费',
items: [
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">1 个授权用户</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">20 个管理设备</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">无限并发连接</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/2fa/">双因素认证 (2FA)</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/console/">Web 控制台</a>',
},
{
description: '通讯录',
},
{
description: '审计日志',
},
{
description: '更改 ID',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/">访问控制</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/strategy/">集中设置</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/relay/">分布式中继服务器</a>',
},
],
callToAction: {
text: '立即购买',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Individual")',
variant: 'primary',
},
},
{
title: '基础版',
subtitle: '基础自托管 <span class="font-bold">专业版</span> 计划',
price: '19.90 <span class="text-sm">/月</span>',
period: '按年计费',
items: [
{
description: '<span class="font-bold">个人计划中的所有内容</span>',
icon: 'tabler:checks',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">10 个授权用户</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">100 个管理设备</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/oidc/">OIDC (单点登录)</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/ldap/">LDAP 集成</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/#cross-group-settings">跨组访问</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://rustdesk.com/docs/en/self-host/client-configuration/#1-custom-client-generator-pro-only">自定义客户端生成器</a>',
},
],
callToAction: {
text: '立即购买',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Basic")',
},
hasRibbon: true,
ribbonTitle: '热门',
},
{
title: '定制版',
subtitle: '定制 <span class="font-bold">专业版</span> 计划',
price: '<span id="cprice">19.90</span> <span class="text-sm">/月</span>',
period: '按年计费',
items: [
{
description: '<span class="font-bold">基础计划中的所有内容</span>',
icon: 'tabler:checks',
},
{
description: '每增加一个用户 $1',
},
{
description: '每增加一个设备 $0.1',
},
],
content: `
<form class="flex flex-col space-y-3 mx-3 min-w-[200px]">
<label for="users" class="text-left font-bold">授权用户数量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users" name="users" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider" class="slider" name="usersRange" value="10" min="10" max="500" step="10">
<label for="devices" class="text-left font-bold">管理设备数量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices" name="devices" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider" class="slider" name="devicesRange" value="100" min="100" max="5000" step="100">
</form>
<br>
<script>
var users = 10;
var devices = 100;
function submit() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users + "&devices=" + devices;
gotoBuy(redirectUrl);
}
function calculatePrice() {
users = parseInt(document.getElementById("users").value);
devices = parseInt(document.getElementById("devices").value);
if (!users || users < 10) users = 10;
if (devices < 100) devices = 100;
var price = 19.9 + (users - 10) + (devices - 100) * 0.1;
document.getElementById("cprice").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
document.getElementById("users").oninput = function() {
document.getElementById("usersSlider").value = this.value;
calculatePrice();
}
document.getElementById("devices").oninput = function() {
document.getElementById("devicesSlider").value = this.value;
calculatePrice();
}
document.getElementById("usersSlider").oninput = function() {
document.getElementById("users").value = this.value;
calculatePrice();
}
document.getElementById("devicesSlider").oninput = function() {
document.getElementById("devices").value = this.value;
calculatePrice();
}
</script>
`,
callToAction: {
text: '立即购买',
onclick: 'submit()',
variant: 'primary',
},
},
]}
/>
<Prices
prices={[
{
title: '定制版 V2',
subtitle: '定制 <span class="font-bold">专业版</span> 计划,有限的并发连接',
price: '<span id="cprice2">19.90</span> <span class="text-sm">/月</span>',
period: '按年计费',
items: [
{
description:
'<span class="font-bold">基础自托管计划中的所有内容 <span class="underline font-normal">但并发连接有限,超出管理设备不会被禁用</span></span>',
icon: 'tabler:checks',
},
{
description: '每个并发连接的无限并发会话(在标签页或单独的窗口中)',
},
{
description: '每增加一个用户 $1',
},
{
description: '每增加一个设备 $0.1',
},
{
description: '每增加一个并发连接 $20',
},
],
id: 'custom2',
content: `
<form class="flex flex-col space-y-3 mx-3">
<label for="users2" class="text-left font-bold">授权用户数量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users2" name="users2" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider2" class="slider" name="usersRange2" value="10" min="10" max="500" step="10">
<label for="devices2" class="text-left font-bold">管理设备数量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices2" name="devices2" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider2" class="slider" name="devicesRange2" value="100" min="100" max="5000" step="100">
<label for="conns" class="text-left font-bold">并发连接数量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="conns" name="conns" value="1" min="1" max="50" step="1">
<input type="range" id="connsSlider" class="slider" name="connsRange" value="1" min="1" max="50" step="1">
</form>
<br>
<script>
var users2 = 10;
var devices2 = 100;
var conns = 1;
function submit2() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users2 + "&devices=" + devices2 + "&conns=" + conns;
gotoBuy(redirectUrl);
}
function calculatePrice2() {
users2 = parseInt(document.getElementById("users2").value);
devices2 = parseInt(document.getElementById("devices2").value);
conns = parseInt(document.getElementById("conns").value);
if (!users2 || users2 < 10) users2 = 10;
if (devices2 < 100) devices2 = 100;
if (conns < 1) conns = 1;
var price = 19.9 + (users2 - 10) + (devices2 - 100) * 0.1 + (conns - 1) * 20;
document.getElementById("cprice2").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
if (window.location.href.indexOf("custom2") > 0) {
setTimeout(function() { window.location = "#custom2"; }, 150);
} else {
setTimeout(function() { document.getElementById("custom2").parentElement.parentElement.parentElement.style.display = 'none'; }, 0);
}
document.getElementById("users2").oninput = function() {
document.getElementById("usersSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("devices2").oninput = function() {
document.getElementById("devicesSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("conns").oninput = function() {
document.getElementById("connsSlider").value = this.value;
calculatePrice2();
}
document.getElementById("usersSlider2").oninput = function() {
document.getElementById("users2").value = this.value;
calculatePrice2();
}
document.getElementById("devicesSlider2").oninput = function() {
document.getElementById("devices2").value = this.value;
calculatePrice2();
}
document.getElementById("connsSlider").oninput = function() {
document.getElementById("conns").value = this.value;
calculatePrice2();
}
</script>
`,
callToAction: {
text: '立即购买',
onclick: 'submit2()',
variant: 'primary',
},
},
]}
/>
<CallToAction
actions={[
{
text: 'sales@rustdesk.com',
href: 'mailto:sales@rustdesk.com',
target: '_blank',
icon: 'tabler:mail',
},
]}
>
<Fragment slot="title">联系我们获取更大的计划和咨询</Fragment>
</CallToAction>
<!-- Steps Widget ****************** -->
<Steps
title="从计划到生产的引导旅程"
tagline="简化的流程"
isReversed={true}
items={[
{
title: '安装 RustDesk Server Pro',
icon: 'tabler:number-1',
description:
'<code>bash <(wget -qO- https://get.docker.com)<br>wget rustdesk.com/pro.yml -O compose.yml<br>docker compose up -d</code>',
},
{
title: '探索计划并选择一个计划',
icon: 'tabler:number-2',
},
{
title: '输入电子邮件和支付信息',
icon: 'tabler:number-3',
},
{
title: '通过您输入的电子邮件获取许可证密钥',
icon: 'tabler:number-4',
},
{
title: '在 RustDesk Server Pro 的 Web 控制台中输入许可证密钥',
icon: 'tabler:number-5',
},
{
title: '准备就绪!',
icon: 'tabler:check',
description:
'有关详细说明,请参阅我们的 <a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/">文档</a>',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: 'Steps image',
}}
/>
<!-- FAQs Widget ******************* -->
<FAQs
title="定价常见问题"
subtitle="选择合适的计划很重要,我们在这里回答您的问题。如果您对我们的定价选项有疑问,您来对地方了。"
columns={1}
items={[
{
title: '这些计划是否包含客户支持?',
description: '当然,所有付费计划都包括专属客户支持,以帮助您解决任何疑问或问题。',
},
{
title: '是否有试用许可证?',
description: '请 <a class="underline" href="mailto:sales@rustdesk.com">联系我们</a>',
},
{
title: '如何升级我的计划?',
description:
'当然可以!您可以随时轻松<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#renewupgrade-license">升级您的计划</a>,以找到最适合您不断变化需求的方案。',
},
{
title: '您接受哪些付款方式?',
description:
'我们接受主要的信用卡和在线支付方式,以确保便捷和安全的交易过程。如果您想通过银行转账支付,请<a class="underline" href="mailto:sales@rustdesk.com">联系我们</a>;您将被收取额外的银行处理费用,我们将在收到银行的离线付款后向您发送许可证密钥;这需要 3~5 个工作日。',
},
{
title: '除了显示的费用外,还有其他隐藏费用吗?',
description: '没有,费用涵盖了每个计划下列出的所有功能。没有隐藏费用或额外收费。',
},
{
title: '您有月付计划吗?',
description:
'没有,我们只提供年度付款计划。我们不会自动续订;您将在到期日前 14 天收到提醒续订许可证的电子邮件。',
},
{
title: '您对非营利或教育机构有折扣吗?',
description: '没有,我们目前还没有。我们鼓励您使用免费计划。',
},
{
title: '您的条款是什么?',
description:
'请查看这个<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/blob/main/terms">条款</a>',
},
{
title: '临时支持案例怎么办?我们有一些无需无人值守的设备需要偶尔支持',
description:
'我们提供这个<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10083053">方案</a>',
},
]}
/>
</Layout>

View File

@ -0,0 +1,43 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: '支持',
};
---
<Layout metadata={metadata} i18n>
<Features2
title="我们随时为您提供帮助!"
items={[
{
title: '问题报告',
description: `发现了bug我们很乐意在GitHub issues中了解相关情况。`,
},
{
title: '社区支持',
description: '加入我们的Discord服务器寻求帮助和最佳实践。',
},
{
title: '专业用户票务支持',
description: '如果您在使用RustDesk Server Pro时遇到任何问题请给我们发送电子邮件。',
},
{
title: 'GitHub',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">提交问题</a>',
icon: 'tabler:brand-github',
},
{
title: 'Discord',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">加入我们的服务器</a>',
icon: 'tabler:brand-discord',
},
{
title: '电子邮件',
description: '<a href="mailto:support@rustdesk.com">support@rustdesk.com</a>',
icon: 'tabler:mail',
},
]}
/>
</Layout>

View File

@ -0,0 +1,64 @@
---
import Features2 from '~/components/widgets/Features2.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps2 from '~/components/widgets/Steps2.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: '关于我们',
};
---
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="关于我们">
<Fragment slot="title">我们为什么要开发这个项目?</Fragment>
<Fragment slot="subtitle">
<p class="text-left">
在2020年中新冠疫情期间现在的首席开发者/创始人发现自己需要购买TeamViewer的商业许可证以便在新加坡进行远程工作。然而他们对其高昂的成本感到震惊。经过一个不眠之夜后他们开始着手创建一个替代解决方案。就这样RustDesk诞生了——一个开源、免费的远程桌面软件通过无数个不眠之夜精心打造。这份奉献和决心的成果最终在2021年在GitHub上发布使全世界的人们都能使用RustDesk。
</p>
</Fragment>
</Hero>
<!-- Steps2 Widget ****************** -->
<Steps2
title="核心团队"
items={[
{
title: 'Joseph Jacks<br><small>首席执行官</small>',
description:
"Joseph Jacks于2018年创立了OSS Capital。这是世界上第一个也是唯一一个专门针对全球COSS商业开源初创公司的早期风险投资公司。此前他帮助创立并运营了第一家Kubernetes初创公司Kismatic还创立并运营了KubeConKubernetes社区会议后来在2016年CNCF云原生计算基金会成立时将其捐赠给了Linux基金会。",
icon: 'tabler:user',
},
{
title: '周华兵<br><small>首席技术官</small>',
description:
'在创立和开发RustDesk之前周华兵在新加坡金融IT领域积累了超过12年的经验。为项目和业务管理带来了丰富的实际生活经验。',
icon: 'tabler:user',
},
{
title: 'Daniel Lamb<br><small>社区助理</small>',
description:
"Daniel Lamb在IT行业拥有长达四分之一世纪的卓越职业生涯积极参与了众多开源项目承担各种角色和责任。此外他还成功地在苏格兰建立了一家IT服务公司为全球客户提供服务。Daniel的广泛专业知识涵盖支持、销售和社区参与为项目带来了大量的知识和经验。",
icon: 'tabler:user',
},
]}
/>
<!-- Features2 Widget ************** -->
<Features2
title="我们的位置"
tagline="找到我们"
columns={1}
items={[
{
title: '新加坡',
description: '义顺堪培拉道18A',
},
]}
/>
</Layout>

View File

@ -0,0 +1,239 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps from '~/components/widgets/Steps.astro';
import Content from '~/components/widgets/Content.astro';
import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro';
import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import Carousel from '~/components/widgets/Carousel.jsx';
import Note from '~/components/widgets/Note.astro';
const metadata = {
title: 'RustDesk開源遠端桌面與自託管伺服器解決方案',
ignoreTitleTemplate: true,
};
---
<Layout metadata={metadata} i18n>
<Note
title="注意"
subtitle='<span class="text-2xl text-font-bold">rustdesk.com</span> 是我們唯一的官方網域。請勿從其他網域下載 RustDesk。'
/>
<Hero
actions={[
{
variant: 'primary',
text: '下載',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: '自託管', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title">快速開源的遠端存取和支援軟體</Fragment>
<Fragment slot="subtitle">
從 TeamViewer、AnyDesk 和 Splashtop 轉換到 RustDesk體驗安全可靠的遠端桌面並使用您自己的自託管伺服器。
</Fragment>
<Fragment slot="content">
<br /><br />
<Carousel
client:load
list={[
{ src: '/remote.jpg', className: 'rounded-[15px] border border-gray-700' },
{ src: '/main.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/console.png', className: 'rounded-[15px] border border-gray-700' },
{ src: '/custom.png', className: 'rounded-[15px] border border-gray-700' },
]}
/>
</Fragment>
</Hero>
<Content
isReversed
tagline="深入自託管"
title="透過自託管伺服器強化您的遠端存取"
items={[
{
title: '資料主權',
description: '輕鬆符合法規要求:自託管 RustDesk 確保資料主權。',
},
{
title: '增強安全性',
description: '強化您的安全性:本地部署讓您的資料保持在您的控制之下。',
},
{
title: '效能和可靠性',
description: '保證運行時間:本地部署確保最佳效能和最少停機時間。',
},
{
title: '靈活性和客製化',
description: '根據您的獨特需求量身定制 RustDesk 本地部署。',
},
]}
image={{
src: '~/assets/images/hosting.jpg',
alt: '託管圖片',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">為什麼選擇自託管?</h3>
您是否因為 SaaS 平台的不穩定性能、缺乏透明度和不確定的資料安全風險而感到沮喪?
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Content
isAfterContent
items={[
{
title: '您的品牌,您的方式',
description: `使用您的名稱、圖示、標誌個人化 RustDesk 客戶端。`,
},
{
title: '輕鬆部署',
description: `內建的網路配置和伺服器設置使 RustDesk 本地部署變得輕而易舉。`,
},
{
title: '進階配置選項',
description: '超過 90 個選項可以配置以滿足您的特定需求。',
},
{
title: '多平台支援',
description: 'Windows、macOS、Linux、Android。',
},
{
title: '網頁客戶端',
description: '在您的伺服器上使用您的網域名稱託管網頁客戶端,使遠端存取更加便捷。',
},
]}
image={{
src: '~/assets/images/qs.png',
alt: '快速支援圖片',
class: 'bg-transparent',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">客製化客戶端</h3>
使用您的品牌客製化您的客戶端,讓它真正成為您的。
</Fragment>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Content>
<Steps
isReversed
title="簡單的自託管安裝"
items={[
{
title: '步驟 1安裝 Docker',
description: '<code class="text-gray-600 dark:text-gray-500">bash <(wget -qO- https://get.docker.com)</code>',
icon: 'tabler:package',
},
{
title: '步驟 2下載 compose.yml',
description: `<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/oss.yml -O compose.yml</code>
<p class="text-center text-sm">或</p>
<code class="text-gray-600 dark:text-gray-500">wget rustdesk.com/pro.yml -O compose.yml</code>`,
icon: 'tabler:download',
},
{
title: `步驟 3組合`,
description: '<code class="text-gray-600 dark:text-gray-500">docker compose up -d</code>',
icon: 'tabler:hammer',
},
{
title: '準備就緒!',
icon: 'tabler:check',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: '步驟圖片',
}}
>
<Fragment slot="bg">
<div class="absolute inset-0 bg-blue-50 dark:bg-transparent"></div>
</Fragment>
</Steps>
<Stats
tagline="使用場景"
title="誰在使用自託管?"
subtitle="以下數據來自我們對超過 1,000 名自託管用戶的線上調查。"
stats={[
{ title: 'IT 支援', amount: '37%' },
{ title: 'IT 管理', amount: '25%' },
{ title: '遠端工作', amount: '29%' },
{ title: '工業和其他', amount: '9%' },
]}
/>
<BlogLatestPosts title="在我們的部落格中了解更多內容" />
<Stats
tagline="開源"
title="在充滿活力的社群中公開建立"
subtitle="加入一個由社群驅動的解決方案,擁有數百萬次下載量,並被數千個組織使用。"
stats={[
{ title: '客戶端下載量', amount: '1000萬+' },
{ title: 'Docker 下載量', amount: '100萬+' },
{ title: '活躍裝置', amount: '300萬+' },
{ title: '星標數', amount: '7.4萬+' },
{ title: '分叉數', amount: '9千+' },
{ title: '社群成員', amount: '2.2萬+' },
{ title: '支援語言', amount: '45' },
]}
/>
<Hero
actions={[
{
text: 'GitHub',
href: 'https://github.com/rustdesk/rustdesk/discussions',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Discord',
href: 'https://discord.gg/nDceKgxnkV',
target: '_blank',
icon: 'tabler:message-circle',
},
{
text: 'Reddit',
href: 'https://www.reddit.com/r/rustdesk/',
target: '_blank',
icon: 'tabler:message-circle',
},
]}
>
<Fragment slot="title">加入社群</Fragment>
<Fragment slot="subtitle">了解我們的社群對他們的 RustDesk 體驗有何評價。</Fragment>
</Hero>
<CallToAction
actions={[
{
variant: 'primary',
text: '下載',
href: 'https://rustdesk.com/download',
target: '_blank',
icon: 'tabler:download',
},
{ text: '自託管', href: 'https://rustdesk.com/docs/en/self-host/', target: '_blank', icon: 'tabler:book' },
]}
>
<Fragment slot="title">親身體驗 RustDesk</Fragment>
</CallToAction>
</Layout>

View File

@ -0,0 +1,449 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Note from '~/components/widgets/Note.astro';
import Prices from '~/components/widgets/Pricing.astro';
import FAQs from '~/components/widgets/FAQs.astro';
import Steps from '~/components/widgets/Steps.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: '定價',
};
---
<script>
import Swal from 'sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';
window['gotoBuy'] = function (redirectUrl) {
Swal.fire({
title: '請確認',
html: `<p style="text-align:left">您確定要前往購買頁面嗎?<br><br>請注意,您購買的<b style="font-size: 2em">不是</b><span style="text-decoration:line-through">SaaS軟體即服務</span>訂閱。<br><br>相反,這是一個<b style="font-size: 2em">自託管</b>解決方案的授權需要您在自己的伺服器上部署雲端伺服器如AWS EC2、Azure VM、Vultr VPS等或您的本地伺服器。<br><br>如果您不了解什麼是自託管,請<b style="font-size: 2em">不要</b>購買。`,
icon: 'question',
showCancelButton: true,
confirmButtonText: '是',
cancelButtonText: '否',
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: '請確認',
html: `請注意,我們<span class="text-3xl font-bold">不提供</span><span class="text-3xl font-bold">退款</span>。我們強烈建議您在考慮購買我們的Pro計劃之前<span class="underline font-bold">先試用我們的免費自託管計劃</span>。您仍然想要繼續嗎?`,
showCancelButton: true,
confirmButtonText: '是',
cancelButtonText: '否',
}).then((result) => {
if (result.isConfirmed) {
window.open(redirectUrl, '_blank');
}
});
}
});
};
</script>
<Layout metadata={metadata} i18n>
<Note
title="注意"
subtitle='此定價適用於<span class="text-xl text-blue-500">自託管</span>解決方案,<span class="text-3xl font-extrabold">不是</span><span class="line-through text-xl text-blue-500">SaaS</span>訂閱。'
/>
<Prices
title='我們的<span class="text-5xl text-blue-500">自託管</span>解決方案價格'
subtitle="只為您所需付費"
prices={[
{
title: '免費',
subtitle: '免費自託管計劃',
price: '0 <span class="text-sm">/月</span>',
period: '開源且免費',
items: [
{
description: '在線狀態',
},
{
description: '社區支持',
},
],
callToAction: {
target: '_blank',
text: '開始使用',
href: 'https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/',
},
},
{
title: '個人',
subtitle: '個人自託管<span class="font-bold">專業版</span>計劃',
price: '9.90 <span class="text-sm">/月</span>',
period: '年付',
items: [
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">1位授權用戶</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">20台管理設備</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">無限並發連接</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/2fa/">雙因素認證</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/console/">網頁控制台</a>',
},
{
description: '地址簿',
},
{
description: '審計日誌',
},
{
description: '更改ID',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/">訪問控制</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/strategy/">集中設置</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/relay/">分佈式中繼伺服器</a>',
},
],
callToAction: {
text: '立即購買',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Individual")',
variant: 'primary',
},
},
{
title: '基本',
subtitle: '基本自託管<span class="font-bold">專業版</span>計劃',
price: '19.90 <span class="text-sm">/月</span>',
period: '年付',
items: [
{
description: '<span class="font-bold">個人計劃的所有功能</span>',
icon: 'tabler:checks',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">10位授權用戶</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--licensed-users--concurrent-connections-in-pro">100台管理設備</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/oidc/">OIDC單點登錄</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/ldap/">LDAP整合</a>',
},
{
description:
'<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/#cross-group-settings">跨組訪問</a>',
},
{
description:
'<a class="underline text-blue-500 font-bold" target="_blank" href="https://rustdesk.com/docs/en/self-host/client-configuration/#1-custom-client-generator-pro-only">自定義客戶端生成器</a>',
},
],
callToAction: {
text: '立即購買',
onclick: 'gotoBuy("https://rustdesk.com/api/lic/stripe/checkout?type=Basic")',
},
hasRibbon: true,
ribbonTitle: '熱門',
},
{
title: '自定義',
subtitle: '自定義<span class="font-bold">專業版</span>計劃',
price: '<span id="cprice">19.90</span> <span class="text-sm">/月</span>',
period: '年付',
items: [
{
description: '<span class="font-bold">基本計劃的所有功能</span>',
icon: 'tabler:checks',
},
{
description: '每增加一位用戶1美元',
},
{
description: '每增加一台設備0.1美元',
},
],
content: `
<form class="flex flex-col space-y-3 mx-3 min-w-[200px]">
<label for="users" class="text-left font-bold">授權用戶數量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users" name="users" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider" class="slider" name="usersRange" value="10" min="10" max="500" step="10">
<label for="devices" class="text-left font-bold">管理設備數量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices" name="devices" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider" class="slider" name="devicesRange" value="100" min="100" max="5000" step="100">
</form>
<br>
<script>
var users = 10;
var devices = 100;
function submit() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users + "&devices=" + devices;
gotoBuy(redirectUrl);
}
function calculatePrice() {
users = parseInt(document.getElementById("users").value);
devices = parseInt(document.getElementById("devices").value);
if (!users || users < 10) users = 10;
if (devices < 100) devices = 100;
var price = 19.9 + (users - 10) + (devices - 100) * 0.1;
document.getElementById("cprice").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
document.getElementById("users").oninput = function() {
document.getElementById("usersSlider").value = this.value;
calculatePrice();
}
document.getElementById("devices").oninput = function() {
document.getElementById("devicesSlider").value = this.value;
calculatePrice();
}
document.getElementById("usersSlider").oninput = function() {
document.getElementById("users").value = this.value;
calculatePrice();
}
document.getElementById("devicesSlider").oninput = function() {
document.getElementById("devices").value = this.value;
calculatePrice();
}
</script>
`,
callToAction: {
text: '立即購買',
onclick: 'submit()',
variant: 'primary',
},
},
]}
/>
<Prices
prices={[
{
title: '自定義 V2',
subtitle: '自定義<span class="font-bold">專業版</span>計劃,限制並發連接',
price: '<span id="cprice2">19.90</span> <span class="text-sm">/月</span>',
period: '年付',
items: [
{
description: `<span class="font-bold">基本自託管計劃的所有功能<span class="underline font-normal">但限制並發連接,超出的管理設備不會被禁用</span></span>`,
icon: 'tabler:checks',
},
{
description: '每個並發連接可無限制的並發會話(在標籤頁或單獨窗口中)',
},
{
description: '每增加一位用戶1美元',
},
{
description: '每增加一台設備0.1美元',
},
{
description: '每增加一個並發連接20美元',
},
],
id: 'custom2',
content: `
<form class="flex flex-col space-y-3 mx-3">
<label for="users2" class="text-left font-bold">授權用戶數量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="users2" name="users2" value="10" min="10" max="500" step="10">
<input type="range" id="usersSlider2" class="slider" name="usersRange2" value="10" min="10" max="500" step="10">
<label for="devices2" class="text-left font-bold">管理設備數量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="devices2" name="devices2" value="100" min="100" max="5000" step="100">
<input type="range" id="devicesSlider2" class="slider" name="devicesRange2" value="100" min="100" max="5000" step="100">
<label for="conns" class="text-left font-bold">並發連接數量:</label>
<input class="bg-white text-black rounded-md border border-gray-300 py-1 px-2 w-24 h-10" type="number" id="conns" name="conns" value="1" min="1" max="50" step="1">
<input type="range" id="connsSlider" class="slider" name="connsRange" value="1" min="1" max="50" step="1">
</form>
<br>
<script>
var users2 = 10;
var devices2 = 100;
var conns = 1;
function submit2() {
redirectUrl = "https://rustdesk.com/api/lic/stripe/checkout?type=Customized&users=" + users2 + "&devices=" + devices2 + "&conns=" + conns;
gotoBuy(redirectUrl);
}
function calculatePrice2() {
users2 = parseInt(document.getElementById("users2").value);
devices2 = parseInt(document.getElementById("devices2").value);
conns = parseInt(document.getElementById("conns").value);
if (!users2 || users2 < 10) users2 = 10;
if (devices2 < 100) devices2 = 100;
if (conns < 1) conns = 1;
var price = 19.9 + (users2 - 10) + (devices2 - 100) * 0.1 + (conns - 1) * 20;
document.getElementById("cprice2").innerText = price.toFixed(price >= 100 ? 1 : 2);
}
if (window.location.href.indexOf("custom2") > 0) {
setTimeout(function() { window.location = "#custom2"; }, 150);
} else {
setTimeout(function() { document.getElementById("custom2").parentElement.parentElement.parentElement.style.display = 'none'; }, 0);
}
document.getElementById("users2").oninput = function() {
document.getElementById("usersSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("devices2").oninput = function() {
document.getElementById("devicesSlider2").value = this.value;
calculatePrice2();
}
document.getElementById("conns").oninput = function() {
document.getElementById("connsSlider").value = this.value;
calculatePrice2();
}
document.getElementById("usersSlider2").oninput = function() {
document.getElementById("users2").value = this.value;
calculatePrice2();
}
document.getElementById("devicesSlider2").oninput = function() {
document.getElementById("devices2").value = this.value;
calculatePrice2();
}
document.getElementById("connsSlider").oninput = function() {
document.getElementById("conns").value = this.value;
calculatePrice2();
}
</script>
`,
callToAction: {
text: '立即購買',
onclick: 'submit2()',
variant: 'primary',
},
},
]}
/>
<CallToAction
actions={[
{
text: 'sales@rustdesk.com',
href: 'mailto:sales@rustdesk.com',
target: '_blank',
icon: 'tabler:mail',
},
]}
>
<Fragment slot="title">聯繫我們了解更大規模的計劃和詢問</Fragment>
</CallToAction>
<Steps
title="從計劃到生產的引導之旅"
tagline="簡化流程"
isReversed={true}
items={[
{
title: '安裝 RustDesk Server Pro',
icon: 'tabler:number-1',
description:
'<code>bash <(wget -qO- https://get.docker.com)<br>wget rustdesk.com/pro.yml -O compose.yml<br>docker compose up -d</code>',
},
{
title: '探索計劃並選擇一個計劃',
icon: 'tabler:number-2',
},
{
title: '輸入電子郵件和付款詳情',
icon: 'tabler:number-3',
},
{
title: '通過您輸入的電子郵件獲取許可證密鑰',
icon: 'tabler:number-4',
},
{
title: '在 RustDesk Server Pro 的網頁控制台中輸入許可證密鑰',
icon: 'tabler:number-5',
},
{
title: '準備就緒!',
icon: 'tabler:check',
description:
'詳細說明請參考我們的<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/">文檔</a>。',
},
]}
image={{
src: '~/assets/images/steps.jpg',
alt: '步驟圖片',
}}
/>
<FAQs
title="價格常見問題"
subtitle="選擇正確的計劃很重要,我們在這裡回答您的問題。如果您對我們的價格選項有疑問,您來對地方了。"
columns={1}
items={[
{
title: '這些計劃是否包含客戶支持?',
description:
'當然,所有付費計劃都包括訪問我們專門的客戶支持,以協助您解決任何疑問或問題。',
},
{
title: '是否有試用許可證?',
description: '請<a class="underline" href="mailto:sales@rustdesk.com">聯繫我們</a>',
},
{
title: '如何升級我的計劃?',
description:
'當然可以!您可以隨時輕鬆地<a class="underline" target="_blank" href="https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#renewupgrade-license">升級您的計劃</a>,以找到最適合您不斷變化需求的計劃。',
},
{
title: '您接受哪些付款方式?',
description:
'我們接受主要信用卡和在線支付方式,以確保便捷和安全的交易過程。如果您想通過銀行轉賬付款,請<a class="underline" href="mailto:sales@rustdesk.com">聯繫我們</a>您將被收取額外的銀行處理費我們會在收到銀行的離線付款後發送許可證密鑰給您這需要3~5個工作日。',
},
{
title: '除了顯示的費用外,還有其他隱藏費用嗎?',
description:
'沒有,費用涵蓋了每個計劃下列出的所有功能。沒有隱藏費用或額外收費。',
},
{
title: '您有月付選項嗎?',
description:
'沒有我們只提供年付計劃。我們不會自動續訂您將在許可證到期前14天收到一封電子郵件提醒您續訂許可證。',
},
{
title: '您對非營利組織或教育機構有折扣嗎?',
description: '目前還沒有。我們鼓勵您使用免費計劃。',
},
{
title: '您的條款是什麼?',
description:
'請查看這個<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/blob/main/terms">條款</a>',
},
{
title:
'對於臨時支持案例怎麼辦?我們有一些設備需要偶爾支持,但不需要無人值守訪問。',
description:
'我們提供這個<a class="underline" target="_blank" href="https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10083053">解決方案</a>',
},
]}
/>
</Layout>

View File

@ -0,0 +1,43 @@
---
import Layout from '~/layouts/PageLayout.astro';
import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: '支援',
};
---
<Layout metadata={metadata} i18n>
<Features2
title="我們隨時為您提供協助!"
items={[
{
title: '問題回報',
description: `發現錯誤?我們很樂意在 GitHub 問題區聽取您的回饋。`,
},
{
title: '社群支援',
description: '加入我們的 Discord 伺服器,尋求協助和最佳實踐。',
},
{
title: '專業版用戶支援票',
description: '如果您在使用 RustDesk Server Pro 時遇到任何問題,請發送電子郵件給我們。',
},
{
title: 'GitHub',
description: '<a target="_blank" href="https://github.com/rustdesk/rustdesk/issues">開啟問題</a>',
icon: 'tabler:brand-github',
},
{
title: 'Discord',
description: '<a target="_blank" href="https://discord.com/invite/nDceKgxnkV">加入我們的伺服器</a>',
icon: 'tabler:brand-discord',
},
{
title: '電子郵件',
description: '<a href="mailto:support@rustdesk.com">support@rustdesk.com</a>',
icon: 'tabler:mail',
},
]}
/>
</Layout>

View File

@ -0,0 +1,64 @@
---
import Features2 from '~/components/widgets/Features2.astro';
import Hero from '~/components/widgets/Hero.astro';
import Steps2 from '~/components/widgets/Steps2.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: '關於我們',
};
---
<Layout metadata={metadata} i18n>
<!-- Hero Widget ******************* -->
<Hero tagline="關於我們">
<Fragment slot="title">為什麼我們要建立這個?</Fragment>
<Fragment slot="subtitle">
<p class="text-left">
在2020年中新冠疫情期間現在的首席開發者/創始人發現自己需要購買TeamViewer的商業許可證以便在新加坡進行遠程工作。然而他們對其高昂的成本感到震驚。經過一個不眠之夜後他們開始著手創建一個替代解決方案。因此RustDesk誕生了——這是一個開源、免費使用的遠程桌面軟件是通過無數個不眠之夜精心打造的。這份奉獻和決心的成果最終在2021年在GitHub上發布使世界各地的人們都能使用RustDesk。
</p>
</Fragment>
</Hero>
<!-- Steps2 Widget ****************** -->
<Steps2
title="核心團隊"
items={[
{
title: 'Joseph Jacks<br><small>執行長</small>',
description:
"Joseph Jacks於2018年創立了OSS Capital。這是世界上第一個也是唯一一個專門針對全球COSS商業開源初創公司的早期風險投資公司。此前他幫助創立並運營了第一家Kubernetes初創公司Kismatic還創立並運營了KubeConKubernetes社區會議後來在2016年將其捐贈給Linux基金會當時CNCF雲原生計算基金會正在形成。",
icon: 'tabler:user',
},
{
title: 'Huabing Zhou<br><small>技術總監</small>',
description:
'在創立和開發RustDesk之前Huabing Zhou在新加坡金融IT領域積累了超過12年的經驗。為項目和業務管理帶來了豐富的實際生活經驗。',
icon: 'tabler:user',
},
{
title: 'Daniel Lamb<br><small>社群助理</small>',
description:
"Daniel Lamb在IT行業擁有長達四分之一世紀的卓越職業生涯積極參與了眾多開源項目承擔各種角色和責任。此外他還成功地在蘇格蘭建立了一家IT服務公司為全球客戶提供服務。Daniel豐富的專業知識涵蓋支援、銷售和社群參與為項目帶來了大量的知識和經驗。",
icon: 'tabler:user',
},
]}
/>
<!-- Features2 Widget ************** -->
<Features2
title="我們的位置"
tagline="找到我們"
columns={1}
items={[
{
title: '新加坡',
description: '義順堪培拉道18A',
},
]}
/>
</Layout>

View File

@ -87,7 +87,7 @@ export const getPermalink = (slug = '', type = 'page'): string => {
};
/** */
export const getHomePermalink = (): string => getPermalink('/');
export const getHomePermalink = (path?: string): string => getPermalink(path || '/');
/** */
export const getBlogPermalink = (): string => getPermalink(BLOG_BASE);