v2026 / AUTH HARDENED SELF-HOSTED AGPL-3.0

Self-host
your skill
cave.

SkillGoblin is a tiny, self-contained learning platform that lives in a Docker box on your homelab. Drop folders of videos in. Watch. Track progress. No SaaS. No telemetry. No ads. Just you, your cave, and a small green helper.

~1
CONTAINER
0
TELEMETRY
COURSES
1K+
DEPLOYS
// WHAT'S IN THE CAVE

Six small spells.
Zero subscription tax.

STREAMLINED PLAYBACK

Watch your courses without the marketing fluff. Resume where you left off. Natural sorted lessons. WebVTT subtitles auto-converted from .srt sidecars.

LOCAL-FIRST

Runs on your homelab, your tailnet, your basement NAS. argon2id-hashed credentials, opaque cookie sessions, zero outbound calls.

FEATHER LIGHT

A single Docker container. SQLite on disk. Boots in seconds. Runs on a Raspberry Pi with room to spare.

FOLDER = COURSE

Drop a folder under data/content/. Add lesson subfolders, mp4 files, a thumbnail.png. The watcher picks it up. No DB editing. No upload UI.

LIVE FILE WATCHER

Chokidar keeps an eye on your content directory. New courses appear automatically. Deleted ones vanish along with stale progress rows.

ANY SCREEN

Mobile-first responsive design. Works on phones, tablets, and that one ancient laptop in the kitchen. PWA install supported.

// LIVE FOOTAGE FROM THE CAVE

See the goblin
in action.

● REC SKILLGOBLIN.EXE — DEMO REEL 1080p

DARK / LIGHT

One-click theme switch. Goblin approves.

VIDEO PLAYBACK

Resume across sessions. Natural-sorted lessons.

DROP & SCAN

Copy a folder. Watcher picks it up. Done.

// THE SUMMONING

Three commands.
One green helper.

Pull the image. Drop a docker-compose.yml. docker compose up. Drop video folders into data/content/. The goblin handles the rest — natural sort, thumbnails, progress, sessions. Even subtitles.

📜 READ THE WIKI SAMPLE COMPOSE
~/skillgoblin — bash
// SUMMONING SCROLL

Get the goblin.

01

PULL IMAGE

docker pull vladoportos/skillgoblin:latest
02

WRITE COMPOSE

$ vim docker-compose.yml
03

START IT

docker compose up -d
04

OPEN BROWSER

http://localhost:3000
// COMMON QUESTIONS

The goblin
has answers.

Yes. The Docker image is built for both amd64 and arm64. It runs happily on a Raspberry Pi 4, Raspberry Pi 5, and any arm64 homelab NAS or SBC.

Yes — SkillGoblin supports multiple accounts. Each user gets their own progress tracking. You can create PIN-protected or password-protected accounts via the admin panel.

Zero. No telemetry, no analytics, no outbound connections after startup. It does not know you exist and it prefers it that way. All data stays in your data/ folder.

Any format your browser can natively play — .mp4 (H.264/H.265), .webm, and .mkv are the most common. Subtitle files (.srt) are auto-converted to WebVTT on the fly.

Drop a folder into data/content/. Name it your course title. Add lesson subfolders with video files. Optionally add a thumbnail.png. The live file watcher picks it up in seconds — no restart needed.

Progress is stored in data/skillgoblin.db (SQLite). As long as your volume mount is in place, updates never touch your data. Pull the new image, restart — progress intact.

Fully. After the initial docker pull, SkillGoblin is completely air-gapped. Fonts are the only external resource on the landing page — the app itself has none.

No native app, but the interface is fully responsive and works great in a mobile browser. You can also use your browser's "Add to Home Screen" to install it as a PWA with a standalone icon.

// LEAVE A TRIBUTE

The goblin works for coffee.

SkillGoblin is free, open source, and AGPL-3.0. If it saved you from yet another SaaS subscription, drop a coin in the goblin's chest. Every Ko-fi keeps the dungeon torches lit.

☕ BUY THE GOBLIN A COFFEE
Donation chest
// SPREAD THE WORD

Tell your clan.

Saved yourself from another SaaS subscription? Share SkillGoblin with your homelab crew — the goblin will be forever grateful.