SchoolKickOpen the app
Menu

Home / Install

Your server · your school · your records

Install SchoolKick.
Open your first register.

Start with one command, or follow each step yourself. Every route below opens the app on port 3847.

Default port 3847AGPL-3.0-onlyNo cloud account required

Choose your setup

A quick start, with the details close by.

01

Linux · amd64 and arm64 · runs in Docker

Ubuntu or Debian, one command

Installs Docker if it is missing, downloads the latest release package, verifies its SHA-256 checksum, installs it and starts SchoolKick and PostgreSQL as a service.

  1. Install and start

    Run as a user with sudo. The first start pulls the container images and can take a few minutes.

    curl -fsSL https://schoolkick.nodedr.com/install-linux.sh | sudo bash
  2. Manage the service

    Settings, including the port and database password, live in the env file. Restart after changing it.

    systemctl status schoolkick
    sudoedit /etc/schoolkick/schoolkick.env
    sudo systemctl restart schoolkick

Next: Open http://localhost:3847/app/ (or your server address on port 3847) and choose Create institution.

02

Custom Install · amd64 and arm64

CasaOS or ZimaOS

Uses the published image, so nothing is built on the box. PostgreSQL is not exposed on any port and its data is kept under /DATA/AppData/schoolkick.

  1. Import the app

    In CasaOS open App Store, choose Custom Install, then Import, and paste the contents of this file (or download it first).

    curl -fsSL https://raw.githubusercontent.com/Raktim94/schoolkick/main/deploy/docker-compose.casaos.yml
  2. Set a database password

    Before you click Install, replace change-this-password in both places with a long random value.

    openssl rand -hex 24

Next: Open the SchoolKick tile, or http://YOUR-BOX:3847/app/, and choose Create institution. Set ALLOW_SIGNUP to 0 afterwards.

03

Current source · Docker required

One-command installation

For Linux, macOS or Windows through WSL. Install Git, curl, OpenSSL and Docker with Compose v2 first; Docker must be running and accessible to your user.

  1. Install and start

    Run this in the folder where you want SchoolKick. It downloads the current main branch, creates a random database password, builds the app and starts the services. It refuses to overwrite an existing schoolkick folder.

    curl -fsSL https://schoolkick.nodedr.com/install.sh | bash
  2. Prefer to read the script first?

    Download and inspect the same installer before running it.

    curl -fsSL https://schoolkick.nodedr.com/install.sh -o install-schoolkick.sh
    less install-schoolkick.sh
    bash install-schoolkick.sh

Next: Open http://localhost:3847/app/ on the machine running Docker. This route binds to the local machine by default. For a remote server, configure HTTPS and the public address before inviting people.

04

Linux · macOS · Windows

Docker Compose, step by step

Requires Git and Docker with Compose v2. Docker Desktop supplies Compose on Windows and macOS. The database stays in a persistent Docker volume.

  1. Download the project

    These commands also work in PowerShell, where cp is an alias for Copy-Item.

    git clone https://github.com/Raktim94/schoolkick.git
    cd schoolkick
    cp deploy/.env.example deploy/.env
  2. Configure your installation

    Open deploy/.env in your text editor. Replace the password below with a long random value containing letters and numbers. Keep localhost for local use, or set SITE_URL to your HTTPS domain.

    POSTGRES_PASSWORD=replace-with-a-long-random-password
    SITE_URL=http://localhost:3847
    HTTP_PORT=3847
    BIND_ADDRESS=127.0.0.1
    ALLOW_SIGNUP=1
  3. Build and start

    The first build takes a few minutes. Wait for both the database and app to become healthy.

    docker compose -f deploy/docker-compose.yml --env-file deploy/.env up -d --build --wait
  4. Check the app

    The readiness check should return {"ok":true}. In Windows PowerShell, use curl.exe instead of curl.

    curl http://localhost:3847/readyz
    docker compose -f deploy/docker-compose.yml --env-file deploy/.env ps

Next: Open http://localhost:3847/app/ and choose Create institution. After creating your owner account, set ALLOW_SIGNUP=0 in deploy/.env and run the start command again.

05

Developer route · Node.js 22.18+ · PostgreSQL 16

Run from source

The commands below use Bash and a local PostgreSQL installation on Ubuntu or Debian. PostgreSQL must be running; the account needs database ownership and permission to create the restricted application role.

  1. Download and build

    Install Node.js, npm, Git and PostgreSQL before continuing.

    git clone https://github.com/Raktim94/schoolkick.git
    cd schoolkick
    npm ci
    npm run build
  2. Create the database account

    Enter a new strong password when prompted. Use the same password in DATABASE_URL below; URL-encode any reserved characters. Run these commands once for a fresh installation.

    sudo -u postgres createuser --pwprompt --createrole schoolkick
    sudo -u postgres createdb --owner=schoolkick schoolkick
  3. Start the server

    Replace YOUR_DATABASE_PASSWORD before running. Database migrations run automatically. Keep this terminal open while using the app.

    DATABASE_URL='postgres://schoolkick:YOUR_DATABASE_PASSWORD@127.0.0.1:5432/schoolkick' PORT=3847 SITE_URL='http://localhost:3847' npm start
  4. Check readiness in another terminal

    A successful response is {"ok":true}.

    curl http://localhost:3847/readyz

Next: Open http://localhost:3847/app/ and create the school owner. For a long-running server, configure a process manager, HTTPS and backups.

Need a different port?

For the quick installer, set SCHOOLKICK_PORT on the first run:

curl -fsSL https://schoolkick.nodedr.com/install.sh | SCHOOLKICK_PORT=3848 bash

With Compose, change HTTP_PORT and SITE_URL in deploy/.env, then run the start command again. Existing installations keep their configured port.

Already installed through the Debian package?

The currently published v0.1.0 package uses port 8480. Its settings are in /etc/schoolkick/schoolkick.env. The quick installer above builds current source; it does not upgrade or move an existing package installation.

After the first sign-in

Make the first register useful.

  1. Create your school and owner account.
  2. Create classes, teacher accounts and guardian accounts.
  3. Add learners, enrol them and link their guardians.
  4. Take attendance and check the family view.
Open the documentation

Before inviting your school

Set up HTTPS and backups.

Set SITE_URL to your public HTTPS address. Keep the local binding when a reverse proxy or tunnel runs on the same host. Set ALLOW_SIGNUP=0 once your school exists and restart the app.

Security notesPrivacy noticeHosting and backups