diff --git a/src/client/assets/misskey-php-like-logo.png b/src/client/assets/misskey-php-like-logo.png
new file mode 100644
index 0000000000..7777e52b1d
Binary files /dev/null and b/src/client/assets/misskey-php-like-logo.png differ
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index 59b8390ab5..7fd9e76cfc 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -2,6 +2,7 @@
  * Web Client Server
  */
 
+import * as os from 'os';
 import ms = require('ms');
 import * as Koa from 'koa';
 import * as Router from 'koa-router';
@@ -18,6 +19,8 @@ import config from '../../config';
 import Note, { pack as packNote } from '../../models/note';
 import getNoteSummary from '../../misc/get-note-summary';
 import fetchMeta from '../../misc/fetch-meta';
+import Emoji from '../../models/emoji';
+const pkg = require('../../../package.json');
 
 const client = `${__dirname}/../../client/`;
 
@@ -195,6 +198,27 @@ router.get('/notes/:note', async ctx => {
 });
 //#endregion
 
+router.get('/info', async ctx => {
+	const meta = await fetchMeta();
+	const emojis = await Emoji.find({ host: null }, {
+		fields: {
+			_id: false
+		}
+	});
+	await ctx.render('info', {
+		version: pkg.version,
+		machine: os.hostname(),
+		os: os.platform(),
+		node: process.version,
+		cpu: {
+			model: os.cpus()[0].model,
+			cores: os.cpus().length
+		},
+		emojis: emojis,
+		meta: meta
+	});
+});
+
 // Render base html for all requests
 router.get('*', async ctx => {
 	const meta = await fetchMeta();
diff --git a/src/server/web/views/info.pug b/src/server/web/views/info.pug
new file mode 100644
index 0000000000..3e72d86410
--- /dev/null
+++ b/src/server/web/views/info.pug
@@ -0,0 +1,113 @@
+doctype html
+
+html
+
+	head
+		meta(charset='utf-8')
+		meta(name='application-name' content='Misskey')
+		title Misskey
+		style.
+			html {
+				font-family: sans-serif;
+			}
+
+			main {
+				max-width: 934px;
+				margin: 0 auto;
+			}
+
+			header {
+				padding: 5px;
+				background: rgb(153, 153, 204);
+				border: 1px solid #000;
+			}
+			header:after {
+				content: '';
+				display: block;
+				clear: both;
+			}
+
+			header > h1 {
+				float: left;
+				font-size: 2em;
+			}
+
+			header > img {
+				float: right;
+				width: 220px;
+			}
+
+			table {
+				margin: 1em 0;
+				width: 100%;
+				border-collapse: collapse;
+			}
+			table tr th {
+				background-color: #ccf;
+				border: 1px solid #000;
+				width: 300px;
+				font-weight: bold;
+				padding: 4px 5px;
+				text-align: left;
+			}
+			table tr td {
+				background-color: #ddd;
+				border: 1px solid #000;
+				padding: 4px 5px;
+			}
+
+	body
+		main
+			header
+				h1 Misskey Version #{version}
+				img(src='/assets/misskey-php-like-logo.png' alt='')
+			table
+				tr
+					th Instance
+					td= meta.name
+				tr
+					th Maintainer
+					td
+						= meta.maintainer.name
+						|  <#{meta.maintainer.email}>
+				tr
+					th System
+					td= os
+				tr
+					th Node version
+					td= node
+				tr
+					th Machine
+					td= machine
+				tr
+					th CPU
+					td= cpu.model
+				tr
+					th Registration
+					td= !meta.disableRegistration ? 'yes' : 'no'
+				tr
+					th reCAPTCHA enabled
+					td= meta.enableRecaptcha ? 'yes' : 'no'
+				tr
+					th Cache remote files
+					td= meta.cacheRemoteFiles ? 'yes' : 'no'
+				tr
+					th Drive capacity per local user
+					td
+						= meta.localDriveCapacityMb
+						|  MB
+				tr
+					th Drive capacity per remote user
+					td
+						= meta.remoteDriveCapacityMb
+						|  MB
+				tr
+					th Max text length
+					td= meta.maxNoteTextLength
+				tr
+					th Emojis
+					td
+						each emoji in emojis
+							| :#{emoji.name}:
+							= ' '
+