66 lines
2.6 KiB
Markdown
66 lines
2.6 KiB
Markdown
# Misskey Bulk Export & Backup Tool
|
|
|
|
This tool is designed to perform a comprehensive, server-side backup of all local users on a Misskey instance. It utilizes both the Misskey Admin API and direct PostgreSQL database access to export data that is typically difficult to retrieve through standard means.
|
|
|
|
## Features
|
|
|
|
- **Full User List Export**: Iterates through every local user on the instance.
|
|
- **Notes & Posts**: Exports all notes (public, home, followers, and private), including replies and renotes, to `posts.csv`.
|
|
- **Drive Backup**:
|
|
- Reconstructs the original folder hierarchy from the user's Drive.
|
|
- Preserves original file extensions by guessing from MIME types or using API metadata.
|
|
- Automatically handles filename collisions within the same folder.
|
|
- **Database-Direct Export**:
|
|
- **User Lists**: Exports all private and public user lists to `lists.csv`.
|
|
- **Antennas**: Exports all antenna configurations to `antennas.csv`.
|
|
- **Handle Resolution**: Replaces internal Misskey IDs with full `@username@host` handles in all CSV exports (posts, lists, antennas) for better readability.
|
|
- **Profile Data**: Exports user bio, display name, and custom profile fields to `user-data.txt`.
|
|
|
|
## Prerequisites
|
|
|
|
- **Python 3.13+**
|
|
- **psycopg2-binary**: For PostgreSQL connection.
|
|
- **Requests**: For API interaction.
|
|
- **Direct Network Access**: The script is configured to talk to the Misskey service via `http://misskey:3000` to bypass Nginx restrictions.
|
|
- **Database Access**: Access to the Misskey PostgreSQL container/service (configured as `misskey-db`).
|
|
|
|
## Setup
|
|
|
|
1. Install dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. Verify the constants in `misskey_export.py`:
|
|
- `TOKEN`: A Misskey API token with Admin/Moderator permissions.
|
|
- `INTERNAL_INSTANCE`: The internal address of your Misskey container (default: `http://misskey:3000`).
|
|
- `DB_HOST`: The hostname of your database container (default: `misskey-db`).
|
|
|
|
## Usage
|
|
|
|
Run the script using the system Python:
|
|
|
|
```bash
|
|
python3 misskey_export.py
|
|
```
|
|
|
|
The script will create a `backups/` directory in the current working directory, organized by username:
|
|
|
|
```text
|
|
backups/
|
|
├── user1/
|
|
│ ├── user-data.txt
|
|
│ ├── posts.csv
|
|
│ ├── lists.csv
|
|
│ ├── antennas.csv
|
|
│ └── files/
|
|
│ ├── Subfolder_A/
|
|
│ └── image.png
|
|
└── user2/
|
|
└── ...
|
|
```
|
|
|
|
## Security Note
|
|
|
|
This script contains sensitive database credentials and an admin API token. Ensure that `misskey_export.py` is stored securely and is not accessible to unauthorized users.
|