diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3bb8b7c..4f0e594 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -3,32 +3,30 @@ on: [push, pull_request, workflow_dispatch] name: CI jobs: deploy: - name: Deploy + name: CI runs-on: ubuntu-latest env: - DEPLOY_SERVER: copy.lty.name + GIT_SERVER: devops.lty.name + DEPLOY_USER: web-deploy + DEPLOY_SERVER: lty.name DEPLOY_SERVER_KEY: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBKn1tARbrf+klrF31iN1Q0otmL1AvDDI87kC7HLo5ix + DEPLOY_SOURCE: dist DEPLOY_TARGET: homepage steps: - - uses: actions/checkout@v4 - with: - persist-credentials: true - lfs: true - # - uses: actions/setup-python@v5 - # with: - # python-version: '3.12' - # - name: Install dependencies & Build - # run: | - # pip install pdm==2.20.1 - # pdm install - # pdm start - # - if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' - # name: Deploy to the web server - # run: | - # mkdir -p "${HOME}/.ssh" - # echo "${DEPLOY_SSH_KEY}" | base64 -d > "${HOME}/.ssh/id_ed25519" - # chmod 600 "${HOME}/.ssh/id_ed25519" - # echo "${DEPLOY_SERVER} ${DEPLOY_SERVER_KEY}" > "${HOME}/.ssh/known_hosts" - # rsync -avz --delete ./dist/ "${DEPLOY_TARGET}:~/${DEPLOY_TARGET}/" - # env: - # DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }} + - name: build + run: | + git clone https://${{ github.token }}@${{ env.GIT_SERVER }}/${{ github.repository }} $(pwd) + git lfs install + git lfs pull + pip install --break-system-package pdm==2.20.1 + pdm config check_update false + pdm install + pdm start + - name: deploy + if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' + run: | + apt update && apt install -y rsync + mkdir -p ~/.ssh && touch ~/.ssh/id_ed25519 && chmod 600 ~/.ssh/id_ed25519 + echo ${{ secrets.DEPLOY_SSH_KEY }} | base64 -d > ~/.ssh/id_ed25519 + echo ${{ env.DEPLOY_SERVER }} ${{ env.DEPLOY_SERVER_KEY }} > ~/.ssh/known_hosts + rsync -avz --delete ./${{ env.DEPLOY_SOURCE || 'none' }}/ ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_SERVER }}:web/${{ env.DEPLOY_TARGET || 'none' }}/ diff --git a/data/home.yaml b/data/home.yaml new file mode 100644 index 0000000..2178183 --- /dev/null +++ b/data/home.yaml @@ -0,0 +1,17 @@ +title: Tianyi CodeLab +headline: Welcome to Tianyi CodeLab +links: + - text: AI 聊天室
ChatAI + link: https://ai.lty.name/ + - text: 云音乐
Music + link: https://music.lty.name/ + - text: 资源下载
Download + link: https://dl.lty.name/ + - text: 开源中心
DevOps + link: https://devops.lty.name/ + - text: 链上镌刻
Inscription + link: /inscription/profile +footer: | + © 2025 Tianyi CodeLab 在 CC BY-NC-SA 4.0 协议下提供 | 电子邮箱:me@lty.name +
+ 本站不面向欧盟用户提供服务。根据相关法律法规要求,我们可能收集您的 IP 地址和浏览器信息。「Vsinger」及「洛天依」是上海禾念科技有限公司的注册商标。图片按原利用规约提供,来源信息如下: 背景图片 101300012 (pixiv) by 菊花猹, 102153120 (pixiv) by 天姫神織, 101019411 (pixiv) by Ben_SY, 75554096 (pixiv) by TID, 「无题—创作欲」曲绘 by Cyarhy from twitter @cyarhy, 洛天依AI模型,洛天依公式服 by 上海禾念。 diff --git a/data/inscription/faq.yaml b/data/inscription/faq.yaml new file mode 100644 index 0000000..f3d5f0f --- /dev/null +++ b/data/inscription/faq.yaml @@ -0,0 +1,90 @@ +faq: + - question: 反诈提示 + alert: true + answer: | + 警告:lty.name 不是「洛天依」官方创建的网站,与「洛天依」的版权持有者「上海禾念」无关。本站系「洛天依」爱好者创建的公益性质网站,旨在使用区块链及其他去中心化网络技术,保存对「洛天依」重要的文本资料和其他信息。 + + lty.name 不会以任何方式、任何名义(包括但不限于保证金、手续费、初始费、友情赞助、自愿捐赠、成本价、会员费等),要求您支出任何形式的货币或财产(无论是法定货币还是加密货币)。请务必提高警惕,防范诈骗。 + + luotianyi.eth0x66CCffDE4E5941aD0593adE6e6Fe23e8CE1550C6 是专用于「」的地址。请勿向该地址转入任何形式的 ETH 链上货币,任何要求您这样做的都是诈骗。由于加密货币的匿名性,我们无法追踪和返还您的资产。 + + + - question: 什么是「链上镌刻」和区块链刻字? + answer: | + 简单的说,区块链刻字(Blockchain Inscription)就是把文字信息保存在区块链上。这种技术有两种特性: + + 永久性:由于区块链具有不可篡改的特性,镌刻的内容一旦写入,就会永久存在于区块链上,并有由每一个「区块链节点」保存。 + + 公开性:区块链的节点、数据、记录都是公开的,任何人都能轻松地访问、查看这些信息。 + + 「链上镌刻 — 永不停止的歌声」是 Tianyi CodeLab 提供的「区块链刻字」服务名称。正如项目名称「永不停止的歌声」所寓意的一样,我们希望将与洛天依有关的点点滴滴永久保存在区块链上,让这些信息永远不消失。 + + + - question: Tianyi CodeLab 使用什么技术进行「链上镌刻」? + answer: | + Tianyi CodeLab 在「以太坊 (Ethereum)」链上进行区块链刻字(Blockchain Inscription)。 + + 与其他商业区块链刻字项目不同的是,Tianyi CodeLab 使用 ENS 记录 进行「链上镌刻」,而非使用「交易记录」。 + + 相比其他技术,使用 ENS 记录成本更高,但是在 Etherscan 上可以直接解码为文字,而不需要手动计算编解码,因此更加直观、简便。 + + + - question: 区块链刻字成本如何?Tianyi CodeLab 进行「链上镌刻」有什么收费? + answer: | + 首先明确的是,Tianyi CodeLab 不会以任何方式、任何名义要求您支付任何形式的费用。区块链市场参与者鱼龙混杂,请务必提高警惕,防范诈骗。 + + 区块链刻字成本较高,一般在 10 到 30 美元之间。虽然「以太坊」本身对「区块链刻字」本身不收费,但是由于向区块链写入数据需要支付「燃气费(Gas Fee)」,因此需要一定的成本支出。 + + 在 Tianyi CodeLab,我们不会向用户收取任何费用。「链上镌刻」的成本由 Tianyi CodeLab 自行承担。若您的「链上镌刻」请求不符合要求,我们会拒绝或建议您修改,且永远不会因此向您收取任何费用。 + + + - question: 「链上镌刻」可以镌刻哪些内容? + answer: | + 我们鼓励您镌刻任何与「洛天依」有关的内容。包括但不限于: + + + + 但是,我们也对内容存在一定的限制,以下内容将不会被接受: + + + 由于区块链刻字成本高昂,我们不建议您镌刻大段内容。文本长度应以 100~250 字节为宜(采用 UTF-8 编码)。您可以使用一下规则进行简单但不准确的估算: + + + 由于技术限制,无法镌刻图片、视频、音频等非文本内容。 + + + - question: 如何使用 Tainyi CodeLab「链上镌刻」服务? + answer: | + 请将您想要镌刻的内容发送至 me@lty.name,并在邮件中包含以下内容: + + + + 您的镌刻请求将会被我们人工审核。根据上述的内容策略和当前的 Gas Fee 价格,我们可能会建议您修改或删减内容,或拒绝您的请求。 + + 一旦您的「链上镌刻」请求审核通过后,将择日安排「链上镌刻」操作。目前操作亦由人工完成,完成后您将收到包含本次「链上镌刻」详细信息的通知。 + + + - question: 「链上镌刻」的内容是公开的吗?我可以修改或删除「链上镌刻」内容吗? + answer: | + 由于区块链的透明性,任何写入区块链的数据都是完全公开、可被任何人访问和查看的,自然也包括「链上镌刻」的内容。您可以在 ENS 记录Etherscan 上查看 Tainyi CodeLab 过往的「链上镌刻」历史。 + + 请注意,由于区块链的特性,「链上镌刻」内容一旦写入,就无法修改或删除。我们建议您在镌刻前仔细检查内容,确保没有错误或不当内容。 diff --git a/html/home.html b/html/home.html new file mode 100644 index 0000000..b35ed6a --- /dev/null +++ b/html/home.html @@ -0,0 +1,70 @@ + + + + + + + + + + {{ title }} + + + + +
+
+
+

{{ headline | safe }}

+
+ +
+
+ + diff --git a/html/inscription/faq.html b/html/inscription/faq.html new file mode 100644 index 0000000..cd9ed3c --- /dev/null +++ b/html/inscription/faq.html @@ -0,0 +1,120 @@ + + + + + + 「永不停止的歌声」— 链上镌刻 | Luo Tianyi CodeLab + + + +
+ + {% for item in faq %} +
+
+ {{ item.question }} + Expand +
+
+ {{ item.answer | replace('\n\n', '

') | safe }} +
+
+ {% endfor %} + 返回首页 +
+ + + + diff --git a/html/inscription/profile.html b/html/inscription/profile.html new file mode 100644 index 0000000..2dca5c8 --- /dev/null +++ b/html/inscription/profile.html @@ -0,0 +1,221 @@ + + + + + + + + + Profile on Blockchain | Luo Tianyi CodeLab + + + +
+
+ Profile Avatar +
+

Luo Tianyi

+ luotianyi.eth +
+
+
+

华风夏韵·洛水天依 | 世界首位中文 VOCALOID 虚拟歌手,生日 2012 年 7 月 12 日,代表色 66CCFF。

+

性格内向安静,感性细腻。拥有「共鸣」的特殊能力,能够感受并且读出人类所藏的「心中的歌声」。

+
+
+
+ + 位置图标 + 位置 + + + 瓦纳海姆 + +
+
+ + 邮箱图标 + 电子邮箱 + + + me@lty.me + +
+
+ + 链接图标 + 网页 + + + lty.name + +
+
+ + 链接图标 + 网页 + + + luotianyi.eth.limo + +
+ +
+ +
+ 链上刻字 —「永不停止的歌声」FAQ +
+
+ + diff --git a/images/bg.jpg b/images/bg.jpg new file mode 100644 index 0000000..b872be4 --- /dev/null +++ b/images/bg.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b48f30d953e1a1e9bf2b69635c2cfa99799410077265bce4db538e2ab36f265 +size 899443 diff --git a/images/icon/bx-chevron-right.svg b/images/icon/bx-chevron-right.svg new file mode 100644 index 0000000..f5ee198 --- /dev/null +++ b/images/icon/bx-chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icon/bx-envelope.svg b/images/icon/bx-envelope.svg new file mode 100644 index 0000000..75d3638 --- /dev/null +++ b/images/icon/bx-envelope.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/images/icon/bx-globe.svg b/images/icon/bx-globe.svg new file mode 100644 index 0000000..ccfdc9c --- /dev/null +++ b/images/icon/bx-globe.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/images/icon/bx-link-alt.svg b/images/icon/bx-link-alt.svg new file mode 100644 index 0000000..d32bce2 --- /dev/null +++ b/images/icon/bx-link-alt.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/images/icon/bx-wallet-alt.svg b/images/icon/bx-wallet-alt.svg new file mode 100644 index 0000000..ee7e5c5 --- /dev/null +++ b/images/icon/bx-wallet-alt.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/images/profile-avatar.webp b/images/profile-avatar.webp new file mode 100644 index 0000000..4598219 --- /dev/null +++ b/images/profile-avatar.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bd2c6ba886da9fdeea258e0eaa504ffbe58c7426221532b7a5317be3ab5735f +size 31604 diff --git a/images/sq1.png b/images/sq1.png new file mode 100644 index 0000000..cfc465e --- /dev/null +++ b/images/sq1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23167b43ca1ea833e20ff2d0c31d090b64e3168664879149d2b53fcec05a84a7 +size 5646306 diff --git a/images/sq2.png b/images/sq2.png new file mode 100644 index 0000000..5f38afa --- /dev/null +++ b/images/sq2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23c818d73cf092b7eabbc486db4b9521c4c3bc407508799a68fe67a5f38a0ce5 +size 739854 diff --git a/images/sq3.png b/images/sq3.png new file mode 100644 index 0000000..d9b96d8 --- /dev/null +++ b/images/sq3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c7e5557b666f17cbab24bf969d03479cf001546dd1e58221840bb9f0f19f56f +size 4974505 diff --git a/images/sq4.png b/images/sq4.png new file mode 100644 index 0000000..6f61fa3 --- /dev/null +++ b/images/sq4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8de58dd7aecefcfd9881a001535cfd92300945734dd8dbe3895dddea71865fe +size 2536318 diff --git a/images/sq5.png b/images/sq5.png new file mode 100644 index 0000000..05b9fbf --- /dev/null +++ b/images/sq5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebbd586045c88668b4a14f67a30c0f0a5b0111c32f91bd9b15af23c423cb1cbe +size 1141963 diff --git a/images/sq6.png b/images/sq6.png new file mode 100644 index 0000000..5f4df85 --- /dev/null +++ b/images/sq6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5332627707d9fbf4488aa78adfa1b1ed3a3ba9e63e36f8c6cb4ae643477b0235 +size 400832 diff --git a/public/assets/VOCALOID_CHINA_ART_COLLECTIONS.pdf b/public/assets/VOCALOID_CHINA_ART_COLLECTIONS.pdf new file mode 100644 index 0000000..3b2b601 --- /dev/null +++ b/public/assets/VOCALOID_CHINA_ART_COLLECTIONS.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6235506ddc316b49f1d890c302f86acb5a093a697f2b750b75422957f0e44af +size 36675074 diff --git a/public/assets/style.css b/public/assets/style.css new file mode 100644 index 0000000..302ee4e --- /dev/null +++ b/public/assets/style.css @@ -0,0 +1,134 @@ +html { + min-width: 900px; +} + +body { + font-family: -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", Helvetica, Arial, sans-serif;; + font-size: 14px; + line-height: 1.5; + margin: 0; + background-repeat: no-repeat; + background-position: 80% top; + background-size: cover; + background-color: #071017; + min-width: 900px; +} + +code { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; +} + +.container { + width: 840px; + margin: 0 auto; +} + +.box { + width: 840px; + margin: auto; + margin-top: 100px; + display: flex; + flex-direction: column; +} + +.box header { + min-height: 100px; + width: 100%; + align-self: center; + align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + background-color: rgba(102, 204, 255); +} + +.box h1 { + font-size: 2em; + font-weight: 400; + margin: 0 2rem; + color: white; +} + +.square-container { + display: grid; + grid-template-columns: repeat(12, 50px); + grid-auto-rows: 50px; +} + +.square { + color: white; + font-size: 1.5em; + line-height: 1.3; + font-weight: 400; + display: flex; + justify-content: left; + align-items: flex-end; + padding: 10px; + width: 80px; + height: 80px; +} + +.square-code { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; +} + +.square-multiline { + font-size: 1rem; + line-height: 1; +} + +.square-img { + background-size: cover !important; +} + +.square-blue-1 { + background-color: #1d4a89; +} + +.square-blue-2 { + background-color: #3478c6; +} + +.square-blue-3 { + background-color: #66ccff; +} +.square-container a { + line-height: 1.2; + text-decoration: none; + cursor: pointer; +} + +.square-container a.square-blue-1:hover { + background: #2794c7; + font-size: 1.2em; + transition: .2s; +} + +.square-container a.square-blue-2:hover { + background: #619ef8; + font-size: 1.2em; + transition: .2s; +} + +.square-container a.square-blue-3:hover { + background: #46a4d3; + font-size: 1.2em; + transition: .2s; +} + +footer { + font-size: .75rem; + color: #f0f0f0; + padding-top: 50px; +} + +footer a { + color: #f0f0f0; + text-decoration: none; +} + +footer a:hover { + color: #f0f0f0; + text-decoration: underline; +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..705faac Binary files /dev/null and b/public/favicon.ico differ