首页 > 其他分享 >HydroOJ 从入门到入土(4)控制面板-系统设置详解

HydroOJ 从入门到入土(4)控制面板-系统设置详解

时间:2023-12-07 13:45:31浏览次数:49  
标签:评测 smtp hydrooj server 详解 limit HydroOJ 设置 控制面板

控制面板内众多配置项眼花缭乱, 至于说明文档...这个真没有!

这里的配置有很多, 如果装了插件, 有一些插件的配置项也是在这里修改, 所以很有必要了解一下这些选项都是干什么的.

目录

SMTP 设置

smtp.user / SMTP 用户名: 这里填邮箱用户名, 如 [email protected]

smtp.pass / SMTP 密码: 填好保存之后, 如果没有修改, 会显示 未更改

smtp.host / SMTP 服务器地址: 一般是 smtp.xxx.xx.com, 可以填 qq 的, 163 的, 也可以申请免费的自定义域名的, 比如阿里云的企业邮箱(阿里云免费企业邮箱申请链接(新)(2023.12 可用)), 腾讯云的企业邮箱(免费注册企业邮箱(不需要审核但需要使用企业微信))

smtp.port / SMTP 服务器端口: 一般开了下边的 SSL 的话, 就是465

smtp.from / 发件人: 可以自定义显示名称, 如 HydroOJ<[email protected]>, 别人收到邮件就会显示是 HydroOJ 发送的邮件.

smtp.secure / SSL: 发信开启 SSL, 一般都要求开

smtp.verify / 注册需邮件验证: 很多学生没有邮箱, 此项可以关闭, 但是点注册依然会出现邮箱页面, 需要让学生按邮箱格式随便填写一个邮箱, 再点验证就好.

服务器设置

server.name / Server Name: 站名

server.name / Server Name (Global Display): 全局站名, 会显示在网页 title 上, 以及帮助和服务条款等各种地方.

server.url / Server BaseURL: 填写网站域名, 末尾加/. 对外发邮件, 对内使用相对路径都会用到.

server.upload / Max upload file size: 最大上传(单个)文件大小

server.cdn / CDN 路径前缀: 不懂不要瞎改, 可能会导致 UI 崩掉. 不慎改坏的话, 可以进服务器用命令行改回来:

hydrooj cli system set server.cdn /  # 注意不要漏了这个/
pm2 restart hydrooj # 重启hydrooj

另外, cdn 配置需要在云服务商的控制台里配置 referer白名单和cors域名, 一般在 cdn安全里.

server.ws / WebSocket Prefix: WebSocket 相关, 不明觉厉.

server.port / Server Port: 服务实际运行端口, 注意, 这个不要和其他的冲突, 不然服务无法启动, 以及, 改了这个需要在 Caddyfile 中进行同步修改. 不慎改坏的话, 可以进服务器用命令行改回来:

hydrooj cli system set server.port 8888
pm2 restart hydrooj

server.xff / IP Header: 不明觉厉.

server.xhost / Hostname Header: 不明觉厉.

server.xproxy / Use reverse_proxy: 不明觉厉.

server.cors / CORS domains: 跨域相关, 不明觉厉.

server.language / 默认显示语言: 默认改简体中文之后, 用户注册好之后的偏好设置依然会默认英文, 不注意直接保存会界面全变英文.

server.login / 启用内置登录: 危险!!! 如果点掉就关掉了全站登录功能, 包括管理员! 不慎启用的话, 可以进服务器用命令行改回来:

hydrooj cli system set server.login true
pm2 restart hydrooj # 重启hydrooj

server.message / 允许用户使用私信: 还有一个私信的开关在 控制面板->用户权限 里边, PRIV_SEND_MESSAGE.

server.checkUpdate / 每日自动检查更新: 不会自动更新, 只会检查, 有更新会以站内私信的形式发送给管理员, 前提是没有关闭私信开关.

server.ignoreUA / ignoredUA: 忽略一些搜索爬虫的访问

preference.codeLang / 默认代码语言: 全站默认, 除非用户自己设置了偏好语言.

setting_limits 各种保护性限制

limit.by_user / Use per-user limits instead of per ip limits: 限制用户而非 IP

limit.problem_files_max / 单题最大文件数量: 题目附件, 如图片/pdf 等, 不包括数据点数量. 如需修改测试点数量, 需要去下边改. 本页面ctrl+f 搜索 testcases_max.

limit.problem_files_max_size / 单题最大总文件大小: 单位是字节, 默认 268435456 (256MB)

limit.user_files / 单用户最大文件数量: 开通文件权限的话要注意

limit.user_files_size / 单用户最大总文件大小: 开通文件权限的话要注意

limit.contest_files / Max files for contest or training: 比赛 / (作业?) / 训练能保存的最大文件数

limit.contest_files_size / Max total file size for contest or training: 比赛 / (作业?) / 训练能保存的文件的最大总大小

limit.submission / 每分钟提交数量限制: 全站提交数限制(包括所有域), 如果需要举办比赛, 此项需要改大.

limit.submission_user / Max submission count per user per minute: 每个用户提交数限制, 含自测和递交.

注意, 在线编程模式下, 自测间隔(5s)和提交间隔(8s)是写死的, 每次都会有的固定间隔.

limit.pretest / 每分钟自测数量限制: 全站自测数限制(包括所有域), 如果需要举办比赛, 此项需要改大.


以上 3 个提交和自测的限制, 适用于所有提交模式(在线编程模式, 递交模式, api / 远程评测等等)

基础设置

avatar.gravatar_url / Gravatar地址前缀: 注意, Gravatar 国内无法访问, 可以设置为 //dn-qiniu-avatar.qbox.me/avatar/

discussion.nodes / 讨论节点: 相当于论坛版块, 改完之后要在“管理域”选项卡中点击“初始化讨论节点”按钮初始化讨论节点, 才可以开启论坛。

problem.categories / 题目标签: 选题和建题的时候都会用到, 比如:

语法基础: ['顺序', '选择', '循环', '函数', '数组', '字符数组&字符串', '结构体']

前边的 语法基础是一级标签, 会直接显示在侧边栏中; 后边的 [...]的部分是二级标签, 鼠标指到一级标签上会弹出来.

如果题目中用到了一个二级标签, 那么会自动加上他所属的一级标签.

不在这个清单中的标签, 不受题库列表中的 显示/隐藏标签 的功能限制, 会一直显示.

pagination.problem / 每页展示的题目数量: 少点加载会快, 但如果需要下载大量题目, 可以直接改到超过题目数量的数, 比如 10000, 然后全选下载.

pagination.contest / 每页展示的比赛数量: 酌情修改

pagination.discussion / 每页展示的讨论数量: 酌情修改

pagination.record / 每页展示的评测记录数量: 酌情修改

pagination.solution / 每页展示的题解数量: 酌情修改

pagination.training / 每页展示的训练数量: 酌情修改

pagination.reply / 每页展示的回复数量: 酌情修改

Session 设置

session.saved_expire_seconds / 保存的会话的过期秒数: 如果在登录页点了 记住我, 保持登录的时间, 默认为 2592000 (30 天).

session.unsaved_expire_seconds / 未保存的会话的过期秒数: 如果在登录页没勾选 记住我, 保持登录的时间, 默认为 10800 (3 小时).


如果需要同一时间只能同一客户端登录账号, 可以看这里: P16 如何限制同一账号多端登录?

hydrooj

首页 / 主页设置:

  1. 注意缩进和空格, 很严格, 不会 yaml 的话小心照着写

  2. 上下是有顺序的

  3. width 是版块宽度, 总宽 12, 可以自己调整分配

  4. 这里边的版块只要出现了, 就会显示在外边, 不论是 true 还是 false. 所以如果不想让他出现, 要么直接删掉, 要么前边加 # 注释掉, 比如 # hitokoto: false 而不是 hitokoto: false.

  5. 里边的每一个大类, 都对应一个模版 HTML 文件, 存放在 /templates/partials/homepage/ 文件夹中, 如果需要写一些需要自定义显示的插件, 可以在这里定义好类名称之后, 去插件里边新建一个同名 HTML 文件.

    如: sidebar_nav: 对应 /templates/partials/homepage/sidebar_nav.html的模版文件

    此类首页公告板插件的选项、信息配置也基本都在这里.

  6. 下附名称对照

- width: 9  # 左侧版块, 宽度为 9 
  bulletin: true  # 公告板, 在编辑域资料中修改内容
  contest: 1  # 比赛, 保留最新 1 条
  homework: 10  # 作业, 仅能看到自己的最新 10 条
  training: 10  # 训练, 最新 10 条
  ranking: 20  # 排名, 最新 20 条
  discussion: 20  # 讨论, 最新 20 条
- width: 3  # 右侧导航版块, 宽度为 3 
  homework: 1  # 右边也可以放作业, 其他同理
  countdown:  # 如果装了倒计时插件, 大概这么配置
    title: 咕咕倒计时
    max_dates: 3  # 只显示最近 3 条
    dates:
      - name: 放寒假
        date: 2024-02-02
      - name: NOIP 2023
        date: 2023-11-18  # 过期的不会显示
  # hitokoto: false  # 不要的话要注释掉或者删掉, 改 false 没用
  # starred_problems: 50  # 收藏的问题
  # recent_problems: 10  # 本域最新更新的题目
  # discussion_nodes: true  # 讨论节点
  # suggestion: true  # 推荐

语言 / 编程语言设置:

HydroOJ 使用 nix 来解决沙箱的安全问题, 如果需要新增编程语言, 需要使用 nix, 不能直接 apt install. Python, 也不能直接 pip, 如果需要安装什么包, 不如直接手动挪到相应的Python 环境里.

具体参考官方文档: 编译器

如果需要安装 GCC 9.3.0 跟 CCF 保持一致, 参考 这里这里, 但是不要装gcc-unwrapped, 就装gcc, 否则会报错 Compile Error /nix/.../ld: cannot find crtl.o: No such file or directory.

实在不会去群里问.

ui-default

footer_extra_html / Footer Extra HTML: 用来放备案信息和一些统计代码什么的.

注意, 如果备案信息放不下, 可以写个插件把底部左侧的 legacy 选项去掉, 地方就够了. legacy 相关代码在 /templates/partials/footer.html 里边的 60-66 行.

nav_logo_dark / 左上角小图标(暗): 不要被这个名称迷惑, 没错, 这个就是整站左上角的 logo!

修改参见官方文档: 如何修改网站图标? (favicon)

preload: 不明觉厉

关于: 注意修改网址链接, 联系我们等, 上边设置的网站名称会自动填入到 {{ name }}中.

显示偏好

domainNavigation / Show Domain Navigation: 右上角用户名旁边的域导航, 不用可以关掉.

hydrojudge

sandbox_host / 沙箱地址: 如果评测机分离的话就改成自己的地址, 不需要内置评测机了, 可以勾选下边的 禁用内置评测机.

相关官方文档: 创建评测账号

tmp_dir / 临时目录: 如果磁盘占用过大, 可能需要手动清理

stdio_size / 标准输出/错误流输出大小限制: 默认 32m, 一般不用改

processLimit / Process Limit: 进程限制

testcases_max / 单题最多测试点数量: 测试点太多要改这里

total_time_limit / 单题最多总评测时长: 有的题数据量太大, 测评时间太长, 这个改大点, 单位是秒

memoryMax:

cache_dir / 测试数据缓存目录: 缓存30天, 实在没空间可以手动删 hydrojudge cache prune

parallelism / 评测机运行进程数: 安装脚本自己配好这个值了(简称自适应)

singleTaskParallelism: 安装脚本自己配好这个值了(简称自适应)

parallelism: ${Math.max(1, Math.floor(cpus().length / 4))}
singleTaskParallelism:2

rate / (?): 不明觉厉

rerun / 每个提交最多重测 TLE 测试点的次数: 一般不用

disable / 禁用内置评测机: 如果配置了独立评测机, 就可以把内置的禁用掉

strict_memory / 严格内存限制: 似乎需要配置 cgroup v1.

开启 cgroup v1 可以参考官方文档: 内存计量不准确

env / Sandbox Env: 沙箱环境变量. 如果用 nix 装了其他 Python 包, 这里需要添加相应的环境

secret: 评测暗号, 不明觉厉

detail: 勾选显示测试点错误详情

个人信息

Enable lsp support (paid): 代码补全服务, 找群主付钱

YBTBAS RemoteJudge (free): 一本通启蒙篇远程评测, 免费, 注意看使用说明

标签:评测,smtp,hydrooj,server,详解,limit,HydroOJ,设置,控制面板
From: https://www.cnblogs.com/bowen404/p/17881815.html

相关文章

  • Java开发者必备:Maven简介及使用方法详解!
    今天我们来介绍一个在Java开发中非常重要的工具——Maven。如果你是一名Java开发者,那么你一定不会对Maven感到陌生。但是,对于一些新手来说,可能还不太了解Maven是什么,它有什么作用,以及如何使用它。接下来,就让我们一起来深入了解一下Maven吧!一、maven简介Maven是什么Maven是一个......
  • 一文详解安全随机数
    本文分享自华为云社区《【安全攻防】深入浅出实战系列专题-安全随机数》,作者:MDKing。随机数的使用场景使用随机数可分类安全场景跟非安全场景。非安全场景需要生成的越快越好。安全场景使用的随机数必须足够安全,保证不能被预测到。常见的非安全场景:数据的索引号、标识;文件的名称或......
  • 神经网络优化篇:详解训练,验证,测试集(Train / Dev / Test sets)
    训练,验证,测试集在配置训练、验证和测试数据集的过程中做出正确决策会在很大程度上帮助大家创建高效的神经网络。训练神经网络时,需要做出很多决策,例如:神经网络分多少层每层含有多少个隐藏单元学习速率是多少各层采用哪些激活函数创建新应用的过程中,不可能从一开始......
  • 【Kubernetes存储篇】StorageClass存储类动态生成PV详解
    一、StorageClass存储类理论StorageClass的作用主要有以下几个方面:动态存储卷分配:StorageClass可以根据定义的属性动态地创建存储卷,无需手动创建和管理存储卷。存储卷的属性管理:StorageClass可以定义存储卷的属性,如存储类型、存储容量、访问模式等,从而更好地满足应用程序的存储需......
  • python 中的 collections 模块:常用数据结构和工具详解
    Python的collections模块提供了许多有用的数据结构,超越了标准的内置数据类型。这些数据结构解决了各种常见的编程问题,包括但不限于高效的容器类型、特定目的的容器、默认值字典等。让我们深入了解其中的几个重要数据结构和工具。1.defaultdict:带有默认值的字典defaultdict是d......
  • HydroOJ 从入门到入土(3)权限管理
    管理OJ就是管理资源,管理资源就是管理权限.HydroOJ的用户权限使用位运算,所以看起来比较奇怪.权限管理分两块:系统权限和域权限,这两个是分开的.1.系统权限(控制面板->用户权限)装完系统设置好超级管理员之后,该用户自动root权限(所有权限).guest是未注册用户......
  • 虚拟机安装详解
    虚拟机安装详解 虚拟机安装 1.选择虚拟机软件
在安装虚拟机之前,需要选择一款合适的虚拟机软件。目前市面上有很多虚拟机软件供选择,如VMware、VirtualBox等。根据你的需求和操作系统的支持情况,选择合适的虚拟机软件。2.下载操作系统镜像文件
购买虚拟主机空间后,你会得到......
  • Linux I/O重定向与管道详解
    LinuxI/O重定向与管道详解 原理
在Linux中,I/O重定向是通过重定向符号实现的。标准输入重定向使用符号“<”,标准输出重定向使用符号“>”。
例如,将文件file.txt的内容输出到终端,可以使用以下命令:catfile.txt将文件file.txt的内容输出到文件output.txt,可以使用以下命令:ca......
  • css3 flex弹性布局详解
    一、flexbox弹性盒子2009年,W3C提出了一种新的方案----Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。二、基本概念Flex是 Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。......
  • 线程中断方法详解interrupt
    线程中断方法详解interrupt由于stop中断线程方法过于暴力,就像是突然你正在开发,突然停电一样于是衍生出中断方法interrupt简介线程中断并不会使线程立即退出,而是给线程发送一个通知,告知目标线程,有人希望你退出了!至于目标线程接收到通知之后如何处理,则完全由目标线程自己决定Thread提......