ITADN
MDJoerg/oaap-reference
MDJoerg/oaap-reference · 文件
文件最后提交记录最后更新时间
README.md

oaap-reference

Open-source reference implementation of the OAAP specification (oaap-spec), targeting Debian + Docker (ADR-0004/0005 in oaap-root).

Current state: walking skeleton — the complete path from an empty machine to a logged-in admin, with every part still minimal:

./install.sh  →  gateway (Caddy)  →  portal (first-run wizard)  →  first admin login

Prerequisites (provider requirements)

  • Debian stable (Tier 1) or Ubuntu LTS (Tier 2), amd64 or arm64
  • Root access, ~2 GB free disk, port 80 free (configurable)
  • Docker Engine with the Compose v2 plugin — or let the installer install it for you: it asks when Docker is missing (non-interactive: OAAP_INSTALL_RUNTIME=1)

Install

sudo ./install.sh

The installer runs preflight checks (and changes nothing if they fail), offers the server-readiness fixes (keep the machine awake, pin the current IP address — each only with your consent), starts the core services, and prints the setup URL plus a one-time token. Open the URL, enter the token, create the first admin — done. Check the node anytime with oaap status; remove the platform again with sudo oaap uninstall (add --purge to also delete all data — useful on test hardware). Server readiness alone (also later, also on installed machines): sudo ./install.sh prepare.

Fresh Debian (netinstall)

A Debian netinstall where you set a root password ships without sudo and without git. Get from zero to installed like this (replace <user> with the user created during the Debian install):

su -                              # become root (root password)
apt install git
exit
git clone <repo-url> && cd oaap-reference
su -c "bash install.sh"           # installer offers to set up sudo for <user>

After the run, log out and in once — from then on sudo works and the printed oaap commands behave as documented.

Backup, restore & relocation (oaap.data.backup)

sudo oaap backup create [--to <path>]         # one archive with everything
sudo ./install.sh restore <backup.tar.gz>     # on a fresh, prepared machine

The backup is offline-consistent (app containers stop briefly) and contains all platform state, users, app instances, and their data — it must live outside the data directory and is secret-grade. Restore brings the same platform up on another machine without a setup wizard: existing users just sign in; app images are rebuilt or pulled from each instance's recorded package source (a local package directory must be copied to the same path on the new machine first). Moving house: back up, restore on the new box, verify via LAN, then switch DNS and port forwarding — and stop the old platform before it competes for the hostname.

Configuration via environment: OAAP_HTTP_PORT (default 80), OAAP_DATA_DIR (default /var/lib/oaap), OAAP_HOST (setup-URL host); non-interactive consents: OAAP_INSTALL_RUNTIME=1 (Docker), OAAP_SERVER_MODE=1 (keep-awake), OAAP_STATIC_IP=current|<ip>|skip (pin address), OAAP_ADMIN_SUDO=1 (sudo setup).

Layout

PathImplements
install.shoaap.core.host — bootstrap/prepare/restore modes
bin/oaapoaap.core.host — node CLI; oaap.data.backupbackup create
platform/Caddyfile, gateway serviceoaap.core.gateway — default deny, forward auth
platform/services/identityoaap.core.identity — built-in minimal provider
platform/services/portaloaap.core.portal — first-run wizard + dashboard stub

See docs/walking-skeleton.md for the mapping to the spec's conformance tests and known limitations.