diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml
index facbe7422c519960ba9209cb903e54b095770d6e..16d3808151f7a240e0585603942c3a31c91b3012 100644
--- a/.github/workflows/dockerimage.yml
+++ b/.github/workflows/dockerimage.yml
@@ -39,3 +39,4 @@ jobs:
           imageName: ${{ env.DOCKER_IMAGE_NAME }}
           dockerHubUser: ${{ secrets.DOCKER_LOGIN_USERNAME }}
           dockerHubPassword: ${{ secrets.DOCKER_LOGIN_PASSWORD }}
+          buildArg: COMMIT=${{ GITHUB_SHA::8 }}
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 545e3038389706988844b23fa2e4546692771199..ff33b6df35e480043107cb8fc821d07a2416a36e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,7 +7,7 @@ build-back:
   stage: build artifacts
   image: golang:latest
   script:
-    - GOOS=linux GOARCH=amd64 go build -ldflags "-X main.VersionGitCommit=${CI_COMMIT_SHORT_SHA}" -o ${CI_PROJECT_NAME}-linux-amd64
+    - GOOS=linux GOARCH=amd64 go build -ldflags="-X 'gitlab.127-0-0-1.fr/vx3r/wg-gen-web/util.Version=${CI_COMMIT_SHORT_SHA}'" -o ${CI_PROJECT_NAME}-linux-amd64
   artifacts:
     paths:
       - ${CI_PROJECT_NAME}-linux-amd64
@@ -16,9 +16,6 @@ build-front:
   stage: build artifacts
   image: node:10-alpine
   script:
-    - apk update
-    - apk upgrade
-    - apk add --no-cache git
     - cd ./ui
     - npm install
     - npm run build
@@ -32,7 +29,7 @@ build:
   image: docker:latest
   script:
     - docker info
-    - docker build --network br_docker --tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA} .
+    - docker build --build-arg COMMIT=${CI_COMMIT_SHORT_SHA} --network br_docker --tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA} .
 
 push:
   stage: push docker hub
diff --git a/Dockerfile b/Dockerfile
index 1ff6002cf4fee37f2998d19ee7fcc040a22de5f4..6276efa3b6220d8d1ca1758700e093aa23119a75 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,16 +1,16 @@
+ARG COMMIT="N/A"
+
 FROM golang:alpine AS build-back
 WORKDIR /app
-RUN apk update && apk upgrade && apk add --no-cache git
+ARG COMMIT
 COPY . .
-RUN GIT_COMMIT=$(git rev-parse --short HEAD) && go build -ldflags "-X main.VersionGitCommit=$GIT_COMMIT" go build -o wg-gen-web-linux
+RUN go build -ldflags="-X 'gitlab.127-0-0-1.fr/vx3r/wg-gen-web/util.Version=${COMMIT}'" -o wg-gen-web-linux
 
 FROM node:10-alpine AS build-front
 WORKDIR /app
-RUN apk update && apk upgrade && apk add --no-cache git
 COPY ui/package*.json ./
 RUN npm install
 COPY ui/ ./
-COPY .git .
 RUN npm run build
 
 FROM alpine
diff --git a/api/api.go b/api/api.go
index f1b7097d03061e48b4a5a2c94e25379d913ce2b7..b527996bc8d39eb10405d627f310ca12596e6fcf 100644
--- a/api/api.go
+++ b/api/api.go
@@ -6,6 +6,7 @@ import (
 	"github.com/skip2/go-qrcode"
 	"gitlab.127-0-0-1.fr/vx3r/wg-gen-web/core"
 	"gitlab.127-0-0-1.fr/vx3r/wg-gen-web/model"
+	"gitlab.127-0-0-1.fr/vx3r/wg-gen-web/util"
 	"net/http"
 )
 
@@ -27,6 +28,7 @@ func ApplyRoutes(r *gin.Engine) {
 	{
 		server.GET("", readServer)
 		server.PATCH("", updateServer)
+		server.GET("/version", version)
 	}
 }
 
@@ -200,3 +202,9 @@ func updateServer(c *gin.Context) {
 
 	c.JSON(http.StatusOK, client)
 }
+
+func version(c *gin.Context) {
+	c.JSON(http.StatusOK, gin.H{
+		"version": util.Version,
+	})
+}
diff --git a/main.go b/main.go
index 3f93063b1737758d763dd8d19e9fefece469a437..a08072f135fdc303129150084bead99c79cab0ad 100644
--- a/main.go
+++ b/main.go
@@ -15,10 +15,6 @@ import (
 	"path/filepath"
 )
 
-var (
-	VersionGitCommit string
-)
-
 func init() {
 	log.SetFormatter(&log.TextFormatter{})
 	log.SetOutput(os.Stderr)
@@ -26,7 +22,7 @@ func init() {
 }
 
 func main() {
-	log.Infof("Starting Wg Gen Web version: %s", VersionGitCommit)
+	log.Infof("Starting Wg Gen Web version: %s", util.Version)
 
 	// load .env environment variables
 	err := godotenv.Load()
diff --git a/ui/package.json b/ui/package.json
index 5d2c28e76ded1575b3fa11542b9d4c6e58b6821a..64aff469864f89d8328a5731333ddd2708378aa1 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -8,7 +8,6 @@
   },
   "dependencies": {
     "axios": "^0.19.2",
-    "git-describe": "^4.0.4",
     "is-cidr": "^3.1.0",
     "moment": "^2.24.0",
     "vue": "^2.6.10",
diff --git a/ui/src/App.vue b/ui/src/App.vue
index d63b966e1813c3425e3a6dbea45f9020bac49197..86b54f857ab43d99109b0fbe278dd5f79e72baae 100644
--- a/ui/src/App.vue
+++ b/ui/src/App.vue
@@ -24,29 +24,59 @@
       <v-container>
         <router-view />
       </v-container>
+      <Notification v-bind:notification="notification"/>
     </v-content>
 
     <v-footer app>
-      <span>License <a class="pr-1 pl-1" href="http://www.wtfpl.net/" target="_blank">WTFPL</a> &copy; {{ new Date().getFullYear() }} Created with</span><v-icon class="pr-1 pl-1">mdi-heart</v-icon><span>by</span><a class="pr-1 pl-1" href="mailto:vx3r@127-0-0-1.fr">vx3r</a><v-spacer></v-spacer><span>Version: {{ VersionGitCommit }}</span>
+      <span>License <a class="pr-1 pl-1" href="http://www.wtfpl.net/" target="_blank">WTFPL</a> &copy; {{ new Date().getFullYear() }} Created with</span><v-icon class="pr-1 pl-1">mdi-heart</v-icon><span>by</span><a class="pr-1 pl-1" href="mailto:vx3r@127-0-0-1.fr">vx3r</a><v-spacer></v-spacer><span>Version: {{ version }}</span>
     </v-footer>
 
   </v-app>
 </template>
 
 <script>
-export default {
-  name: 'App',
+  import {ApiService} from "./services/ApiService";
+  import Notification from './components/Notification'
 
-  data: () => ({
-    VersionGitCommit: process.env.VUE_APP_GIT_HASH
-  }),
+  export default {
+    name: 'App',
 
-  mounted() {
-    console.log("Starting Wg Gen Web version: " + process.env.VUE_APP_GIT_HASH)
-  },
+    components: {
+      Notification
+    },
 
-  created () {
-    this.$vuetify.theme.dark = true
-  },
-};
+    data: () => ({
+      api: null,
+      version:'N/A',
+      notification: {
+        show: false,
+        color: '',
+        text: '',
+      },
+    }),
+
+    mounted() {
+      this.api = new ApiService();
+      this.getVersion()
+    },
+
+    created () {
+      this.$vuetify.theme.dark = true
+    },
+
+    methods: {
+      getVersion() {
+        this.api.get('/server/version').then((res) => {
+          this.version = res.version;
+        }).catch((e) => {
+          this.notify('error', e.response.status + ' ' + e.response.statusText);
+        });
+      },
+      notify(color, msg) {
+        this.notification.show = true;
+        this.notification.color = color;
+        this.notification.text = msg;
+      }
+    }
+  };
 </script>
diff --git a/ui/vue.config.js b/ui/vue.config.js
index 64b7ac61fd2b36ae19857a0555e8b08874f5bb55..16260bbafba37f413c235e2f58f86ae8fe223ac2 100644
--- a/ui/vue.config.js
+++ b/ui/vue.config.js
@@ -1,6 +1,3 @@
-const {gitDescribe, gitDescribeSync} = require('git-describe');
-process.env.VUE_APP_GIT_HASH = gitDescribeSync().hash;
-
 module.exports = {
   devServer: {
     port: 8081,
diff --git a/util/util.go b/util/util.go
index 6fa8690dfb433205dc633d1c12ccc4e00f7340f6..225b63205a94495d6a3414756665b9a633d3a349 100644
--- a/util/util.go
+++ b/util/util.go
@@ -10,6 +10,8 @@ import (
 
 var (
 	RegexpEmail = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
+	// pushed build time
+	Version string
 )
 
 // ReadFile file content