diff --git a/CHANGELOG.md b/CHANGELOG.md
index 681105fb7e4184b4149940a14031c5dda4a5eecb..72c4f53d186b889d6242d42f0330ac3d59587900 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,10 @@
 
 ## 13.x.x (unreleased)
 
+### General
+- identicon生成を無効にしてパフォーマンスを向上させることができるようになりました
+- サーバーのマシン情報の公開を無効にしてパフォーマンスを向上させることができるようになりました
+
 ### Client
 - Fix: サーバーメトリクスが90度傾いている
 
diff --git a/locales/index.d.ts b/locales/index.d.ts
index eed29f408c0b0d668f8babdd5334f52f1d1491bc..af6b803278e44c3d0f86e0f3c14e0ad6c611c3d9 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -1066,6 +1066,8 @@ export interface Locale {
     "additionalEmojiDictionary": string;
     "installed": string;
     "branding": string;
+    "enableServerMachineStats": string;
+    "enableIdenticonGeneration": string;
     "_initialAccountSetting": {
         "accountCreated": string;
         "letsStartAccountSetup": string;
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 8004e53575f67563a1bf84ed96500f5e148090a5..e7202bfbb5a01e60099677617e36924f4ef2a784 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1063,6 +1063,8 @@ goToMisskey: "Misskeyへ"
 additionalEmojiDictionary: "絵文字の追加辞書"
 installed: "インストール済み"
 branding: "ブランディング"
+enableServerMachineStats: "サーバーのマシン情報を公開する"
+enableIdenticonGeneration: "ユーザーごとのIdenticon生成を有効にする"
 
 _initialAccountSetting:
   accountCreated: "アカウントの作成が完了しました!"
diff --git a/packages/backend/assets/avatar.png b/packages/backend/assets/avatar.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b95a0c560c32cf2a0060d9e911b1cc3171dfaba
Binary files /dev/null and b/packages/backend/assets/avatar.png differ
diff --git a/packages/backend/migration/1688280713783-add-meta-options.js b/packages/backend/migration/1688280713783-add-meta-options.js
new file mode 100644
index 0000000000000000000000000000000000000000..12406fe085d7734f4e1702e20b1bf8f02b2cb19c
--- /dev/null
+++ b/packages/backend/migration/1688280713783-add-meta-options.js
@@ -0,0 +1,13 @@
+export class AddMetaOptions1688280713783 {
+    name = 'AddMetaOptions1688280713783'
+
+    async up(queryRunner) {
+        await queryRunner.query(`ALTER TABLE "meta" ADD "enableServerMachineStats" boolean NOT NULL DEFAULT false`);
+        await queryRunner.query(`ALTER TABLE "meta" ADD "enableIdenticonGeneration" boolean NOT NULL DEFAULT true`);
+    }
+
+    async down(queryRunner) {
+        await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableIdenticonGeneration"`);
+        await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableServerMachineStats"`);
+    }
+}
diff --git a/packages/backend/src/daemons/ServerStatsService.ts b/packages/backend/src/daemons/ServerStatsService.ts
index 6cd71c0e2ae3901c44bfc2a8a443d8ba3580a190..375fd5e516d9375bf5d7e9c6b4299a5c0cd2f4b0 100644
--- a/packages/backend/src/daemons/ServerStatsService.ts
+++ b/packages/backend/src/daemons/ServerStatsService.ts
@@ -3,6 +3,7 @@ import si from 'systeminformation';
 import Xev from 'xev';
 import * as osUtils from 'os-utils';
 import { bindThis } from '@/decorators.js';
+import { MetaService } from '@/core/MetaService.js';
 import type { OnApplicationShutdown } from '@nestjs/common';
 
 const ev = new Xev();
@@ -14,9 +15,10 @@ const round = (num: number) => Math.round(num * 10) / 10;
 
 @Injectable()
 export class ServerStatsService implements OnApplicationShutdown {
-	private intervalId: NodeJS.Timer;
+	private intervalId: NodeJS.Timer | null = null;
 
 	constructor(
+		private metaService: MetaService,
 	) {
 	}
 
@@ -24,7 +26,9 @@ export class ServerStatsService implements OnApplicationShutdown {
 	 * Report server stats regularly
 	 */
 	@bindThis
-	public start(): void {
+	public async start(): Promise<void> {
+		if (!(await this.metaService.fetch(true)).enableServerMachineStats) return;
+
 		const log = [] as any[];
 
 		ev.on('requestServerStatsLog', x => {
@@ -64,7 +68,9 @@ export class ServerStatsService implements OnApplicationShutdown {
 
 	@bindThis
 	public dispose(): void {
-		clearInterval(this.intervalId);
+		if (this.intervalId) {
+			clearInterval(this.intervalId);
+		}
 	}
 
 	@bindThis
diff --git a/packages/backend/src/models/entities/Meta.ts b/packages/backend/src/models/entities/Meta.ts
index f799551f30837cfb3ed8c13c66a483e8efbff5df..a251c0b31c16dd00d810fa0745cffecebefd9267 100644
--- a/packages/backend/src/models/entities/Meta.ts
+++ b/packages/backend/src/models/entities/Meta.ts
@@ -413,6 +413,16 @@ export class Meta {
 	})
 	public enableChartsForFederatedInstances: boolean;
 
+	@Column('boolean', {
+		default: false,
+	})
+	public enableServerMachineStats: boolean;
+
+	@Column('boolean', {
+		default: true,
+	})
+	public enableIdenticonGeneration: boolean;
+
 	@Column('jsonb', {
 		default: { },
 	})
diff --git a/packages/backend/src/server/ServerService.ts b/packages/backend/src/server/ServerService.ts
index c3d45e4ad6932487af51f41e82e5a0a63bb0ec96..1bae71617bb3d7dcc19b47bebdcf89cadcb476e8 100644
--- a/packages/backend/src/server/ServerService.ts
+++ b/packages/backend/src/server/ServerService.ts
@@ -16,6 +16,7 @@ import { createTemp } from '@/misc/create-temp.js';
 import { UserEntityService } from '@/core/entities/UserEntityService.js';
 import { LoggerService } from '@/core/LoggerService.js';
 import { bindThis } from '@/decorators.js';
+import { MetaService } from '@/core/MetaService.js';
 import { ActivityPubServerService } from './ActivityPubServerService.js';
 import { NodeinfoServerService } from './NodeinfoServerService.js';
 import { ApiServerService } from './api/ApiServerService.js';
@@ -45,6 +46,7 @@ export class ServerService implements OnApplicationShutdown {
 		@Inject(DI.emojisRepository)
 		private emojisRepository: EmojisRepository,
 
+		private metaService: MetaService,
 		private userEntityService: UserEntityService,
 		private apiServerService: ApiServerService,
 		private openApiServerService: OpenApiServerService,
@@ -161,11 +163,16 @@ export class ServerService implements OnApplicationShutdown {
 		});
 
 		fastify.get<{ Params: { x: string } }>('/identicon/:x', async (request, reply) => {
-			const [temp, cleanup] = await createTemp();
-			await genIdenticon(request.params.x, fs.createWriteStream(temp));
 			reply.header('Content-Type', 'image/png');
 			reply.header('Cache-Control', 'public, max-age=86400');
-			return fs.createReadStream(temp).on('close', () => cleanup());
+
+			if ((await this.metaService.fetch()).enableIdenticonGeneration) {
+				const [temp, cleanup] = await createTemp();
+				await genIdenticon(request.params.x, fs.createWriteStream(temp));
+				return fs.createReadStream(temp).on('close', () => cleanup());
+			} else {
+				return reply.redirect('/static-assets/avatar.png');
+			}
 		});
 
 		fastify.get<{ Params: { code: string } }>('/verify-email/:code', async (request, reply) => {
@@ -224,7 +231,7 @@ export class ServerService implements OnApplicationShutdown {
 
 	@bindThis
 	public async dispose(): Promise<void> {
-    await this.streamingApiServerService.detach();
+		await this.streamingApiServerService.detach();
 		await this.#fastify.close();
 	}
 
diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts
index 4cc1b6011f247732d48d6adec5ca310f55b9ca72..28aec7a09006acd8c5f68c456baaa8aed138442d 100644
--- a/packages/backend/src/server/api/endpoints/admin/meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/meta.ts
@@ -262,6 +262,14 @@ export const meta = {
 				type: 'boolean',
 				optional: false, nullable: false,
 			},
+			enableServerMachineStats: {
+				type: 'boolean',
+				optional: false, nullable: false,
+			},
+			enableIdenticonGeneration: {
+				type: 'boolean',
+				optional: false, nullable: false,
+			},
 			policies: {
 				type: 'object',
 				optional: false, nullable: false,
@@ -364,6 +372,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 				enableActiveEmailValidation: instance.enableActiveEmailValidation,
 				enableChartsForRemoteUser: instance.enableChartsForRemoteUser,
 				enableChartsForFederatedInstances: instance.enableChartsForFederatedInstances,
+				enableServerMachineStats: instance.enableServerMachineStats,
+				enableIdenticonGeneration: instance.enableIdenticonGeneration,
 				policies: { ...DEFAULT_POLICIES, ...instance.policies },
 			};
 		});
diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
index 1de5e9efd3fb9d0fbd06fd8686f8956e5d5f4481..5c9d8e3fac453f0a8c8e1206ba5a71bd19de35de 100644
--- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
@@ -96,6 +96,8 @@ export const paramDef = {
 		enableActiveEmailValidation: { type: 'boolean' },
 		enableChartsForRemoteUser: { type: 'boolean' },
 		enableChartsForFederatedInstances: { type: 'boolean' },
+		enableServerMachineStats: { type: 'boolean' },
+		enableIdenticonGeneration: { type: 'boolean' },
 		serverRules: { type: 'array', items: { type: 'string' } },
 		preservedUsernames: { type: 'array', items: { type: 'string' } },
 	},
@@ -399,6 +401,14 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 				set.enableChartsForFederatedInstances = ps.enableChartsForFederatedInstances;
 			}
 
+			if (ps.enableServerMachineStats !== undefined) {
+				set.enableServerMachineStats = ps.enableServerMachineStats;
+			}
+
+			if (ps.enableIdenticonGeneration !== undefined) {
+				set.enableIdenticonGeneration = ps.enableIdenticonGeneration;
+			}
+
 			if (ps.serverRules !== undefined) {
 				set.serverRules = ps.serverRules;
 			}
diff --git a/packages/backend/src/server/api/endpoints/server-info.ts b/packages/backend/src/server/api/endpoints/server-info.ts
index 1620e8ae52b51c00ce81426995f6148de3143a39..552441e4305240c99e00546b0108bafc95542421 100644
--- a/packages/backend/src/server/api/endpoints/server-info.ts
+++ b/packages/backend/src/server/api/endpoints/server-info.ts
@@ -2,9 +2,12 @@ import * as os from 'node:os';
 import si from 'systeminformation';
 import { Injectable } from '@nestjs/common';
 import { Endpoint } from '@/server/api/endpoint-base.js';
+import { MetaService } from '@/core/MetaService.js';
 
 export const meta = {
 	requireCredential: false,
+	allowGet: true,
+	cacheSec: 60 * 1,
 
 	tags: ['meta'],
 } as const;
@@ -19,8 +22,24 @@ export const paramDef = {
 @Injectable()
 export default class extends Endpoint<typeof meta, typeof paramDef> {
 	constructor(
+		private metaService: MetaService,
 	) {
 		super(meta, paramDef, async () => {
+			if (!(await this.metaService.fetch()).enableServerMachineStats) return {
+				machine: '?',
+				cpu: {
+					model: '?',
+					cores: 0,
+				},
+				mem: {
+					total: 0,
+				},
+				fs: {
+					total: 0,
+					used: 0,
+				},
+			};
+
 			const memStats = await si.mem();
 			const fsStats = await si.fsSize();
 
diff --git a/packages/frontend/src/pages/admin/other-settings.vue b/packages/frontend/src/pages/admin/other-settings.vue
index 15d720a070367280a8daddc42646c280b127e5e3..d3e1d9efc1d3fcf5d7aef804c7f7ed1608adf0b7 100644
--- a/packages/frontend/src/pages/admin/other-settings.vue
+++ b/packages/frontend/src/pages/admin/other-settings.vue
@@ -4,6 +4,14 @@
 	<MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
 		<FormSuspense :p="init">
 			<div class="_gaps_s">
+				<MkSwitch v-model="enableServerMachineStats">
+					<template #label>{{ i18n.ts.enableServerMachineStats }}</template>
+				</MkSwitch>
+
+				<MkSwitch v-model="enableIdenticonGeneration">
+					<template #label>{{ i18n.ts.enableIdenticonGeneration }}</template>
+				</MkSwitch>
+
 				<MkSwitch v-model="enableChartsForRemoteUser">
 					<template #label>{{ i18n.ts.enableChartsForRemoteUser }}</template>
 				</MkSwitch>
@@ -27,17 +35,23 @@ import { i18n } from '@/i18n';
 import { definePageMetadata } from '@/scripts/page-metadata';
 import MkSwitch from '@/components/MkSwitch.vue';
 
+let enableServerMachineStats: boolean = $ref(false);
+let enableIdenticonGeneration: boolean = $ref(false);
 let enableChartsForRemoteUser: boolean = $ref(false);
 let enableChartsForFederatedInstances: boolean = $ref(false);
 
 async function init() {
 	const meta = await os.api('admin/meta');
+	enableServerMachineStats = meta.enableServerMachineStats;
+	enableIdenticonGeneration = meta.enableIdenticonGeneration;
 	enableChartsForRemoteUser = meta.enableChartsForRemoteUser;
 	enableChartsForFederatedInstances = meta.enableChartsForFederatedInstances;
 }
 
 function save() {
 	os.apiWithDialog('admin/update-meta', {
+		enableServerMachineStats,
+		enableIdenticonGeneration,
 		enableChartsForRemoteUser,
 		enableChartsForFederatedInstances,
 	}).then(() => {
diff --git a/packages/frontend/src/widgets/server-metric/index.vue b/packages/frontend/src/widgets/server-metric/index.vue
index e019ff540b8ecf4912c1ac19ef478ac8b32d6e1e..1a78f4bcd6eb1236a61f8bb320d15a7d072b5fb2 100644
--- a/packages/frontend/src/widgets/server-metric/index.vue
+++ b/packages/frontend/src/widgets/server-metric/index.vue
@@ -62,7 +62,7 @@ const { widgetProps, configure, save } = useWidgetPropsManager(name,
 
 const meta = ref(null);
 
-os.api('server-info', {}).then(res => {
+os.apiGet('server-info', {}).then(res => {
 	meta.value = res;
 });