欢迎来到棉棉和甜甜的家!

Contacts: Fang Han fhan0520@gmail.com

It looks like you need VPN to access the Sutro Planet. Checkout the VPN instructions.

Pixel Art, a cute grey chinchilla sittings on a missle in the space.

使用 OpenVPN 连接 Sutroplanet 内网

Windows 10 安装和配置 OpenVPN 教程

在这篇教程中,我们将指导您如何在 Windows 10 上安装和配置 OpenVPN。请按照以下步骤操作:

第一步:下载 OpenVPN 客户端

  1. 打开您的浏览器,访问 OpenVPN 官方下载页面.
  2. 在页面中找到适用于 Windows 的安装包,点击下载。

第二步:安装 OpenVPN 客户端

  1. 下载完成后,找到下载的安装文件(通常在“下载”文件夹中),双击运行。

download openvpn

  1. 在弹出的安装向导中,点击“下一步”。 install openvpn

  2. 阅读并同意许可协议,然后点击“下一步”。

  3. 按照提示选择安装组件,默认选项通常是合适的,点击“下一步”。

  4. 选择安装位置,默认位置通常是合适的,点击“安装”。

  5. 安装完成后,点击“完成”。

第三步:获取 OpenVPN 配置文件

  1. 请向您的管理员提供您想要的 OpenVPN 用户名和密码。
  2. 管理员将根据您的请求生成对应的 .ovpn 配置文件,并发送给您。您也可以在Sutroplanet OpenVPN Config 配置文件 下载此配置文件。

第四步:配置 OpenVPN 客户端

  1. 打开 OpenVPN 客户端。
  2. 找到 OpenVPN 安装目录,通常在 C:\Program Files\OpenVPN\config。
  3. 将管理员发送给您的 .ovpn 配置文件复制到上述目录中。或者你也可以手动import提供的配置文件。

import openvpn

  1. 右键点击桌面上的 OpenVPN 图标,选择“以管理员身份运行”。
  2. 在系统托盘中找到 OpenVPN 图标,右键点击它,选择您刚才添加的配置文件,然后点击“连接”。
  3. 在弹出的窗口中输入管理员提供的用户名和密码,点击“确定”。

第五步:验证连接

  1. 如果连接成功,系统托盘中的 OpenVPN 图标将变为绿色。

openvpn success

  1. 您现在应该可以通过 OpenVPN 访问公司或组织的内部网络资源。

重要提示

  • 请确保您的防火墙和杀毒软件不会阻止 OpenVPN 的连接。
  • 如果遇到任何问题,请联系您的管理员寻求帮助。

总结

通过以上步骤,您已经成功在 Windows 10 上安装并配置了 OpenVPN 客户端,并通过管理员提供的配置文件建立了 VPN 连接。如果有任何疑问或需要进一步的帮助,请随时联系您的网络管理员。

访问 Sutroplanet Kubernetes 集群

本文档将指导您如何通过 OIDC 认证访问 Sutroplanet 的 Kubernetes 集群。

前提条件

管理员配置:Authentik OAuth2/OIDC Provider

Kubernetes CLI 属于无法安全保存共享客户端密钥的本地应用。Authentik 中的 Kubernetes Provider 应使用以下配置:

  • Client Type:Public
  • Grant Types:只启用 Authorization Code 和 Refresh token
  • Redirect URIs:http://localhost:8000、http://localhost:18000
  • Scopes:openid、profile、groups、offline_access,以及下方自定义的 email Scope Mapping

请勿启用 Implicit、Hybrid、Client credentials 或 Password Grant。只有明确采用 Device Authorization Flow 时才启用 Device-code。

由于 Kubernetes API Server 使用邮箱作为 OIDC 用户名,需要创建名为 Kubernetes verified email、Scope name 为 email 的 Scope Mapping:

return {
    "email": request.user.email,
    "email_verified": True,
}

仅当注册或身份源确实验证了用户邮箱时,才应返回 email_verified: True。在 Provider 的 Scopes 中使用此 Mapping 替换 Authentik 默认的 OpenID 'email' Mapping。

Public Client 通过 PKCE 保护 Authorization Code Flow,因此不需要向用户分发 client_secret。如果 Provider 以前使用 Confidential Client,应轮换或作废旧 secret,并从 kubeconfig、文档及 Git 历史中移除。

第一步:注册 Authentik 账号

  1. 打开 authentik.sutroplanet.com
  2. 点击登录页底部的 Sign up 链接
  3. 填写用户名、邮箱和密码,提交注册
  4. 检查您的邮箱,点击验证链接完成注册
  5. 联系管理员 (fhan0520@gmail.com) 将您的账号加入对应的 Kubernetes 用户组(如 k8s-users、k8s-agentforge、k8s-storyorbit 等),否则您将无法访问集群资源

第二步:安装 kubectl(如未安装)

如果您还没有安装 kubectl:

macOS:

brew install kubectl

Linux:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/

Windows:

下载 kubectl.exe,放到 PATH 目录中。

第三步:安装 kubelogin 插件

kubelogin 是 kubectl 的 OIDC 认证插件,用于通过浏览器登录获取令牌,并使用缓存的刷新令牌自动续期。

macOS:

brew install int128/kubelogin/kubelogin

Linux:

curl -LO https://github.com/int128/kubelogin/releases/latest/download/kubelogin_linux_amd64.zip
unzip kubelogin_linux_amd64.zip
sudo mv kubelogin /usr/local/bin/kubectl-oidc_login

Windows:

从 kubelogin releases 下载 kubelogin_windows_amd64.zip,解压后将 kubelogin.exe 重命名为 kubectl-oidc_login.exe,放到 PATH 目录中。

安装完成后验证:

kubectl oidc-login --help

第四步:配置 kubeconfig

将以下内容保存为 ~/.kube/config(如果已有其他集群配置,可以保存为 ~/.kube/sutro-config 并通过 KUBECONFIG 环境变量指定):

apiVersion: v1
kind: Config
clusters:
- cluster:
    server: https://sutroplanet.com:6443
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTmpBM05EY3hNak13SGhjTk1qVXhNREU0TURBeU5USXpXaGNOTXpVeE1ERTJNREF5TlRJegpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTmpBM05EY3hNak13V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSYzVIcjl3SlVFSlJBVndyaVF3N2w5YXc5bEdtVFM2QXIrbGZzT3BkKzkKeENiVUE0TUpUWFY4cjBza2FIVUczUm5qVkVmUExIVVZLOEV6ZnlmYTRoNVFvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWpoY3RuQVQwTlBieFdqMzgzamhZCkdTUnlUK1F3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnVUJDSGYxNWFrNEI2NlpxbUlyY0d3SzJFcDYvL3V6RnQKK09XSWUyMm1KT2tDSVFEQVdRRHpFVXBmdnVIRWMrNEpPZkhFT0h6OS9YRVNtcFhoV24vYmZwUkliQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
  name: sutro-cluster
contexts:
- context:
    cluster: sutro-cluster
    user: oidc-user
    namespace: storyorbit
  name: sutro
current-context: sutro
users:
- name: oidc-user
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1
      command: kubectl
      args:
        - oidc-login
        - get-token
        - --oidc-issuer-url=https://authentik.sutroplanet.com/application/o/kubernetes/
        - --oidc-client-id=bszmEYTqWfb0B7A9M6GfiWgXYpvpWn9wcB0eIhNn
        - --grant-type=authcode
        - --oidc-pkce-method=S256
        - --oidc-extra-scope=email
        - --oidc-extra-scope=profile
        - --oidc-extra-scope=groups
        - --oidc-extra-scope=offline_access
        - --token-cache-storage=keyring
      interactiveMode: IfAvailable

此配置使用 Public Client + PKCE,不包含也不需要 client_secret。Client ID 不是秘密,可以包含在文档和 kubeconfig 中。示例默认使用 storyorbit 命名空间;如果管理员分配了其他命名空间(例如 agentforge),请相应修改 namespace。

如果保存为单独文件,使用前设置环境变量:

export KUBECONFIG=~/.kube/sutro-config
chmod 600 ~/.kube/sutro-config

第五步:登录并验证

运行任意 kubectl 命令触发登录:

kubectl get pods

首次登录时浏览器会自动打开 Authentik 登录页面。登录成功后,kubelogin 会缓存刷新令牌;5 分钟的访问令牌过期后会自动续期,正常情况下无需每 5 分钟重新登录。刷新令牌过期或被撤销后,下一次 kubectl 命令会再次要求浏览器登录。

示例将 token 缓存保存在操作系统 Keychain 中。如果当前系统没有可用的 Keychain/Secret Service,可删除 kubeconfig 中的 --token-cache-storage=keyring,回退到 kubelogin 默认的磁盘缓存;此时务必保护 ~/.kube/cache/oidc-login 的访问权限。

验证您的权限:

# 列出命名空间(需要 k8s-users 用户组)
kubectl get namespaces

# 查看 StoryOrbit 命名空间的 Pod
kubectl get pods -n storyorbit

# 查看当前用户及 OIDC 用户组
kubectl auth whoami -o json

# 验证 StoryOrbit 部署权限
kubectl auth can-i create deployments.apps -n storyorbit

权限说明

您的访问权限由管理员在 Authentik 中分配的用户组决定:

用户组权限范围
k8s-users可以列出集群中的命名空间(只读)
k8s-agentforge在 agentforge 命名空间内拥有完整的管理权限
k8s-storyorbit在 storyorbit 命名空间内拥有管理权限

如果您在执行操作时收到 Forbidden 错误,说明您的账号没有对应资源的权限,请联系管理员。

常见问题

登录后仍然报 Unauthorized

清除本地缓存的 token 后重试:

kubectl oidc-login clean
kubectl get pods -n storyorbit

如果管理员刚将 Provider 从 Confidential Client 改为 Public Client,也必须先清理旧缓存,并确认 kubeconfig 中已经删除 --oidc-client-secret。

浏览器没有自动打开

手动复制终端中显示的 URL 到浏览器中打开。

Token 过期或需要强制重新登录

kubelogin 会使用缓存的刷新令牌自动续期,无需手动操作。刷新令牌过期或被撤销后,重新运行 kubectl 命令并按提示登录。需要强制重新登录时:

kubectl oidc-login clean
kubectl get pods -n storyorbit

刷新令牌是有效期较长的凭据。请勿共享 kubeconfig 或 ~/.kube/cache/oidc-login;在共享设备上使用完毕后请运行 kubectl oidc-login clean。

连接超时

确保 VPN 已连接,并且可以访问 sutroplanet.com:6443:

curl -k https://sutroplanet.com:6443/healthz

联系管理员

如有问题请联系: Fang Han fhan0520@gmail.com

一起玩 Minecraft!Let's play Minecraft Java Edition

加入我们一起玩Minecraft! Join us at Sutro Minecraft!

目前在服务器地址 mc.sutroplanet.com 上运行着一个基于PaperMC的Minecraft Java版服务器。要加入我们的Minecraft服务器,请按照以下说明设置您的Minecraft客户端。

强烈建议使用Prism Launcher,这样您就能获得所有必需和兼容的模组。

  1. 第一步是根据您的操作系统,按照安装说明安装Prism Launcher。

  2. 然后您应该在启动器的"账户管理"下登录您的Microsoft或Mojang账户,例如: 添加Prism账户

  3. 在您安装了启动器并登录账户后,下载Prism Launcher的Sutro Minecraft客户端精确配置。

版本文件名链接SHA
1.21.4 (5/10/2025 最新)Sutro-Minecraft-1.21.4.zip链接e3b9a8e8cd75937c8c44838448752ceebf44c60a
1.20.4 (旧版)Sutro_Minecraft_1.20.4_May_26_2024.zip链接4f9d475e15d86e0737ea2822ea017f26a44911cf
1.20.4 (旧版)Sutro_Minecraft_1.20.4.zip链接35a395fa159d0a25d537a96ba769ce1971eb9c76
  1. 将压缩包/zip文件拖到Prism Launcher中。

    导入Prism配置

  2. 在启动器中双击导入的Minecraft实例以启动游戏。

  3. 服务器受AuthMe保护。当您第一次进入世界时,需要先在游戏中按下/调出命令提示符。使用/register <您的密码>进行注册。

  4. 下次进入世界时,您可以使用命令/login <您的密码>登录,例如:

    登录到世界

  5. 享受游戏吧!

服务器健康仪表板

一些服务器详情

来自服务器日志:

[09:19:14] [Server thread/INFO]: Starting minecraft server version 1.20
[09:19:14] [Server thread/INFO]: Loading properties
[09:19:14] [Server thread/INFO]: Default game type: SURVIVAL
[09:19:14] [Server thread/INFO]: Generating keypair
[09:19:14] [Server thread/INFO]: Starting Minecraft server on *:25565

要了解Minecraft服务器是如何部署的,请查看https://github.com/sutro-planet/sutro-k8sproj/tree/master/minecraft中定义的K8s清单。