Complete the first-time setup of your Mobazha store after deployment. This skill covers the Setup Wizard and onboarding flow for all store modes.
This skill handles sensitive credentials. The agent must ask for explicit user consent before setting passwords or making API calls to the store. Passwords and tokens must never be stored, logged, or displayed beyond the immediate setup step.
ModeHow You Got HereWhat Happens NextSaaSSigned up at app.mobazha.orgUI-guided wizard after first loginVPS StandaloneDeployed via standalone-setup skillSetup Wizard at https://<domain>/admin**NAT / Local (Docker)**Docker without public IPSetup Wizard at http://localhost/admin**NAT / Local (native)**Installed via native-install skillSetup Wizard at http://localhost:5102/admin
For a full comparison of access URLs, auth methods, and MCP connections across all modes, see references/access-modes.md.
For stores on the hosted platform at app.mobazha.org:
Go to app.mobazha.org and sign in with Google, GitHub, or email. No local password is needed.
After first login, the dashboard shows a guided wizard:
The wizard can be skipped and dismissed. It reappears until the store has products.
SaaS onboarding is UI-driven. Guide the user through the web interface rather than calling APIs directly. The SaaS platform uses OAuth authentication, which differs from the standalone API flow below.
After onboarding, to connect an AI agent for ongoing management, see the store-mcp-connect skill (SaaS section).
For self-hosted stores deployed on a VPS with Docker.
https://shop.example.com/adminhttp://<VPS-IP>/adminOn first visit, the system detects setup is incomplete and shows the Setup Wizard.
Check whether onboarding is complete:
text
GET /v1/system/setup
Response:
json
{
"setupComplete": false,
"completedSteps": {
"password": false,
"profile": false,
"preferences": false,
"payment": false
}
}
The first and most critical step. Until a password is set, the store is unsecured.
Via the UI: The wizard prompts for a password automatically.
Via API (AI agents can automate this):
text
POST /v1/system/setup
Content-Type: application/json
{
"password": "<strong-password>"
}
This endpoint is public (no auth required) and can only be called once. After the password is set, all endpoints require authentication.
Generate a strong password: at least 12 characters, mixed case, numbers, and symbols.
After setting the password, obtain a Bearer token for subsequent API calls:
text
POST /platform/v1/auth/tokens
Content-Type: application/json
{
"username": "admin",
"password": "<your-password>"
}
Use the returned token for all subsequent requests:
text
Authorization: Bearer <token>
Set your store's identity — name, description, visibility, and avatar.
Visibility options:
ValueMeaningpublicAppears in marketplace search and recommendations (default)unlistedHidden from search, accessible via direct link onlyprivateRequires authorization to accesstext
PUT /v1/profiles
Content-Type: application/json
Authorization: Bearer <token>
{
"name": "My Store",
"shortDescription": "A brief tagline for your store",
"about": "Longer description about what you sell and your story",
"location": "New York, US",
"visibility": "public",
"nsfw": false,
"vendor": true,
"avatarHashes": {
"small": "<image-hash>",
"medium": "<image-hash>"
},
"contactInfo": {
"website": "https://example.com",
"email": "store@example.com"
}
}
To upload an avatar image first:
text
POST /v1/media
Content-Type: application/json
Authorization: Bearer <token>
[{ "image": "<base64-image-data>", "filename": "avatar.jpg" }]
Set your country and display currency for pricing.
text
PUT /v1/settings
Content-Type: application/json
Authorization: Bearer <token>
{
"country": "US",
"localCurrency": "USD"
}
Common country/currency pairs:
CountryCodeCurrencyUnited StatesUSUSDUnited KingdomGBGBPEuropean UnionDE/FR/etc.EURJapanJPJPYChinaCNCNYCanadaCACADAustraliaAUAUD
After completing steps 1-3, GET /v1/system/setup will return setupComplete: true. The dashboard is now accessible.
Recommended next steps (tell the user about these):
/admin/settings/payments to enable crypto wallets and/or fiat providers (Stripe, PayPal)/admin/products/new to create a listing/admin/settings/storefront to adjust theme and brandingsubdomain-bot-config skillstore-mcp-connect skill to let your AI agent manage the store directlyFor stores running on your local machine (native binary or Docker without a public IP).
For local Docker (with Caddy proxy):
http://localhost/adminhttp://<your-local-ip>/admin (e.g., http://192.168.1.100/admin)For native binary install (default port 5102):
http://localhost:5102/adminhttp://<your-local-ip>:5102/adminThe Setup Wizard is identical to VPS Standalone mode (Steps 1-4 above). The only differences:
localhost or LAN IPhttp://localhost:5102/platform/v1/mcp/ssetor-browsing skill for .onion accessThe password was already set. Use your existing credentials to obtain a Bearer token and proceed with profile and settings.
There is currently no reset-password CLI command. To reset the admin password, delete the auth database and restart the node — this will trigger the Setup Wizard again for password creation:
For Docker standalone stores:
bash
cd /opt/mobazha
docker compose exec mobazha rm -f /data/datastore/mainnet.db
docker compose restart mobazha
For native binary:
bash
rm -f ~/.mobazha/datastore/mainnet.db
mobazha service stop && mobazha service start
Warning: This resets the admin password only. Store data (products, orders) is preserved, but you will need to re-set your admin password via the Setup Wizard.
Verify all required steps via GET /v1/system/setup. The profile step requires a non-empty store name. Check that the profile was saved successfully.
localhost (check with ip addr or ifconfig)mobazha service status or docker compose ps)