A powerful image hosting and file sharing service built with Discord Bot technology.
Note: Deployment requires a Discord Bot Token. You'll need to create a Discord application and bot to obtain this token. Please refer to Discord's official documentation for setup instructions.
- File size limits based on Discord tier:
- Free users: 10MB
- Discord Nitro Basic: 50MB
- Discord Nitro: 500MB
- Permanent storage - Files never expire
- Upload management - View upload history and delete files
- Multi-format support - Images, videos, and other file types
- Custom proxy support - Configure custom proxy URLs for better accessibility
- Server-friendly - Automatic file cleanup option to save server disk space
- Self-hosted - Private deployment for enhanced security and control
Try the live demo at these endpoints:
- Cloudflare CDN: https://dc.missuo.ru
- EdgeOne CDN: https://dc.deeeee.de
Note: The demo configuration includes proxy_url
and auto_delete
settings for optimal performance in mainland China.
For technical details about the implementation, read the blog post: https://missuo.me/posts/discord-file-sharing/
mkdir discord-image && cd discord-image
wget -O compose.yaml https://raw.githubusercontent.com/missuo/discord-image/main/compose.yaml
nano compose.yaml # Edit configuration
docker compose up -d
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
}
Important: Do not change the bot_token
after initial setup, as this may invalidate existing file links.
bot:
token: "" # Discord bot token
channel_id: "" # Target channel ID
upload:
temp_dir: "uploads" # Temporary directory for file storage
proxy_url: example.com # Custom proxy URL for cdn.discordapp.com (optional)
auto_delete: true # Auto-delete files from server after upload
For Docker deployments, use these environment variables instead of the configuration file:
services:
discord-image:
image: ghcr.io/missuo/discord-image
ports:
- "8080:8080"
environment:
- BOT_TOKEN=your_bot_token
- CHANNEL_ID=your_channel_id
- UPLOAD_DIR=/app/uploads
- PROXY_URL=your_proxy_url # Optional
- AUTO_DELETE=true
volumes:
- ./uploads:/app/uploads
- proxy_url: Optional setting for accessing Discord CDN from mainland China. If not needed, leave unset.
- auto_delete: Saves server disk space by removing files after successful upload to Discord.
Only required for mainland China access. Skip this section if not applicable.
location / {
proxy_pass https://cdn.discordapp.com;
proxy_set_header Host cdn.discordapp.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
}
You can also deploy the proxy using serverless solutions like Cloudflare Workers. Community contributions for Workers configurations are welcome via PR.
AGPL-3.0