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.
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
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.
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
Set a database password
Before you click Install, replace change-this-password in both places with a long random value.
Next: Open the SchoolKick tile, or http://YOUR-BOX:3847/app/, and choose Create institution. Set ALLOW_SIGNUP to 0 afterwards.
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
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.
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
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
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
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.
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
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
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
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.
- Create your school and owner account.
- Create classes, teacher accounts and guardian accounts.
- Add learners, enrol them and link their guardians.
- Take attendance and check the family view.
Open the documentationBefore 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.