diff --git a/apks/invidious/APKBUILD b/apks/invidious/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..79d5ec17c14a2da551a8ad324a93f9f776a652ec
--- /dev/null
+++ b/apks/invidious/APKBUILD
@@ -0,0 +1,74 @@
+# Maintainer: Francesco Camuffo <dev@fmac.xyz>
+pkgname=invidious
+pkgver=0_git20231007
+_commit=60fae015d8b5e4b0bfac8306065db07f93c4c661
+pkgrel=0
+pkgdesc="Alternative front-end to YouTube"
+url="https://github.com/iv-org/invidious"
+arch="x86_64"
+license="AGPL-3.0-or-later"
+depends="
+ rsvg-convert
+"
+options="!check" # testing breaks for now fixing later
+makedepends="
+ crystal
+ git
+ libxml2-dev
+ openssl-dev
+ shards
+ sqlite-dev
+ yaml-dev
+ zlib-dev
+"
+install="$pkgname.pre-install"
+pkgusers="$pkgname"
+pkggroups="$pkgname"
+subpackages="$pkgname-openrc"
+_mocks_commit=cb16e0343c8f94182615610bfe3c503db89717a7
+source="
+ $pkgname-$_commit.tar.gz::https://github.com/iv-org/invidious/archive/$_commit.tar.gz
+ $pkgname.initd
+"
+builddir="$srcdir/invidious-$_commit"
+
+prepare() {
+ sed -i src/invidious.cr \
+ -e 's/\(CURRENT_BRANCH \) = .*/\1 = "master"/' \
+ -e "s/\(CURRENT_COMMIT \) = .*/\1 = \"${_commit:0:7}\"/" \
+ -e "s/\(CURRENT_VERSION\) = .*/\1 = \"$pkgver\"/" \
+ -e "s/\(ASSET_COMMIT\) = .*/\1 = \"${_commit:0:7}\"/"
+
+ datadir=/usr/share/webapps/invidious
+ # fix paths
+ sed -i src/invidious.cr \
+ -e "s|\(public_folder\) \"assets\"|\1 \"$datadir/assets\"|"
+ sed -i src/invidious/helpers/i18n.cr \
+ -e "s|File.read(\"locales/|File.read(\"$datadir/locales/|"
+ sed -i src/invidious/database/base.cr \
+ -e "s|config/sql|/etc/$pkgname/\0|g"
+
+ default_prepare
+}
+
+build() {
+ shards install
+ crystal build \
+ --release \
+ -Ddisable_quic \
+ src/invidious.cr
+}
+
+package() {
+ install -Dm755 "$pkgname" "$pkgdir"/usr/bin/invidious
+ install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ mkdir -p "$pkgdir"/usr/share/webapps/invidious
+ cp -r "$builddir"/assets "$builddir"/locales \
+ "$pkgdir"/usr/share/webapps/invidious
+ install -Dm644 "$builddir"/config/config.example.yml \
+ "$pkgdir"/etc/"$pkgname"/config.yml
+}
+sha512sums="
+bc2295d5d43ac3b793914e4baa0bdd6c4d6ff1746629b3db0b81a22ca057acb5cc28a7af984573ace936acaabedc2ce134d9ecf76386101893af408976f8f44c invidious-60fae015d8b5e4b0bfac8306065db07f93c4c661.tar.gz
+ed0a2e498751927c1ad82619395a07c169f7353a9c1453381ad288ad501b915010df5b799e4f102e034f0483b9101b9a8ae40d150b3d7db80605f87b9ca6f596 invidious.initd
+"
diff --git a/apks/invidious/invidious.initd b/apks/invidious/invidious.initd
new file mode 100644
index 0000000000000000000000000000000000000000..ba29fce025b9f0bfd03ee28b3b8f7373e3184eb2
--- /dev/null
+++ b/apks/invidious/invidious.initd
@@ -0,0 +1,13 @@
+#!/sbin/openrc-run
+
+supervisor=supervise-daemon
+name=invidious
+command="/usr/bin/invidious"
+command_user="${INVIDIOUS_USER:-invidious}"
+supervise_daemon_args="--env INVIDIOUS_CONFIG_FILE='${INVIDIOUS_CONFIG_FILE:-/etc/invidious/config.yml}'"
+pidfile="/run/invidious.pid"
+
+depend() {
+ need net
+ after firewall
+}
diff --git a/apks/invidious/invidious.pre-install b/apks/invidious/invidious.pre-install
new file mode 100644
index 0000000000000000000000000000000000000000..bce4a4ea1c066b0227f707c23af7e55bfa849878
--- /dev/null
+++ b/apks/invidious/invidious.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+addgroup -S invidious 2>/dev/null
+adduser -S -D -h /usr/share/webapps/invidious -s /sbin/nologin -G invidious \
+ -g invidious invidious 2>/dev/null
+
+exit 0