This is a technical guide for the administrator of this machine ( SER5 ). It describes all the services, tools, file layouts, commands, and maintenance procedures related to the live environment. You can find more information at https://app.reikiwereld.eu.
Convention: A commando is complete and ready for use. If a commando contains a derived value (such as key ID, CID, peer ID, IP), then the command to retrieve that value must be executed first. After that, the command that uses that value can be executed, with an example value provided as a reference.
| What | 价值 |
|---|---|
| Public URL | https://app.reikiwereld.eu |
| What is it? | 无服务器社区项目 (1CoinH) — 基于 IPFS 的静态 SPA 协议,采用 libp2p-relay 框架 |
| SPA-hosted | Systeem-Kubo (gateway 127.0.0.1:8080 ) via IPNS + DNSLink |
| Data Sheet | Abundomy-Relay (Helia + OrbitDB + FloodSub) operation 127.0.0.1:9091 (WS) |
| TLS-rand | nginx operator :443 , Let's Encrypt (auto-renew) |
| Publishing updates | cd /home/patrick/Projecten/AbundomyWEB/abundomy-dapp && npm run deploy |
Two layers of IPFS – don’t get them mixed up with each other.
~/.ipfs ), a daemon ( ipfs.service ) – it acts as the gateway for handling static SPA requests, and also serves as the interface through which nginx operates.abundomy-dapp/.abundomy-relay/ ), involved in the relay process – responsible for managing live OrbitDB data (users, transactions). Along with Kubo.| 工具/设备 | 版本/型号 | 位置/地点 | 角色/人物 |
|---|---|---|---|
| Node.js | v22.22.1 | /usr/bin/node | 应用程序的运行时间 + 继电器 |
| npm | 9.2.0 | /usr/bin/npm | scripts/dependencies |
| Kubo (IPFS) | 0.35.0 | /usr/local/bin/ipfs | SPA hosting + gateway + IPNS |
| nginx | 1.28.3 | /usr/sbin/nginx | TLS termination + reverse proxy |
| certbot | 4.0 | /usr/bin/certbot | Let's Encrypt 证书 |
| 铬( Snap) | 系统/体系 | /snap/bin/chromium | 浏览器测试(Playwright) |
Versions are confirmed:
node -v; npm -v; /usr/local/bin/ipfs --version; nginx -v; certbot --version
192.168.10.10 · router/gateway: 192.168.10.1ns1/ns3.dn-s.nl , ns2.dn-s.be , ns4.dn-s.org ).Records:
| Name | Type | 价值 | Goal |
|---|---|---|---|
app.reikiwereld.eu | A | (Current audience IPv4) | 这个子域指向了这台机器。 |
_dnslink.app.reikiwereld.eu | TXT | dnslink=/ipns/<IPNS-sleutel> | 已发布的 SPA 中的绑定域名 |
reikiwereld.eu (apex) + * wildcard | A | 136.144.237.141 | 现有的 TransIP 站点(不合适的放置方式) |
Searching for the current audience's IPv4 address (the A-record value that must match).
curl -4 -s https://api.ipify.org; echo
# bijv. → 94.209.97.5
Check what the current A-record status is (authoritative information):
dig +short @ns1.dn-s.nl app.reikiwereld.eu A
# moet gelijk zijn aan de uitkomst hierboven; zo niet → A-record bij dn-s.nl bijwerken
/home/patrick/Projecten/AbundomyWEB/| Pad | 重要性/关联性 | 目录/内容 |
|---|---|---|
abundomy-dapp/ | kern | 无服务器 dapp(SPA、Relay、Ledger、迁移等)。 |
Abundomy/ | bron | Copie of the old PHP/LAMP website (texts and internationalization settings are stored in json/ ). |
abundomy-money-git/ | bron | 原始 1CoinH 环境的 Git 仓库。 |
1CoinH_24_05_2026.sql | bron-data | MySQL dump has been imported into OrbitDB via the relay system (encrypted). |
Datastructure 1CoinH.pdf | 参考性/相关性 | 文档化旧的 SQL 架构结构。 |
PLAN.md | reference | Complete migration/construction plan (internals of the app, stages). |
.claude.md | reference | 项目指导方针适用于 Claude Code。 |
docs/ | 文档编制/说明 | 这份文件以及相关的公众概述。 |
kubo/ | 青铜 | Kubo-broncode/installatie – not the active repository; it’s ~/.ipfs . |
abundomy-dapp/| Pad | 重要性/关联性 | 目录/内容 |
|---|---|---|
src/ | Kern-Logica (Portable Version) | ledger.mjs (余额/衰减/UBI), payments.mjs , identity.mjs (SSI/索赔处理), crypto.mjs (个人资料管理), stores.mjs (OrbitDB 存储), orbit.mjs / ipfs.mjs (Helia/OrbitDB 设置), fork-detection.mjs , export.mjs (可自我验证的链条), lists.mjs , ipns.mjs , publish.mjs , config.mjs , node-paths.mjs . |
web/ | 前端 + 中继器 | |
migration/ | 数据导入 | parse-sql.mjs (mysqldump-parser), migrate.mjs , import.mjs . |
test/ | tests | node --test suite (29 tests). |
poc/ | 证明/证据 | two-peer-payment.mjs (Two-party payment). |
dist-web/ | build-output | 关于 Kubo 的相关内容将被发布出来(包括 relay.json 的内容)。这些信息将被 npm run build:web 更新。 |
deploy.sh | deploy-helper | 发布 SPA 到 Kubo 中(参见第 8 节)。 |
.abundomy-data/ | runtime | OrbitDB-data consists of data from previous local runs (~3 MB). |
.abundomy-relay/ | 运行时间(实时) | |
.abundomy-ipfs/ | runtime | App-Helia supports blockstore storage for storing experimental results (~278 MB; not including the actual SPA hosting process). |
.abundomy-poc/ | runtime | 数据来自 PoC。 |
| Pad | 目录/内容 |
|---|---|
~/.ipfs/ | |
/etc/systemd/system/ipfs.service | Kubo-daemon-unit ( User=patrick , ExecStart=/usr/local/bin/ipfs daemon ). |
/etc/systemd/system/abundomy-relay.service | 继电器单元(参见第 4 节)。 |
/etc/nginx/sites-available/app.reikiwereld.eu | nginx-site (symbol link in sites-enabled/ ). |
/etc/letsencrypt/live/app.reikiwereld.eu/ | TLS-cert ( fullchain.pem , privkey.pem ). |
/var/www/html/ | 用于 ACME 挑战的 webroot(证书更新)。 |
Two services are responsible for keeping everything running; both automatically restart when necessary, and start up again when the boat is in motion.
Both items are currently being reviewed/checked.
systemctl status ipfs.service abundomy-relay.service --no-pager
继电器(数据层)管理:
sudo systemctl restart abundomy-relay.service # herstarten
sudo systemctl stop abundomy-relay.service # stoppen
sudo systemctl start abundomy-relay.service # starten
journalctl -u abundomy-relay.service -n 50 --no-pager # laatste logregels
journalctl -u abundomy-relay.service -f # live meekijken
Kubo (hosting/gateway management system):
sudo systemctl restart ipfs.service
journalctl -u ipfs.service -n 50 --no-pager
sudo systemctl daemon-reload && sudo systemctl restart abundomy-relay.service
Check that the relay is functioning properly:
ss -tlnp | grep ':9091'
# verwacht: LISTEN ... 127.0.0.1:9091 ... users:(("node",...))
ipfs key list -l | awk '$2=="abundomy-app"{print $1}'
# bijv. → k51qzi5uqu5diadbqiyg2s4gtq870dyoeop7u8nhw0pltt2ophutljl8qjzwc6
ipfs name resolve /ipns/k51qzi5uqu5diadbqiyg2s4gtq870dyoeop7u8nhw0pltt2ophutljl8qjzwc6
# bijv. → /ipfs/bafybeiaciqrh4ieogbqhjkxna6cw44mg2iovx6ngpgohxxyths2cdu2auy
ipfs pin ls --type=recursive bafybeiaciqrh4ieogbqhjkxna6cw44mg2iovx6ngpgohxxyths2cdu2auy
Please check the DNSLink-TXT settings (they should point to the same IP address).
dig +short TXT _dnslink.app.reikiwereld.eu
# verwacht: "dnslink=/ipns/<IPNS-sleutel>"
Local testing to ensure that the gateway serves the website via DNSLink:
curl --resolve app.reikiwereld.eu:443:127.0.0.1 -sS -o /dev/null -w '%{http_code}\n' https://app.reikiwereld.eu/
# verwacht: 200
ipfs repo gc
Testing the configuration and reloading it after any changes.
sudo nginx -t && sudo systemctl reload nginx
Check the certification status:
sudo certbot certificates
Auto-renewal testing (simulation; no changes made):
sudo certbot renew --dry-run
sudo certbot certonly --webroot -w /var/www/html -d app.reikiwereld.eu \
--cert-name app.reikiwereld.eu --force-renewal -n \
--agree-tos -m [email protected]
sudo systemctl reload nginx
Always from the dapp map:
cd /home/patrick/Projecten/AbundomyWEB/abundomy-dapp
| Goal | Commando unit |
|---|---|
| 安装依赖项(她) | npm install |
| 测试正在进行中(预计结果为 29/29) | npm test |
建造 SPA → dist-web/ | npm run build:web |
| Relay starts (development) | npm run relay |
| SPA in dev-server (Vite) | npm run dev |
| 双节点支付机制(PoC) | npm run poc |
| Double-sided printing | npm run scan:forks |
mkdir -p /tmp/pwtest && cd /tmp/pwtest && npm init -y >/dev/null && \
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i playwright@latest
deploy.sh ⭐One commando:
cd /home/patrick/Projecten/AbundomyWEB/abundomy-dapp && npm run deploy
(相当于: bash deploy.sh 。如果你已经完成了构建工作,那么就可以直接执行“overslaan”操作: bash deploy.sh --no-build 。)
What the script does (5 steps):
npm run build:web → verse dist-web/ .ipfs add -rQ --cid-version=1 dist-web + ipfs pin add → new CID.ipfs name publish --key=abundomy-app /ipfs/<CID> → IPNS 指的是新的 CID 地址(DNSLink/DNS 仍然保持不变)。
ABUNDOMY_DOMAIN=app.reikiwereld.eu ABUNDOMY_IPNS_KEY=abundomy-app npm run deploy
python3 -c "import json;print(json.load(open('/home/patrick/Projecten/AbundomyWEB/abundomy-dapp/web/public/relay.json'))['addr'].split('/p2p/')[-1])"
# bijv. → 12D3KooWEAUDdfvNWdqTokQqV64X1gMix56Y35EWAMjKWGB9HjwQ
# 1) live CID opzoeken
ipfs name resolve /ipns/k51qzi5uqu5diadbqiyg2s4gtq870dyoeop7u8nhw0pltt2ophutljl8qjzwc6
# bijv. → /ipfs/bafybeiaciqrh4ieogbqhjkxna6cw44mg2iovx6ngpgohxxyths2cdu2auy
# 2) site ophalen via de publieke route (lokaal getest)
curl --resolve app.reikiwereld.eu:443:127.0.0.1 -sS -o /dev/null -w '%{http_code}\n' https://app.reikiwereld.eu/
Note: After the release, the gateway may still cache the old IPNS resolution data. This may cause a slight delay in updating the information for visitors.
Do you access the website from clients outside your network? (HTTP status via an external node):
ID=$(curl -s -H "Accept: application/json" "https://check-host.net/check-http?host=https://app.reikiwereld.eu/&max_nodes=4" | python3 -c "import sys,json;print(json.load(sys.stdin)['request_id'])")
# kort wachten, dan resultaat ophalen (vul het ID van hierboven in):
curl -s "https://check-host.net/check-result/$ID" | python3 -m json.tool
ID=$(curl -s -H "Accept: application/json" "https://check-host.net/check-tcp?host=app.reikiwereld.eu:443&max_nodes=4" | python3 -c "import sys,json;print(json.load(sys.stdin)['request_id'])")
curl -s "https://check-host.net/check-result/$ID" | python3 -m json.tool
已为该项目进行了配置(请参阅第 11 节):
| Server | 范围/适用范围 | Bron | Goal |
|---|---|---|---|
context7 | Project ( ../.mcp.json ) | https://mcp.context7.com/mcp (HTTP) | library-/framework-docs |
sequential-thinking | project | npx-pakket | 结构化推理 |
playwright | project | @playwright/mcp | 浏览器自动化 |
ipfs | local | npx --package=ipfs-mcp ipfs-mcp-enhanced | Talk to the local Kubo ( 127.0.0.1:5001 ) |
filesystem | local | @modelcontextprotocol/server-filesystem | 已成功在项目地图中完成 |
查看概述及健康状况:
claude mcp list
| Documents/Files | Continuing with the process |
|---|---|
/home/patrick/Projecten/AbundomyWEB/.claude.md | |
/home/patrick/Projecten/AbundomyWEB/PLAN.md | |
~/.claude/projects/-home-patrick-Projecten-AbundomyWEB/memory/MEMORY.md | |
~/.claude/projects/-home-patrick-Projecten-AbundomyWEB/memory/abundomy-deploy-plan.md | |
docs/Admin-Runbook.md (best file ever) | 操作指南。 |
docs/Abundomy-IPFS-Overview.md | Public/visited documents. |
查看/编辑存储的文件:
ls -la ~/.claude/projects/-home-patrick-Projecten-AbundomyWEB/memory/