Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add lint rules and instance resize guide #8

Merged
merged 3 commits into from
Nov 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Code Checks

on:
push:
branches: ['main']
pull_request:
branches: ['main']

jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'

- name: Install dependencies
run: corepack pnpm i

- name: Lint
run: corepack pnpm lint
2 changes: 1 addition & 1 deletion .github/workflows/upload_artifact.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-depth: 0
- uses: pnpm/action-setup@v4
with:
version: 9
Expand Down
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
v20.17.0
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
pnpm-lock.yaml
asserts
.vitepress/dist
5 changes: 5 additions & 0 deletions .prettierrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
singleQuote: true
semi: false
printWidth: 100
trailingComma: none
plugins: ['prettier-plugin-lint-md']
63 changes: 33 additions & 30 deletions .vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -1,32 +1,29 @@
import { defineConfig } from 'vitepress'

export default defineConfig({
lang: "zh-CN",
title: "PKU Clab 文档",
description: "开箱即用的免费云计算服务,为教学与科研服务。",
lang: 'zh-CN',
title: 'PKU Clab 文档',
description: '开箱即用的免费云计算服务,为教学与科研服务。',
head: [['link', { rel: 'icon', href: '/favicon.ico' }]],
lastUpdated: true,
base: '/',
cleanUrls: true,
srcExclude: [ 'README.md' ],
srcExclude: ['README.md'],
themeConfig: {
i18nRouting: false,
logo: "/logo.svg",
logo: '/logo.svg',
logoLink: '/docs/getting-started/introduction',
nav: [
{ text: 'PKU Clab', link: 'https://clab.pku.edu.cn', target: '_self'},
{ text: 'PKU Clab', link: 'https://clab.pku.edu.cn', target: '_self' },
{ text: '文档', link: '/docs/getting-started/introduction', activeMatch: '/docs' },
{ text: '课程专区', link: '/courses', activeMatch: '/courses' },
{ text: '课程专区', link: '/courses', activeMatch: '/courses' }
],
sidebar: {
'/courses': [
{
text: '课程专区',
items: [
{ text: 'ICS', items: [
{ text: "快速开始", link: '/courses/ics/getting-started'}
]
}
{ text: 'ICS', items: [{ text: '快速开始', link: '/courses/ics/getting-started' }] }
]
}
],
Expand All @@ -35,28 +32,34 @@ export default defineConfig({
text: '文档',
items: [
{ text: '快速开始', link: '/docs/getting-started/introduction' },
{ text: '网络', items: [
{ text: "自组网", link: '/docs/networking/private-network'},
{ text: "Router和浮动IP", link: '/docs/networking/router-and-floating-ip'},
{ text: "安全组", link: '/docs/networking/security-group'}
]
{
text: '计算',
items: [{ text: '实例操作', link: '/docs/compute/instance-operations' }]
},
{
text: '网络',
items: [
{ text: '自组网', link: '/docs/networking/private-network' },
{ text: 'Router和浮动IP', link: '/docs/networking/router-and-floating-ip' },
{ text: '安全组', link: '/docs/networking/security-group' }
]
},
{ text: '储存', items: [
{ text: "Volume类型", link: '/docs/storage/volume-type'},
{ text: "Volume快照和备份", link: '/docs/storage/volume-snapshots-and-backups'},
{ text: "高级功能", link: '/docs/storage/advanced'}
]
{
text: '储存',
items: [
{ text: 'Volume类型', link: '/docs/storage/volume-type' },
{ text: 'Volume快照和备份', link: '/docs/storage/volume-snapshots-and-backups' },
{ text: '高级功能', link: '/docs/storage/advanced' }
]
},
{ text: '镜像站使用指南', link: '/docs/getting-started/lcpu-mirror' },
{ text: 'FAQ', link: '/docs/faq' },
{ text: '贡献者与致谢', link: '/docs/contributors' }
]
}
],
]
},
socialLinks: [
{ icon: 'github', link: 'https://github.com/lcpu-club' }
],
socialLinks: [{ icon: 'github', link: 'https://github.com/lcpu-club' }],
footer: {
message: '由北京大学学生 Linux 俱乐部开发并维护',
copyright: '© 2024 LCPU Club, licensed under CC BY-SA 4.0'
Expand All @@ -77,11 +80,11 @@ export default defineConfig({
pattern: 'https://github.com/lcpu-club/clab_docs/edit/main/:path',
text: '在GitHub上更新本页'
},
darkModeSwitchLabel: "颜色选择",
lightModeSwitchTitle: "切换至亮色模式",
darkModeSwitchTitle: "切换至暗色模式",
sidebarMenuLabel: "目录",
returnToTopLabel: "回到顶部",
darkModeSwitchLabel: '颜色选择',
lightModeSwitchTitle: '切换至亮色模式',
darkModeSwitchTitle: '切换至暗色模式',
sidebarMenuLabel: '目录',
returnToTopLabel: '回到顶部',
externalLinkIcon: true,
search: {
provider: 'local',
Expand Down
2 changes: 1 addition & 1 deletion .vitepress/theme/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@

.outline-link.active {
color: var(--vp-c-brand-1) !important;
}
}
2 changes: 1 addition & 1 deletion .vitepress/theme/index.mts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import DefaultTheme from 'vitepress/theme-without-fonts'
import './custom.css'

export default DefaultTheme
export default DefaultTheme
5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# PKU Clab Documentation

This is the documentation for PKU Clab.
This is the documentation for PKU Clab.

## Building site

Expand All @@ -12,9 +12,8 @@ This repo is shipped with a [GitHub Action](https://github.com/lcpu-club/clab_do

## Contributing

To write documentation, you can PR to corresponding `.md` files. You can follow [VitePress Writing Guide](https://vitepress.dev/guide/markdown) for syntaxing.
To write documentation, you can PR to corresponding `.md` files. You can follow [VitePress Writing Guide](https://vitepress.dev/guide/markdown) for syntaxing.

To update website structure, you need to modify `main/.vitepress/config.mts` and corresponding sections.

Run `pnpm run docs:dev` to start developing.

Binary file added assets/compute/resize-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/compute/resize-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/compute/resize-notify.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 7 additions & 6 deletions courses/ics/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ ICS 课程使用 CLab 作为实验环境。理论上所有 Lab 都需要在使
# 虚拟机配置

建议配置:
- 类型:P3或l2实例(2C2G),配置 20-40G SSD 储存

- 类型:P3 或 l2 实例(2C2G),配置 20-40G SSD 储存
- 启动源 :镜像,选择 Ubuntu 分类中的“Ubuntu for ICS 2024”
- 网络:共享网络中,同时勾选pku-new与ics2024a。2024年秋学期的网络已于9月11日为所有选课同学开通,并将于9月12-18日每天晚上12点,为选课但未开通的同学尝试开通。请务必登陆 CLab 平台,同意用户公约并创建账号。
- 如已经创建账号,但创建完成的第二天仍然看不到ics2024a网络,请发邮件至`[email protected]`
- 网络:共享网络中,同时勾选 pku-new 与 ics2024a。2024 年秋学期的网络已于 9 月 11 日为所有选课同学开通,并将于 9 月 12-18 日每天晚上 12 点,为选课但未开通的同学尝试开通。请务必登陆 CLab 平台,同意用户公约并创建账号。
- 如已经创建账号,但创建完成的第二天仍然看不到 ics2024a 网络,请发邮件至`[email protected]`

注意,创建网络时应该先先后勾选PKU网络和ics2024a,顺序不能颠倒。第一个勾选的网络会作为主网络,如果ics2024a作为主网络,将不能从校园网连接。
注意,创建网络时应该先先后勾选 PKU 网络和 ics2024a,顺序不能颠倒。第一个勾选的网络会作为主网络,如果 ics2024a 作为主网络,将不能从校园网连接。

# 安全须知

Expand Down Expand Up @@ -48,14 +49,14 @@ lcpu disconnect

已预装 lab 所需环境。由于环境可能会热更新,大家可以经常运行如下命令,保持环境最新:

```
```plain
sudo apt update &&sudo apt upgrade
```

这是一个“Baseline”环境,从此出发,大家可以自由配置,也可以不使用 ICS 镜像,从任意通用镜像新建云主机,自行配置环境,不过需要注意连接到课程网络`ics2024a`。

该机器不会删除,配置一次即可后续课程一直使用。不过课程结束后若需要长期使用,请运行以下命令,禁用 ICS 课程的工具命令。

```
```plain
sudo systemctl disable lcpud && sudo reboot
```
5 changes: 3 additions & 2 deletions courses/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ next: false
prev: false
---

CLab作为服务北大师生的云计算平台,目前已经开通如下课程的专属支持,可在以下页面查看课程专属文档。
- [计算机系统导论](/courses/ics/getting-started)
CLab 作为服务北大师生的云计算平台,目前已经开通如下课程的专属支持,可在以下页面查看课程专属文档。

- [计算机系统导论](/courses/ics/getting-started)
25 changes: 25 additions & 0 deletions docs/compute/instance-operations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
title: 实例操作
---

# 更改实例类型(缩小或扩大实例)

有时候,我们希望更改实例的类型,比如将一个性能较低的实例扩大为性能较高的实例,或者将一个性能较高的实例缩小为性能较低的实例。这种情况下,我们可以通过更改实例的类型来实现。

进入 **控制台>计算>云主机** 如下图所示操作:

![resize-1](/assets/compute/resize-1.png)

将打开修改配置弹窗如下图。在区域 1 选择适合你的配置,在区域 2 勾选同意,然后点击确定即可。

![resize-2](/assets/compute/resize-2.png)

> [!WARNING] 警告
> 更改配置将对正在运行的实例进行强制关机。\
> 若有重要数据,请提前保存,并自行关机后再进行配置更改。

确认后将可以看到如下通知,同时实例状态变更为 **正在修改配置/迁移**。

![resize-notify](/assets/compute/resize-notify.png)

稍等片刻后,实例状态将变更为 **运行中**,此时配置已经更改完成。
2 changes: 1 addition & 1 deletion docs/contributors.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ title: 贡献者与致谢

# 加入我们

如果你对项目感兴趣,欢迎加入我们!同时,欢迎加入学生 Linux 俱乐部,共同碰撞思想的火花。请发邮件至 `[email protected]`,我们会尽快回复。
如果你对项目感兴趣,欢迎加入我们!同时,欢迎加入学生 Linux 俱乐部,共同碰撞思想的火花。请发邮件至 `[email protected]`,我们会尽快回复。
2 changes: 1 addition & 1 deletion docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
title: 常见问题
---

# 常见问题
# 常见问题
34 changes: 17 additions & 17 deletions docs/getting-started/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
title: 快速上手
---

太长不看版:记得登陆ITS
太长不看版:记得登陆 ITS

# 简介

云平台中,最核心的资源是云主机(VM)。本文从创建和连接云主机出发,介绍云平台的最基本使用。

# 本地客户端准备

为了连接到云主机,我们需要一个终端和 SSH 客户端。在 Windows 系统中,我们推荐安装 [Windows Terminal](https://aka.ms/terminal) (Windows11应已自带)。在 macOS 和 Linux 系统中,我们推荐使用系统自带的终端。
为了连接到云主机,我们需要一个终端和 SSH 客户端。在 Windows 系统中,我们推荐安装 [Windows Terminal](https://aka.ms/terminal) (Windows11 应已自带)。在 macOS 和 Linux 系统中,我们推荐使用系统自带的终端。

然后,我们需要一个 SSH 密钥对。如果你还没有 SSH 密钥对,可以通过以下方式生成。如果你之前用密钥登录过其他机器,或者电脑的个人目录中已经有`.ssh/id_rsa.pub`或者`.ssh/id_ed25519.pub`文件,可以直接复制现有的.pub文件到平台,会较为方便。
然后,我们需要一个 SSH 密钥对。如果你还没有 SSH 密钥对,可以通过以下方式生成。如果你之前用密钥登录过其他机器,或者电脑的个人目录中已经有`.ssh/id_rsa.pub`或者`.ssh/id_ed25519.pub`文件,可以直接复制现有的.pub 文件到平台,会较为方便。

:::tip 小贴士
我们这里说的用户目录,在 Windows 下指的是 `C:\Users\用户名`,macOS 和 Linux 中指的是`/home/用户名`
Expand All @@ -21,6 +21,7 @@ title: 快速上手
下列操作将在 用户目录下`.ssh`文件夹下生成一个名为 `id_ed25519` 的密钥对。请将 `id_ed25519.pub` 中的内容添加到云平台的 SSH 密钥管理中。请注意,这是密钥的默认位置,你可能已经有一个同名密钥在同一位置了。如果是这样,请直接使用那个密钥,千万不要重新创建!如果重新创建,会有提示,询问是否覆盖。请不要覆盖!

打开终端执行如下命令:

```bash
ssh-keygen -t ed25519
```
Expand All @@ -45,15 +46,13 @@ ssh-keygen -t ed25519

![](/assets/getting-started/create-1.png)


## 选择规格

首先选择云主机的规格,包括 CPU 核数、内存大小、最小硬盘大小等。不同规格的云主机价格不同,可以根据自己的需求选择。CLab 的规格分为三类,分别介绍如下,通常我们选择 Playgrounds 即可:

- Playgrounds:适合学习和测试,比如编程作业、小型网站等。也可以用来熟悉 Linux 操作和基本使用
- Labs_and_Courses:适合课程实验,比如编译原理、操作系统、数据库等对计算资源要求较高的场景
- Elite_Courses:适合高性能计算,比如深度学习、大数据处理等对计算资源要求非常高的场景


CPU 核数和内存大小是用来区分不同规格的云主机的,每位同学默认有 4 核心 4 G 内存的配额,可以按需选择。一般情况下,编程作业(比如只需要 GCC 编译,运行一些简单的程序)可以选择 1 核心 1 G 内存的规格,小型网站可以选择 2 核心 2 G 内存的规格。

Expand Down Expand Up @@ -101,7 +100,7 @@ CLab 提供两种硬盘类型,分别是 SSD 和 HDD。SSD 是固态硬盘阵
在这里设置云主机的名称和 SSH 密钥。名称是云主机的显示名称,可以随意设置。SSH 密钥是用来登陆云主机的密钥,可以选择之前添加的密钥,也可以添加新的密钥。如果没有添加密钥,可以点击“创建密钥”按钮,把我们在“本地连接客户端准备”中生成的密钥添加进去。

:::tip 小贴士
创建云主机时只能放入一个SSH密钥。如果你需要放入更多密钥,请在创建云主机成功后连接并修改~/.ssh/authorized_keys文件(注意不要sudo,不要改变其权限),方法是另起一行,每行放一个密钥,密钥同样来自于xxx.pub文件,你也可以从CLab的密钥模块查看之前添加过的密钥详情,并直接复制其中的公钥。
创建云主机时只能放入一个 SSH 密钥。如果你需要放入更多密钥,请在创建云主机成功后连接并修改~/.ssh/authorized_keys 文件(注意不要 sudo,不要改变其权限),方法是另起一行,每行放一个密钥,密钥同样来自于 xxx.pub 文件,你也可以从 CLab 的密钥模块查看之前添加过的密钥详情,并直接复制其中的公钥。
:::

(现在点击页面右下角的“下一步”按钮,进入确认页面)
Expand All @@ -114,22 +113,22 @@ CLab 提供两种硬盘类型,分别是 SSD 和 HDD。SSD 是固态硬盘阵

# 连接云主机

云主机创建完成后,可以点击云主机的名称进入云主机详情页面。在这里可以看到云主机的状态、IP 地址等信息。如果选择的是“共享网络”,可以在校园网内直接使用 SSH 连接到云主机。在云主机详情页面中,有”内网IP“,复制这个 IP 地址,然后在终端中输入以下命令:
云主机创建完成后,可以点击云主机的名称进入云主机详情页面。在这里可以看到云主机的状态、IP 地址等信息。如果选择的是“共享网络”,可以在校园网内直接使用 SSH 连接到云主机。在云主机详情页面中,有”内网 IP“,复制这个 IP 地址,然后在终端中输入以下命令:

```bash
ssh 用户名@内网IP
```

这里的用户名是与云主机镜像相关的,见下表:

| 镜像 | 用户名 |
| --- | --- |
| Rocky Linux | rocky |
| Debian | debian |
| Ubuntu | ubuntu |
| Arch Linux | arch |
| CentOS | centos |
| Fedora | fedora |
| 镜像 | 用户名 |
| ----------- | ------ |
| Rocky Linux | rocky |
| Debian | debian |
| Ubuntu | ubuntu |
| Arch Linux | arch |
| CentOS | centos |
| Fedora | fedora |

输入之后会提示确认云主机的指纹,输入“yes”后,就可以连接到云主机了。如果连接失败,请检查 SSH 密钥是否正确,云主机是否启动成功。

Expand All @@ -144,16 +143,17 @@ ssh 用户名@内网IP
云主机通常不方便使用网页版网关,对于部分镜像(比如 ICS 的课程镜像),我们提供了`lcpu`命令可以连接校园网。使用方法如下。注意,输入密码时,密码是不显示的,输入完成后回车即可。

连接网关:

```bash
lcpu connect
```

断开网关连接:

```bash
lcpu disconnect
```


对于其他镜像,可以使用如下网关登陆程序。

```python
Expand Down Expand Up @@ -197,7 +197,7 @@ sudo dnf install python3 # Fedora, CentOS, Rocky Linux
可以使用`scp`传输文件,`scp`命令的基本结构是:

```bash
scp (-r,如果是文件夹的话) 从哪里发送 在哪里接收
scp (-r,如果是文件夹的话) 从哪里发送 在哪里接收
```

发送和接收的地址都遵守相同的规则,如下。其中,第一部分是机器,格式为`用户名@IP地址:`。不写`---:`代表着从本地传输。第二部分是路径,不写路径默认保存在家目录。这两部分必须要至少有一部分。接收文件时,如果保存在当前路径,第二部分可以写为`.`。
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/lcpu-mirror.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,6 @@ sudo sed -i 's@http://security.debian.org@https://mirrors.pku.edu.cn@g' /etc/apt

编辑文件/etc/pacman.d/mirrorlist,在开头插入

```
```plain
Server = https://mirrors.pku.edu.cn/archlinux/$repo/os/$arch
```
Loading