Path: blob/master/src/packages/next/pages/pricing/onprem.tsx
1492 views
/*1* This file is part of CoCalc: Copyright © 2022 Sagemath, Inc.2* License: MS-RSL – see LICENSE.md for details3*/45import { Alert, Button, Divider, Layout, List } from "antd";6import { ReactNode, type JSX } from "react";78import { Icon, IconName } from "@cocalc/frontend/components/icon";9import getSupportUrl from "@cocalc/frontend/support/url";10import { money } from "@cocalc/util/licenses/purchase/utils";11import { COLORS } from "@cocalc/util/theme";1213import Footer from "components/landing/footer";14import Head from "components/landing/head";15import Header from "components/landing/header";16import PricingItem, { Line } from "components/landing/pricing-item";17import { Paragraph, Text, Title } from "components/misc";18import A from "components/misc/A";1920import { MAX_WIDTH } from "lib/config";21import { Customize } from "lib/customize";22import withCustomize from "lib/with-customize";2324const PUBLISH_PRICE = false;2526const CM = <Icon name="check" />;2728const INF = "∞";29interface Item {30title: string;31icon: IconName;32individuals: string;33price: number | null;34academic?: ReactNode;35extra?: number;36prod?: string;37}3839const data: Item[] = [40{41title: "Small Business",42icon: "experiment",43individuals: "≤ 25",44price: 10000,45},46{47title: "Large Organization",48icon: "home",49individuals: "> 25",50price: null,51prod: "≥1",52},53{54title: "University",55icon: "graduation-cap",56individuals: "≤ 150",57price: 6000,58academic: CM,59},60];6162export default function OnPrem({ customize }) {63const { siteName } = customize;64return (65<Customize value={customize}>66<Head title={`${siteName} – On-Premises Offerings`} />67<Layout>68<Header page="pricing" subPage="onprem" />69<Layout.Content70style={{71backgroundColor: "white",72}}73>74<Body />75<Footer />76</Layout.Content>77</Layout>78</Customize>79);80}8182function Body() {83const contactURL = getSupportUrl({84subject: "Purchase CoCalc OnPrem",85type: "chat",86url: "",87});8889function renderContactButton(90text: string | ReactNode = "Contact Us",91): JSX.Element {92return (93<Button size="large" href={contactURL} type="primary" block>94{text}95</Button>96);97}9899function renderContact(): JSX.Element {100return (101<Alert102type="info"103banner={true}104showIcon={false}105style={{106textAlign: "center",107padding: "30px",108marginTop: "30px",109marginBottom: "30px",110borderRadius: "10px",111}}112message={113<>114<Paragraph strong style={{ fontSize: "150%" }}>115For inquiries about licensing, further details and purchasing116options, please{" "}117<A href={contactURL} external>118contact us119</A>120.121</Paragraph>122<Paragraph>123CoCalc OnPrem's pricing is tailored to your specific needs, taking124into account your use case, anticipated number of active monthly125users, desired level of support, and any customization or training126requirements. We offer a <Text strong>free trial period</Text> to127ensure seamless integration within your environment. Importantly,128pricing is <Text strong>not</Text> based on the number of CPU129cores, memory, or virtual machines in your cluster.130</Paragraph>131<Paragraph>132<Text strong>We offer flexible licensing options</Text>, including133discounts for academic institutions, multi-year agreements, and134first-year customers. Let us help you find the best solution for135your organization.136</Paragraph>137{renderContactButton()}138</>139}140/>141);142}143144function renderPriceInfo(): JSX.Element {145if (PUBLISH_PRICE) {146return (147<>148<List149grid={{ gutter: 30, column: 3, xs: 1, sm: 1 }}150dataSource={data}151renderItem={({152price,153individuals,154icon,155title,156academic,157prod,158}) => {159return (160<PricingItem title={title} icon={icon}>161<Line amount={individuals} desc={"Monthly Active Users¹"} />162<Line amount={prod ?? 1} desc="Production Deployment" />163<Line amount={1} desc="Test Deployment" />164<Line amount={INF} desc="Number of Projects" />165<Line amount={INF} desc="Project Collaborators" />166<Line amount={INF} desc="Cluster Resources²" />167<Line amount={CM} desc="Help for Initial Setup" />168<Line amount={CM} desc="Premium Support" />169<Divider />170<Line171amount={CM}172desc="Collaborative Jupyter, LaTeX, SageMath, R, ..."173/>174<Line amount={CM} desc="Custom Software Environments" />175<Line amount={CM} desc="Regular Software Upgrades" />176<Line amount={CM} desc="Flexible LLM integration³" />177<Line amount={CM} desc="GPU Support" />178<Line amount={CM} desc="SAML SSO" />179180<br />181<div182style={{183textAlign: "center",184}}185>186{typeof price === "number"187? renderContactButton(188<span189style={{190fontWeight: "bold",191fontSize: "18pt",192color: COLORS.GRAY_DD,193padding: "10px",194}}195>196{money(price, true)}197<span style={{ color: COLORS.GRAY }}>/year</span>198</span>,199)200: renderContactButton()}201</div>202{academic ? (203<>204<Divider />205<Line206amount={academic}207desc={<Text strong>Academic discount</Text>}208/>209</>210) : undefined}211</PricingItem>212);213}}214/>215{renderContact()}216<Paragraph217style={{218marginTop: "100px",219borderTop: `1px solid ${COLORS.GRAY_L}`,220color: COLORS.GRAY,221}}222>223¹ "Monthly Active Users" is defined as the maximum count of distinct224"Active Users" during any calendar month, who actually use CoCalc.225<br />² There are no limitations on the number of CPU cores, Memory226or Virtual Machines your instance of CoCalc OnPrem can make use of227in your cluster.228<br />³ Configure CoCalc OnPrem to use your own internal LLM server229for increased privacy.230</Paragraph>231</>232);233} else {234return renderContact();235}236}237238function cloud(): JSX.Element {239return (240<>241{/* <Title level={2}>242CoCalc OnPrem <Icon name="network-wired" style={{ float: "right" }} />243</Title> */}244245<Paragraph>246<Text strong>247<A href="https://onprem.cocalc.com/">CoCalc OnPrem</A>{" "}248</Text>{" "}249is a <Text strong>self-hosted version of CoCalc</Text> designed to run250on your own infrastructure. Built on the same robust architecture that251powers the main CoCalc platform, OnPrem delivers exceptional252performance, scalability, and reliability. This enterprise-grade253solution offers:254</Paragraph>255256<ul>257<li>258The full suite of collaborative tools available on cocalc.com:{" "}259<Text strong>260Jupyter Notebooks for Python, SageMath, R, Octave261</Text>262, editing <Text strong>LaTeX, Code- and Markdown/Text-files</Text>,263a <Text strong>collaborative Linux Terminal</Text>, and a{" "}264<Text strong>virtual X11 desktop</Text>.265</li>266<li>267Complete control over your data and computing environment, which268results in enhanced <Text strong>privacy and security</Text> for269sensitive research and educational content;270</li>271<li>272Integration with your existing IT infrastructure – for example SAML273based SSO authentication or using your own internal LLM server for274increased privacy;275</li>276<li>277Beyond the standard set of included software, it's possible to278define <Text strong>customizable software environments</Text> and279adjust specific features to meet specific institutional needs;280</li>281<li>282We'll guide you through the setup process and give you enough283information to be able to manage the service, react to issues, plan284resource requirements, and know how to scale the various services to285your expected usage.286</li>287</ul>288289<Paragraph>290Experience the cutting-edge capabilities of CoCalc within your own291secure ecosystem, providing your team or institution with a tailored,292high-performance platform for scientific computing, mathematics, and293data science collaboration.294</Paragraph>295296<Title level={3}>Prerequisites</Title>297<Paragraph>298<ul>299<li>300A{" "}301<Text strong>302<A href={"https://kubernetes.io"}>Kubernetes Cluster</A>303</Text>{" "}304and some experience managing it. OnPrem should run on your own305bare-metal cluster or a managed kubernetes cluster like{" "}306<A href={"https://onprem.cocalc.com/deploy/eks.html"}>307Amazon's EKS308</A>309,{" "}310<A href={"https://onprem.cocalc.com/deploy/gke.html"}>311Google's GKE312</A>313, or{" "}314<A href={"https://onprem.cocalc.com/deploy/aks.html"}>315Azure's AKS316</A>317. Kubernetes is required to orchestrate and manage the318containerized CoCalc OnPrem services.319</li>320<li>321Some experience working with{" "}322<A href={"https://helm.sh/"}>323<b>HELM</b> charts324</A>325. Helm is used to simplify the deployment and management of CoCalc326OnPrem on Kubernetes.327</li>328<li>329A (sub)<Text strong>domain</Text> and TLS certificate (e.g.{" "}330<A href={"https://letsencrypt.org/"}>letsencrypt</A>). A domain331and TLS certificate are needed to securely access your CoCalc332OnPrem instance over HTTPS. You can also run OnPrem inside a VPN,333isolated from the public internet.334</li>335<li>336A common{" "}337<Text strong>338<A href={"https://www.postgresql.org/"}>PostgreSQL</A>339</Text>{" "}340database. PostgreSQL is used for persistent data storage, and341Socket.io for internal communication between CoCalc services.342</li>343<li>344A shared network file-system like <Text strong>NFS</Text>. It must345support the Kubernetes{" "}346<A347href={348"https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes"349}350>351ReadWriteMany352</A>{" "}353file-system access mode. A shared network file system is required354for persistent storage of project data and collaborative files.355</li>356</ul>357</Paragraph>358359<Paragraph>360For more details, see the{" "}361<Text strong>362<A href="https://onprem.cocalc.com/">CoCalc OnPrem documentation</A>363</Text>364.365</Paragraph>366<Title level={3}>Purchasing CoCalc OnPrem</Title>367{renderPriceInfo()}368</>369);370}371372return (373<div374style={{375maxWidth: MAX_WIDTH,376margin: "15px auto",377padding: "15px",378backgroundColor: "white",379}}380>381<Title level={1} style={{ textAlign: "center" }}>382<Icon name="server" style={{ marginRight: "30px" }} /> CoCalc383On-Premises384</Title>385386<div>{cloud()}</div>387</div>388);389}390391export async function getServerSideProps(context) {392return await withCustomize({ context });393}394395396