diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml
new file mode 100644
index 0000000..6880973
--- /dev/null
+++ b/.gitea/workflows/ci.yml
@@ -0,0 +1,49 @@
+name: '4get CI'
+
+on:
+  workflow_dispatch:
+  pull_request:
+  push:
+    branches:
+      - '*'
+    paths-ignore:
+      - 'README.md'
+      - 'docker-compose.yaml'
+      - '.gitignore'
+      - 'docs/**'
+
+jobs:
+  build:
+    runs-on: docker
+
+    steps:
+    - uses: actions/checkout@v4
+      name: Checkout 4get repository
+
+    - uses: docker/setup-buildx-action@v3
+      name: Setup Docker BuildX system
+
+    - name: Login to Docker Container Registry
+      uses: docker/login-action@v3
+      with:
+        registry: git.lolcat.ca
+        username: ${{ secrets.USERNAME }}
+        password: ${{ secrets.TOKEN }}
+
+    - name: Docker meta
+      id: meta
+      uses: docker/metadata-action@v5
+      with:
+        images: git.lolcat.ca/ckg/4get
+        tags: |
+          type=sha,format=short,prefix={{date 'YYYY.MM.DD'}}-,enable=${{ github.ref == format('refs/heads/{0}', 'master') }}
+          type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'master') }}
+
+    - uses: docker/build-push-action@v6
+      name: Build images
+      with:
+        context: .
+        file: Dockerfile
+        tags: ${{ steps.meta.outputs.tags }}
+        platforms: linux/amd64
+        push: true