diff --git a/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue b/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue
new file mode 100644
index 0000000..c9b02b3
--- /dev/null
+++ b/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue
@@ -0,0 +1,184 @@
+<template>
+  <b-container fluid>
+    <page-title />
+    <b-row>
+      <b-col md="8" lg="8" xl="6">
+        <page-section
+          :section-title="$t('pageServerPowerOperations.currentStatus')"
+        >
+          <dl>
+            <dt>{{ $t('pageServerPowerOperations.hostname') }}</dt>
+            <dd>{{ hostname }}</dd>
+          </dl>
+          <dl>
+            <dt>{{ $t('pageServerPowerOperations.hostStatus') }}</dt>
+            <dd v-if="hostStatus === 'on'">
+              {{ $t('global.status.on') }}
+            </dd>
+            <dd v-else-if="hostStatus === 'off'">
+              {{ $t('global.status.off') }}
+            </dd>
+            <dd v-else>
+              {{ $t('global.status.notAvailable') }}
+            </dd>
+          </dl>
+        </page-section>
+      </b-col>
+    </b-row>
+    <b-row>
+      <b-col md="8" lg="7" xl="8">
+        <page-section
+          :section-title="$t('pageServerPowerOperations.operations')"
+        >
+          <template v-if="isOperationInProgress">
+            {{ $t('pageServerPowerOperations.operationInProgress') }}
+          </template>
+          <template v-else-if="hostStatus === 'off'">
+            <b-button variant="primary" @click="powerOn">
+              {{ $t('pageServerPowerOperations.powerOn') }}
+            </b-button>
+          </template>
+          <template v-else-if="hostStatus === 'on'">
+            <!-- Reboot server options -->
+            <b-form novalidate class="mb-5" @submit.prevent="rebootServer">
+              <b-form-group
+                :label="$t('pageServerPowerOperations.rebootServer')"
+              >
+                <b-form-radio
+                  v-model="form.rebootOption"
+                  name="reboot-option"
+                  value="orderly"
+                >
+                  {{ $t('pageServerPowerOperations.orderlyReboot') }}
+                </b-form-radio>
+                <b-form-radio
+                  v-model="form.rebootOption"
+                  name="reboot-option"
+                  value="immediate"
+                >
+                  {{ $t('pageServerPowerOperations.immediateReboot') }}
+                </b-form-radio>
+              </b-form-group>
+              <b-button variant="primary" type="submit">
+                {{ $t('pageServerPowerOperations.reboot') }}
+              </b-button>
+            </b-form>
+            <!-- Shutdown server options -->
+            <b-form novalidate @submit.prevent="shutdownServer">
+              <b-form-group
+                :label="$t('pageServerPowerOperations.shutdownServer')"
+              >
+                <b-form-radio
+                  v-model="form.shutdownOption"
+                  name="shutdown-option"
+                  value="orderly"
+                >
+                  {{ $t('pageServerPowerOperations.orderlyShutdown') }}
+                </b-form-radio>
+                <b-form-radio
+                  v-model="form.shutdownOption"
+                  name="shutdown-option"
+                  value="immediate"
+                >
+                  {{ $t('pageServerPowerOperations.immediateShutdown') }}
+                </b-form-radio>
+              </b-form-group>
+              <b-button variant="primary" type="submit">
+                {{ $t('pageServerPowerOperations.shutDown') }}
+              </b-button>
+            </b-form>
+          </template>
+          <template v-else>
+            {{ $t('global.status.notAvailable') }}
+          </template>
+        </page-section>
+      </b-col>
+    </b-row>
+  </b-container>
+</template>
+
+<script>
+import PageTitle from '../../../components/Global/PageTitle';
+import PageSection from '../../../components/Global/PageSection';
+import BVToastMixin from '../../../components/Mixins/BVToastMixin';
+
+export default {
+  name: 'ServerPowerOperations',
+  components: { PageTitle, PageSection },
+  mixins: [BVToastMixin],
+  data() {
+    return {
+      form: {
+        rebootOption: 'orderly',
+        shutdownOption: 'orderly'
+      }
+    };
+  },
+  computed: {
+    hostStatus() {
+      return this.$store.getters['global/hostStatus'];
+    },
+    hostname() {
+      return this.$store.getters['global/hostName'];
+    },
+    isOperationInProgress() {
+      return this.$store.getters['controls/isOperationInProgress'];
+    }
+  },
+  created() {
+    this.$store.dispatch('global/getHostName');
+  },
+  methods: {
+    powerOn() {
+      this.$store.dispatch('controls/hostPowerOn');
+    },
+    rebootServer() {
+      const modalMessage = this.$t(
+        'pageServerPowerOperations.modal.confirmRebootMessage'
+      );
+      const modalOptions = {
+        title: this.$t('pageServerPowerOperations.modal.confirmRebootTitle'),
+        okTitle: this.$t('global.action.confirm')
+      };
+
+      if (this.form.rebootOption === 'orderly') {
+        this.$bvModal
+          .msgBoxConfirm(modalMessage, modalOptions)
+          .then(confirmed => {
+            if (confirmed) this.$store.dispatch('controls/hostSoftReboot');
+          });
+      } else if (this.form.rebootOption === 'immediate') {
+        this.$bvModal
+          .msgBoxConfirm(modalMessage, modalOptions)
+          .then(confirmed => {
+            if (confirmed) this.$store.dispatch('controls/hostHardReboot');
+          });
+      }
+    },
+    shutdownServer() {
+      const modalMessage = this.$t(
+        'pageServerPowerOperations.modal.confirmShutdownMessage'
+      );
+      const modalOptions = {
+        title: this.$t('pageServerPowerOperations.modal.confirmShutdownTitle'),
+        okTitle: this.$t('global.action.confirm')
+      };
+
+      if (this.form.shutdownOption === 'orderly') {
+        this.$bvModal
+          .msgBoxConfirm(modalMessage, modalOptions)
+          .then(confirmed => {
+            if (confirmed) this.$store.dispatch('controls/hostSoftPowerOff');
+          });
+      }
+      if (this.form.shutdownOption === 'immediate') {
+        this.$bvModal
+          .msgBoxConfirm(modalMessage, modalOptions)
+          .then(confirmed => {
+            if (confirmed) this.$store.dispatch('controls/hostHardPowerOff');
+          });
+      }
+    }
+  }
+};
+</script>
diff --git a/src/views/Control/ServerPowerOperations/index.js b/src/views/Control/ServerPowerOperations/index.js
new file mode 100644
index 0000000..1043004
--- /dev/null
+++ b/src/views/Control/ServerPowerOperations/index.js
@@ -0,0 +1,2 @@
+import ServerPowerOperations from './ServerPowerOperations.vue';
+export default ServerPowerOperations;
