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 -dlocation / {
    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 uploadFor 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
