jointrashposs/content/en/docs/4.for-developers/publish-on-your-website.md
かっこかり 6040f4902b
New Crowdin updates (#83)
* New translations ja-jp.yml (French)

* New translations share-form.md (French)

* New translations ja-jp.yml (Italian)

* New translations share-form.md (Italian)

* New translations ja-jp.yml (Korean)

* New translations 1.about-misskey.md (Korean)

* New translations reaction.md (Korean)

* New translations share-form.md (Korean)

* New translations 1.index.md (Korean)

* New translations announcement.md (Korean)

* New translations ftt.md (Korean)

* New translations role.md (Korean)

* New translations 1.index.md (Korean)

* New translations bash.md (Korean)

* New translations docker.md (Korean)

* New translations manual.md (Korean)

* New translations ubuntu-manual.md (Korean)

* New translations 1.index.md (Korean)

* New translations 1.index.md (Korean)

* New translations global-timeline.md (Korean)

* New translations home-timeline.md (Korean)

* New translations hybrid-timeline.md (Korean)

* New translations index.md (Korean)

* New translations local-timeline.md (Korean)

* New translations main.md (Korean)

* New translations 5.releases.md (Korean)

* New translations endpoints.md (Korean)

* New translations ja-jp.yml (Polish)

* New translations share-form.md (Polish)

* New translations ja-jp.yml (Chinese Simplified)

* New translations share-form.md (Chinese Simplified)

* New translations share-form.md (Chinese Traditional)

* New translations 5.releases.md (Chinese Traditional)

* New translations ja-jp.yml (English)

* New translations 1.index.md (English)

* New translations ads.md (English)

* New translations antenna.md (English)

* New translations charts.md (English)

* New translations clip.md (English)

* New translations share-form.md (English)

* New translations create-plugin.md (English)

* New translations plugin-api-reference.md (English)

* New translations publish-on-your-website.md (English)

* New translations ja-jp.yml (Indonesian)

* New translations share-form.md (Indonesian)
2023-12-26 12:57:24 +09:00

4.8 KiB
Raw Blame History

Distributing Plugins and Themes

Starting with Misskey v2023.11.0, you can now install various additional resources directly from your website.This feature is especially useful for those who produce a lot of plugins and themes, and for those who want to create a plugin distribution website.

Resources that support external installation

How it works

インストール時に、Misskey Webで受け取るリソースに予期せぬ改ざんが起こらないようにするため、配布サイト側とMisskey双方でハッシュ値を計算し、Misskeyで照合を行います。

ハッシュ値が照合できない場合はリソースをインストールすることができないようになっています。

実装方法

配布ページ側

「インストール」ボタンに、以下のようなURLを持つリンクを作成する

https://{HOST}/install-extentions?url={API_URL}&hash={HASH}
  • {HOST}: ユーザーのサーバーのホストに置き換えます。ホストはユーザーが入力できるようにすることが一般的です。
  • {API_URL}: リソース配布用API後述のURLに置き換えます。相対パスは不可
  • {HASH}: 配布するリソースのSHA-512ハッシュに置き換えます。リソース内での改行コードはLFに統一してください。

リソース配布用API側

上記 {API_URL} で指定したエンドポイントから、以下のようなJSONオブジェクトを返してください。

{
    "type": "theme",
    "data": "{\n\tid: '4dca6e53-9c1b-41bb-a1ac-c62c3b710536',\n\tbase: 'light',\n\tname: 'Misskey Design',\n\tprops: {\n\t\tX2: ':darken<2<@panel',\n\t\tX3: 'rgba(0, 0, 0, 0.05)',\n\t\tX4: 'rgba(0, 0, 0, 0.1)',\n\t\tX5: 'rgba(0, 0, 0, 0.05)',\n\t\tX6: 'rgba(0, 0, 0, 0.25)',\n\t\tX7: 'rgba(0, 0, 0, 0.05)',\n\t\tX8: ':lighten<5<@accent',\n\t\tX9: ':darken<5<@accent',\n\t\tbg: '#f9f9f9',\n\t\tfg: '#5f5f5f',\n\t\tX10: ':alpha<0.4<@accent',\n\t\tX11: 'rgba(0, 0, 0, 0.1)',\n\t\tX12: 'rgba(0, 0, 0, 0.1)',\n\t\tX13: 'rgba(0, 0, 0, 0.15)',\n\t\tX14: ':alpha<0.5<@navBg',\n\t\tX15: ':alpha<0<@panel',\n\t\tX16: ':alpha<0.7<@panel',\n\t\tX17: ':alpha<0.8<@bg',\n\t\tcwBg: '#b1b9c1',\n\t\tcwFg: '#fff',\n\t\tlink: '#44a4c1',\n\t\twarn: '#ecb637',\n\t\tbadge: '#31b1ce',\n\t\terror: '#ec4137',\n\t\tfocus: ':alpha<0.3<@accent',\n\t\tnavBg: '@panel',\n\t\tnavFg: '@fg',\n\t\tpanel: ':lighten<3<@bg',\n\t\tpopup: ':lighten<3<@panel',\n\t\taccent: '#FF6B63',\n\t\theader: ':alpha<0.7<@panel',\n\t\tinfoBg: '#e5f5ff',\n\t\tinfoFg: '#72818a',\n\t\trenote: '#229e82',\n\t\tshadow: 'rgba(0, 0, 0, 0.1)',\n\t\tdivider: 'rgba(0, 0, 0, 0.1)',\n\t\thashtag: '#ff9156',\n\t\tmention: '@accent',\n\t\tmodalBg: 'rgba(0, 0, 0, 0.3)',\n\t\tsuccess: '#86b300',\n\t\tbuttonBg: 'rgba(0, 0, 0, 0.05)',\n\t\tswitchBg: 'rgba(0, 0, 0, 0.15)',\n\t\tacrylicBg: ':alpha<0.5<@bg',\n\t\tcwHoverBg: '#bbc4ce',\n\t\tindicator: '@accent',\n\t\tmentionMe: '@mention',\n\t\tmessageBg: '@bg',\n\t\tnavActive: '@accent',\n\t\taccentedBg: ':alpha<0.15<@accent',\n\t\tcodeNumber: '#0fbbbb',\n\t\tcodeString: '#b98710',\n\t\tfgOnAccent: '#fff',\n\t\tinfoWarnBg: '#fff0db',\n\t\tinfoWarnFg: '#8f6e31',\n\t\tnavHoverFg: ':darken<17<@fg',\n\t\tswitchOnBg: '@accent',\n\t\tswitchOnFg: '@fgOnAccent',\n\t\tcodeBoolean: '#62b70c',\n\t\tdateLabelFg: '@fg',\n\t\tdeckDivider: ':darken<3<@bg',\n\t\tinputBorder: 'rgba(0, 0, 0, 0.1)',\n\t\tpanelBorder: '\" solid 1px var(--divider)',\n\t\tswitchOffBg: 'rgba(0, 0, 0, 0.1)',\n\t\tswitchOffFg: '@panel',\n\t\taccentDarken: ':darken<10<@accent',\n\t\tacrylicPanel: ':alpha<0.5<@panel',\n\t\tnavIndicator: '@indicator',\n\t\twindowHeader: ':alpha<0.85<@panel',\n\t\taccentLighten: ':lighten<10<@accent',\n\t\tbuttonHoverBg: 'rgba(0, 0, 0, 0.1)',\n\t\tdriveFolderBg: ':alpha<0.3<@accent',\n\t\tfgHighlighted: ':darken<3<@fg',\n\t\tfgTransparent: ':alpha<0.5<@fg',\n\t\tpanelHeaderBg: ':lighten<3<@panel',\n\t\tpanelHeaderFg: '@fg',\n\t\tbuttonGradateA: '#FC4774',\n\t\tbuttonGradateB: '#F9E001',\n\t\thtmlThemeColor: '@bg',\n\t\tpanelHighlight: ':darken<3<@panel',\n\t\tlistItemHoverBg: 'rgba(0, 0, 0, 0.03)',\n\t\tscrollbarHandle: 'rgba(0, 0, 0, 0.2)',\n\t\tinputBorderHover: 'rgba(0, 0, 0, 0.2)',\n\t\twallpaperOverlay: 'rgba(255, 255, 255, 0.5)',\n\t\tfgTransparentWeak: ':alpha<0.75<@fg',\n\t\tpanelHeaderDivider: 'rgba(0, 0, 0, 0)',\n\t\tscrollbarHandleHover: 'rgba(0, 0, 0, 0.4)',\n\t},\n\tauthor: '@kakkokari_gtyih@misskey.io',\n}"
}
  • type: 上記「外部からのインストールに対応しているリソース」のコードを参照して入力してください。
  • data: リソースのソースコードを文字列で入力
    • この際、改行コードはLFとしてください