Port Igniter
Get Started
PortIgniter LMS — self-hosted learning management system

PortIgniter LMS

From concept to classroom in minutes, not months.

Releasing November 1, 2026

PortIgniter LMS is a small, fast, self-hosted learning management system for trainers and small training teams. Build courses in a drag-and-drop builder, mix written lessons, video, and code with quizzes and timed tests, issue verifiable certificates, and sell your courses or memberships through Stripe. It all runs on your own server as a handful of Docker containers, with no per-learner fees and no LMS administrator required.

The middle ground you have been missing

Most educators face a frustrating choice: open-source platforms like Moodle or Chamilo that are a nightmare to set up and maintain, or enterprise platforms with six-figure price tags. PortIgniter LMS sits in between. It is opinionated where it should be, every setting has to earn its place, and course settings fit on one screen. The goal is simple: under 15 minutes from docker compose up to a published course.

Learners get the same treatment. They are never more than two clicks from login to the exact lesson they left off on.

Requirements

What You Need

The LMS runs anywhere Docker with Docker Compose runs. Your learners only need a web browser.

  • Linux (Tux) Linux serverRecommended host for production
  • LearnersAny modern browser, desktop or mobile
  • Stripe accountOptional, only needed to sell courses

Everything a course needs, nothing it doesn't

A course is built from modules, and each module holds lessons and quizzes. Draft as long as you like; learners only ever see what you publish, and republishing never resets anyone's progress.

Course Builder

Drag and drop modules, lessons, and content blocks into place, with keyboard alternatives for every move. Everything autosaves, and Publish checks the whole course for problems before learners see it.

Rich Lessons

Lessons are built from Markdown text, video, audio, images, code with syntax highlighting and copy buttons, callouts, downloads, and embeds. That makes it a great fit for hands-on technical training.

Quizzes & Tests

Ten question types, from multiple choice and "type the command" short answers to cloze, ordering, matching, and drag-and-drop categorizing. Draw random questions from banks, set attempt limits, and grade essays by hand.

Timed Exams

The deadline lives on the server, so refreshing, reconnecting, or switching devices never resets the clock. When time runs out, the last saved answers are submitted automatically.

Progression

Let learners roam freely or lock content in sequence, and mix both in one course. Gate a module behind a quiz score, and a locked lesson always tells the learner exactly what to finish first.

Certificates

Certificates are issued automatically on completion as a PDF with a unique ID and a QR code that links to a public verification page. Design your own in the built-in designer with a live preview.

PortIgniter LMS landing page

Sell courses without a storefront plugin

Put a price on any course and learners can buy it through Stripe Checkout. They don't even need an account first; one is created for them when they pay. Prefer recurring revenue? Create membership plans billed monthly or yearly that cover every course, selected tracks, or a hand-picked set.

Refunds and disputes sync from Stripe automatically, promotion codes work at checkout, and Admin > Sales shows what is selling. Card data never touches your server.

Not selling? Leave payments off and enroll people with invitation links and keys instead.

PortIgniter LMS course builder

Your courses are files you own

Every course is a folder of plain JSON files validated against published schemas. The database is just an index that can be rebuilt from those files at any time. Export any course as a zip, import it on another server, and keep it in version control if you like.

Because the format is documented, you can also write courses outside the LMS. It ships with a course authoring kit that an AI assistant (or a person) can follow to produce an importable course, plus php spark courses:check to validate a package before you upload it.

PortIgniter LMS Certificate Designer

Details are locked in when a certificate is issued, so editing a course later never changes a certificate someone already earned.

Certificates worth framing, and worth checking

Turn on certificates for a course and every learner who finishes gets one automatically, as a PDF they can download from their dashboard. Make it look like yours in the certificate designer. Start from a Classic, Modern or Minimal template, then pick your colours, font, paper size (A4 or Letter), logo, background and signature, and watch a live preview update as you go. The wording is yours too, with placeholders like {student_name}, {course_title}, {hours} and {date} filled in for each learner.

Every certificate carries a unique ID and a QR code that links to a public verification page. An employer can confirm the name, course and completion date without logging in, and no email address is ever shown. Made a mistake? Fix a misspelled name or revoke a certificate from the admin, and the ID and QR code keep working.

Secure and private by default

No third parties in the page

Every stylesheet, script, and font is bundled with the app. There are no CDNs, no trackers, and no third-party cookies, so your learners' activity stays on your server. Course videos, audio, and downloads are only served to enrolled learners.

Accounts done carefully

An account only gets a password after its owner clicks an emailed link. Sign-up and password reset never reveal whether an address is registered, logins are throttled, and you can turn self-registration off entirely.

Runs anywhere Docker does

No framework build step and no cloud dependency. Copy the example environment file, fill in the required section, and bring the stack up. The database is created and migrated for you on first start.

Four lightweight containers

nginx Web server: serves the site over HTTP and HTTPS
php CodeIgniter 4 on PHP-FPM: the LMS itself
scheduler The same image in a different role: finalizes expired timed tests and other background work
mariadb The database, never exposed outside the stack

Courses, uploads, and certificates live on a persistent volume, so they survive upgrades.

Easy installation process

# 1. start from the template and fill in
#    the REQUIRED section
cp .env.example .env

# 2. Login to the PortIgniter Registry
docker login registry.portigniter.com

# 3. Start the stack
docker compose up -d

# 4. open the site and sign in as the
#    admin account from your .env
open http://localhost:7080/

Light & dark themes

Learners pick light or dark, and both meet WCAG AA contrast. Admins can add custom CSS and head or footer code to match your brand.

Email built in

Point it at any SMTP server for account links, purchase receipts, enrollment notices, and certificates.

ENV configuration

Database, site address, email, and Stripe keys all live in one .env file. There is nothing you need to edit inside the container.

Annual license, available November 1, 2026

PortIgniter LMS is licensed per year and includes regular updates with new features, new question and block types, and improvements across the platform. There are no per-learner or per-course fees: one license covers your whole deployment. Since it's licensed under the MIT license, you can opt not to renew and still use the software indefinitely. Get in touch to be notified at launch or to talk through a deployment for your organization.

Training Mascot

Standard

A single-server Docker Compose deployment for trainers and small teams who want to get up and running fast. No limits on courses, learners, or instructors!


License $100/year
MIT License
Unlimited Learners & Courses
Stripe Sales & Memberships
Docker Compose deployment

Coming Soon

Top