Files
misskey-export/README.md
2026-03-06 02:23:57 +00:00

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.