機能的には互換性を維持しつつ、様々な画像形式のデコードに対応
ほとんどの画像読み書きにimage crate v0.25を使用しています
# リポジトリをクローン
git clone https://github.com/yamisskey-dev/media-proxy-rs && cd media-proxy-rs
# 設定ファイルをコピーして編集(必要に応じて)
cp config/config.example.json config/config.json
# vim config/config.json
# 起動
docker compose up -d
# ログ確認
docker compose logs -f
# 停止
docker compose downdocker run -itd -p 12766:12766 ghcr.io/yamisskey-dev/media-proxy-rs:main
例(x86_64/amd64)
curl -L https://github.com/yamisskey-dev/media-proxy-rs/releases/download/nightly/media-proxy-rs_linux-amd64.gz | gzip -d > ./media-proxy-rs
chmod u+x ./media-proxy-rs
./media-proxy-rs
利用するプラットフォームに応じて適切なバイナリを選択してください。ファイル名のリストを示します
media-proxy-rs_linux-386.gz (i686+sse2)
media-proxy-rs_linux-amd64.gz (x86-64-v3)
media-proxy-rs_linux-arm-v6.gz
media-proxy-rs_linux-arm-v7.gz
media-proxy-rs_linux-arm64.gz
media-proxy-rs_linux-riscv64.gz
環境変数MEDIA_PROXY_CONFIG_PATHを設定する事でファイルの場所を指定できます
デフォルト値は$(pwd)/config.jsonです
十分に強力なマシンではencode_avifをtrueに変更することでAVIFエンコードを利用する事ができます
- x86_64-unknown-linux-musl
- aarch64-unknown-linux-musl
- armv7-unknown-linux-musleabihf
- arm-unknown-linux-musleabihf
- i686-unknown-linux-musl
- riscv64gc-unknown-linux-musl
Dockerを使用する場合はbuildxとqemuによるクロスコンパイルが利用できます
ビルド対象プラットフォームはtarget supportの項目を参照してください
git clone https://github.com/yamisskey-dev/media-proxy-rs && cd media-proxy-rsdocker build -t media-proxy-rs .
./crosstiles/arm64.shのMUSL_NAMEと./crossfiles/deps.shのmuslをダウンロードする処理を調整する必要があります
amd64ではデフォルトでx86-64-v3向けにビルドしますが、x86-64-v3未満の環境やx86-64-v4向け最適化利用したい場合./crosstiles/amd64.shのRUSTFLAGSを編集してください 他プラットフォームであればarm64.shやriscv64.shの編集でRUSTFLAGSを変更してください 最も簡単なのはtarget-cpu=nativeを指定し、実行環境と同じCPUでビルドする方法です
この方法ではx86_64-unknown-linux-gnu向けにビルドします
すべてを静的に組み込むmusl系とは異なる共有ライブラリを必要とする場合があります
- https://www.rust-lang.org/ja/tools/install に従ってrustをインストール
apt-get install -y meson ninja-build pkg-config nasm gitgit clone https://github.com/yamisskey-dev/media-proxy-rs && cd media-proxy-rscargo build --release
- AVIF(dav1d)
- BMP
- DDS
- Farbfeld
- GIF
- HDR
- ICO(png+rgba not support)
- JPEG
- EXR
- PNG
- PNM
- QOI
- TGA
- TIFF
- WebP
- JPEG XL(jxl-oxide)
- JPEG 2000(openjp2)
- JPEG XR(jxrlib)