ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

ephemeral-media-hosting

自動削除機能付き一時メディアホスティングシステム

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/byron-mckeeby/ephemeral-media-hosting
Or

一時メディア・ホスティング

チャット共有向けの自動削除機能付きメディアディレクトリシステム。7日間の自動保持、MIME検証、fetch-image.shパターン、nginx設定の包括的ガイドです。

システム構成

ディレクトリ構造

/var/www/media/
├── temp/                  # 一時ファイル(7日保持)
├── uploads/               # アップロード受付
├── processed/             # 処理済みファイル  
├── logs/                  # アクセス・処理ログ
└── scripts/               # 管理スクリプト群

基本セットアップ

ディレクトリ初期化

#!/bin/bash
# media-setup.sh

setup_media_hosting() {
    local media_root="/var/www/media"
    local nginx_user="www-data"
    
    echo "=== メディアホスティング初期設定 ==="
    
    # ディレクトリ作成
    sudo mkdir -p "$media_root"/{temp,uploads,processed,logs,scripts}
    
    # 権限設定
    sudo chown -R "$nginx_user:$nginx_user" "$media_root"
    sudo chmod -R 755 "$media_root"
    sudo chmod 775 "$media_root"/{uploads,temp,processed}
    
    # 設定ファイル作成
    cat > "$media_root/config.env" << 'EOF'
# メディアホスティング設定
MAX_FILE_SIZE=10M
RETENTION_DAYS=7
ALLOWED_MIMES="image/jpeg,image/png,image/gif,image/webp,video/mp4,video/webm"
UPLOAD_RATE_LIMIT=100
EOF
    
    echo "初期設定完了: $media_root"
}

# 実行
setup_media_hosting

nginx設定

# /etc/nginx/sites-available/ephemeral-media
server {
    listen 80;
    server_name media.yourdomain.com;
    
    # セキュリティヘッダー
    add_header X-Content-Type-Options "nosniff";
    add_header X-Frame-Options "DENY";
    add_header X-XSS-Protection "1; mode=block";
    add_header Content-Security-Policy "default-src 'none'; img-src 'self'; media-src 'self';";
    
    # ファイルサイズ制限
    client_max_body_size 10M;
    
    # メディアルート
    root /var/www/media;
    index index.html;
    
    # 一時ファイル配信
    location /temp/ {
        alias /var/www/media/temp/;
        
        # キャッシュヘッダー(短期間)
        expires 1h;
        add_header Cache-Control "public, must-revalidate";
        
        # セキュリティ
        add_header X-Ephemeral "true";
        add_header X-Expires-After "7-days";
        
        # ファイル存在確認
        try_files $uri @not_found;
        
        # ログ記録
        access_log /var/log/nginx/media-access.log combined;
    }
    
    # アップロード処理
    location /upload {
        # POST のみ許可
        limit_except POST { deny all; }
        
        # レート制限
        limit_req zone=upload_zone burst=5 nodelay;
        
        # PHP-FPM等へプロキシ
        proxy_pass http://127.0.0.1:8080/upload;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # アップロードログ
        access_log /var/log/nginx/upload-access.log upload_format;
    }
    
    # 直接ファイル配信
    location ~* \.(jpg|jpeg|png|gif|webp|mp4|webm)$ {
        # セキュリティチェック
        if ($request_uri ~* "\.\./") {
            return 403;
        }
        
        # MIME設定
        location ~* \.jpg$ { add_header Content-Type "image/jpeg"; }
        location ~* \.png$ { add_header Content-Type "image/png"; }
        location ~* \.gif$ { add_header Content-Type "image/gif"; }
        location ~* \.webp$ { a...

Metadata

Stars4126
Views0
Updated2026-04-15
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-byron-mckeeby-ephemeral-media-hosting": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.