Abundomy 1CoinH – Administrator Guide (this environment)

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.


0. In just one glance…

What价值
Public URLhttps://app.reikiwereld.eu
What is it?无服务器社区项目 (1CoinH) — 基于 IPFS 的静态 SPA 协议,采用 libp2p-relay 框架
SPA-hostedSysteem-Kubo (gateway 127.0.0.1:8080 ) via IPNS + DNSLink
Data SheetAbundomy-Relay (Helia + OrbitDB + FloodSub) operation 127.0.0.1:9091 (WS)
TLS-randnginx operator :443 , Let's Encrypt (auto-renew)
Publishing updatescd /home/patrick/Projecten/AbundomyWEB/abundomy-dapp && npm run deploy

Two layers of IPFS – don’t get them mixed up with each other.

  1. Systeem-Kubo ( ~/.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.
  2. App-Helia ( abundomy-dapp/.abundomy-relay/ ), involved in the relay process – responsible for managing live OrbitDB data (users, transactions). Along with Kubo.

1. Tools and versions

工具/设备版本/型号位置/地点角色/人物
Node.jsv22.22.1/usr/bin/node应用程序的运行时间 + 继电器
npm9.2.0/usr/bin/npmscripts/dependencies
Kubo (IPFS)0.35.0/usr/local/bin/ipfsSPA hosting + gateway + IPNS
nginx1.28.3/usr/sbin/nginxTLS termination + reverse proxy
certbot4.0/usr/bin/certbotLet's Encrypt 证书
铬( Snap)系统/体系/snap/bin/chromium浏览器测试(Playwright)

Versions are confirmed:

node -v; npm -v; /usr/local/bin/ipfs --version; nginx -v; certbot --version

2. Networking & DNS

Records:

NameType价值Goal
app.reikiwereld.euA(Current audience IPv4)这个子域指向了这台机器。
_dnslink.app.reikiwereld.euTXTdnslink=/ipns/<IPNS-sleutel>已发布的 SPA 中的绑定域名
reikiwereld.eu (apex) + * wildcardA136.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


3. 存储布局

Projectroot /home/patrick/Projecten/AbundomyWEB/

Pad重要性/关联性目录/内容
abundomy-dapp/kern无服务器 dapp(SPA、Relay、Ledger、迁移等)。
Abundomy/bronCopie of the old PHP/LAMP website (texts and internationalization settings are stored in json/ ).
abundomy-money-git/bron原始 1CoinH 环境的 Git 仓库。
1CoinH_24_05_2026.sqlbron-dataMySQL dump has been imported into OrbitDB via the relay system (encrypted).
Datastructure 1CoinH.pdf参考性/相关性文档化旧的 SQL 架构结构。
PLAN.mdreferenceComplete migration/construction plan (internals of the app, stages).
.claude.mdreference项目指导方针适用于 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/testsnode --test suite (29 tests).
poc/证明/证据two-peer-payment.mjs (Two-party payment).
dist-web/build-output关于 Kubo 的相关内容将被发布出来(包括 relay.json 的内容)。这些信息将被 npm run build:web 更新。
deploy.shdeploy-helper发布 SPA 到 Kubo 中(参见第 8 节)。
.abundomy-data/runtimeOrbitDB-data consists of data from previous local runs (~3 MB).
.abundomy-relay/运行时间(实时)
.abundomy-ipfs/runtimeApp-Helia supports blockstore storage for storing experimental results (~278 MB; not including the actual SPA hosting process).
.abundomy-poc/runtime数据来自 PoC。

System locations

Pad目录/内容
~/.ipfs/
/etc/systemd/system/ipfs.serviceKubo-daemon-unit ( User=patrick , ExecStart=/usr/local/bin/ipfs daemon ).
/etc/systemd/system/abundomy-relay.service继电器单元(参见第 4 节)。
/etc/nginx/sites-available/app.reikiwereld.eunginx-site (symbol link in sites-enabled/ ).
/etc/letsencrypt/live/app.reikiwereld.eu/TLS-cert ( fullchain.pem , privkey.pem ).
/var/www/html/用于 ACME 挑战的 webroot(证书更新)。

4. 服务管理(systemd)

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",...))

5. IPFS / Kubo management

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

6. nginx + TLS

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

7. Build the app, test it, and then launch it locally.

Always from the dapp map:

cd /home/patrick/Projecten/AbundomyWEB/abundomy-dapp
GoalCommando 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 printingnpm run scan:forks

mkdir -p /tmp/pwtest && cd /tmp/pwtest && npm init -y >/dev/null && \
  PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i playwright@latest


8. 部署工作流程——辅助工具 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):

  1. npm run build:web → verse dist-web/ .
  2. ipfs add -rQ --cid-version=1 dist-web + ipfs pin add → new CID.
  3. 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.


9. External verification (accessibility from outside)

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

10. MCP-servers (Claude Code)

已为该项目进行了配置(请参阅第 11 节):

Server范围/适用范围BronGoal
context7Project ( ../.mcp.json )https://mcp.context7.com/mcp (HTTP)library-/framework-docs
sequential-thinkingprojectnpx-pakket结构化推理
playwrightproject@playwright/mcp浏览器自动化
ipfslocalnpx --package=ipfs-mcp ipfs-mcp-enhancedTalk to the local Kubo ( 127.0.0.1:5001 )
filesystemlocal@modelcontextprotocol/server-filesystem已成功在项目地图中完成

查看概述及健康状况:

claude mcp list

11. Let’s continue with this project with Claude Code.

Documents/FilesContinuing 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.mdPublic/visited documents.

查看/编辑存储的文件:

ls -la ~/.claude/projects/-home-patrick-Projecten-AbundomyWEB/memory/