diff --git a/app.js b/app.js
index 46a87dac803a863020982615a1672b264f0fe6af..419c5b50a03fac5b5119fbbdbb1a917424fb08e1 100644
--- a/app.js
+++ b/app.js
@@ -13,7 +13,10 @@ const participantRouter = require('./routes/participant');
 const myScheduleRouter = require('./routes/mySchedule');
 const { sequelize } = require('./models');
 
+const checkMeetings = require('./schedules/checkMeetings');
+
 const app = express();
+checkMeetings();
 
 app.set('port', process.env.PORT || 3000);
 sequelize
diff --git a/schedules/checkMeetings.js b/schedules/checkMeetings.js
new file mode 100644
index 0000000000000000000000000000000000000000..73db5afe956ea232f69c0320a7ca003b07a0a49c
--- /dev/null
+++ b/schedules/checkMeetings.js
@@ -0,0 +1,31 @@
+const { scheduleJob } = require('node-schedule');
+const { Op } = require('sequelize');
+const { Meeting } = require('../models');
+const { closeMeetingById } = require('../services/meeting');
+
+module.exports = async () => {
+  console.log(
+    'Check meeting... 종료되지 않은 미팅을 찾아 스케줄러에 등록합니다.',
+  );
+  try {
+    const meetings = await Meeting.findAll({
+      where: {
+        voteExpiresAt: {
+          [Op.ne]: null,
+        },
+        isClosed: false,
+      },
+    });
+    console.log('meetings', meetings);
+    meetings.forEach((meeting) => {
+      scheduleJob(meeting.voteExpiresAt, async () => {
+        await closeMeetingById(meeting.id);
+      });
+    });
+  } catch (error) {
+    console.log(
+      'Scheduler에 등록할 meeting을 확인하던 중 에러가 발생했습니다.',
+      error,
+    );
+  }
+};