mirror of
https://github.com/MarekWo/mc-webui.git
synced 2026-04-30 18:42:29 +02:00
Major documentation update with new data structure: Breaking Changes: - Data storage moved from host directories to ./data/ inside project - MC_CONFIG_DIR default changed: /root/.config/meshcore → ./data/meshcore - MC_ARCHIVE_DIR default changed: /mnt/archive/meshcore → ./data/archive - Requires migration for existing installations (see MIGRATION.md) Documentation: - Add MIGRATION.md - step-by-step guide for existing users - Add FRESH_INSTALL.md - complete installation guide for new users - Update README.md - new Configuration section with ./data/ structure - Update .env.example - placeholders instead of real values, new defaults - Update .claude/CLAUDE.md - updated environment variables documentation - Change serial device detection from 'ls -l' to 'ls' (cleaner output) Code Cleanup: - Remove deprecated MC_REFRESH_INTERVAL variable (unused since intelligent refresh) - Remove MC_REFRESH_INTERVAL from app/config.py - Remove refresh_interval from app/routes/views.py (5 functions) - Remove refresh_interval from app/routes/api.py - Remove refreshInterval from app/templates/index.html - Remove refreshInterval from app/templates/dm.html - Remove MC_REFRESH_INTERVAL from docker-compose.yml Configuration: - Update .gitignore - exclude data/ and docs/github-discussion-*.md - Serial port: use /dev/serial/by-id/[YOUR_DEVICE_ID] placeholder - Device name: use [YOUR_DEVICE_NAME] placeholder Benefits: - All project data in one location (easier backups) - Better portability (no host dependencies) - Cleaner codebase (removed unused variables) - Comprehensive documentation for migration and fresh install 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
370 lines
9.7 KiB
Markdown
370 lines
9.7 KiB
Markdown
# Migration Guide - Moving Data to Project Directory
|
|
|
|
This guide helps you migrate from the old configuration (data stored outside project) to the new configuration (all data in `./data/` inside project).
|
|
|
|
## Who Needs This Guide?
|
|
|
|
If you installed mc-webui **before 2025-12-29** and your `.env` file contains **absolute paths** (starting with `/`) like these examples:
|
|
```bash
|
|
MC_CONFIG_DIR=/home/marek/.config/meshcore
|
|
MC_CONFIG_DIR=/opt/meshcore
|
|
MC_CONFIG_DIR=/var/lib/meshcore
|
|
# ... or any other absolute path outside the project directory
|
|
```
|
|
|
|
Then you should follow this migration guide to move your data into the project directory.
|
|
|
|
**You do NOT need this guide if:**
|
|
- Your `.env` already has `MC_CONFIG_DIR=./data/meshcore` (you're already using the new structure)
|
|
- You just installed mc-webui for the first time
|
|
|
|
## Why Migrate?
|
|
|
|
**Benefits of new structure:**
|
|
- ✅ All project data in one place (easier backups)
|
|
- ✅ No dependency on host directories
|
|
- ✅ Better isolation and portability
|
|
- ✅ Simpler setup for new deployments
|
|
|
|
## Before You Start
|
|
|
|
**⚠️ IMPORTANT: Check your current paths!**
|
|
|
|
Before proceeding, you need to know where YOUR data is currently stored. Run this command to check your current configuration:
|
|
|
|
```bash
|
|
cd ~/mc-webui
|
|
grep -E "^MC_CONFIG_DIR|^MC_ARCHIVE_DIR" .env
|
|
```
|
|
|
|
**Example output:**
|
|
```
|
|
MC_CONFIG_DIR=/home/marek/.config/meshcore
|
|
MC_ARCHIVE_DIR=/home/marek/.config/meshcore/archive
|
|
```
|
|
|
|
**Write down these paths!** You will need them in the following steps. Replace any example paths shown below with YOUR actual paths from the .env file.
|
|
|
|
## Migration Steps
|
|
|
|
### Step 1: Stop the Application
|
|
|
|
```bash
|
|
cd ~/mc-webui
|
|
docker compose down
|
|
```
|
|
|
|
### Step 2: Backup Your Current Data
|
|
|
|
**Important:** Always backup before migration!
|
|
|
|
**Replace the paths below with YOUR paths from the previous check!**
|
|
|
|
```bash
|
|
# IMPORTANT: Replace /home/marek/.config/meshcore with YOUR MC_CONFIG_DIR path!
|
|
# Example command (adjust paths to match your .env):
|
|
tar -czf ~/mc-webui-backup-$(date +%Y%m%d).tar.gz \
|
|
/home/marek/.config/meshcore/*.msgs \
|
|
/home/marek/.config/meshcore/*.adverts.jsonl \
|
|
/home/marek/.config/meshcore/*_dm_sent.jsonl \
|
|
/home/marek/.config/meshcore/.webui_settings.json \
|
|
/home/marek/.config/meshcore/archive/
|
|
```
|
|
|
|
**If your MC_CONFIG_DIR is different, use it instead!** For example:
|
|
- If `MC_CONFIG_DIR=/opt/meshcore`, use `/opt/meshcore/*.msgs` etc.
|
|
- If `MC_CONFIG_DIR=/var/lib/meshcore`, use `/var/lib/meshcore/*.msgs` etc.
|
|
|
|
Verify backup was created:
|
|
```bash
|
|
ls -lh ~/mc-webui-backup-*.tar.gz
|
|
```
|
|
|
|
### Step 3: Create New Data Directory Structure
|
|
|
|
```bash
|
|
cd ~/mc-webui
|
|
|
|
# Create new directory structure
|
|
mkdir -p data/meshcore
|
|
mkdir -p data/archive
|
|
```
|
|
|
|
### Step 4: Copy Existing Data
|
|
|
|
**⚠️ IMPORTANT: Use YOUR paths from the "Before You Start" check!**
|
|
|
|
The commands below use `/home/marek/.config/meshcore` as an example. **Replace it with your actual MC_CONFIG_DIR path!**
|
|
|
|
```bash
|
|
# Copy meshcore configuration files
|
|
# Replace /home/marek/.config/meshcore with YOUR MC_CONFIG_DIR path!
|
|
cp /home/marek/.config/meshcore/*.msgs data/meshcore/ 2>/dev/null || true
|
|
cp /home/marek/.config/meshcore/*.adverts.jsonl data/meshcore/ 2>/dev/null || true
|
|
cp /home/marek/.config/meshcore/*_dm_sent.jsonl data/meshcore/ 2>/dev/null || true
|
|
cp /home/marek/.config/meshcore/.webui_settings.json data/meshcore/ 2>/dev/null || true
|
|
|
|
# Copy archive files
|
|
# Replace /home/marek/.config/meshcore/archive with YOUR MC_ARCHIVE_DIR path!
|
|
cp -r /home/marek/.config/meshcore/archive/* data/archive/ 2>/dev/null || true
|
|
```
|
|
|
|
**Alternative: Use variables for easier path substitution**
|
|
|
|
```bash
|
|
# Set your paths from .env (replace with YOUR actual paths!)
|
|
OLD_CONFIG_DIR="/home/marek/.config/meshcore"
|
|
OLD_ARCHIVE_DIR="/home/marek/.config/meshcore/archive"
|
|
|
|
# Copy files using variables
|
|
cp $OLD_CONFIG_DIR/*.msgs data/meshcore/ 2>/dev/null || true
|
|
cp $OLD_CONFIG_DIR/*.adverts.jsonl data/meshcore/ 2>/dev/null || true
|
|
cp $OLD_CONFIG_DIR/*_dm_sent.jsonl data/meshcore/ 2>/dev/null || true
|
|
cp $OLD_CONFIG_DIR/.webui_settings.json data/meshcore/ 2>/dev/null || true
|
|
cp -r $OLD_ARCHIVE_DIR/* data/archive/ 2>/dev/null || true
|
|
```
|
|
|
|
Verify files were copied:
|
|
```bash
|
|
ls -la data/meshcore/
|
|
ls -la data/archive/
|
|
```
|
|
|
|
### Step 5: Update .env File
|
|
|
|
**Goal:** Change your old paths to new project-relative paths.
|
|
|
|
**Old configuration (your current paths):**
|
|
```bash
|
|
MC_CONFIG_DIR=/home/marek/.config/meshcore # Example - yours may be different!
|
|
MC_ARCHIVE_DIR=/home/marek/.config/meshcore/archive # Example - yours may be different!
|
|
```
|
|
|
|
**New configuration (same for everyone):**
|
|
```bash
|
|
MC_CONFIG_DIR=./data/meshcore
|
|
MC_ARCHIVE_DIR=./data/archive
|
|
```
|
|
|
|
**Option A: Automatic update with sed (recommended)**
|
|
|
|
This will work regardless of your old paths:
|
|
|
|
```bash
|
|
cd ~/mc-webui
|
|
|
|
# Backup .env
|
|
cp .env .env.backup
|
|
|
|
# Update MC_CONFIG_DIR (replaces any old path with new one)
|
|
sed -i 's|MC_CONFIG_DIR=.*|MC_CONFIG_DIR=./data/meshcore|' .env
|
|
|
|
# Update MC_ARCHIVE_DIR (replaces any old path with new one)
|
|
sed -i 's|MC_ARCHIVE_DIR=.*|MC_ARCHIVE_DIR=./data/archive|' .env
|
|
```
|
|
|
|
**Option B: Manual edit**
|
|
|
|
```bash
|
|
nano .env
|
|
# Change MC_CONFIG_DIR to: ./data/meshcore
|
|
# Change MC_ARCHIVE_DIR to: ./data/archive
|
|
# Save and exit (Ctrl+O, Enter, Ctrl+X)
|
|
```
|
|
|
|
**Verify changes (IMPORTANT!):**
|
|
```bash
|
|
grep -E "MC_CONFIG_DIR|MC_ARCHIVE_DIR" .env
|
|
```
|
|
|
|
**Expected output (should be the same for everyone):**
|
|
```
|
|
MC_CONFIG_DIR=./data/meshcore
|
|
MC_ARCHIVE_DIR=./data/archive
|
|
```
|
|
|
|
If you see anything different, fix it before proceeding!
|
|
|
|
### Step 6: Set Correct Permissions
|
|
|
|
```bash
|
|
# Ensure Docker can read/write the data directory
|
|
chmod -R 755 data/
|
|
```
|
|
|
|
### Step 7: Restart Application
|
|
|
|
```bash
|
|
cd ~/mc-webui
|
|
docker compose up -d --build
|
|
```
|
|
|
|
### Step 8: Verify Migration
|
|
|
|
Check that the application is running correctly:
|
|
|
|
```bash
|
|
# Check container status
|
|
docker compose ps
|
|
|
|
# Check logs for errors
|
|
docker compose logs -f mc-webui
|
|
docker compose logs -f meshcore-bridge
|
|
|
|
# Verify data files are accessible in containers
|
|
docker compose exec mc-webui ls -la /root/.config/meshcore/
|
|
docker compose exec mc-webui ls -la /root/.archive/meshcore/
|
|
```
|
|
|
|
**Test the web interface:**
|
|
1. Open http://localhost:5000 (or your server IP)
|
|
2. Verify that old messages are visible
|
|
3. Send a test message to confirm everything works
|
|
4. Check if your contact list is preserved
|
|
5. Verify archived messages are accessible (if you had any)
|
|
|
|
### Step 9: Cleanup (Optional)
|
|
|
|
**⚠️ DANGER ZONE - Only after confirming everything works!**
|
|
|
|
If you're confident the migration was successful and have tested the application for several days, you can remove old data.
|
|
|
|
**⚠️ USE YOUR OLD PATH - not the example below!**
|
|
|
|
```bash
|
|
# CAREFUL! This deletes old data permanently
|
|
# Only run this after verifying the new setup works!
|
|
|
|
# Remove old meshcore data
|
|
# Replace /home/marek/.config/meshcore with YOUR old MC_CONFIG_DIR path!
|
|
rm -rf /home/marek/.config/meshcore/
|
|
|
|
# Alternative: Use the path from your .env.backup
|
|
OLD_PATH=$(grep "^MC_CONFIG_DIR=" .env.backup | cut -d'=' -f2)
|
|
echo "About to delete: $OLD_PATH"
|
|
# Verify the path is correct, then uncomment the line below:
|
|
# rm -rf "$OLD_PATH"
|
|
|
|
# Remove backup after a few days of successful operation
|
|
# rm ~/mc-webui-backup-*.tar.gz
|
|
```
|
|
|
|
**Recommendations:**
|
|
- Keep the backup for at least **one week** before deleting it
|
|
- Test all features before cleanup (messaging, channels, DM, contacts, archives)
|
|
- Consider keeping old data as additional backup for a month
|
|
|
|
## Troubleshooting
|
|
|
|
### Issue: No messages visible after migration
|
|
|
|
**Solution:**
|
|
1. Check if files were copied correctly:
|
|
```bash
|
|
ls -la data/meshcore/
|
|
```
|
|
2. Verify the `.msgs` file exists and has content:
|
|
```bash
|
|
cat data/meshcore/MarWoj.msgs # Replace MarWoj with your device name
|
|
```
|
|
3. Check container logs for errors:
|
|
```bash
|
|
docker compose logs mc-webui | grep -i error
|
|
```
|
|
|
|
### Issue: Permission denied errors
|
|
|
|
**Solution:**
|
|
```bash
|
|
# Fix permissions
|
|
sudo chown -R $USER:$USER data/
|
|
chmod -R 755 data/
|
|
```
|
|
|
|
### Issue: Archives not showing
|
|
|
|
**Solution:**
|
|
1. Check if archive files exist:
|
|
```bash
|
|
ls -la data/archive/
|
|
```
|
|
2. Verify MC_ARCHIVE_DIR in .env:
|
|
```bash
|
|
grep MC_ARCHIVE_DIR .env
|
|
```
|
|
3. Restart the application:
|
|
```bash
|
|
docker compose restart
|
|
```
|
|
|
|
### Issue: Contact settings lost
|
|
|
|
**Solution:**
|
|
1. Check if `.webui_settings.json` was copied:
|
|
```bash
|
|
cat data/meshcore/.webui_settings.json
|
|
```
|
|
2. If missing, recreate it manually:
|
|
```bash
|
|
echo '{"manual_add_contacts": false}' > data/meshcore/.webui_settings.json
|
|
```
|
|
3. Restart bridge:
|
|
```bash
|
|
docker compose restart meshcore-bridge
|
|
```
|
|
|
|
## Rollback Plan
|
|
|
|
If migration fails and you need to rollback:
|
|
|
|
```bash
|
|
# Stop containers
|
|
docker compose down
|
|
|
|
# Restore .env from backup
|
|
cd ~/mc-webui
|
|
cp .env.backup .env
|
|
|
|
# Remove new data directory (optional)
|
|
rm -rf data/
|
|
|
|
# Restore from backup
|
|
cd ~
|
|
tar -xzf mc-webui-backup-*.tar.gz
|
|
|
|
# Start with old configuration
|
|
cd ~/mc-webui
|
|
docker compose up -d
|
|
```
|
|
|
|
## Getting Help
|
|
|
|
If you encounter issues during migration:
|
|
|
|
1. Check the logs:
|
|
```bash
|
|
docker compose logs -f
|
|
```
|
|
|
|
2. Verify your configuration:
|
|
```bash
|
|
cat .env | grep -E "MC_CONFIG_DIR|MC_ARCHIVE_DIR|MC_DEVICE_NAME"
|
|
```
|
|
|
|
3. Report the issue on GitHub:
|
|
- Repository: https://github.com/MarekWo/mc-webui
|
|
- Include: error logs, .env configuration (remove sensitive data), system info
|
|
|
|
## Summary
|
|
|
|
After successful migration:
|
|
- ✅ All data is in `./data/` directory inside project
|
|
- ✅ Configuration uses relative paths (`./data/meshcore`, `./data/archive`)
|
|
- ✅ Backups are simpler (just backup the `data/` directory)
|
|
- ✅ Project is more portable (can move entire directory to another server)
|
|
|
|
**Next steps:**
|
|
- Keep backup for at least one week
|
|
- Test all features (messaging, channels, DM, contacts, archives)
|
|
- Consider setting up automated backups of `./data/` directory
|