Frequently Asked Questions
Frequently asked questions about GEO Wiki Pro knowledge base platform, covering deployment, configuration, and usage
# Frequently Asked Questions
> Quick solutions for issues with GEO Wiki Pro
---
## 🔧 Installation & Deployment
### Q: How to install GEO Wiki Pro?
**A:** Two installation methods:
**Method 1: Docker Deployment (Recommended)**
```bash
# Clone the repository
git clone https://github.com/your-org/geo-wiki-pro.git
cd geo-wiki-pro
# Configure environment variables
cp .env.example .env
# Edit .env, set JWT_SECRET (at least 32 characters)
# Start services
docker-compose up -d
# Verify
curl http://localhost:3002/api/v1/health
```
**Method 2: Local Development**
```bash
# Install dependencies
npm install
# Start frontend and backend
npm run dev:full
```
### Q: How to deploy with Baota Panel?
**A:** See the [Baota Deployment Guide](/docs/baota-deployment) for complete Nginx configuration and troubleshooting.
### Q: Cannot access after Docker deployment?
**A:** Check the following:
1. **Port mapping**: Ensure ports are correctly mapped in `docker-compose.yml`
2. **.env configuration**: Confirm `JWT_SECRET` is set with length >= 32
3. **Check logs**: `docker compose logs api` for error messages
4. **Firewall**: Ensure the port is not blocked
---
## 🌐 Multilingual
### Q: How to add a new language?
**A:** Follow these steps:
1. Create translation file `src/i18n/{lang}.json`
2. Register the new language in `src/utils/i18n.js`
3. Create documents in `data/docs/{lang}/` directory
4. Use CLI: `geo doc create --file doc.md --lang {lang}`
### Q: How do different language versions sync?
**A:** GEO Wiki Pro uses cascade merging:
- Chinese (zh) is the base language
- When querying other languages, zh docs are read first, then overlaid by the target language
- `category`, `tags`, `author`, `sort` are shared fields, synced to all language versions
- `title`, `description`, `content` are independent, different per language
---
## 📝 Document Management
### Q: How to manage documents via CLI?
**A:** Use the `geo` command-line tool:
```bash
# Install
npm install -g geowiki-cli
# Login
geo login --url https://geowiki.pro
# Create document
geo doc create --file article.md --category support --sort 1
# Update document
geo doc update --slug my-doc --file updated.md --lang zh
# Delete document
geo doc delete --slug old-doc
# List documents
geo doc list --category support
```
### Q: What is a slug? How to choose one?
**A:** A slug is the URL identifier for a document. Rules:
- Only letters, numbers, hyphens, underscores allowed
- Maximum 200 characters
- Use lowercase English with hyphens
- Examples: `docker-deployment`, `faq`, `rest-api`
---
## 🎨 Markdown Extensions
### Q: What extended syntax is supported?
**A:** GEO Wiki Pro supports:
| Syntax | Description | Example |
|--------|-------------|---------|
| `:::video[desc](url)` | Video embed | `:::video[Demo](https://bilibili.com/...)` |
| `:::model[title](url)` | 3D model card | `:::model[Product Model](/media/model.step)` |
| `::: note` / `::: tip` / `::: warning` | Callouts | Info, tips, warnings |
| `::: faq` | FAQ block | Q&A format |
| `` | Image (alt becomes caption) | `` |
| `[name](url)` | File download card | `[Manual](/media/manual.pdf)` |
---
## 🔒 Security
### Q: How is the admin panel protected?
**A:** Multiple security layers:
1. **JWT Auth**: httpOnly cookie, 2-hour expiry
2. **CSRF Protection**: Double-submit cookie HMAC
3. **CSP Policy**: Helmet nonce-based Content Security Policy
4. **Rate Limiting**: 300/min global, 10/min for auth
5. **Password Encryption**: bcrypt storage
6. **Forced password change** on first login
---
## 📡 API
### Q: How does API authentication work?
**A:** JWT cookie authentication:
```bash
# Login to get token
curl -X POST "https://geowiki.pro/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "your-password"}' \
-c cookies.txt
# Use token for admin endpoints
curl "https://geowiki.pro/api/v1/admin/docs" \
-b cookies.txt
```
### Q: Do public endpoints require authentication?
**A:** No. These endpoints are fully public:
- `GET /api/v1/docs` — Document list
- `GET /api/v1/docs/:slug` — Single document
- `GET /api/v1/docs/search` — Search
- `GET /api/v1/categories` — Categories
- `GET /api/v1/tags` — Tags
- `GET /api/v1/config` — Site config
- `GET /api/v1/llms.txt` — AI crawler feed
- `GET /api/v1/geo/sitemap.xml` — XML sitemap
---
## 📚 More Resources
- [Quick Start](/docs/cli-quick-reference)
- [Docker Deployment](/docs/docker-deployment)
- [REST API Reference](/docs/rest-api)
- [Markdown Extensions](/docs/markdown-extensions)
---
*Last updated: 2026-06-06 | Version: v3.0.2*